Compare commits
165 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f5018b5c37 | |||
| 2a17781fde | |||
| 67d52bcd75 | |||
| b96505d79c | |||
| 7083101d79 | |||
| ee70b207ca | |||
| 314bb70489 | |||
| 459f4850ef | |||
| dbc2e3a568 | |||
| 1f4cee9279 | |||
| f18f05cd1d | |||
| 93816a8d36 | |||
| 18a8fde7de | |||
| 857ea23420 | |||
| d5d6768622 | |||
| e275676295 | |||
| 9c9a8e635b | |||
| 0d8f2fe522 | |||
| 2e011084ed | |||
| cfe57b152f | |||
| 8ed2bc6ae3 | |||
| 7647186154 | |||
| 9e608408be | |||
| e5de63e427 | |||
| b988c113d2 | |||
| c70122fb36 | |||
| ee4326c2a2 | |||
| 29c4a58451 | |||
| c93b2a4018 | |||
| ef394d494f | |||
| 3bab66d5df | |||
| 79c7d01eb9 | |||
| b36c4ffa56 | |||
| 387798f8e6 | |||
| 3c767b1d6d | |||
| d950315aa3 | |||
| 182a9e257c | |||
| d97de5d15b | |||
| f62d4461fa | |||
| 2607db7ed5 | |||
| 72149bb230 | |||
| 01593c7a8c | |||
| 455a13deca | |||
| 940d546f47 | |||
| 0b7cf68e5d | |||
| 9ca208d93b | |||
| 39da1a900c | |||
| 7742ab0c9c | |||
| 71a5e874f7 | |||
| ed2e740b62 | |||
| 23a5a3ecbf | |||
| d1b9101759 | |||
| c8812cbddd | |||
| dc266290cc | |||
| 36aa36bcf2 | |||
| b64867048e | |||
| 266dd0c8e3 | |||
| c1c91a384e | |||
| 1d1e08771d | |||
| 4ea34c3c9f | |||
| 916e27ba33 | |||
| 598c3e2629 | |||
| 154cd7d5f0 | |||
| ca39a15e60 | |||
| 2c992d8526 | |||
| 127742b194 | |||
| dff979cbe6 | |||
| 3b13a0ff90 | |||
| 1e061f2511 | |||
| cc2648585c | |||
| 727c9f818b | |||
| b965f81fc4 | |||
| b5ddf300b9 | |||
| 22175f379f | |||
| 6ff966df58 | |||
| 65f159fad2 | |||
| 515fc57307 | |||
| b84fbb6044 | |||
| d1cdaf7041 | |||
| d824b1fbd9 | |||
| 0df352d6ff | |||
| c27b6a0ac7 | |||
| e1152f6713 | |||
| e6ab11b004 | |||
| e3e40d25e9 | |||
| 495d4deb91 | |||
| 3ed3ab3d3a | |||
| 7e2a74e5b6 | |||
| aa662f4a7b | |||
| 21f17ab7a3 | |||
| 6000816833 | |||
| 95116252c8 | |||
| 8238a1b694 | |||
| 28e8a66221 | |||
| 3249e7e1e2 | |||
| d5d97db086 | |||
| c806a7e09f | |||
| 95e563e04f | |||
| 747ebf5f8b | |||
| fb942c8e40 | |||
| fdc2f05d46 | |||
| 3c2823cc13 | |||
| 9ba9131a51 | |||
| bd64c60b40 | |||
| bb7e609665 | |||
| 9c4794c868 | |||
| 019c32faf5 | |||
| 96b6e4d1b9 | |||
| 105d01e636 | |||
| ee2d9499d6 | |||
| 71fcc98862 | |||
| c63656ac97 | |||
| 47a24ccef3 | |||
| 2ee3abf193 | |||
| d9039070ad | |||
| f69fd4a40f | |||
| a6287ad7e3 | |||
| ecd941fe81 | |||
| 4db1663ece | |||
| 8096a37852 | |||
| 017ce4449c | |||
| 5103ad1d5c | |||
| 627b1a4675 | |||
| 34a7aa4551 | |||
| c685b50960 | |||
| 2d5733190e | |||
| 551546ab56 | |||
| d6a9017b5e | |||
| 7edccc31bc | |||
| df182c9ab7 | |||
| 2d6a7fd731 | |||
| ba2fb3eb1e | |||
| 93ed8f0d8a | |||
| ae120e6e33 | |||
| d45bfd0de7 | |||
| 9ee8c0b07b | |||
| 9bc065905c | |||
| 60dcd75bf1 | |||
| 78d00fdd0d | |||
| 4a8199ae8d | |||
| 84e110383f | |||
| 71169d5a6d | |||
| 7797c51579 | |||
| 7f1fbacf1e | |||
| 31428e35b3 | |||
| 40dfe19285 | |||
| 0983888cd9 | |||
| 50fa842b6f | |||
| d0cbab98e5 | |||
| f990de5498 | |||
| b133a4f8ae | |||
| f9d1fa88f9 | |||
| 26452b3362 | |||
| 63ca1cdd8e | |||
| 8b569c64e8 | |||
| 317be48f98 | |||
| 67e4fb1cdf | |||
| 8f1fdfabfa | |||
| aaadc5afc3 | |||
| fadf41c59a | |||
| a2bbbe3c98 | |||
| bbad2ee6eb | |||
| 24158d1f0f | |||
| a6f7159189 | |||
| 2c5d034e05 |
+4
-1
@@ -5,4 +5,7 @@ xdctools_*/
|
||||
ccsv8/
|
||||
|
||||
# CSS build files
|
||||
FlashROM/
|
||||
FlashROM/
|
||||
|
||||
# python cache
|
||||
__pycache__/
|
||||
Generated
+3
@@ -0,0 +1,3 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="Driver" pattern="file[BioProCC2650]:simplelink/ble_sdk_2_02_02_25/src/boards/BOOSTXL_CC2650MA/*||file[BioProCC2650]:simplelink/ble_sdk_2_02_02_25/src/boards/CC2650_LAUNCHXL/*||file[BioProCC2650]:tirtos_cc13xx_cc26xx_2_21_01_08/products/tidrivers_cc13xx_cc26xx_2_21_01_01/packages/ti/drivers//*" />
|
||||
</component>
|
||||
@@ -13,27 +13,43 @@ BioPro Device
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/main.c`
|
||||
|
||||
|
||||
### Current project
|
||||
### Current project and state
|
||||
|
||||
1. Elite
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_tni.h`
|
||||
|
||||
**branch**
|
||||
|
||||
2. Neulive 1.2
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_uni.h`
|
||||
|
||||
**branch**
|
||||
|
||||
`neulive1.2/*`
|
||||
|
||||
3. Neulive 1.3
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_neulive.h`
|
||||
|
||||
**branch**
|
||||
|
||||
4. EliteZM
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_zm.h`
|
||||
|
||||
**branch**
|
||||
|
||||
`elite_zm/*`
|
||||
|
||||
5. NeuliveSTI
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_sti.h`
|
||||
|
||||
**branch**
|
||||
|
||||
`neuliveSTI/*`
|
||||
|
||||
### Notable source code
|
||||
|
||||
@@ -58,6 +74,194 @@ major source code path:
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/main.c`
|
||||
|
||||
**branch**
|
||||
|
||||
`host_test/master`
|
||||
|
||||
`release/host_test-*`
|
||||
|
||||
-----------------------------------------------
|
||||
|
||||
How to install this project in your PC
|
||||
--------------------------------------
|
||||
|
||||
|
||||
### install CCStudio
|
||||
|
||||
#### Prerequisite:
|
||||
|
||||
anti-virus software might cause some problems, disable it while installing is recommended.
|
||||
|
||||
#### Install CCS (Online install)
|
||||
|
||||
1. [code composer studio](http://processors.wiki.ti.com/index.php/Download_CCS) :
|
||||
choose the latest version (we use 8.2.0.00007, Online Installer, as example) of Code Composer Studio.
|
||||
|
||||
2. run installer
|
||||
|
||||
3. accept the license
|
||||
|
||||
4. install at folder `c:/ti`
|
||||
|
||||
5. select all Processor Support
|
||||
|
||||
6. select all Debug Probes.
|
||||
|
||||
7. Finish. Allow the network access if the firewall jumps a warning dialog.
|
||||
Wait for the install process......
|
||||
|
||||
|
||||
#### Offline install
|
||||
|
||||
1. [code composer studio](http://processors.wiki.ti.com/index.php/Download_CCS) :
|
||||
choose the latest version (we use 8.2.0.00007, Offline Installer) of Code Composer Studio.
|
||||
|
||||
2. Unzip it
|
||||
|
||||
3. Open the folder `CCS8.2.0.00007_win32` -> Open sub-folder `CCS8.2.0.00007_win32`
|
||||
|
||||
4. run installer *ccs_setup_8.2.0.00007*
|
||||
|
||||
5. accept the license
|
||||
|
||||
6. install at folder `c:/ti`
|
||||
|
||||
7. select all Processor Support
|
||||
|
||||
8. select all Debug Probes
|
||||
|
||||
9. Finish. Wait for the install process......
|
||||
|
||||
10. accept `Blackhawk Control` dialog popped out during the process
|
||||
(we will not use this directly)
|
||||
|
||||
11. select options to create desktop shortcut and launch CCStudio
|
||||
|
||||
#### After install, update the CCStudio
|
||||
|
||||
1. at the first launch, CCStudio will ask you to select a directory as workspace. Use the default. -> Launch
|
||||
|
||||
2. help -> check for updates -> select all available updates -> next
|
||||
|
||||
3. accept the licenses -> finish -> wait for the installation...... -> Restart Now
|
||||
|
||||
|
||||
|
||||
### install BLE STACK
|
||||
|
||||
1. [BLE STACK](http://www.ti.com/tool/BLE-STACK):
|
||||
choose `BLE-STACK-2-2-2` Free version.
|
||||
(a TI account is required)
|
||||
|
||||
1. at the *U.S. Government export approval* page,
|
||||
check all your information and submit then start to download.
|
||||
|
||||
2. run *ble_sdk_2_02_02_25_setup*
|
||||
|
||||
3. accept the license agreement
|
||||
|
||||
4. use the default installation directory `C:\ti\simplelink` -> wait for the install process......
|
||||
|
||||
5. **TI-RTOS for CC13xx and CC26xx Wireless MCUs Setup Wizard** will jump out -> next
|
||||
at the same time, *ble_sdk_2_02_02_25_setup* will still be running, don't close the window
|
||||
|
||||
6. accept the license agreement
|
||||
|
||||
7. use the default installation directory `C:/ti` -> wait for the install process......
|
||||
|
||||
|
||||
8. after **TI-RTOS for CC13xx and CC26xx Wireless MCUs Setup Wizard** has been install.
|
||||
keep waiting for *ble_sdk_2_02_02_25_setup* to process
|
||||
|
||||
9. finish
|
||||
|
||||
|
||||
### First run CCStudio and setting
|
||||
|
||||
1. start CCStudio
|
||||
|
||||
2. File -> import -> C/C++ -> CCS Projects -> next
|
||||
|
||||
3. Select search-directory `C:/ti/ble_sdk_2_02_02_25/examples/cc2650lp/simple_peripheral/ccs` -> OK
|
||||
|
||||
4. select all discovered projects -> finish
|
||||
|
||||
5. right click `simple_peripheral_cc2650lp_app` -> Properties -> Products -> **XDCtools version: 3.32.2.25_core**
|
||||
|
||||
6. remember to select **TI-RTOS for CC13xx and CC26xx: 2.21.1.08** and **Other Repositories: C:/to/ccsv8/ccs_base**
|
||||
|
||||
7. Project -> Tool-chain: **Compiler version: TI v18.1.3.LTS**
|
||||
|
||||
8. apply amd close
|
||||
|
||||
9. right click *simple_peripheral_cc2650lp_stack* -> Properties -> Products -> select all
|
||||
|
||||
10. Project -> Tool-chain: **compiler version: TI v18.1.3.LTS**
|
||||
|
||||
11. Click *build* and it's done
|
||||
|
||||
### clone this project
|
||||
|
||||
#### with Command line interface (git-bash)
|
||||
|
||||
1. `cd c:`
|
||||
|
||||
2. rename ti directory
|
||||
|
||||
`mv ti ti_backup`
|
||||
|
||||
3. clone our project.
|
||||
|
||||
`git clone URL ti`, where URL is our project url on gitlab.
|
||||
|
||||
4. move CCStudio back to ti directory
|
||||
|
||||
`mv -t ti ti_backup/ccsv8 ti_backup/xdctools-*`
|
||||
|
||||
5. open CCStudio and rebuild your project, check it work as normal.
|
||||
|
||||
### Optional
|
||||
|
||||
#### install git if you don't install it
|
||||
|
||||
* https://git-scm.com/download/win
|
||||
|
||||
* choose corresponding version for your computer from 'Git for Windows Setup'
|
||||
|
||||
|
||||
#### doxygen: tool to help documenting code
|
||||
|
||||
* download from main page http://www.doxygen.nl/download.html
|
||||
|
||||
* according to different OS, download corresponding version.
|
||||
|
||||
* press keyboard 'ctrl' + 'shift' + 'a' to search external tool, select 'external tools-setting'
|
||||
|
||||
* add external tool by pressing '+'
|
||||
|
||||
* name this external tool in the column 'name'
|
||||
|
||||
* set the path of doxygen execute file in the column 'program'
|
||||
|
||||
* set the repository we want to generate document automatically in the column 'working directory'
|
||||
|
||||
* set hotkey of doxygen to run : 'File' -> 'Setting' -> 'Keymap' -> 'external tools'
|
||||
|
||||
* press the hotkey to run doxygen
|
||||
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
* jump a dialog with **MSVC components failed to install.
|
||||
Please install executables manually from c:/ti/ccsv8/installers before using CCS**
|
||||
|
||||
ignore it.
|
||||
|
||||
* jumps a warning dialog of Windows Defender
|
||||
Allow the network access.
|
||||
|
||||
|
||||
|
||||
-----------------------------------------------
|
||||
|
||||
Copyright (c) 2019. BioPro. Scientific.
|
||||
|
||||
@@ -0,0 +1,674 @@
|
||||
import re
|
||||
from typing import *
|
||||
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
@overload
|
||||
def part_prefix(line: str, char: str, from_right=False) -> Tuple[Optional[str], str]:
|
||||
pass
|
||||
|
||||
|
||||
@overload
|
||||
def part_prefix(line: str, char: str, missing: T, from_right=False) -> Tuple[Union[str, T], str]:
|
||||
pass
|
||||
|
||||
|
||||
def part_prefix(line: str, char: str, missing: Optional[T] = None, from_right=False) -> Tuple[Union[None, str, T], str]:
|
||||
try:
|
||||
if from_right:
|
||||
i = line.rindex(char)
|
||||
else:
|
||||
i = line.index(char)
|
||||
return line[:i], line[i + len(char):]
|
||||
except ValueError:
|
||||
return missing, line
|
||||
|
||||
|
||||
@overload
|
||||
def part_suffix(line: str, char: str, from_right=False) -> Tuple[str, Optional[str]]:
|
||||
pass
|
||||
|
||||
|
||||
@overload
|
||||
def part_suffix(line: str, char: str, missing: T, from_right=False) -> Tuple[str, Union[str, T]]:
|
||||
pass
|
||||
|
||||
|
||||
def part_suffix(line: str, char: str, missing: Optional[T] = None, from_right=False) -> Tuple[str, Union[None, str, T]]:
|
||||
try:
|
||||
if from_right:
|
||||
i = line.rindex(char)
|
||||
else:
|
||||
i = line.index(char)
|
||||
return line[:i], line[i + len(char):]
|
||||
except ValueError:
|
||||
return line, missing
|
||||
|
||||
|
||||
def hex_line(data: Union[bytes, Sequence[int]], split=' ', truncate=False) -> str:
|
||||
""" bytes value to str
|
||||
|
||||
return example ::
|
||||
|
||||
# input
|
||||
b'\x00ABC\x00'
|
||||
|
||||
# output
|
||||
0x00 0x65 0x66 0x67 0x00
|
||||
|
||||
# output truncate version
|
||||
0x00 0x65 (skip 0x02) 0x00
|
||||
|
||||
:param data: bytes value
|
||||
:param split: char join between byte value
|
||||
:param truncate: truncate output if too long
|
||||
:return: byte value
|
||||
"""
|
||||
if truncate and len(data) > 16:
|
||||
line = list(map(lambda v: '%02X' % v, data[0:8]))
|
||||
line.append('(skip 0x%02X)' % (len(data) - 12))
|
||||
line.extend(map(lambda v: '%02X' % v, data[-4:]))
|
||||
return split.join(line)
|
||||
else:
|
||||
return split.join(map(lambda v: '%02X' % v, data))
|
||||
|
||||
|
||||
def endian_switch(value: int, bit: int) -> int:
|
||||
ret = 0
|
||||
|
||||
for _ in range(bit):
|
||||
ret = (ret << 1) | (value & 1)
|
||||
|
||||
value >>= 1
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def append_buffer(buffer: List[int], shift: int, width: int, value: int, little_endian=False) -> int:
|
||||
if width == 0:
|
||||
return shift % 8
|
||||
|
||||
if len(buffer) == 0:
|
||||
buffer.append(0)
|
||||
|
||||
if little_endian:
|
||||
value = endian_switch(value, width)
|
||||
|
||||
while shift >= 8:
|
||||
buffer.append(0)
|
||||
shift -= 8
|
||||
|
||||
while shift + width >= 8:
|
||||
# high
|
||||
offset = 8 - shift
|
||||
mask = (1 << offset) - 1
|
||||
buffer[-1] |= (value >> (width - offset)) & mask
|
||||
|
||||
if shift + width == 8:
|
||||
return 8
|
||||
|
||||
# low
|
||||
buffer.append(0)
|
||||
shift = 0
|
||||
width -= offset
|
||||
value &= (1 << width) - 1
|
||||
|
||||
offset = 8 - (shift + width)
|
||||
mask = (1 << width) - 1
|
||||
buffer[-1] |= (value & mask) << offset
|
||||
|
||||
return (shift + width) % 8
|
||||
|
||||
|
||||
class DeviceInstruction:
|
||||
"""
|
||||
**Instruction Send**
|
||||
|
||||
raw byte data format. ::
|
||||
|
||||
| 0 | 1 | 2 | 3 |
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
|
||||
-----------------------------------------------------------------
|
||||
| RIS | ID | | LEN | ............................. real instruction send
|
||||
| VIS | ID | OPER | LEN | ............................. virtual instruction send
|
||||
| CIS | ID | OPER | LEN | ............................. command instruction send
|
||||
|
||||
ID
|
||||
chip ID
|
||||
|
||||
RIS
|
||||
header for real instruction type. (header=3)
|
||||
|
||||
VIS
|
||||
header for virtual instruction type. (header=C)
|
||||
|
||||
CIS
|
||||
header for command instruction type. (header=7)
|
||||
|
||||
OPER
|
||||
operator/command
|
||||
|
||||
LEN, length
|
||||
command/data length in bytes
|
||||
"""
|
||||
|
||||
TYP_RIS = 0x30
|
||||
"""header for real instruction type.
|
||||
It is real instruction send to the chip which contain the chip configuration parameter.
|
||||
"""
|
||||
|
||||
TYP_VIS = 0xC0
|
||||
"""header for virtual instruction type.
|
||||
It is virtual instruction send to the controller chip to control the chip.
|
||||
"""
|
||||
|
||||
TYP_CIS = 0x70
|
||||
"""header for command instruction type.
|
||||
It is command send to the controller chip for the special purpose.
|
||||
"""
|
||||
|
||||
VIS_RST = 0xF0
|
||||
"""reset virtual instruction"""
|
||||
|
||||
VIS_ASK = 0x30
|
||||
"""ask in virtual instruction"""
|
||||
|
||||
VIS_STI = 0xC0
|
||||
"""stimulation on virtual instruction"""
|
||||
|
||||
VIS_FUH = 0x90
|
||||
"""flush virtual instruction"""
|
||||
|
||||
VIS_INT = 0x60
|
||||
"""interrupt virtual instruction"""
|
||||
|
||||
VIS_CAL = 0xA0
|
||||
"""device calling"""
|
||||
|
||||
CIS_VOLT = 0x10
|
||||
"""get device battery voltage level"""
|
||||
|
||||
|
||||
class InstructionContentWidth:
|
||||
"""instruction width.
|
||||
|
||||
**format**
|
||||
|
||||
::
|
||||
|
||||
InstructionContentWidth :str
|
||||
= SIZE TYPE? ENDIAN? SIGN?
|
||||
|
||||
base = BASE ")"
|
||||
|
||||
SIGN = "+"
|
||||
|
||||
**SIZE**
|
||||
|
||||
bit width or byte length, default 1
|
||||
'*' for array
|
||||
|
||||
**TYPE**
|
||||
|
||||
==== ==================================
|
||||
TYPE description
|
||||
==== ==================================
|
||||
b bits
|
||||
B bytes 2-base value
|
||||
o, O bytes 8-base value
|
||||
d, D bytes 10-base value
|
||||
x, X bytes 16-base value
|
||||
==== ==================================
|
||||
|
||||
**ENDIAN**
|
||||
|
||||
====== ==================================
|
||||
ENDIAN description
|
||||
====== ==================================
|
||||
> big endian (default)
|
||||
< little endian
|
||||
====== ==================================
|
||||
|
||||
**BASE**
|
||||
|
||||
value base, 2 for bit default, 16 for byte default.
|
||||
|
||||
"""
|
||||
|
||||
__slots__ = ('_size', '_bytes_type', '_signed', '_little_endian')
|
||||
|
||||
BASE = {
|
||||
'b': 2,
|
||||
'B': 2,
|
||||
'o': 8,
|
||||
'O': 8,
|
||||
'd': 10,
|
||||
'D': 10,
|
||||
'x': 16,
|
||||
'X': 16,
|
||||
}
|
||||
|
||||
def __init__(self,
|
||||
size: Optional[int],
|
||||
bytes_type: str,
|
||||
signed_value=False,
|
||||
little_endian=False):
|
||||
self._size = size
|
||||
self._bytes_type = bytes_type
|
||||
self._signed = signed_value
|
||||
self._little_endian = little_endian
|
||||
|
||||
@property
|
||||
def size(self) -> Optional[int]:
|
||||
return self._size
|
||||
|
||||
@property
|
||||
def little_endian(self) -> bool:
|
||||
return self._little_endian
|
||||
|
||||
@property
|
||||
def signed(self) -> bool:
|
||||
# XXX InstructionContentWidth.signed not used
|
||||
return self._signed
|
||||
|
||||
@property
|
||||
def bytes_unit(self) -> bool:
|
||||
return self._bytes_type in 'BODX'
|
||||
|
||||
@property
|
||||
def is_array(self) -> bool:
|
||||
# XXX InstructionContentWidth.is_array not used
|
||||
return self._size is None
|
||||
|
||||
@property
|
||||
def width(self) -> int:
|
||||
if self._bytes_type in 'bB':
|
||||
return self._size
|
||||
else:
|
||||
return self._size * 8
|
||||
|
||||
@property
|
||||
def value_base(self) -> int:
|
||||
return self.BASE[self._bytes_type]
|
||||
|
||||
def __str__(self):
|
||||
return '%s%s%s%s' % (str(self._size) if self._size is not None else '*',
|
||||
self._bytes_type,
|
||||
'<' if self._little_endian else '>',
|
||||
'+' if self._signed else '')
|
||||
|
||||
PATTERN = re.compile(
|
||||
r'(?P<SIZE>(\*|\d+))?(?P<TYPE>[XxDdOoBb])(?P<ENDIAN>[<>])?(?P<SIGN>\+)?(?P<EXPR>.+)')
|
||||
|
||||
@classmethod
|
||||
def parse(cls, expr: str) -> Tuple['InstructionContentWidth', str]:
|
||||
m = cls.PATTERN.match(expr)
|
||||
|
||||
if m is None:
|
||||
raise RuntimeError('illegal instruction content width : ' + expr)
|
||||
|
||||
z = m.group('SIZE')
|
||||
t = m.group('TYPE')
|
||||
e = m.group('ENDIAN')
|
||||
s = m.group('SIGN')
|
||||
x = m.group('EXPR')
|
||||
|
||||
if z is None:
|
||||
z = 1
|
||||
elif z == '*':
|
||||
z = None
|
||||
else:
|
||||
z = int(z)
|
||||
|
||||
return InstructionContentWidth(z, t, signed_value=s is not None, little_endian=e == '<'), x
|
||||
|
||||
|
||||
class InstructionContent:
|
||||
"""
|
||||
**format**
|
||||
|
||||
::
|
||||
|
||||
InstructionContent
|
||||
= "#" ... # comment
|
||||
| InstructionContent "#" ... # instruction with comment
|
||||
| InstructionDataContent
|
||||
| InstructionConditionContent
|
||||
| CompactInstructionContent
|
||||
"""
|
||||
|
||||
__slots__ = ('_comment',)
|
||||
|
||||
def __init__(self, comment: Optional[str] = None):
|
||||
self._comment: Optional[str] = comment
|
||||
|
||||
@property
|
||||
def width(self) -> int:
|
||||
return 0
|
||||
|
||||
def build_instruction(self, context: Dict[str, Any], buffer: List[int], shift: int) -> int:
|
||||
"""
|
||||
|
||||
:param context: general case root
|
||||
:param buffer: instruction buffer
|
||||
:param shift: data offset
|
||||
:return: next data offset
|
||||
"""
|
||||
|
||||
return shift
|
||||
|
||||
def __str__(self):
|
||||
if self._comment is None:
|
||||
return '#'
|
||||
else:
|
||||
return '#' + self._comment
|
||||
|
||||
|
||||
class InstructionDataContent(InstructionContent):
|
||||
"""
|
||||
**format**
|
||||
|
||||
::
|
||||
|
||||
InstructionDataContent
|
||||
= InstructionContentWidth instruction_content
|
||||
|
||||
instruction_content
|
||||
= int # binary number
|
||||
| parameter_name :str
|
||||
| parameter_name[index:int] # array parameter access
|
||||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
|
||||
__slots__ = ('_width', '_value', '_index')
|
||||
|
||||
def __init__(self,
|
||||
width: InstructionContentWidth,
|
||||
value: Union[int, str],
|
||||
comment: Optional[str] = None):
|
||||
super().__init__(comment)
|
||||
self._width: InstructionContentWidth = width
|
||||
|
||||
if isinstance(value, str) and '[' in value and value.endswith(']'):
|
||||
value, index = part_suffix(value[:-1], '[')
|
||||
|
||||
self._value: Union[int, str] = value
|
||||
self._index: str = index
|
||||
else:
|
||||
|
||||
self._value: Union[int, str] = value
|
||||
self._index: str = None
|
||||
|
||||
@property
|
||||
def width(self) -> int:
|
||||
return self._width.width
|
||||
|
||||
def value(self, context: Dict[str, Any]) -> Union[int, List[int]]:
|
||||
value = self._value
|
||||
|
||||
if isinstance(value, int):
|
||||
return value
|
||||
|
||||
try:
|
||||
return int(value, self._width.value_base)
|
||||
|
||||
except ValueError:
|
||||
ret = context[value]
|
||||
|
||||
index = self._index
|
||||
if index is None:
|
||||
return ret
|
||||
|
||||
else:
|
||||
try:
|
||||
index = int(index)
|
||||
except ValueError:
|
||||
index = int(context[index])
|
||||
|
||||
return ret[index]
|
||||
|
||||
def build_instruction(self, context: Dict[str, Any], buffer: List[int], shift: int) -> int:
|
||||
if self._width.is_array:
|
||||
raise NotImplemented()
|
||||
|
||||
else:
|
||||
value = int(self.value(context))
|
||||
|
||||
if self._width.bytes_unit:
|
||||
if self._width.size == 1:
|
||||
buffer.append(value)
|
||||
|
||||
else:
|
||||
tmp = []
|
||||
for _ in range(self._width.size):
|
||||
tmp.append(value & 0xFF)
|
||||
value >>= 8
|
||||
|
||||
if self._width.little_endian:
|
||||
buffer.extend(tmp)
|
||||
else:
|
||||
buffer.extend(tmp[::-1])
|
||||
|
||||
return 8
|
||||
|
||||
else:
|
||||
width = self._width.width
|
||||
return append_buffer(buffer, shift, width, value,
|
||||
little_endian=self._width.little_endian)
|
||||
|
||||
def __str__(self):
|
||||
if isinstance(self._value, int):
|
||||
value = bin(self._value)[2:]
|
||||
else:
|
||||
if self._index is not None:
|
||||
value = '%s[%s]' % (self._value, str(self._index))
|
||||
else:
|
||||
value = self._value
|
||||
|
||||
if self._comment is None:
|
||||
return '%s%s' % (self._width, value)
|
||||
else:
|
||||
return '%s%s#%s' % (self._width, value, self._comment)
|
||||
|
||||
|
||||
class InstructionConditionContent(InstructionDataContent):
|
||||
"""
|
||||
**json format**
|
||||
|
||||
::
|
||||
|
||||
InstructionConditionContent
|
||||
= InstructionContentWidth parameter_name "?"
|
||||
| InstructionContentWidth parameter_name "?:" if_false
|
||||
| InstructionContentWidth parameter_name "?" if_true ":" if_false
|
||||
|
||||
if_true, if_false
|
||||
= int
|
||||
| parameter_name :str
|
||||
"""
|
||||
|
||||
__slots__ = ('_true', '_false')
|
||||
|
||||
def __init__(self,
|
||||
width: InstructionContentWidth,
|
||||
value: str,
|
||||
if_true: Union[None, int, str] = None,
|
||||
if_false: Union[None, int, str] = None,
|
||||
comment: Optional[str] = None):
|
||||
|
||||
if if_true is not None and if_false is None:
|
||||
raise RuntimeError('lost if_true')
|
||||
|
||||
super().__init__(width, value, comment)
|
||||
|
||||
self._true = if_true
|
||||
self._false = if_false
|
||||
|
||||
def value(self, context: Dict[str, Any]) -> Union[int, List[int]]:
|
||||
value = context[self._value]
|
||||
test = value is not None
|
||||
|
||||
if self._true is None and self._false is None:
|
||||
return 1 if test else 0
|
||||
|
||||
elif self._true is None:
|
||||
assert self._false is not None
|
||||
|
||||
if test:
|
||||
return value
|
||||
else:
|
||||
branch = self._false
|
||||
|
||||
else:
|
||||
assert self._true is not None
|
||||
assert self._false is not None
|
||||
|
||||
branch = self._true if test else self._false
|
||||
|
||||
if isinstance(branch, int):
|
||||
return branch
|
||||
|
||||
try:
|
||||
return int(branch, self._width.value_base)
|
||||
|
||||
except ValueError:
|
||||
return context[branch]
|
||||
|
||||
def __str__(self):
|
||||
if self._comment is None:
|
||||
c = ''
|
||||
else:
|
||||
c = '#' + self._comment
|
||||
|
||||
if self._true is None and self._false is None:
|
||||
return "%s%s?%s" % (self._width, self._value, c)
|
||||
elif self._true is None:
|
||||
return "%s%s?:%s%s" % (self._width, self._value, self._false, c)
|
||||
else:
|
||||
return "%s%s?%s:%s%s" % (self._width, self._value, self._true, self._false, c)
|
||||
|
||||
|
||||
class CompactInstructionContent(InstructionContent):
|
||||
"""
|
||||
**json format**
|
||||
|
||||
::
|
||||
|
||||
CompactInstructionContent
|
||||
= InstructionContent ";" InstructionContent ...
|
||||
|
||||
"""
|
||||
|
||||
__slots__ = ('_instruction',)
|
||||
|
||||
def __init__(self, instruction: List[InstructionContent]):
|
||||
super().__init__()
|
||||
self._instruction = instruction
|
||||
|
||||
@property
|
||||
def width(self) -> int:
|
||||
return sum(map(lambda i: i.width, self._instruction))
|
||||
|
||||
def build_instruction(self, context: Dict[str, Any], buffer: List[int], shift: int) -> int:
|
||||
for instruction in self._instruction:
|
||||
shift = instruction.build_instruction(context, buffer, shift)
|
||||
|
||||
return shift
|
||||
|
||||
def __str__(self) -> str:
|
||||
return ';'.join(map(str, self._instruction))
|
||||
|
||||
|
||||
def parse_instruction(expr: str) -> InstructionContent:
|
||||
origin_expr = expr
|
||||
|
||||
if expr == '#':
|
||||
return InstructionContent()
|
||||
|
||||
elif expr.startswith('#'):
|
||||
return InstructionContent(comment=expr[1:])
|
||||
|
||||
elif ';' in expr:
|
||||
return CompactInstructionContent([parse_instruction(v) for v in expr.split(';')])
|
||||
|
||||
else:
|
||||
ins_argv = {}
|
||||
expr, comment = part_suffix(expr, '#')
|
||||
expr, condition = part_suffix(expr, '?')
|
||||
|
||||
if condition is not None:
|
||||
ins_type = InstructionConditionContent
|
||||
|
||||
if len(condition) == 0:
|
||||
ins_argv['if_true'] = None
|
||||
ins_argv['if_false'] = None
|
||||
|
||||
else:
|
||||
t, f = part_prefix(condition, ':')
|
||||
|
||||
if t is None:
|
||||
raise RuntimeError('illegal condition instruction : ' + origin_expr)
|
||||
|
||||
elif len(t) == 0:
|
||||
t = None
|
||||
|
||||
ins_argv['if_true'] = t
|
||||
ins_argv['if_false'] = f
|
||||
|
||||
else:
|
||||
ins_type = InstructionDataContent
|
||||
|
||||
width, expr = InstructionContentWidth.parse(expr)
|
||||
|
||||
return ins_type(width, expr, **ins_argv, comment=comment)
|
||||
|
||||
|
||||
def eval_instruction(expr: Union[str, int], context: Dict[str, Any], buffer: Optional[List[int]] = None) -> List[int]:
|
||||
if buffer is None:
|
||||
buffer = []
|
||||
|
||||
if isinstance(expr, str):
|
||||
ins = parse_instruction(expr)
|
||||
|
||||
ins.build_instruction(context, buffer, 0)
|
||||
|
||||
elif isinstance(expr, int):
|
||||
if expr in (DeviceInstruction.VIS_RST,
|
||||
DeviceInstruction.VIS_ASK,
|
||||
DeviceInstruction.VIS_STI,
|
||||
DeviceInstruction.VIS_FUH,
|
||||
DeviceInstruction.VIS_INT,
|
||||
DeviceInstruction.VIS_CAL):
|
||||
buffer.extend([DeviceInstruction.TYP_VIS, expr])
|
||||
|
||||
else:
|
||||
raise RuntimeError('unknown expr code : ' + str(expr))
|
||||
|
||||
else:
|
||||
raise RuntimeError('illegal expr type : ' + str(expr))
|
||||
|
||||
return buffer
|
||||
|
||||
|
||||
def print_instruction(expr: Union[str, int],
|
||||
context: Dict[str, Any],
|
||||
append_ris_type: bool = True,
|
||||
c_style_uint8_array: Optional[str] = None):
|
||||
buffer = []
|
||||
|
||||
eval_instruction(expr, context, buffer)
|
||||
|
||||
if append_ris_type and isinstance(expr, str):
|
||||
length = len(buffer)
|
||||
buffer.insert(0, 0x30)
|
||||
buffer.insert(1, length)
|
||||
|
||||
if c_style_uint8_array is None:
|
||||
print(hex_line(buffer))
|
||||
else:
|
||||
for i, v in enumerate(buffer):
|
||||
print(c_style_uint8_array, '[%d]' % i, ' = ', '0x%02X' % v, ';', sep='')
|
||||
@@ -0,0 +1,22 @@
|
||||
CPU_FREQUENCY = 48e6
|
||||
|
||||
|
||||
def headstage_gptimer_get_frequency_load_value(frequency: float) -> int:
|
||||
load = int(CPU_FREQUENCY / frequency) - 1
|
||||
|
||||
if load < 0xFFFF:
|
||||
return load
|
||||
else:
|
||||
return 0xFA0000 | int(load / 250) - 1
|
||||
|
||||
|
||||
def headstage_gptimer_get_timeout_load_value(timeout_us: int) -> int:
|
||||
load = int(timeout_us * CPU_FREQUENCY / 1e6) - 1
|
||||
|
||||
if load < 0xFFFF:
|
||||
return load
|
||||
else:
|
||||
return 0xFA0000 | int(load / 250) - 1
|
||||
|
||||
|
||||
print('0x%06X' % headstage_gptimer_get_frequency_load_value(0.8))
|
||||
@@ -0,0 +1,115 @@
|
||||
from typing import Dict, Any
|
||||
|
||||
from devlib.util import print_instruction, DeviceInstruction
|
||||
|
||||
CHANNEL_STI_0 = 0
|
||||
CHANNEL_STI_1 = 1
|
||||
|
||||
STI_WAVEFORM_POS = 0x00
|
||||
STI_WAVEFORM_NEG = 0x01
|
||||
STI_WAVEFORM_P2N = 0x02
|
||||
STI_WAVEFORM_N2P = 0x03
|
||||
|
||||
STI_PRECISION_10 = 0
|
||||
STI_PRECISION_01 = 1
|
||||
|
||||
STI_INSTRUCTION = {
|
||||
'GLOBAL': '5b11111;2b0#GV;12bCURRENT',
|
||||
'LOCAL': '5b11111;2b01#LV;3b>CHANNEL;1b>PRECISION;3b>STI_MODE;12b>STI_FREQ;10b>STI_PW;10b>STI_PW_IPI;10b>STI_NUM',
|
||||
'CHANNEL': '5b11111;2b10#CE;ba0;ba1;ba2;ba3;ba4;ba5;ba6;ba7;ba8;ba9;baa;bab;bac;bad;bae;baf'
|
||||
}
|
||||
|
||||
DEFAULT_PARAMETER = {
|
||||
'CURRENT': 10, # uA
|
||||
'CHANNEL': CHANNEL_STI_0,
|
||||
'STI_MODE': STI_WAVEFORM_POS,
|
||||
'PRECISION': STI_PRECISION_10,
|
||||
'STI_FREQ': 1000, # Hz
|
||||
'STI_PW': 100, # us
|
||||
'STI_PW_IPI': 50, # us
|
||||
'STI_NUM': 900,
|
||||
}
|
||||
|
||||
|
||||
def validate_frequency_parameter(parameter: Dict[str, Any]) -> bool:
|
||||
p = int(parameter['PRECISION'])
|
||||
f = int(parameter['STI_FREQ'])
|
||||
w = int(parameter['STI_PW'])
|
||||
i = int(parameter['STI_PW_IPI'])
|
||||
return 1e6 * (1 if p == 0 else 10) / f >= 2 * w + i
|
||||
|
||||
|
||||
def get_channel_enable_parameter(*channel: int):
|
||||
return {
|
||||
'a0': 1 if 0 in channel else 0,
|
||||
'a1': 1 if 1 in channel else 0,
|
||||
'a2': 1 if 2 in channel else 0,
|
||||
'a3': 1 if 3 in channel else 0,
|
||||
'a4': 1 if 4 in channel else 0,
|
||||
'a5': 1 if 5 in channel else 0,
|
||||
'a6': 1 if 6 in channel else 0,
|
||||
'a7': 1 if 7 in channel else 0,
|
||||
'a8': 1 if 8 in channel else 0,
|
||||
'a9': 1 if 9 in channel else 0,
|
||||
'aa': 1 if 10 in channel else 0,
|
||||
'ab': 1 if 11 in channel else 0,
|
||||
'ac': 1 if 12 in channel else 0,
|
||||
'ad': 1 if 13 in channel else 0,
|
||||
'ae': 1 if 14 in channel else 0,
|
||||
'af': 1 if 15 in channel else 0,
|
||||
}
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------- #
|
||||
|
||||
STI_PARAMETER_0 = {
|
||||
'CURRENT': 10, # uA
|
||||
'CHANNEL': CHANNEL_STI_0,
|
||||
'STI_MODE': STI_WAVEFORM_POS,
|
||||
'PRECISION': STI_PRECISION_10,
|
||||
'STI_FREQ': 10, # Hz
|
||||
'STI_PW': 10, # us
|
||||
'STI_PW_IPI': 10, # us
|
||||
'STI_NUM': 900,
|
||||
}
|
||||
|
||||
STI_PARAMETER_1 = {
|
||||
'CURRENT': 10, # uA
|
||||
'CHANNEL': CHANNEL_STI_1,
|
||||
'STI_MODE': STI_WAVEFORM_NEG,
|
||||
'PRECISION': STI_PRECISION_10,
|
||||
'STI_FREQ': 10, # Hz
|
||||
'STI_PW': 10, # us
|
||||
'STI_PW_IPI': 10, # us
|
||||
'STI_NUM': 900,
|
||||
}
|
||||
|
||||
print_instruction(STI_INSTRUCTION['GLOBAL'], STI_PARAMETER_0, append_ris_type=False)
|
||||
|
||||
valid_channel_0 = validate_frequency_parameter(STI_PARAMETER_0)
|
||||
valid_channel_1 = validate_frequency_parameter(STI_PARAMETER_1)
|
||||
enable_channel = []
|
||||
|
||||
if not valid_channel_0:
|
||||
print('invalidate parameter')
|
||||
else:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['LOCAL'], STI_PARAMETER_0, append_ris_type=False)
|
||||
enable_channel.append(0)
|
||||
|
||||
if not valid_channel_1:
|
||||
print('invalidate parameter')
|
||||
else:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['LOCAL'], STI_PARAMETER_1, append_ris_type=False)
|
||||
enable_channel.append(1)
|
||||
|
||||
if valid_channel_0 or valid_channel_1:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['CHANNEL'], get_channel_enable_parameter(*enable_channel), append_ris_type=False)
|
||||
|
||||
print('--sti--')
|
||||
print_instruction(DeviceInstruction.VIS_STI, {})
|
||||
|
||||
print('--int--')
|
||||
print_instruction(DeviceInstruction.VIS_INT, {})
|
||||
@@ -0,0 +1,133 @@
|
||||
from typing import Dict, Any
|
||||
|
||||
from devlib.util import print_instruction, DeviceInstruction
|
||||
|
||||
CHANNEL_STI_0 = 0
|
||||
CHANNEL_STI_1 = 1
|
||||
|
||||
STI_WAVEFORM_POS = 0x00
|
||||
STI_WAVEFORM_NEG = 0x01
|
||||
STI_WAVEFORM_P2N = 0x02
|
||||
STI_WAVEFORM_N2P = 0x03
|
||||
|
||||
STI_PRECISION_10 = 0
|
||||
STI_PRECISION_01 = 1
|
||||
|
||||
STI_NUM_INFINITE = 1000
|
||||
|
||||
STI_INSTRUCTION = {
|
||||
'GLOBAL': '3b001#header#;1b0;12bCURRENT',
|
||||
'LOCAL': '3b010#header;1b0;4b>CHANNEL;3b>STI_MODE;1b>PRECISION;12b>STI_FREQ;10b>STI_PW;10b>STI_PW_IPI;10b>STI_NUM'
|
||||
}
|
||||
|
||||
DEFAULT_PARAMETER = {
|
||||
'CURRENT': 10, # uA
|
||||
'CHANNEL': CHANNEL_STI_0,
|
||||
'STI_MODE': STI_WAVEFORM_POS,
|
||||
'PRECISION': STI_PRECISION_10,
|
||||
'STI_FREQ': 1000, # Hz
|
||||
'STI_PW': 100, # us
|
||||
'STI_PW_IPI': 50, # us
|
||||
'STI_NUM': STI_NUM_INFINITE,
|
||||
}
|
||||
|
||||
|
||||
def validate_frequency_parameter(parameter: Dict[str, Any]) -> bool:
|
||||
p = int(parameter['PRECISION'])
|
||||
f = int(parameter['STI_FREQ'])
|
||||
w = int(parameter['STI_PW'])
|
||||
i = int(parameter['STI_PW_IPI'])
|
||||
return 1e6 * (1 if p == 0 else 10) / f >= 2 * w + i
|
||||
|
||||
|
||||
SPIN_TIMEOUT = [
|
||||
(10, 53),
|
||||
(20, 106),
|
||||
(30, 160),
|
||||
(40, 214),
|
||||
(50, 265),
|
||||
(60, 319),
|
||||
(70, 374),
|
||||
(80, 427),
|
||||
(100, 533),
|
||||
(150, 800),
|
||||
(200, 1066),
|
||||
(300, 1600),
|
||||
(400, 2133),
|
||||
(500, 2666),
|
||||
(1000, 5332),
|
||||
]
|
||||
|
||||
|
||||
def get_spin_timeout_value(timeout_us: int) -> int:
|
||||
if timeout_us == 0:
|
||||
return 0
|
||||
|
||||
elif timeout_us <= SPIN_TIMEOUT[0][0]:
|
||||
return SPIN_TIMEOUT[0][1]
|
||||
|
||||
elif timeout_us >= SPIN_TIMEOUT[-1][0]:
|
||||
return SPIN_TIMEOUT[-1][1]
|
||||
|
||||
else:
|
||||
for i in range(len(SPIN_TIMEOUT)):
|
||||
t0 = SPIN_TIMEOUT[i][0]
|
||||
v0 = SPIN_TIMEOUT[i][1]
|
||||
|
||||
if timeout_us == t0:
|
||||
return v0
|
||||
|
||||
t1 = SPIN_TIMEOUT[i + 1][0]
|
||||
v1 = SPIN_TIMEOUT[i + 1][1]
|
||||
|
||||
if t0 < timeout_us < t1:
|
||||
dt = t1 - t0
|
||||
return int((t1 - timeout_us) * v0 / dt + (timeout_us - t0) * v1 / dt)
|
||||
|
||||
raise RuntimeError()
|
||||
|
||||
|
||||
# -------------------------------------------------------------------------------------------------------------------- #
|
||||
|
||||
|
||||
STI_PARAMETER_0 = {
|
||||
'CURRENT': 10, # uA
|
||||
'CHANNEL': CHANNEL_STI_0,
|
||||
'STI_MODE': STI_WAVEFORM_POS,
|
||||
'PRECISION': STI_PRECISION_10,
|
||||
'STI_FREQ': 10, # Hz
|
||||
'STI_PW': 10, # us
|
||||
'STI_PW_IPI': 10, # us
|
||||
'STI_NUM': STI_NUM_INFINITE,
|
||||
}
|
||||
|
||||
STI_PARAMETER_1 = {
|
||||
'CURRENT': 10, # uA
|
||||
'CHANNEL': CHANNEL_STI_1,
|
||||
'STI_MODE': STI_WAVEFORM_NEG,
|
||||
'PRECISION': STI_PRECISION_10,
|
||||
'STI_FREQ': 10, # Hz
|
||||
'STI_PW': 10, # us
|
||||
'STI_PW_IPI': 10, # us
|
||||
'STI_NUM': STI_NUM_INFINITE,
|
||||
}
|
||||
|
||||
print_instruction(STI_INSTRUCTION['GLOBAL'], STI_PARAMETER_0, append_ris_type=False)
|
||||
|
||||
if not validate_frequency_parameter(STI_PARAMETER_0):
|
||||
print('invalidate parameter')
|
||||
else:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['LOCAL'], STI_PARAMETER_0, append_ris_type=False)
|
||||
|
||||
if not validate_frequency_parameter(STI_PARAMETER_1):
|
||||
print('invalidate parameter')
|
||||
else:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['LOCAL'], STI_PARAMETER_1, append_ris_type=False)
|
||||
|
||||
print('--sti--')
|
||||
print_instruction(DeviceInstruction.VIS_STI, {})
|
||||
|
||||
print('--int--')
|
||||
print_instruction(DeviceInstruction.VIS_INT, {})
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
def main():
|
||||
with open('C:/ti/python_test_code/uni/att_notify.psd', 'r') as file:
|
||||
print(file.read())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,33 @@
|
||||
from devlib.util import print_instruction
|
||||
|
||||
NEULIVE_INSTRUCTION = {
|
||||
'RIS': '3b101#header#;2b0;3b>LB;4b0;1bCH;1bFS;3b>WF;5b>TV;4b>PM;4b>NM;4b>SR',
|
||||
'UMC': '3b001#umc_parameter;3b>AG;4b>PW;6b>TT;2b>SB;6b>TF;1bCA;1bCB;1bCC;1bCD;4b>CHA;4b>CHB;4b>CHC;4b>CHD'
|
||||
}
|
||||
|
||||
NEULIVE_PARAMETER = {
|
||||
'LB': 0,
|
||||
'CH': 0,
|
||||
'FS': 0,
|
||||
'WF': 0,
|
||||
'TV': 0,
|
||||
'PM': 15,
|
||||
'NM': 0,
|
||||
'SR': 0,
|
||||
'AG': 5,
|
||||
'PW': 0,
|
||||
'TT': 0,
|
||||
'SB': 1,
|
||||
'TF': 3,
|
||||
'CA': 1,
|
||||
'CB': 0,
|
||||
'CC': 0,
|
||||
'CD': 0,
|
||||
'CHA': 0,
|
||||
'CHB': 1,
|
||||
'CHC': 2,
|
||||
'CHD': 3,
|
||||
}
|
||||
|
||||
print_instruction(NEULIVE_INSTRUCTION['RIS'], NEULIVE_PARAMETER)
|
||||
print_instruction(NEULIVE_INSTRUCTION['UMC'], NEULIVE_PARAMETER)
|
||||
@@ -0,0 +1,72 @@
|
||||
import unittest
|
||||
from random import randint
|
||||
|
||||
|
||||
def pop_count(value: int) -> int:
|
||||
value -= ((value >> 1) & 0x55555555)
|
||||
value = (((value >> 2) & 0x33333333) + (value & 0x33333333))
|
||||
value = (((value >> 4) + value) & 0x0f0f0f0f)
|
||||
value += (value >> 8)
|
||||
value += (value >> 16)
|
||||
return value & 0x0000003f
|
||||
|
||||
|
||||
def bit_reverse(value: int) -> int:
|
||||
value = (((value & 0xaaaaaaaa) >> 1) | ((value & 0x55555555) << 1))
|
||||
value = (((value & 0xcccccccc) >> 2) | ((value & 0x33333333) << 2))
|
||||
value = (((value & 0xf0f0f0f0) >> 4) | ((value & 0x0f0f0f0f) << 4))
|
||||
value = (((value & 0xff00ff00) >> 8) | ((value & 0x00ff00ff) << 8))
|
||||
return (value >> 16) | (value << 16)
|
||||
|
||||
|
||||
def umc_pass_check(v1: int, v2: int) -> bool:
|
||||
return pop_count(v1) + pop_count(v2) == 4
|
||||
|
||||
|
||||
class PopCountTest(unittest.TestCase):
|
||||
def test_zero(self):
|
||||
self.assertEqual(0, pop_count(0))
|
||||
|
||||
def test_one(self):
|
||||
self.assertEqual(1, pop_count(1))
|
||||
|
||||
def test_two(self):
|
||||
for _ in range(4):
|
||||
a = randint(0, 8)
|
||||
b = randint(0, 8)
|
||||
|
||||
while a == b:
|
||||
b = randint(0, 8)
|
||||
|
||||
a = 1 << a
|
||||
b = 1 << b
|
||||
v = a | b
|
||||
self.assertEqual(2, pop_count(v))
|
||||
|
||||
|
||||
class BitReverseTest(unittest.TestCase):
|
||||
def test_zero(self):
|
||||
self.assertEqual(0, bit_reverse(0))
|
||||
|
||||
def test_one(self):
|
||||
self.assertEqual(0x8000_0000, bit_reverse(1))
|
||||
|
||||
def test_random_one(self):
|
||||
for _ in range(4):
|
||||
a = randint(0, 15)
|
||||
b = 31 - a
|
||||
|
||||
va = 1 << a
|
||||
vb = 1 << b
|
||||
|
||||
self.assertEqual(vb, bit_reverse(va), f"a = {a}, b = {b}")
|
||||
|
||||
|
||||
class UmcPassCheckTest(unittest.TestCase):
|
||||
def test_validate(self):
|
||||
self.assertFalse(umc_pass_check(0b0101_0001_0100_0000_0000_0000_0000_0000,
|
||||
0b0101_0000_0000_1100_0000_0000_0000_0000))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
@@ -1,15 +1,47 @@
|
||||
import unittest
|
||||
from typing import List, Optional
|
||||
from random import randint
|
||||
from typing import List, Optional, Tuple, Iterable
|
||||
|
||||
REC_CHANNEL_COUNT = 16
|
||||
REC_CHANNEL_COUNT = 12
|
||||
|
||||
CHANNEL_INS2MUX = (10, 0, 1, 2, 3, 8, 7, 6, 5, 4, 9, 8)
|
||||
'''index:ins -> value:mux'''
|
||||
|
||||
CHANNEL_MUX2INS = (1, 2, 3, 4, 9, 8, 7, 6, 5, 10, 0, 11)
|
||||
'''index:mux -> value:ins'''
|
||||
|
||||
|
||||
def to_channel_table(*channel: int) -> List[bool]:
|
||||
return [i in channel for i in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
|
||||
def rearrange_channel_mux_table(channel_table: List[bool]) -> Optional[List[int]]:
|
||||
def to_mux_channel(channel: Iterable[int], sort=False) -> List[int]:
|
||||
ret = [CHANNEL_INS2MUX[ch] for ch in channel]
|
||||
|
||||
if sort:
|
||||
ret.sort()
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def to_ins_channel(channel: Iterable[int], sort=False) -> List[int]:
|
||||
ret = [CHANNEL_MUX2INS[ch] for ch in channel]
|
||||
|
||||
if sort:
|
||||
ret.sort()
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def to_mux_channel_table(*channel: int) -> List[bool]:
|
||||
return [CHANNEL_MUX2INS[i] in channel for i in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
|
||||
def to_ins_channel_table(*channel: int) -> List[bool]:
|
||||
return [CHANNEL_INS2MUX[i] in channel for i in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
|
||||
def rearrange_channel_mux_table(channel_table: List[bool]) -> Tuple[int, Optional[List[int]]]:
|
||||
enable_channel_number = 0
|
||||
last_enable_channel = 0
|
||||
|
||||
@@ -19,14 +51,14 @@ def rearrange_channel_mux_table(channel_table: List[bool]) -> Optional[List[int]
|
||||
enable_channel_number += 1
|
||||
|
||||
if enable_channel_number == 0:
|
||||
return None
|
||||
return 0, None
|
||||
|
||||
channel_mux = [0 for _ in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
if enable_channel_number == 1:
|
||||
channel_mux[0] = last_enable_channel
|
||||
|
||||
return channel_mux
|
||||
return 1, channel_mux
|
||||
|
||||
next_enable_channel = last_enable_channel
|
||||
channel_mux_index = last_enable_channel
|
||||
@@ -57,26 +89,102 @@ def rearrange_channel_mux_table(channel_table: List[bool]) -> Optional[List[int]
|
||||
channel_mux[channel_mux_index] = channel_mux[channel_mux_index + offset]
|
||||
channel_mux_index -= 1
|
||||
|
||||
return channel_mux
|
||||
return last_enable_channel + 1, channel_mux
|
||||
|
||||
|
||||
def count_used_channel(channel_mux: List[int]):
|
||||
ret = [0] * REC_CHANNEL_COUNT
|
||||
|
||||
for ch in channel_mux:
|
||||
ret[ch] += 1
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def expect_channel_count(*channel: int) -> List[int]:
|
||||
channel_mux = to_mux_channel_table(*channel)
|
||||
used, mux_arrange = rearrange_channel_mux_table(channel_mux)
|
||||
if used == 0:
|
||||
ins_arrange = to_ins_channel([])
|
||||
else:
|
||||
ins_arrange = to_ins_channel(mux_arrange[:used], sort=False)
|
||||
return count_used_channel(ins_arrange)
|
||||
|
||||
|
||||
def loop_repeat(col: List[int]) -> Iterable[int]:
|
||||
while True:
|
||||
yield from iter(col)
|
||||
|
||||
|
||||
def channel_count(*channel: int) -> List[int]:
|
||||
if len(channel) == 0:
|
||||
return [0] * REC_CHANNEL_COUNT
|
||||
|
||||
elif len(channel) == 1:
|
||||
channel = channel[0]
|
||||
return [1 if ch == channel else 0 for ch in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
else:
|
||||
channel_mux = to_mux_channel(channel, sort=True)
|
||||
ret = [0] * REC_CHANNEL_COUNT
|
||||
i = max(channel_mux) + 1
|
||||
|
||||
for ch in loop_repeat(channel_mux[::-1]):
|
||||
ret[CHANNEL_MUX2INS[ch]] += 1
|
||||
i -= 1
|
||||
if i == 0:
|
||||
break
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
class UniRearrangeMuxChannelTest(unittest.TestCase):
|
||||
def test_empty_channel(self):
|
||||
self.assertIsNone(rearrange_channel_mux_table(to_channel_table()))
|
||||
i, a = rearrange_channel_mux_table(to_channel_table())
|
||||
self.assertEqual(0, i)
|
||||
self.assertIsNone(a)
|
||||
|
||||
def test_single_channel(self):
|
||||
for _ in range(3):
|
||||
c = randint(0, REC_CHANNEL_COUNT - 1)
|
||||
|
||||
expect = [c if i == 0 else 0 for i in range(REC_CHANNEL_COUNT)]
|
||||
print(expect)
|
||||
self.assertEqual(expect, rearrange_channel_mux_table(to_channel_table(c)))
|
||||
self.assertTupleEqual((1, expect), rearrange_channel_mux_table(to_channel_table(c)))
|
||||
|
||||
def test_two_channel(self):
|
||||
self.assertEqual([2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
rearrange_channel_mux_table(to_channel_table(1, 2)))
|
||||
self.assertEqual([2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
rearrange_channel_mux_table(to_channel_table(2, 1)))
|
||||
self.assertTupleEqual((8, [1, 7, 1, 7, 1, 7, 1, 7, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(7, 1)))
|
||||
self.assertTupleEqual((3, [2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(2, 1)))
|
||||
self.assertTupleEqual((8, [3, 7, 2, 3, 7, 2, 3, 7, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(7, 3, 2)))
|
||||
|
||||
def test_many_channel(self):
|
||||
self.assertTupleEqual((2, [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(1, 0)))
|
||||
|
||||
self.assertTupleEqual((6, [2, 5, 2, 5, 2, 5, 0, 0, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(2, 5)))
|
||||
|
||||
self.assertTupleEqual((6, [1, 3, 5, 1, 3, 5, 0, 0, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(1, 3, 5)))
|
||||
|
||||
self.assertTupleEqual((6, [4, 5, 1, 3, 4, 5, 0, 0, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(4, 1, 3, 5)))
|
||||
|
||||
self.assertTupleEqual((6, [5, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(4, 1, 2, 3, 5)))
|
||||
|
||||
self.assertTupleEqual((9, [6, 7, 8, 3, 4, 5, 6, 7, 8, 0, 0, 0]),
|
||||
rearrange_channel_mux_table(to_channel_table(3, 4, 5, 6, 7, 8)))
|
||||
|
||||
def test_count_channel(self):
|
||||
self.assertEqual(expect_channel_count(), channel_count())
|
||||
self.assertEqual(expect_channel_count(0), channel_count(0))
|
||||
self.assertEqual(expect_channel_count(4), channel_count(4))
|
||||
self.assertEqual(expect_channel_count(2, 4), channel_count(4, 2))
|
||||
self.assertEqual(expect_channel_count(7, 3, 2), channel_count(7, 3, 2))
|
||||
self.assertEqual(expect_channel_count(0, 1, 2), channel_count(0, 1, 2))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
/*
|
||||
** Stack Frontier Generator 1.1.0 (2019-04-28 18:23:23.057000)
|
||||
** Stack Frontier Generator 1.1.0 (2019-06-17 18:27:00.233000)
|
||||
**
|
||||
** WARNING - Auto-generated file. Modifications could be lost!
|
||||
*/
|
||||
|
||||
--define=ICALL_STACK0_ADDR=0x8001
|
||||
--define=ICALL_STACK0_START=0x8000
|
||||
--define=ICALL_RAM0_START=0x20004340
|
||||
--define=ICALL_RAM0_START=0x20004310
|
||||
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
/*
|
||||
** Stack Frontier Generator 1.1.0 (2019-04-28 18:23:23.057000)
|
||||
** Stack Frontier Generator 1.1.0 (2019-06-17 18:27:00.233000)
|
||||
**
|
||||
** WARNING - Auto-generated file. Modifications could be lost!
|
||||
*/
|
||||
|
||||
--define=ICALL_RAM0_START=0x20004340
|
||||
--define=ICALL_RAM0_START=0x20004310
|
||||
--define=ICALL_STACK0_START=0x8000
|
||||
--define=ICALL_STACK0_ADDR=0x8001
|
||||
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
*/
|
||||
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\host\host_pcxx.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\ctrl\cc2640\cc2640_ctrl_pcxx_41c.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\hci_tl\cc26xx\cc26xx_hci_tl_full_v41.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\ctrl\cc2640\cc2640_ctrl_pcxx_41c_ext.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\hci_tl\cc26xx\cc26xx_hci_tl_full_v41_v42.a"
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+9
-9
@@ -1,12 +1,12 @@
|
||||
|
||||
XOPTS = -I"C:/ti/xdctools_3_32_02_25_core/packages/" -Dxdc_target_types__=C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M3
|
||||
XOPTS = -I"C:/ti/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M3
|
||||
|
||||
vpath % C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/sysbios/
|
||||
vpath %.c C:/ti/xdctools_3_32_02_25_core/packages/
|
||||
vpath %.c C:/ti/xdctools_3_32_00_06_core/packages/
|
||||
|
||||
CCOPTS = --endian=little -mv7M3 --abi=eabi -q -ms --opt_for_speed=0 --program_level_compile -o3 -g --optimize_with_debug -Dti_sysbios_knl_Task_minimizeLatency__D=FALSE -Dti_sysbios_family_arm_cc26xx_Boot_driverlibVersion=2 -Dti_sysbios_knl_Clock_stopCheckNext__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_enableException__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_disablePriority__D=32U -Dti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__D=0U
|
||||
|
||||
XDC_ROOT = C:/ti/xdctools_3_32_02_25_core/packages/
|
||||
XDC_ROOT = C:/ti/xdctools_3_32_00_06_core/packages/
|
||||
|
||||
BIOS_ROOT = C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/sysbios/
|
||||
|
||||
@@ -16,14 +16,14 @@ BIOS_INC = -I"C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/pa
|
||||
|
||||
TARGET_INC = -I"C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/"
|
||||
|
||||
INCS = $(BIOS_INC) $(TARGET_INC) --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/include" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/cc2650" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/icall/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/roles/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/roles" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/npi/src" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/heapmgr" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/controller/cc26xx/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/hal/src/target/_common" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/target" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/hal/src/target/_common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/hal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/osal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/services/src/sdata" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/services/src/saddr" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/icall/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/rom" --include_path="C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/cc26xxware_2_24_03_17272" -IC:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/
|
||||
INCS = $(BIOS_INC) $(TARGET_INC) --include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.5.LTS/include" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/cc2650" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/icall/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/roles/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/roles" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/npi/src" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/heapmgr" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/controller/cc26xx/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/hal/src/target/_common" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/target" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/hal/src/target/_common/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/hal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/osal/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/services/src/sdata" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/services/src/saddr" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/components/icall/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/inc" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/rom" --include_path="C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/cc26xxware_2_24_03_17272" -IC:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/
|
||||
|
||||
CC = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/include
|
||||
ASM = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/include
|
||||
AR = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armar rq
|
||||
CC = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.5.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.5.LTS/include
|
||||
ASM = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.5.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.5.LTS/include
|
||||
AR = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.5.LTS/bin/armar rq
|
||||
|
||||
DEL = C:/ti/xdctools_3_32_02_25_core/packages/../bin/rm -f
|
||||
CP = C:/ti/xdctools_3_32_02_25_core/packages/../bin/cp -f
|
||||
DEL = C:/ti/xdctools_3_32_00_06_core/packages/../bin/rm -f
|
||||
CP = C:/ti/xdctools_3_32_00_06_core/packages/../bin/cp -f
|
||||
|
||||
define RM
|
||||
$(if $(wildcard $1),$(DEL) $1,:)
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -9,6 +9,6 @@
|
||||
<linkerCommandFile value="cc26x0f128.cmd"/>
|
||||
<rts value="libc.a"/>
|
||||
<createSlaveProjects value=""/>
|
||||
<connection value="common/targetdb/connections/TIXDS100v3_Dot7_Connection.xml"/>
|
||||
<connection value="common/targetdb/connections/TIXDS110_Connection.xml"/>
|
||||
<isTargetManual value="false"/>
|
||||
</projectOptions>
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.TMS470.Default.893345658" name="FlashROM" parent="com.ti.ccstudio.buildDefinitions.TMS470.Default" postbuildStep="${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}.out;${TOOLS_BLE}/frontier/frontier.exe ccs ${PROJECT_LOC}/${ConfigName}/${ProjName}_linkInfo.xml ${ORG_PROJ_DIR}/../../ccs/config/ccs_compiler_defines.bcfg ${ORG_PROJ_DIR}/../../ccs/config/ccs_linker_defines.cmd " prebuildStep=""${TOOLS_BLE}/lib_search/lib_search.exe" ${ORG_PROJ_DIR}/build_config.opt "${TOOLS_BLE}/lib_search/params_split_cc2640.xml" ${SRC_BLE_CORE}/../blelib "${ORG_PROJ_DIR}/../../ccs/config/lib_linker.cmd"">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Default.893345658." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.862906140" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1373763881">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.749555863" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.662064348" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1240982460">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2060206926" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.CC2650F128"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
@@ -26,17 +26,17 @@
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE="/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1226924946" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.666439040" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.1487778905" name="GNU Make.FlashROM" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.352371900" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1312023808" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.342082829" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.348530318" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.1738096723" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.1803929349" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.327756378" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.84498721" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.174730814" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.112402563" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.226107095" name="GNU Make.FlashROM" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.1308855802" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1162032918" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.327276671" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.538784571" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.1838411336" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.1508380156" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.1819166130" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.1213955566" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/examples/host_test/cc26xx/stack"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/common/cc26xx"/>
|
||||
@@ -60,7 +60,7 @@
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/profiles/roles"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.449036407" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.181394656" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="CC26XX"/>
|
||||
<listOptionValue builtIn="false" value="CC26XXWARE"/>
|
||||
<listOptionValue builtIn="false" value="DATA="/>
|
||||
@@ -78,60 +78,60 @@
|
||||
<listOptionValue builtIn="false" value="xDEBUG_SW_TRACE"/>
|
||||
<listOptionValue builtIn="false" value="xTESTMODES"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.242123959" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.601259316" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.1587878318" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.436507674" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="48"/>
|
||||
<listOptionValue builtIn="false" value="16004"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.911375671" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.1596660667" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.897642261" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.916023731" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.1852873766" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.1544258811" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.669232242" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.1890382832" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/config/build_components.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/build_config.opt"/>
|
||||
</option>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS.977794136" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS.980317392" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS.1333878599" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.289210215" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS.201033562" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS.1401380308" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS.57022734" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.886514967" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1373763881" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.1720562086" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.1630117678" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.1302394488" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.1128043424" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.137622820" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1240982460" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.763630639" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.786301819" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.579888348" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.596794278" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.61098608" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/../../ccs/config/lib_linker.cmd"/>
|
||||
<listOptionValue builtIn="false" value="${ROM}/ble_rom_releases/04242014/ble_rom_patch.symbols"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}/driverlib/bin/ccs/driverlib.lib"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.790272373" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1071463698" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1324992868" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1861978448" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="16002-D"/>
|
||||
<listOptionValue builtIn="false" value="10325-D"/>
|
||||
<listOptionValue builtIn="false" value="10247-D"/>
|
||||
<listOptionValue builtIn="false" value="10229-D"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.216507169" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.1382163767" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.1890909858" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT.830512447" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT" value="startup_entry" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.1081803857" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.249638271" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.407917293" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.2031489241" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.1616606673" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.1661331023" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.109768763" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.1945184042" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT.1718643446" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT" value="startup_entry" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.676678693" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.1014139784" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.289607365" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.1770270937" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.1886191839" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.1647667237" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1600156533" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.360730399" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.1462981440" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.1275037570" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.606988871" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.2061369399" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.460353249" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
@@ -157,4 +157,5 @@
|
||||
<content-type-mapping configuration="" content-type="org.eclipse.cdt.core.cxxSource" language="com.ti.ccstudio.core.TIGPPLanguage"/>
|
||||
</project-mappings>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
||||
|
||||
+4
-1
File diff suppressed because one or more lines are too long
+15
-14
@@ -1,19 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<configurations XML_version="1.2" id="configurations_0">
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS100v3 USB Debug Probe_0" href="connections/TIXDS100v3_Dot7_Connection.xml" id="Texas Instruments XDS100v3 USB Debug Probe_0" xml="TIXDS100v3_Dot7_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2icepick_c.xml" id="drivers" xml="tixds100v2icepick_c.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2cs_dap.xml" id="drivers" xml="tixds100v2cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2cortexM.xml" id="drivers" xml="tixds100v2cortexM.xml" xmlpath="drivers"/>
|
||||
<property Type="choicelist" Value="2" id="The Converter Usage">
|
||||
<choice Name="Generate 1149.7 2-pin advanced modes" value="enable">
|
||||
<property Type="choicelist" Value="1" id="The Converter 1149.7 Frequency">
|
||||
<choice Name="Overclock with user specified value" value="unused">
|
||||
<property Type="choicelist" Value="5" id="-- Choose a value from 1.0MHz to 50.0MHz"/>
|
||||
</choice>
|
||||
</property>
|
||||
<property Type="choicelist" Value="5" id="The Target Scan Format"/>
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe_0" href="connections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe_0" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds510icepick_c.xml" id="drivers" xml="tixds510icepick_c.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds510cortexM.xml" id="drivers" xml="tixds510cortexM.xml" xmlpath="drivers"/>
|
||||
<property Type="choicelist" Value="1" id="Power Selection">
|
||||
<choice Name="Probe supplied power" value="1">
|
||||
<property Type="stringfield" Value="3.3" id="Voltage Level"/>
|
||||
</choice>
|
||||
</property>
|
||||
<property Type="choicelist" Value="0" id="JTAG Signal Isolation"/>
|
||||
<property Type="choicelist" Value="4" id="SWD Mode Settings">
|
||||
<choice Name="cJTAG (1149.7) 2-pin advanced modes" value="enable">
|
||||
<property Type="choicelist" Value="1" id="XDS110 Aux Port"/>
|
||||
</choice>
|
||||
</property>
|
||||
<platform XML_version="1.2" id="platform_0">
|
||||
|
||||
+1
-1
@@ -132,7 +132,7 @@
|
||||
/* -DBLE_V42_FEATURES=SECURE_CONNS_CFG+EXT_DATA_LEN_CFG */
|
||||
/* -DBLE_V42_FEATURES=SECURE_CONNS_CFG */
|
||||
/* -DBLE_V42_FEATURES=PRIVACY_1_2_CFG */
|
||||
/* -DBLE_V42_FEATURES=EXT_DATA_LEN_CFG */
|
||||
-DBLE_V42_FEATURES=EXT_DATA_LEN_CFG
|
||||
|
||||
/* Include Transport Layer (Full or PTM) */
|
||||
/* -DHCI_TL_NONE */
|
||||
|
||||
+1
-1
@@ -9,6 +9,6 @@
|
||||
<linkerCommandFile value="cc26x0f128.cmd"/>
|
||||
<rts value="libc.a"/>
|
||||
<createSlaveProjects value=""/>
|
||||
<connection value="common/targetdb/connections/TIXDS100v3_Dot7_Connection.xml"/>
|
||||
<connection value="common/targetdb/connections/TIXDS110_Connection.xml"/>
|
||||
<isTargetManual value="false"/>
|
||||
</projectOptions>
|
||||
|
||||
+56
-57
@@ -18,8 +18,8 @@
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" errorParsers="org.eclipse.rtsc.xdctools.parsers.ErrorParser;com.ti.rtsc.XDCtools.parsers.ErrorParser;com.ti.ccstudio.errorparser.CoffErrorParser;com.ti.ccstudio.errorparser.LinkErrorParser;com.ti.ccstudio.errorparser.AsmErrorParser;org.eclipse.cdt.core.GmakeErrorParser" id="com.ti.ccstudio.buildDefinitions.TMS470.Default.67178137" name="FlashROM" parent="com.ti.ccstudio.buildDefinitions.TMS470.Default" postbuildStep="${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}.out" prebuildStep="">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Default.67178137." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.444422184" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1330732365">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1540699960" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.630386091" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.79296890">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.548534114" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.CC2650F128"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
@@ -34,17 +34,17 @@
|
||||
<listOptionValue builtIn="false" value="LINK_ORDER=TOOLS/ccs_linker_defines.cmd;TOOLS/cc26xx_app.cmd;"/>
|
||||
<listOptionValue builtIn="false" value="RTSC_MBS_VERSION=2.2.0"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1414041701" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.129069465" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.896834824" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.125712613" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1372243856" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.2122837792" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.1195332370" name="Application binary interface. (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.618174488" name="Little endian code [See 'General' page to edit] (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.1755393337" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.371697957" name="Speed vs. size trade-offs (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.686399483" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.47584557" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.1062983983" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.1700118337" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.2136445879" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1442029135" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.1227543067" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.983343098" name="Application binary interface. (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.915765448" name="Little endian code [See 'General' page to edit] (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.2028717074" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.1765791493" name="Speed vs. size trade-offs (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.355253920" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="C:\ti\simplelink\ble_sdk_2_02_02_25\src\examples\simple_peripheral\cc26xx\app\headstage"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/examples/simple_peripheral/cc26xx/app"/>
|
||||
@@ -70,12 +70,11 @@
|
||||
<listOptionValue builtIn="false" value="${SRC_BLE_CORE}/rom"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.784417628" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.45713043" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="BOARD_DISPLAY_EXCLUDE_UART"/>
|
||||
<listOptionValue builtIn="false" value="HEADSTAGE_UNI_H"/>
|
||||
<listOptionValue builtIn="false" value="HEADSTAGE_MA_USE_SPI2"/>
|
||||
<listOptionValue builtIn="false" value="POWER_SAVING"/>
|
||||
<listOptionValue builtIn="false" value="BOOSTXL_CC2650MA"/>
|
||||
<listOptionValue builtIn="false" value="HEADSTAGE_MA_USE_SPI2"/>
|
||||
<listOptionValue builtIn="false" value="CC26XX"/>
|
||||
<listOptionValue builtIn="false" value="GAPROLE_TASK_STACK_SIZE=540"/>
|
||||
<listOptionValue builtIn="false" value="HEAPMGR_SIZE=0"/>
|
||||
@@ -87,71 +86,71 @@
|
||||
<listOptionValue builtIn="false" value="xdc_runtime_Assert_DISABLE_ALL"/>
|
||||
<listOptionValue builtIn="false" value="xdc_runtime_Log_DISABLE_ALL"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.571279713" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.281544410" name="C Dialect" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC.250251326" name="Enable support for GCC extensions (DEPRECATED) (--gcc)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.2060899973" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.188887433" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.709859007" name="C Dialect" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC.1303283836" name="Enable support for GCC extensions (DEPRECATED) (--gcc)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.880614544" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="48"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.1942076915" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.787930495" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.834573500" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.195059603" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.2020372146" name="Place each function in a separate subsection (--gen_func_subsections, -ms)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.999239773" name="Read options from specified file (--cmd_file, -@)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.2110497797" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.1508735855" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.1406670754" name="Place each function in a separate subsection (--gen_func_subsections, -ms)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.1230809079" name="Read options from specified file (--cmd_file, -@)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/config/build_components.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/build_config.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/../../ccs/config/ccs_compiler_defines.bcfg"/>
|
||||
</option>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS.715176094" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS.1144773376" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS.1482099620" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.1464468386" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS.497243650" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS.1364217553" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS.39449259" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.1178170160" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1330732365" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.505117678" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.1666572203" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.735813737" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.1831786229" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.1415642475" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.79296890" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.891763345" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.314304138" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.338495855" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.1060277100" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.875035059" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}/driverlib/bin/ccs/driverlib.lib"/>
|
||||
<listOptionValue builtIn="false" value="${ROM}/common_rom_releases/03282014/common_rom.symbols"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1551539095" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1276978340" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1633469628" name="Suppress diagnostic <id> (--diag_suppress)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.336823753" name="Suppress diagnostic <id> (--diag_suppress)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="10247-D"/>
|
||||
<listOptionValue builtIn="false" value="16002-D"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.1043837738" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.744951807" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.1083456720" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.1378440824" name="Aggressively reduce size of the DWARF information (--compress_dwarf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.937801301" name="Eliminate sections not needed in the executable (--unused_section_elimination)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.1610224531" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.449429516" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.693413847" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.1219370365" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.703721803" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.1258348097" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.1063255995" name="Aggressively reduce size of the DWARF information (--compress_dwarf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.1912195294" name="Eliminate sections not needed in the executable (--unused_section_elimination)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.464172264" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.1422737841" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.194007756" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.430022974" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1461218441" name="Specify rom width (--romwidth, -romwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.385381392" name="Specify memory width (--memwidth, -memwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.1950693056" name="Output format" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.148133664" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1747210980" name="Specify rom width (--romwidth, -romwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.2120609162" name="Specify memory width (--memwidth, -memwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.147492991" name="Output format" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.74242513" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.2041877412" name="Package repositories (--xdcpath)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH" valueType="stringList">
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.2115491595" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.1165924088" name="Package repositories (--xdcpath)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${COM_TI_RTSC_TIRTOSCC13XX_CC26XX_REPOS}"/>
|
||||
<listOptionValue builtIn="false" value="${TARGET_CONTENT_BASE}"/>
|
||||
</option>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET.215751123" name="Target (-t)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET" value="ti.targets.arm.elf.M3" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM.1966943903" name="Platform (-p)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM" value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW.2050291678" name="Platform (-p)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW" value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE.1120380121" name="Build-profile (-r)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE" value="release" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR.972212328" name="Compiler tools directory (-c)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR" value="${CG_TOOL_ROOT}" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS.1732037300" name="Additional compiler options (--compileOptions)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS" value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET.231881756" name="Target (-t)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET" value="ti.targets.arm.elf.M3" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM.819491801" name="Platform (-p)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM" value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW.2074274477" name="Platform (-p)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW" value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE.235985274" name="Build-profile (-r)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE" value="release" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR.173132565" name="Compiler tools directory (-c)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR" value="${CG_TOOL_ROOT}" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS.582390411" name="Additional compiler options (--compileOptions)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS" value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:simple_peripheral_cc2650em_app}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS100v3 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\FlashROM\simple_peripheral_cc2650em_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\FlashROM\simple_peripheral_cc2650em_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\FlashROM\simple_peripheral_cc2650em_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\ccsv8\ccs_base\emulation\gel\images\cc26xx\cc26x0_rtos_rom_syms.out"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/simple_peripheral_cc2650em_app"/>
|
||||
</listAttribute>
|
||||
|
||||
+531
-531
File diff suppressed because it is too large
Load Diff
+15
-14
@@ -1,19 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<configurations XML_version="1.2" id="configurations_0">
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS100v3 USB Debug Probe_0" href="connections/TIXDS100v3_Dot7_Connection.xml" id="Texas Instruments XDS100v3 USB Debug Probe_0" xml="TIXDS100v3_Dot7_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2icepick_c.xml" id="drivers" xml="tixds100v2icepick_c.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2cs_dap.xml" id="drivers" xml="tixds100v2cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2cortexM.xml" id="drivers" xml="tixds100v2cortexM.xml" xmlpath="drivers"/>
|
||||
<property Type="choicelist" Value="2" id="The Converter Usage">
|
||||
<choice Name="Generate 1149.7 2-pin advanced modes" value="enable">
|
||||
<property Type="choicelist" Value="1" id="The Converter 1149.7 Frequency">
|
||||
<choice Name="Overclock with user specified value" value="unused">
|
||||
<property Type="choicelist" Value="5" id="-- Choose a value from 1.0MHz to 50.0MHz"/>
|
||||
</choice>
|
||||
</property>
|
||||
<property Type="choicelist" Value="5" id="The Target Scan Format"/>
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe_0" href="connections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe_0" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds510icepick_c.xml" id="drivers" xml="tixds510icepick_c.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds510cortexM.xml" id="drivers" xml="tixds510cortexM.xml" xmlpath="drivers"/>
|
||||
<property Type="choicelist" Value="1" id="Power Selection">
|
||||
<choice Name="Probe supplied power" value="1">
|
||||
<property Type="stringfield" Value="3.3" id="Voltage Level"/>
|
||||
</choice>
|
||||
</property>
|
||||
<property Type="choicelist" Value="0" id="JTAG Signal Isolation"/>
|
||||
<property Type="choicelist" Value="4" id="SWD Mode Settings">
|
||||
<choice Name="cJTAG (1149.7) 2-pin advanced modes" value="enable">
|
||||
<property Type="choicelist" Value="1" id="XDS110 Aux Port"/>
|
||||
</choice>
|
||||
</property>
|
||||
<platform XML_version="1.2" id="platform_0">
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Stack Frontier Generator 1.1.0 (2019-03-07 15:50:46.148000)
|
||||
** Stack Frontier Generator 1.1.0 (2019-06-18 12:42:35.415000)
|
||||
**
|
||||
** WARNING - Auto-generated file. Modifications could be lost!
|
||||
*/
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
** Stack Frontier Generator 1.1.0 (2019-03-07 15:50:46.148000)
|
||||
** Stack Frontier Generator 1.1.0 (2019-06-18 12:42:35.415000)
|
||||
**
|
||||
** WARNING - Auto-generated file. Modifications could be lost!
|
||||
*/
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+1
-1
@@ -9,6 +9,6 @@
|
||||
<linkerCommandFile value="cc26x0f128.cmd"/>
|
||||
<rts value="libc.a"/>
|
||||
<createSlaveProjects value=""/>
|
||||
<connection value="common/targetdb/connections/TIXDS100v3_Dot7_Connection.xml"/>
|
||||
<connection value="common/targetdb/connections/TIXDS110_Connection.xml"/>
|
||||
<isTargetManual value="false"/>
|
||||
</projectOptions>
|
||||
|
||||
+34
-33
@@ -26,17 +26,17 @@
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE="/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.201372544" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.201372544" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.1951196199" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.20903631" name="GNU Make.FlashROM" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.20903631" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.1176131016" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.647279085" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.1443871767" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.227818129" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.784155377" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.494285153" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.581550859" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.1288777730" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.647279085" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.1443871767" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.227818129" name="Application binary interface. (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.784155377" name="Little endian code [See 'General' page to edit] (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.494285153" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.581550859" name="Speed vs. size trade-offs (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.1288777730" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/examples/simple_peripheral/cc26xx/stack"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/common/cc26xx"/>
|
||||
@@ -60,14 +60,15 @@
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/profiles/roles"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.986125825" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.986125825" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="CC26XX"/>
|
||||
<listOptionValue builtIn="false" value="GATT_NO_CLIENT"/>
|
||||
<listOptionValue builtIn="false" value="HEADSTAGE_NOTIFY_USE_ATT"/>
|
||||
<listOptionValue builtIn="false" value="POWER_SAVING"/>
|
||||
<listOptionValue builtIn="false" value="CC26XXWARE"/>
|
||||
<listOptionValue builtIn="false" value="DATA="/>
|
||||
<listOptionValue builtIn="false" value="EXT_HAL_ASSERT"/>
|
||||
<listOptionValue builtIn="false" value="FLASH_ROM_BUILD"/>
|
||||
<listOptionValue builtIn="false" value="GATT_NO_CLIENT"/>
|
||||
<listOptionValue builtIn="false" value="INCLUDE_AES_DECRYPT"/>
|
||||
<listOptionValue builtIn="false" value="NEAR_FUNC="/>
|
||||
<listOptionValue builtIn="false" value="OSAL_CBTIMER_NUM_TASKS=1"/>
|
||||
@@ -81,17 +82,17 @@
|
||||
<listOptionValue builtIn="false" value="xTESTMODES"/>
|
||||
<listOptionValue builtIn="false" value="xTEST_BLEBOARD"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.372638078" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.201347726" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.372638078" name="C Dialect" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.201347726" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="48"/>
|
||||
<listOptionValue builtIn="false" value="16004"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.73314177" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.73314177" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.1126279750" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.1492280006" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.538453952" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.1126279750" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.1492280006" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.538453952" name="Read options from specified file (--cmd_file, -@)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/config/build_components.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/build_config.opt"/>
|
||||
</option>
|
||||
@@ -101,40 +102,40 @@
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.538375181" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1008890994" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.1873600405" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.1359172875" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.1355177509" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.829303802" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.1078356909" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.1873600405" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.1359172875" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.1355177509" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.829303802" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.1078356909" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/../../ccs/config/lib_linker.cmd"/>
|
||||
<listOptionValue builtIn="false" value="${ROM}/ble_rom_releases/04242014/ble_rom_patch.symbols"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}/driverlib/bin/ccs/driverlib.lib"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1707930214" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1707930214" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.59164041" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.59164041" name="Suppress diagnostic <id> (--diag_suppress)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="16002-D"/>
|
||||
<listOptionValue builtIn="false" value="10247-D"/>
|
||||
<listOptionValue builtIn="false" value="10325-D"/>
|
||||
<listOptionValue builtIn="false" value="10229-D"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.11567165" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.1727810233" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.1385277262" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT.1153340314" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT" value="startup_entry" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.450995330" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.1827942626" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.11567165" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.1727810233" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.1385277262" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT.1153340314" name="Specify program entry point for the output module (--entry_point, -e)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.ENTRY_POINT" value="startup_entry" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.450995330" name="Aggressively reduce size of the DWARF information (--compress_dwarf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.1827942626" name="Eliminate sections not needed in the executable (--unused_section_elimination)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.1279238428" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.526125450" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.581803256" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.947560992" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1295209583" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.110293046" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.1122561921" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1295209583" name="Specify rom width (--romwidth, -romwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.110293046" name="Specify memory width (--memwidth, -memwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.1122561921" name="Output format" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
|
||||
+1
@@ -12,6 +12,7 @@
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:simple_peripheral_cc2650em_stack}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\stack\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS100v3 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\stack\FlashROM\simple_peripheral_cc2650em_stack.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\stack\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\stack\FlashROM\simple_peripheral_cc2650em_stack.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\stack\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650em\simple_peripheral\ccs\stack\FlashROM\simple_peripheral_cc2650em_stack.out"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/simple_peripheral_cc2650em_stack"/>
|
||||
</listAttribute>
|
||||
|
||||
+15
-14
@@ -1,19 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<configurations XML_version="1.2" id="configurations_0">
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS100v3 USB Debug Probe_0" href="connections/TIXDS100v3_Dot7_Connection.xml" id="Texas Instruments XDS100v3 USB Debug Probe_0" xml="TIXDS100v3_Dot7_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS100v3 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2icepick_c.xml" id="drivers" xml="tixds100v2icepick_c.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2cs_dap.xml" id="drivers" xml="tixds100v2cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds100v2cortexM.xml" id="drivers" xml="tixds100v2cortexM.xml" xmlpath="drivers"/>
|
||||
<property Type="choicelist" Value="2" id="The Converter Usage">
|
||||
<choice Name="Generate 1149.7 2-pin advanced modes" value="enable">
|
||||
<property Type="choicelist" Value="1" id="The Converter 1149.7 Frequency">
|
||||
<choice Name="Overclock with user specified value" value="unused">
|
||||
<property Type="choicelist" Value="5" id="-- Choose a value from 1.0MHz to 50.0MHz"/>
|
||||
</choice>
|
||||
</property>
|
||||
<property Type="choicelist" Value="5" id="The Target Scan Format"/>
|
||||
<configuration XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe_0" href="connections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe_0" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
|
||||
<connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe_0">
|
||||
<instance XML_version="1.2" href="drivers/tixds510icepick_c.xml" id="drivers" xml="tixds510icepick_c.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
|
||||
<instance XML_version="1.2" href="drivers/tixds510cortexM.xml" id="drivers" xml="tixds510cortexM.xml" xmlpath="drivers"/>
|
||||
<property Type="choicelist" Value="1" id="Power Selection">
|
||||
<choice Name="Probe supplied power" value="1">
|
||||
<property Type="stringfield" Value="3.3" id="Voltage Level"/>
|
||||
</choice>
|
||||
</property>
|
||||
<property Type="choicelist" Value="0" id="JTAG Signal Isolation"/>
|
||||
<property Type="choicelist" Value="4" id="SWD Mode Settings">
|
||||
<choice Name="cJTAG (1149.7) 2-pin advanced modes" value="enable">
|
||||
<property Type="choicelist" Value="1" id="XDS110 Aux Port"/>
|
||||
</choice>
|
||||
</property>
|
||||
<platform XML_version="1.2" id="platform_0">
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:host_test_cc2650lp_app}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\FlashROM\host_test_cc2650lp_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS100v3 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\FlashROM\host_test_cc2650lp_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\FlashROM\host_test_cc2650lp_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\host_test\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe_0/Cortex_M3_0" value="C:/ti\ccsv8\ccs_base\emulation\gel\images\cc26xx\cc26x0_rtos_rom_syms.out"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/host_test_cc2650lp_app"/>
|
||||
</listAttribute>
|
||||
|
||||
BIN
Binary file not shown.
+5
-5
@@ -1,12 +1,12 @@
|
||||
|
||||
XOPTS = -I"C:/ti/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M3
|
||||
XOPTS = -I"C:/ti/xdctools_3_32_02_25_core/packages/" -Dxdc_target_types__=C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M3
|
||||
|
||||
vpath % C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/sysbios/
|
||||
vpath %.c C:/ti/xdctools_3_32_00_06_core/packages/
|
||||
vpath %.c C:/ti/xdctools_3_32_02_25_core/packages/
|
||||
|
||||
CCOPTS = --endian=little -mv7M3 --abi=eabi -q -ms --opt_for_speed=0 --program_level_compile -o3 -g --optimize_with_debug -Dti_sysbios_knl_Task_minimizeLatency__D=FALSE -Dti_sysbios_family_arm_cc26xx_Boot_driverlibVersion=2 -Dti_sysbios_knl_Clock_stopCheckNext__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_enableException__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_disablePriority__D=32U -Dti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__D=0U
|
||||
|
||||
XDC_ROOT = C:/ti/xdctools_3_32_00_06_core/packages/
|
||||
XDC_ROOT = C:/ti/xdctools_3_32_02_25_core/packages/
|
||||
|
||||
BIOS_ROOT = C:/ti/tirtos_cc13xx_cc26xx_2_21_01_08/products/bios_6_46_01_38/packages/ti/sysbios/
|
||||
|
||||
@@ -22,8 +22,8 @@ CC = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armcl -c $(CCOPTS) -I
|
||||
ASM = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/include
|
||||
AR = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armar rq
|
||||
|
||||
DEL = C:/ti/xdctools_3_32_00_06_core/packages/../bin/rm -f
|
||||
CP = C:/ti/xdctools_3_32_00_06_core/packages/../bin/cp -f
|
||||
DEL = C:/ti/xdctools_3_32_02_25_core/packages/../bin/rm -f
|
||||
CP = C:/ti/xdctools_3_32_02_25_core/packages/../bin/cp -f
|
||||
|
||||
define RM
|
||||
$(if $(wildcard $1),$(DEL) $1,:)
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+209
-66
@@ -16,35 +16,75 @@
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" errorParsers="org.eclipse.rtsc.xdctools.parsers.ErrorParser;com.ti.rtsc.XDCtools.parsers.ErrorParser;com.ti.ccstudio.errorparser.CoffErrorParser;com.ti.ccstudio.errorparser.LinkErrorParser;com.ti.ccstudio.errorparser.AsmErrorParser;org.eclipse.cdt.core.GmakeErrorParser" id="com.ti.ccstudio.buildDefinitions.TMS470.Default.67178137.1867331134" name="FlashROM" parent="com.ti.ccstudio.buildDefinitions.TMS470.Default" postbuildStep="${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}.out" prebuildStep="">
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties=""
|
||||
cleanCommand="${CG_CLEAN_CMD}" description=""
|
||||
errorParsers="org.eclipse.rtsc.xdctools.parsers.ErrorParser;com.ti.rtsc.XDCtools.parsers.ErrorParser;com.ti.ccstudio.errorparser.CoffErrorParser;com.ti.ccstudio.errorparser.LinkErrorParser;com.ti.ccstudio.errorparser.AsmErrorParser;org.eclipse.cdt.core.GmakeErrorParser"
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470.Default.67178137.1867331134" name="FlashROM"
|
||||
parent="com.ti.ccstudio.buildDefinitions.TMS470.Default"
|
||||
postbuildStep="${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}.out"
|
||||
prebuildStep="">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Default.67178137.1867331134." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.260390339" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1981462200">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.23520031" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.260390339"
|
||||
name="TI Build Tools"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain"
|
||||
targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1981462200">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.23520031"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.CC2640F128"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY="libc.a""/>
|
||||
<listOptionValue builtIn="false" value="XDC_VERSION=3.32.2.25_core"/>
|
||||
<listOptionValue builtIn="false" value="XDC_VERSION=3.32.2.25_core"/>
|
||||
<listOptionValue builtIn="false" value="INACTIVE_REPOS="/>
|
||||
<listOptionValue builtIn="false" value="EXPANDED_REPOS="/>
|
||||
<listOptionValue builtIn="false" value="RTSC_PRODUCTS=com.ti.rtsc.TIRTOSCC13XX_CC26XX:2.21.01.08;"/>
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE="/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=rtscApplication:executable"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false"
|
||||
value="RTSC_PRODUCTS=com.ti.rtsc.TIRTOSCC13XX_CC26XX:2.21.01.08;"/>
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE="/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=rtscApplication:executable"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="LINK_ORDER=TOOLS/ccs_linker_defines.cmd;TOOLS/cc26xx_app.cmd;"/>
|
||||
<listOptionValue builtIn="false" value="RTSC_MBS_VERSION=2.2.0"/>
|
||||
<listOptionValue builtIn="false" value="RTSC_MBS_VERSION=2.2.0"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.831968044" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.1267545934" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.750370594" name="GNU Make.FlashROM" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.2015951802" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1110843462" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.818133919" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.1512178724" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.403801048" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.1265261063" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.2140366031" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.2021662899" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.831968044"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION"
|
||||
value="18.1.4.LTS" valueType="string"/>
|
||||
<targetPlatform
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.1267545934"
|
||||
name="Platform"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}"
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.750370594"
|
||||
name="GNU Make.FlashROM" parallelBuildOn="true" parallelizationNumber="optimal"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.2015951802"
|
||||
name="ARM Compiler"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1110843462"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.818133919"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.1512178724"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.403801048"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN"
|
||||
value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.1265261063"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.2140366031"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.2021662899"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH"
|
||||
valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="C:\ti\simplelink\ble_sdk_2_02_02_25\src\examples\simple_peripheral\cc26xx\app\headstage"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/examples/simple_peripheral/cc26xx/app"/>
|
||||
@@ -70,10 +110,20 @@
|
||||
<listOptionValue builtIn="false" value="${SRC_BLE_CORE}/rom"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.1320751896" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.1333288757" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC.1518806086" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.142068852" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.1320751896"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.1333288757"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC.1518806086"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GCC"
|
||||
value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.142068852"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE"
|
||||
valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="BOARD_DISPLAY_EXCLUDE_LCD"/>
|
||||
<listOptionValue builtIn="false" value="BOARD_DISPLAY_EXCLUDE_UART"/>
|
||||
<listOptionValue builtIn="false" value="CC2650_LAUNCHXL"/>
|
||||
@@ -89,68 +139,155 @@
|
||||
<listOptionValue builtIn="false" value="xdc_runtime_Assert_DISABLE_ALL"/>
|
||||
<listOptionValue builtIn="false" value="xdc_runtime_Log_DISABLE_ALL"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.918239795" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.918239795"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING"
|
||||
valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.999454079" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.999454079"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS"
|
||||
valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="48"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.2100604413" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.1575039329" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.832421721" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.636768539" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.2100604413"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.1575039329"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER"
|
||||
value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.832421721"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.on"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.636768539"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE"
|
||||
valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/config/build_components.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/build_config.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/../../ccs/config/ccs_compiler_defines.bcfg"/>
|
||||
</option>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS.227087947" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS.39034037" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS.866335595" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.1329381206" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS.227087947"
|
||||
name="C Sources"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__C_SRCS"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS.39034037"
|
||||
name="C++ Sources"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS.866335595"
|
||||
name="Assembly Sources"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.1329381206"
|
||||
name="Assembly Sources"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1981462200" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.57445792" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.636200649" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.552585024" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.1019171703" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.1966015673" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1981462200"
|
||||
name="ARM Linker"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.57445792"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE"
|
||||
value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.636200649"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE"
|
||||
value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.552585024"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE"
|
||||
value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.1019171703"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE"
|
||||
value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.1966015673"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY"
|
||||
valueType="libs">
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}/driverlib/bin/ccs/driverlib.lib"/>
|
||||
<listOptionValue builtIn="false" value="${ROM}/common_rom_releases/03282014/common_rom.symbols"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1109423160" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1109423160"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH"
|
||||
valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.1289256461" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.1055939214" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1474045154" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.1289256461"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.1055939214"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER"
|
||||
value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1474045154"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS"
|
||||
valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="10247-D"/>
|
||||
<listOptionValue builtIn="false" value="16002-D"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.834418659" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.1787080463" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.1975085474" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.1644580451" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.872014788" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.1023837449" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.834418659"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO"
|
||||
value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.1787080463"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on"
|
||||
valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.1975085474"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on"
|
||||
valueType="enumerated"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.1644580451"
|
||||
name="Linker Command Files"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.872014788"
|
||||
name="Linker Command Files"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.1023837449"
|
||||
name="Generated Linker Command Files"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.1158315651" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.485049417" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.97427136" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.614513055" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.1429090237" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.1017190303" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH" valueType="stringList">
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.1158315651"
|
||||
name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.485049417"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8"
|
||||
valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.97427136"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8"
|
||||
valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.614513055"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT"
|
||||
value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL"
|
||||
valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.1429090237" name="XDCtools"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.1017190303"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH"
|
||||
valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${COM_TI_RTSC_TIRTOSCC13XX_CC26XX_REPOS}"/>
|
||||
<listOptionValue builtIn="false" value="${TARGET_CONTENT_BASE}"/>
|
||||
</option>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET.1689982900" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET" value="ti.targets.arm.elf.M3" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM.1214214406" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM" value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW.402329212" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW" value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE.35098461" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE" value="release" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR.2036910366" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR" value="${CG_TOOL_ROOT}" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS.53221425" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS" value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET.1689982900"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET"
|
||||
value="ti.targets.arm.elf.M3" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM.1214214406"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM"
|
||||
value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW.402329212"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW"
|
||||
value="ti.platforms.simplelink:CC2640F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE.35098461"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE"
|
||||
value="release" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR.2036910366"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR"
|
||||
value="${CG_TOOL_ROOT}" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS.53221425"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS"
|
||||
value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
@@ -296,8 +433,14 @@
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__GEN_CMDS.1583605295" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.1106108574" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.ROMWIDTH.1273210432" name="Specify rom width (--romwidth, -romwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.MEMWIDTH.1804106884" name="Specify memory width (--memwidth, -memwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.ROMWIDTH.1273210432"
|
||||
name="Specify rom width (--romwidth, -romwidth=width)"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.ROMWIDTH" value="8"
|
||||
valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.MEMWIDTH.1804106884"
|
||||
name="Specify memory width (--memwidth, -memwidth=width)"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.MEMWIDTH" value="8"
|
||||
valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.OUTPUT_FORMAT.1229261984" name="Output format" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.802347647" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
|
||||
@@ -264,6 +264,7 @@ const SPI_Config SPI_config[] = { //
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[0]
|
||||
//
|
||||
},
|
||||
#ifdef HEADSTAGE_MA_USE_SPI2
|
||||
{
|
||||
//
|
||||
.fxnTablePtr = &SPICC26XXDMA_fxnTable,
|
||||
@@ -271,6 +272,7 @@ const SPI_Config SPI_config[] = { //
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[1]
|
||||
//
|
||||
},
|
||||
#endif
|
||||
{NULL, NULL, NULL}};
|
||||
/*
|
||||
* ========================== SPI DMA end =====================================
|
||||
@@ -510,3 +512,237 @@ const PWM_Config PWM_config[BOOSTXL_CC2650MA_PWMCOUNT + 1] = {
|
||||
/*
|
||||
* ============================= PWM end ======================================
|
||||
*/
|
||||
|
||||
/*
|
||||
* ============================= ADC begin ======================================
|
||||
*/
|
||||
|
||||
#ifdef HEADSTAGE_MA_USE_ADC
|
||||
|
||||
#include <ti/drivers/ADC.h>
|
||||
#include <ti/drivers/adc/ADCCC26XX.h>
|
||||
|
||||
#if defined(__TI_COMPILER_VERSION__)
|
||||
#pragma DATA_SECTION(ADC_config, ".const:ADC_config")
|
||||
#pragma DATA_SECTION(adcCC26xxHWAttrs, ".const:adcCC26xxHWAttrs")
|
||||
#endif
|
||||
|
||||
ADCCC26XX_Object adcCC26xxObjects[BOOSTXL_CC2650MA_ADCCOUNT];
|
||||
|
||||
const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[BOOSTXL_CC2650MA_ADCCOUNT] = {
|
||||
//
|
||||
{
|
||||
//
|
||||
.adcDIO = DIO7,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO7,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = DIO8,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO6,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = DIO9,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO5,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO4,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO3,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO2,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO1,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_AUXIO0,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_10P9_MS,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_DCOUPL,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_VSS,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
},
|
||||
{
|
||||
//
|
||||
.adcDIO = PIN_UNASSIGNED,
|
||||
.adcCompBInput = ADC_COMPB_IN_VDDS,
|
||||
.refSource = ADCCC26XX_FIXED_REFERENCE,
|
||||
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
|
||||
.inputScalingEnabled = true,
|
||||
.triggerSource = ADCCC26XX_TRIGGER_MANUAL
|
||||
//
|
||||
}
|
||||
//
|
||||
};
|
||||
|
||||
const ADC_Config ADC_config[] = {
|
||||
//
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[0], &adcCC26xxHWAttrs[0]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[1], &adcCC26xxHWAttrs[1]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[2], &adcCC26xxHWAttrs[2]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[3], &adcCC26xxHWAttrs[3]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[4], &adcCC26xxHWAttrs[4]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[5], &adcCC26xxHWAttrs[5]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[6], &adcCC26xxHWAttrs[6]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[7], &adcCC26xxHWAttrs[7]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[8], &adcCC26xxHWAttrs[8]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[9], &adcCC26xxHWAttrs[9]},
|
||||
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[10], &adcCC26xxHWAttrs[10]},
|
||||
{NULL, NULL, NULL},
|
||||
};
|
||||
|
||||
#endif // HEADSTAGE_MA_USE_ADC
|
||||
|
||||
/*
|
||||
* ============================= ADC end ======================================
|
||||
*/
|
||||
/*
|
||||
* ============================= I2C Begin=====================================
|
||||
*/
|
||||
|
||||
#ifdef HEADSTAGE_LED_USE_I2C
|
||||
|
||||
#define Board_I2C0_SCL0 IOID_10
|
||||
#define Board_I2C0_SDA0 IOID_11
|
||||
|
||||
/* Place into subsections to allow the TI linker to remove items properly */
|
||||
#if defined(__TI_COMPILER_VERSION__)
|
||||
#pragma DATA_SECTION(I2C_config, ".const:I2C_config")
|
||||
#pragma DATA_SECTION(i2cCC26xxHWAttrs, ".const:i2cCC26xxHWAttrs")
|
||||
#endif
|
||||
|
||||
/* Include drivers */
|
||||
#include <ti/drivers/i2c/I2CCC26XX.h>
|
||||
|
||||
/* I2C objects */
|
||||
I2CCC26XX_Object i2cCC26xxObjects[BOOSTXL_CC2650MA_I2CCOUNT];
|
||||
|
||||
/* I2C configuration structure, describing which pins are to be used */
|
||||
const I2CCC26XX_HWAttrsV1 i2cCC26xxHWAttrs[BOOSTXL_CC2650MA_I2CCOUNT] = {
|
||||
{
|
||||
.baseAddr = I2C0_BASE,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_I2C0,
|
||||
.intNum = INT_I2C_IRQ,
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0,
|
||||
.sdaPin = Board_I2C0_SDA0,
|
||||
.sclPin = Board_I2C0_SCL0,
|
||||
}
|
||||
};
|
||||
|
||||
/* I2C configuration structure */
|
||||
const I2C_Config I2C_config[] = {
|
||||
{
|
||||
.fxnTablePtr = &I2CCC26XX_fxnTable,
|
||||
.object = &i2cCC26xxObjects[0],
|
||||
.hwAttrs = &i2cCC26xxHWAttrs[0]
|
||||
},
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
#endif
|
||||
/*
|
||||
* ========================== I2C end =========================================
|
||||
*/
|
||||
|
||||
/*
|
||||
* ============================= Watchdog begin =====================================
|
||||
*/
|
||||
|
||||
/* Place into subsections to allow the TI linker to remove items properly */
|
||||
#if defined(__TI_COMPILER_VERSION__)
|
||||
#pragma DATA_SECTION(Watchdog_config, ".const:Watchdog_config")
|
||||
#pragma DATA_SECTION(wdCC26XXHWAttrs, ".const:wdCC26XXHWAttrs")
|
||||
#endif
|
||||
|
||||
#include <ti/drivers/watchdog/WatchdogCC26XX.h>
|
||||
WatchdogCC26XX_Object wdCC26XXObject[BOOSTXL_CC2650MA_WATCHDOGCOUNT];
|
||||
|
||||
const WatchdogCC26XX_HWAttrs wdCC26XXHWAttrs[] = {
|
||||
{
|
||||
.baseAddr = WDT_BASE,
|
||||
.intNum = INT_WDT_IRQ,
|
||||
.reloadValue = 100
|
||||
}
|
||||
};
|
||||
|
||||
/* I2S configuration structure */
|
||||
const Watchdog_Config Watchdog_config[] = {
|
||||
{
|
||||
.fxnTablePtr = &WatchdogCC26XX_fxnTable,
|
||||
.object = &wdCC26XXObject[0],
|
||||
.hwAttrs = &wdCC26XXHWAttrs[0]
|
||||
},
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
/*
|
||||
* ============================= Watchdog end =====================================
|
||||
*/
|
||||
|
||||
@@ -89,25 +89,25 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
*/
|
||||
|
||||
/* Connector J1 */
|
||||
#define Board_BP_Pin_J1_2 DIO7
|
||||
#define Board_BP_Pin_J1_3 DIO0
|
||||
#define Board_BP_Pin_J1_4 DIO1
|
||||
#define Board_BP_Pin_J1_5 DIO2
|
||||
#define Board_BP_Pin_J1_6 DIO3
|
||||
#define Board_BP_Pin_J1_7 DIO10
|
||||
#define Board_BP_Pin_J1_8 DIO4
|
||||
#define Board_BP_Pin_J1_9 DIO5
|
||||
#define Board_BP_Pin_J1_10 DIO6
|
||||
#define Board_BP_Pin_J1_2 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_3 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_4 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_5 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_6 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_7 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_8 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_9 IOID_UNUSED
|
||||
#define Board_BP_Pin_J1_10 IOID_UNUSED
|
||||
|
||||
/* Connector J2 */
|
||||
#define Board_BP_Pin_J2_19 DIO8
|
||||
#define Board_BP_Pin_J2_18 DIO9 /* CS */
|
||||
#define Board_BP_Pin_J2_17 IOID_UNUSED /* NC */
|
||||
#define Board_BP_Pin_J2_15 DIO11 /* MOSI */
|
||||
#define Board_BP_Pin_J2_14 DIO12 /* MISO */
|
||||
#define Board_BP_Pin_J2_13 DIO13
|
||||
#define Board_BP_Pin_J2_12 DIO14
|
||||
#define Board_BP_Pin_J2_11 IOID_UNUSED /* NC */
|
||||
#define Board_BP_Pin_J2_19 IOID_UNUSED
|
||||
#define Board_BP_Pin_J2_18 IOID_UNUSED /* CS */
|
||||
#define Board_BP_Pin_J2_17 IOID_UNUSED /* NC */
|
||||
#define Board_BP_Pin_J2_15 IOID_UNUSED /* MOSI */
|
||||
#define Board_BP_Pin_J2_14 IOID_UNUSED /* MISO */
|
||||
#define Board_BP_Pin_J2_13 IOID_UNUSED
|
||||
#define Board_BP_Pin_J2_12 IOID_UNUSED
|
||||
#define Board_BP_Pin_J2_11 IOID_UNUSED /* NC */
|
||||
|
||||
/* Mapping of BoosterPack Connector Pins to BoosterPack Standard Functions (reflecting the BoosterPack Standard)
|
||||
*/
|
||||
@@ -137,32 +137,38 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
*/
|
||||
|
||||
/* On-board LEDs */
|
||||
#define Board_GLED DIO2 /* Green LED */
|
||||
#define Board_RLED DIO4 /* Red LED */
|
||||
#define Board_GLED PIN_UNASSIGNED /* Green LED */
|
||||
#define Board_RLED PIN_UNASSIGNED /* Red LED */
|
||||
|
||||
/* UART Board */
|
||||
#define Board_UART_TX Board_BP_UART_Rx /* RXD */
|
||||
#define Board_UART_RX Board_BP_UART_Tx /* TXD */
|
||||
|
||||
/* SPI Board */
|
||||
#define Board_SPI0_MISO Board_BP_SPI_MISO
|
||||
#define Board_SPI0_MOSI Board_BP_SPI_MOSI
|
||||
#define Board_SPI0_CLK Board_BP_SPI_CLK
|
||||
#define Board_SPI0_CS Board_BP_SPI_CS_Wireless
|
||||
/*
|
||||
* SPI0 is LSK interface
|
||||
*/
|
||||
#define Board_SPI0_MISO PIN_UNASSIGNED
|
||||
#define Board_SPI0_MOSI IOID_0
|
||||
#define Board_SPI0_CLK IOID_1
|
||||
#define Board_SPI0_CS IOID_3
|
||||
|
||||
/*
|
||||
* SPI1 is ASK interface
|
||||
*/
|
||||
|
||||
#define Board_SPI1_MISO PIN_UNASSIGNED
|
||||
#define Board_SPI1_MOSI PIN_UNASSIGNED
|
||||
#define Board_SPI1_MOSI IOID_13
|
||||
#define Board_SPI1_CLK PIN_UNASSIGNED
|
||||
#define Board_SPI1_CS PIN_UNASSIGNED
|
||||
#define Board_SPI1_CS IOID_4
|
||||
|
||||
/* Power Management Board */
|
||||
#define Board_SRDY Board_BP_Pin_J2_19
|
||||
#define Board_MRDY Board_BP_Pin_J1_2
|
||||
|
||||
/* PWM outputs */
|
||||
#define Board_PWMPIN0 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN0 IOID_6
|
||||
#define Board_PWMPIN1 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN2 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN2 IOID_8
|
||||
#define Board_PWMPIN3 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN4 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN5 PIN_UNASSIGNED
|
||||
@@ -173,6 +179,7 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
/** ============================================================================
|
||||
* Instance identifiers
|
||||
* ==========================================================================*/
|
||||
|
||||
/* Generic SPI instance identifiers */
|
||||
#define Board_SPI0 BOOSTXL_CC2650MA_SPI0
|
||||
|
||||
@@ -210,6 +217,16 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
* Number of peripherals and their names
|
||||
* ==========================================================================*/
|
||||
|
||||
/*
|
||||
* @def BOOSTXL_CC2650MA_I2C
|
||||
* @brief Enum of I2C names on the cc2650 dev board
|
||||
*/
|
||||
typedef enum BOOSTXL_CC2650MA_I2CName{
|
||||
BOOSTXL_CC2650MA_I2C0 = 0,
|
||||
|
||||
BOOSTXL_CC2650MA_I2CCOUNT
|
||||
} BOOSTXL_CC2650MA_I2CName;
|
||||
|
||||
/*!
|
||||
* @def BOOSTXL_CC2650MA_CryptoName
|
||||
* @brief Enum of Crypto names on the CC2650 Booster Pack
|
||||
@@ -311,6 +328,12 @@ typedef enum BOOSTXL_CC2650MA_PWM
|
||||
BOOSTXL_CC2650MA_PWMCOUNT
|
||||
} BOOSTXL_CC2650MA_PWM;
|
||||
|
||||
typedef enum BOOSTXL_CC2650MA_WATCHDOG
|
||||
{
|
||||
BOOSTXL_CC2650MA_WATCHDOG0 = 0,
|
||||
BOOSTXL_CC2650MA_WATCHDOGCOUNT
|
||||
} BOOSTXL_CC2650MA_WATCHDOG;
|
||||
|
||||
#ifdef HEADSTAGE_MA_USE_ADC
|
||||
|
||||
/*!
|
||||
|
||||
@@ -73,17 +73,18 @@
|
||||
#endif
|
||||
|
||||
const PIN_Config BoardGpioInitTable[] = {
|
||||
|
||||
Board_DK_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
|
||||
Board_DK_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
|
||||
Board_KEY_SELECT | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
|
||||
Board_KEY_UP | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
|
||||
Board_KEY_DOWN | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
|
||||
Board_KEY_LEFT | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
|
||||
Board_KEY_RIGHT | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS, /* Button is active low */
|
||||
Board_3V3_EN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL, /* 3V3 domain off initially */
|
||||
Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* UART TX pin at inactive level */
|
||||
PIN_TERMINATE /* Terminate list */
|
||||
S2P_RST | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
P2S_RST | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
SPI_MOSI | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
SPI_MISO | PIN_INPUT_EN | PIN_PULLDOWN,
|
||||
SPI_CLK | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
Board_3V3_EN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
Board_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN,
|
||||
Board_DK_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
Board_DK_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
PIN_TERMINATE
|
||||
/* Terminate list */
|
||||
};
|
||||
|
||||
const PINCC26XX_HWAttrs PINCC26XX_hwAttrs = {
|
||||
@@ -233,7 +234,7 @@ const SPI_Config SPI_config[] = {
|
||||
.object = &spiCC26XXDMAObjects[0],
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[0]
|
||||
},
|
||||
{NULL, NULL, NULL}
|
||||
{ NULL, NULL, NULL}
|
||||
};
|
||||
/*
|
||||
* ========================== SPI DMA end =====================================
|
||||
|
||||
@@ -103,8 +103,8 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
/* Power Board */
|
||||
#define Board_3V3_EN IOID_14 /* P1.15 */
|
||||
/* PWM outputs */
|
||||
#define Board_PWMPIN0 Board_DK_LED3
|
||||
#define Board_PWMPIN1 Board_DK_LED4
|
||||
#define Board_PWMPIN0 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN1 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN2 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN3 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN4 PIN_UNASSIGNED
|
||||
@@ -112,6 +112,12 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_PWMPIN6 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN7 PIN_UNASSIGNED
|
||||
|
||||
#define S2P_RST IOID_9
|
||||
#define P2S_RST IOID_13
|
||||
#define SPI_MOSI Board_SPI0_MOSI
|
||||
#define SPI_MISO Board_SPI0_MISO
|
||||
#define SPI_CLK Board_SPI0_CLK
|
||||
|
||||
/** ============================================================================
|
||||
* Instance identifiers
|
||||
* ==========================================================================*/
|
||||
|
||||
@@ -84,6 +84,9 @@ const PIN_Config BoardGpioInitTable[] = {
|
||||
Board_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master out - slave in */
|
||||
Board_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master in - slave out */
|
||||
Board_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI clock */
|
||||
Board_SPI1_MOSI | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master out - slave in */
|
||||
Board_SPI1_MISO | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI master in - slave out */
|
||||
Board_SPI1_CLK | PIN_INPUT_EN | PIN_PULLDOWN, /* SPI clock */
|
||||
|
||||
PIN_TERMINATE
|
||||
};
|
||||
|
||||
@@ -78,20 +78,20 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_BTN2 IOID_14
|
||||
|
||||
/* UART Board */
|
||||
#define Board_UART_RX IOID_2 /* RXD */
|
||||
#define Board_UART_TX IOID_3 /* TXD */
|
||||
#define Board_UART_CTS IOID_19 /* CTS */
|
||||
#define Board_UART_RTS IOID_18 /* RTS */
|
||||
#define Board_UART_RX IOID_1 /* RXD */
|
||||
#define Board_UART_TX IOID_2 /* TXD */
|
||||
#define Board_UART_CTS PIN_UNASSIGNED /* CTS */
|
||||
#define Board_UART_RTS PIN_UNASSIGNED /* RTS */
|
||||
|
||||
/* SPI Board */
|
||||
#define Board_SPI0_MISO IOID_8 /* RF1.20 */
|
||||
#define Board_SPI0_MOSI IOID_9 /* RF1.18 */
|
||||
#define Board_SPI0_CLK IOID_10 /* RF1.16 */
|
||||
#define Board_SPI0_CSN PIN_UNASSIGNED
|
||||
#define Board_SPI0_MISO PIN_UNASSIGNED /* RF1.20 */
|
||||
#define Board_SPI0_MOSI IOID_12 /* RF1.18 */
|
||||
#define Board_SPI0_CLK PIN_UNASSIGNED /* RF1.16 */
|
||||
#define Board_SPI0_CSN IOID_4
|
||||
#define Board_SPI1_MISO PIN_UNASSIGNED
|
||||
#define Board_SPI1_MOSI PIN_UNASSIGNED
|
||||
#define Board_SPI1_CLK PIN_UNASSIGNED
|
||||
#define Board_SPI1_CSN PIN_UNASSIGNED
|
||||
#define Board_SPI1_MOSI IOID_10
|
||||
#define Board_SPI1_CLK IOID_9
|
||||
#define Board_SPI1_CSN IOID_3
|
||||
|
||||
/* I2C */
|
||||
#define Board_I2C0_SCL0 IOID_4
|
||||
@@ -130,14 +130,14 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_LCD_CS_OFF 0
|
||||
|
||||
/* PWM outputs */
|
||||
#define Board_PWMPIN0 Board_RLED
|
||||
#define Board_PWMPIN1 Board_GLED
|
||||
#define Board_PWMPIN2 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN3 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN4 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN5 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN6 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN7 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN0 Board_RLED
|
||||
#define Board_PWMPIN1 Board_GLED
|
||||
#define Board_PWMPIN2 IOID_5
|
||||
#define Board_PWMPIN3 IOID_11
|
||||
#define Board_PWMPIN4 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN5 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN6 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN7 IOID_11
|
||||
|
||||
/** ============================================================================
|
||||
* Instance identifiers
|
||||
|
||||
Executable → Regular
@@ -0,0 +1,157 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file cc26xx_app.cmd
|
||||
|
||||
@brief CC2650F128 linker configuration file for TI-RTOS with Code Composer
|
||||
Studio.
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Copyright (c) 2013-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
******************************************************************************
|
||||
Release Name: ble_sdk_2_02_01_18
|
||||
Release Date: 2016-10-26 15:20:04
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
/* Retain interrupt vector table variable */
|
||||
--retain=g_pfnVectors
|
||||
/* Override default entry point. */
|
||||
--entry_point ResetISR
|
||||
/* Suppress warnings and errors: */
|
||||
/* - 10063: Warning about entry point not being _c_int00 */
|
||||
/* - 16011, 16012: 8-byte alignment errors. Observed when linking in object */
|
||||
/* files compiled using Keil (ARM compiler) */
|
||||
--diag_suppress=10063,16011,16012
|
||||
|
||||
/* The following command line options are set as part of the CCS project. */
|
||||
/* If you are building using the command line, or for some reason want to */
|
||||
/* define them here, you can uncomment and modify these lines as needed. */
|
||||
/* If you are using CCS for building, it is probably better to make any such */
|
||||
/* modifications in your CCS project and leave this file alone. */
|
||||
/* */
|
||||
/* --heap_size=0 */
|
||||
/* --stack_size=256 */
|
||||
/* --library=rtsv7M3_T_le_eabi.lib */
|
||||
|
||||
/* The starting address of the application. Normally the interrupt vectors */
|
||||
/* must be located at the beginning of the application. Flash is 128KB, with */
|
||||
/* sector length of 4KB */
|
||||
#define FLASH_APP_BASE 0x00000000
|
||||
#define FLASH_LEN 0x20000
|
||||
#define FLASH_PAGE_LEN 0x1000
|
||||
|
||||
/* Last page of Flash is allocated to App: 0x1F000 - 0x1FFFF */
|
||||
#define FLASH_LAST_PAGE_START FLASH_LEN - FLASH_PAGE_LEN
|
||||
|
||||
/* RAM starts at 0x20000000 and is 20KB */
|
||||
#define RAM_APP_BASE 0x20000000
|
||||
#define RAM_LEN 0x5000
|
||||
/* RAM reserved by ROM code starts. */
|
||||
#define RAM_RESERVED_OFFSET 0x4F00
|
||||
|
||||
/* RAM starts at 0x20000000 and is 2KB */
|
||||
#define AUX_RAM_BASE 0x400E0000
|
||||
#define AUX_RAM_LEN 0x800
|
||||
|
||||
/* System memory map */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
/* EDITOR'S NOTE:
|
||||
* the FLASH and SRAM lengths can be changed by defining
|
||||
* ICALL_STACK0_START or ICALL_RAM0_START in
|
||||
* Properties->ARM Linker->Advanced Options->Command File Preprocessing.
|
||||
*/
|
||||
|
||||
/* Application stored in and executes from internal flash */
|
||||
/* Flash Size 128 KB */
|
||||
#ifdef ICALL_STACK0_START
|
||||
FLASH (RX) : origin = FLASH_APP_BASE, length = ICALL_STACK0_START - FLASH_APP_BASE
|
||||
#else // default
|
||||
FLASH (RX) : origin = FLASH_APP_BASE, length = FLASH_LEN - FLASH_PAGE_LEN
|
||||
#endif
|
||||
|
||||
// CCFG Page, contains .ccfg code section and some application code.
|
||||
FLASH_LAST_PAGE (RX) : origin = FLASH_LAST_PAGE_START, length = FLASH_PAGE_LEN
|
||||
|
||||
/* Application uses internal RAM for data */
|
||||
/* RAM Size 16 KB */
|
||||
#ifdef ICALL_RAM0_START
|
||||
SRAM (RWX) : origin = RAM_APP_BASE, length = ICALL_RAM0_START - RAM_APP_BASE
|
||||
#else //default
|
||||
SRAM (RWX) : origin = RAM_APP_BASE, length = RAM_RESERVED_OFFSET
|
||||
#endif
|
||||
|
||||
AUXRAM (RWX) : origin = AUX_RAM_BASE, length = AUX_RAM_LEN
|
||||
}
|
||||
|
||||
/* Section allocation in memory */
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.intvecs : > FLASH_APP_BASE
|
||||
.text : >> FLASH | FLASH_LAST_PAGE
|
||||
.const : >> FLASH | FLASH_LAST_PAGE
|
||||
.constdata : >> FLASH | FLASH_LAST_PAGE
|
||||
.rodata : >> FLASH | FLASH_LAST_PAGE
|
||||
.cinit : > FLASH | FLASH_LAST_PAGE
|
||||
.pinit : >> FLASH | FLASH_LAST_PAGE
|
||||
.init_array : >> FLASH | FLASH_LAST_PAGE
|
||||
.emb_text : >> FLASH | FLASH_LAST_PAGE
|
||||
.ccfg : > FLASH_LAST_PAGE (HIGH)
|
||||
|
||||
GROUP > SRAM
|
||||
{
|
||||
.data
|
||||
.bss
|
||||
.vtable
|
||||
.vtable_ram
|
||||
vtable_ram
|
||||
.sysmem
|
||||
.nonretenvar
|
||||
} LOAD_END(heapStart)
|
||||
|
||||
.stack : > SRAM (HIGH) LOAD_START(heapEnd)
|
||||
|
||||
.aux_ram : > AUXRAM
|
||||
}
|
||||
|
||||
/* Create global constant that points to top of stack */
|
||||
/* CCS: Change stack size under Project Properties */
|
||||
__STACK_TOP = __stack + __STACK_SIZE;
|
||||
|
||||
/* Allow main() to take args */
|
||||
--args 0x8
|
||||
@@ -0,0 +1,148 @@
|
||||
|
||||
/*
|
||||
* Filename: cc26xx_app_gpram.cmd
|
||||
*
|
||||
* Description: CCS linker file to define GPRAM region
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Retain interrupt vector table variable */
|
||||
--retain=g_pfnVectors
|
||||
/* Override default entry point. */
|
||||
--entry_point ResetISR
|
||||
/* Suppress warnings and errors: */
|
||||
/* - 10063: Warning about entry point not being _c_int00 */
|
||||
/* - 16011, 16012: 8-byte alignment errors. Observed when linking in object */
|
||||
/* files compiled using Keil (ARM compiler) */
|
||||
--diag_suppress=10063,16011,16012
|
||||
|
||||
/* The following command line options are set as part of the CCS project. */
|
||||
/* If you are building using the command line, or for some reason want to */
|
||||
/* define them here, you can uncomment and modify these lines as needed. */
|
||||
/* If you are using CCS for building, it is probably better to make any such */
|
||||
/* modifications in your CCS project and leave this file alone. */
|
||||
/* */
|
||||
/* --heap_size=0 */
|
||||
/* --stack_size=256 */
|
||||
/* --library=rtsv7M3_T_le_eabi.lib */
|
||||
|
||||
/* The starting address of the application. Normally the interrupt vectors */
|
||||
/* must be located at the beginning of the application. Flash is 128KB, with */
|
||||
/* sector length of 4KB */
|
||||
#define FLASH_APP_BASE 0x00000000
|
||||
#define FLASH_LEN 0x20000
|
||||
#define FLASH_PAGE_LEN 0x1000
|
||||
|
||||
/* Last page of Flash is allocated to App: 0x1F000 - 0x1FFFF */
|
||||
#define FLASH_LAST_PAGE_START FLASH_LEN - FLASH_PAGE_LEN
|
||||
|
||||
/* RAM starts at 0x20000000 and is 20KB */
|
||||
#define RAM_APP_BASE 0x20000000
|
||||
#define RAM_LEN 0x5000
|
||||
/* RAM reserved by ROM code starts. */
|
||||
#define RAM_RESERVED_OFFSET 0x4F00
|
||||
|
||||
/* GPRAM starts at 0x11000000 and is 8KB */
|
||||
#define GPRAM_BASE 0x11000000
|
||||
#define GPRAM_SIZE 0x2000
|
||||
|
||||
/* System memory map */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
/* EDITOR'S NOTE:
|
||||
* the FLASH and SRAM lengths can be changed by defining
|
||||
* ICALL_STACK0_START or ICALL_RAM0_START in
|
||||
* Properties->ARM Linker->Advanced Options->Command File Preprocessing.
|
||||
*/
|
||||
|
||||
/* Application stored in and executes from internal flash */
|
||||
/* Flash Size 128 KB */
|
||||
#ifdef ICALL_STACK0_START
|
||||
FLASH (RX) : origin = FLASH_APP_BASE, length = ICALL_STACK0_START - FLASH_APP_BASE
|
||||
#else // default
|
||||
FLASH (RX) : origin = FLASH_APP_BASE, length = FLASH_LEN - FLASH_PAGE_LEN
|
||||
#endif
|
||||
|
||||
// CCFG Page, contains .ccfg code section and some application code.
|
||||
FLASH_LAST_PAGE (RX) : origin = FLASH_LAST_PAGE_START, length = FLASH_PAGE_LEN
|
||||
|
||||
/* Application uses internal RAM for data */
|
||||
/* RAM Size 16 KB */
|
||||
#ifdef ICALL_RAM0_START
|
||||
SRAM (RWX) : origin = RAM_APP_BASE, length = ICALL_RAM0_START - RAM_APP_BASE
|
||||
#else //default
|
||||
SRAM (RWX) : origin = RAM_APP_BASE, length = RAM_RESERVED_OFFSET
|
||||
#endif
|
||||
|
||||
GPRAM (RWX) : origin = GPRAM_BASE, length = GPRAM_SIZE
|
||||
}
|
||||
|
||||
/* Section allocation in memory */
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.intvecs : > FLASH_APP_BASE
|
||||
.text : >> FLASH | FLASH_LAST_PAGE
|
||||
.const : >> FLASH | FLASH_LAST_PAGE
|
||||
.constdata : >> FLASH | FLASH_LAST_PAGE
|
||||
.rodata : >> FLASH | FLASH_LAST_PAGE
|
||||
.cinit : > FLASH | FLASH_LAST_PAGE
|
||||
.pinit : >> FLASH | FLASH_LAST_PAGE
|
||||
.init_array : >> FLASH | FLASH_LAST_PAGE
|
||||
.emb_text : >> FLASH | FLASH_LAST_PAGE
|
||||
.ccfg : > FLASH_LAST_PAGE (HIGH)
|
||||
.bss : > GPRAM
|
||||
|
||||
|
||||
GROUP > SRAM
|
||||
{
|
||||
.data
|
||||
.vtable
|
||||
.vtable_ram
|
||||
vtable_ram
|
||||
.sysmem
|
||||
.nonretenvar
|
||||
} LOAD_END(heapStart)
|
||||
|
||||
.stack : > SRAM (HIGH) LOAD_START(heapEnd)
|
||||
}
|
||||
|
||||
/* Create global constant that points to top of stack */
|
||||
/* CCS: Change stack size under Project Properties */
|
||||
__STACK_TOP = __stack + __STACK_SIZE;
|
||||
|
||||
/* Allow main() to take args */
|
||||
--args 0x8
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
@@ -0,0 +1,170 @@
|
||||
|
||||
/*
|
||||
* Filename: cc26xx_app_gpram.icf
|
||||
*
|
||||
* Description: IAR linker file to define GPRAM region
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Memory Sizes
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
define symbol RAM_SIZE = 0x00005000; // 20K
|
||||
define symbol FLASH_SIZE = 0x00020000; // 128K
|
||||
define symbol ROM_SIZE = 0x0001C000; // 115K
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Memory Definitions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// RAM
|
||||
//
|
||||
define symbol RAM_START = 0x20000000;
|
||||
define symbol RAM_RESERVED_START = 0x20004F00;
|
||||
|
||||
if ( isdefinedsymbol(ICALL_RAM0_START) )
|
||||
{
|
||||
define symbol RAM_END = (ICALL_RAM0_START-1);
|
||||
}
|
||||
else // default
|
||||
{
|
||||
define symbol RAM_END = RAM_RESERVED_START - 1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Flash
|
||||
//
|
||||
define symbol FLASH_START = 0x00000000;
|
||||
|
||||
if ( isdefinedsymbol(ICALL_STACK0_START) )
|
||||
{
|
||||
define symbol FLASH_END = (ICALL_STACK0_START-1);
|
||||
}
|
||||
else // default
|
||||
{
|
||||
// Default includes all but last page, which is defined later.
|
||||
define symbol FLASH_END = FLASH_START + FLASH_SIZE - 0x1001;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Stack
|
||||
//
|
||||
|
||||
define symbol STACK_SIZE = 0x400;
|
||||
define symbol STACK_START = RAM_END + 1;
|
||||
define symbol STACK_END = STACK_START - STACK_SIZE;
|
||||
//
|
||||
define symbol STACK_TOP = RAM_END + 1;
|
||||
export symbol STACK_TOP;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// RAM
|
||||
//
|
||||
|
||||
define symbol GPRAM_START = 0x11000000;
|
||||
define symbol GPRAM_SIZE = 8096;
|
||||
define symbol GPRAM_END = GPRAM_START + GPRAM_SIZE;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Flash Interrupt Vector Table
|
||||
//
|
||||
|
||||
define symbol INTVEC_NUM_ENTRIES = 50 + 1; // first entry is stack location
|
||||
define symbol INTVEC_SIZE = INTVEC_NUM_ENTRIES + 4;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Memory Regions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
define memory mem with size = 4G;
|
||||
|
||||
define region RAM = mem:[from RAM_START to RAM_END];
|
||||
define region FLASH_LAST_PAGE = mem:[from(FLASH_SIZE) - 0x1000 to FLASH_SIZE-1];
|
||||
define region FLASH = mem:[from FLASH_START to FLASH_END] |
|
||||
FLASH_LAST_PAGE;
|
||||
define region GPRAM = mem:[from GPRAM_START to GPRAM_END];
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Memory Placement
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Code and RO Data
|
||||
place in FLASH { readonly };
|
||||
|
||||
// CCFG
|
||||
place at end of FLASH_LAST_PAGE { readonly section .ccfg };
|
||||
keep { section .ccfg };
|
||||
|
||||
// Interrupt Vector Table
|
||||
place at address mem:FLASH_START { readonly section .intvec };
|
||||
keep { readonly section .intvec };
|
||||
|
||||
// RAM Vector Table
|
||||
place at start of RAM { section .vtable_ram };
|
||||
|
||||
// Runtime Stack
|
||||
define block CSTACK with alignment = 8, size = STACK_SIZE { section .stack };
|
||||
place at end of RAM { block CSTACK };
|
||||
|
||||
// RW Data
|
||||
define block RWDATA { rw };
|
||||
place in RAM { block RWDATA };
|
||||
|
||||
// GPRAM
|
||||
define block GPDATA { section .bss };
|
||||
place in GPRAM { block GPDATA };
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Initialization
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
initialize by copy { readwrite };
|
||||
|
||||
do not initialize
|
||||
{
|
||||
section .noinit,
|
||||
section .stack,
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// The USE_TIRTOS_ROM symbol is defined internally in the build flow (using
|
||||
// --config_def USE_TIRTOS_ROM=1) for TI-RTOS applications whose appBLE.cfg file
|
||||
// specifies to use the ROM.
|
||||
//
|
||||
if (isdefinedsymbol(USE_TIRTOS_ROM)) {
|
||||
include "TIRTOS_ROM.icf";
|
||||
}
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+480
@@ -0,0 +1,480 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Includes
|
||||
* ------------------------------------------------------------------------------
|
||||
*/
|
||||
// TI RTOS drivers
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include <ti/drivers/PIN.h>
|
||||
#include <ti/drivers/SPI.h>
|
||||
|
||||
#include <xdc/runtime/Log.h>
|
||||
#include <xdc/runtime/System.h>
|
||||
|
||||
#include <ti/mw/grlib/grlib.h>
|
||||
#include <ti/mw/display/Display.h>
|
||||
#include <ti/mw/display/DisplaySharp.h>
|
||||
#include <ti/mw/lcd/SharpGrLib.h>
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Constants and macros
|
||||
* ------------------------------------------------------------------------------
|
||||
*/
|
||||
// Timeout of semaphore that controls exclusive to the LCD (infinite)
|
||||
#define ACCESS_TIMEOUT BIOS_WAIT_FOREVER
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Type definitions
|
||||
* ------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Local variables
|
||||
* ------------------------------------------------------------------------------
|
||||
*/
|
||||
/* Display function table for sharp implementation */
|
||||
const Display_FxnTable DisplaySharp_fxnTable = {
|
||||
DisplaySharp_open,
|
||||
DisplaySharp_clear,
|
||||
DisplaySharp_clearLines,
|
||||
DisplaySharp_put5,
|
||||
DisplaySharp_close,
|
||||
DisplaySharp_control,
|
||||
DisplaySharp_getType,
|
||||
};
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Functions
|
||||
* ------------------------------------------------------------------------------
|
||||
*/
|
||||
/*!
|
||||
* @fn DisplaySharp_open
|
||||
*
|
||||
* @brief Initialize the LCD
|
||||
*
|
||||
* @descr Initializes the pins used by the LCD, creates resource access
|
||||
* protection semaphore, turns on the LCD device, initializes the
|
||||
* frame buffer, initializes to white background/dark foreground,
|
||||
* and finally clears the object->displayColor.
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param params - display parameters
|
||||
*
|
||||
* @return Pointer to Display_Config struct
|
||||
*/
|
||||
Display_Handle DisplaySharp_open(Display_Handle hDisplay,
|
||||
Display_Params *params)
|
||||
{
|
||||
DisplaySharp_HWAttrs *hwAttrs = (DisplaySharp_HWAttrs *)hDisplay->hwAttrs;
|
||||
DisplaySharp_Object *object = (DisplaySharp_Object *)hDisplay->object;
|
||||
|
||||
PIN_Config pinTable[4 + 1];
|
||||
|
||||
object->lineClearMode = params->lineClearMode;
|
||||
|
||||
uint32_t i = 0;
|
||||
if (hwAttrs->csPin != PIN_TERMINATE)
|
||||
{
|
||||
pinTable[i++] = hwAttrs->csPin | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX;
|
||||
}
|
||||
if (hwAttrs->extcominPin != PIN_TERMINATE)
|
||||
{
|
||||
pinTable[i++] = hwAttrs->extcominPin | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX;
|
||||
}
|
||||
if (hwAttrs->powerPin != PIN_TERMINATE)
|
||||
{
|
||||
pinTable[i++] = hwAttrs->powerPin | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX;
|
||||
}
|
||||
if (hwAttrs->enablePin != PIN_TERMINATE)
|
||||
{
|
||||
pinTable[i++] = hwAttrs->enablePin | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX;
|
||||
}
|
||||
pinTable[i++] = PIN_TERMINATE;
|
||||
|
||||
object->hPins = PIN_open(&object->pinState, pinTable);
|
||||
if (object->hPins == NULL)
|
||||
{
|
||||
Log_error0("Couldn't open pins for Sharp96x96");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SPI_Params spiParams;
|
||||
SPI_Params_init(&spiParams);
|
||||
spiParams.bitRate = 4000000;
|
||||
|
||||
object->hSpi = SPI_open(hwAttrs->spiIndex, &spiParams);
|
||||
|
||||
if (object->hSpi == NULL)
|
||||
{
|
||||
Log_error0("Couldn't open SPI driver for Sharp96x96");
|
||||
PIN_close(object->hPins);
|
||||
object->hPins = NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Init colors
|
||||
object->displayColor.bg = ClrBlack;
|
||||
object->displayColor.fg = ClrWhite;
|
||||
|
||||
// Exclusive access
|
||||
Semaphore_Params semParams;
|
||||
|
||||
Semaphore_Params_init(&semParams);
|
||||
semParams.mode = Semaphore_Mode_BINARY;
|
||||
Semaphore_construct(&object->semLCD, 1, &semParams);
|
||||
|
||||
// Grab LCD
|
||||
Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT);
|
||||
|
||||
// Initialize the GrLib back-end transport
|
||||
SharpGrLib_init(object->hSpi, object->hPins, hwAttrs->csPin);
|
||||
|
||||
object->g_sDisplay.lSize = sizeof(tDisplay);
|
||||
object->g_sDisplay.pFxns = &g_sharpFxns;
|
||||
object->g_sDisplay.pvDisplayData = object->displayBuffer;
|
||||
object->g_sDisplay.usHeight = hwAttrs->pixelHeight;
|
||||
object->g_sDisplay.usWidth = hwAttrs->pixelWidth;
|
||||
object->g_sDisplay.pvDisplayData = hwAttrs->displayBuf;
|
||||
|
||||
// Graphics library init
|
||||
GrContextInit(&object->g_sContext, &object->g_sDisplay, &g_sharpFxns);
|
||||
|
||||
// Graphics properties
|
||||
GrContextForegroundSet(&object->g_sContext, object->displayColor.fg);
|
||||
GrContextBackgroundSet(&object->g_sContext, object->displayColor.bg);
|
||||
GrContextFontSet(&object->g_sContext, &g_sFontFixed6x8);
|
||||
|
||||
// Clear display
|
||||
GrClearDisplay(&object->g_sContext);
|
||||
GrFlush(&object->g_sContext);
|
||||
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
|
||||
return hDisplay;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplaySharp_clear
|
||||
*
|
||||
* @brief Clears the display
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplaySharp_clear(Display_Handle hDisplay)
|
||||
{
|
||||
DisplaySharp_Object *object = (DisplaySharp_Object *)hDisplay->object;
|
||||
|
||||
if (object->hPins == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Grab LCD
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT))
|
||||
{
|
||||
GrClearDisplay(&object->g_sContext);
|
||||
GrFlush(&object->g_sContext);
|
||||
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplaySharp_clearLines
|
||||
*
|
||||
* @brief Clears lines lineFrom-lineTo of the display, inclusive
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param lineFrom - line index (0 .. )
|
||||
* @param lineTo - line index (0 .. )
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplaySharp_clearLines(Display_Handle hDisplay,
|
||||
uint8_t lineFrom, uint8_t lineTo)
|
||||
{
|
||||
DisplaySharp_Object *object = (DisplaySharp_Object *)hDisplay->object;
|
||||
|
||||
if (lineTo <= lineFrom)
|
||||
{
|
||||
lineTo = lineFrom;
|
||||
}
|
||||
|
||||
tRectangle rect = {
|
||||
.sXMin = 0,
|
||||
.sXMax = object->g_sContext.sClipRegion.sXMax,
|
||||
.sYMin = lineFrom * object->g_sContext.pFont->ucHeight,
|
||||
.sYMax = (lineTo + 1) * object->g_sContext.pFont->ucHeight - 1,
|
||||
};
|
||||
|
||||
GrContextForegroundSet(&object->g_sContext, object->displayColor.bg);
|
||||
GrRectFill(&object->g_sContext, &rect);
|
||||
GrContextForegroundSet(&object->g_sContext, object->displayColor.fg);
|
||||
GrFlush(&object->g_sContext);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplaySharp_put5
|
||||
*
|
||||
* @brief Write a text string to a specific line/column of the display
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param line - line index (0..)
|
||||
* @param column - column index (0..)
|
||||
* @param fmt - format string
|
||||
* @param aN - optional format arguments
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplaySharp_put5(Display_Handle hDisplay, uint8_t line,
|
||||
uint8_t column, uintptr_t fmt, uintptr_t a0,
|
||||
uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4)
|
||||
{
|
||||
DisplaySharp_Object *object = (DisplaySharp_Object *)hDisplay->object;
|
||||
|
||||
uint8_t xp, yp, clearStartX, clearEndX;
|
||||
|
||||
char dispStr[23];
|
||||
|
||||
if (object->hPins == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Grab LCD
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT))
|
||||
{
|
||||
xp = column * object->g_sContext.pFont->ucMaxWidth + 1;
|
||||
yp = line * object->g_sContext.pFont->ucHeight + 0;
|
||||
clearStartX = clearEndX = xp;
|
||||
|
||||
switch (object->lineClearMode)
|
||||
{
|
||||
case DISPLAY_CLEAR_LEFT:
|
||||
clearStartX = 0;
|
||||
break;
|
||||
case DISPLAY_CLEAR_RIGHT:
|
||||
clearEndX = object->g_sContext.sClipRegion.sXMax;
|
||||
break;
|
||||
case DISPLAY_CLEAR_BOTH:
|
||||
clearStartX = 0;
|
||||
clearEndX = object->g_sContext.sClipRegion.sXMax;
|
||||
break;
|
||||
case DISPLAY_CLEAR_NONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (clearStartX != clearEndX)
|
||||
{
|
||||
tRectangle rect = {
|
||||
.sXMin = clearStartX,
|
||||
.sXMax = clearEndX,
|
||||
.sYMin = yp,
|
||||
.sYMax = yp + object->g_sContext.pFont->ucHeight - 1,
|
||||
};
|
||||
|
||||
GrContextForegroundSet(&object->g_sContext, object->displayColor.bg);
|
||||
GrRectFill(&object->g_sContext, &rect);
|
||||
GrContextForegroundSet(&object->g_sContext, object->displayColor.fg);
|
||||
}
|
||||
|
||||
System_snprintf(dispStr, sizeof(dispStr), (xdc_CString)fmt, a0, a1, a2, a3, a4);
|
||||
|
||||
// Draw a text on the display
|
||||
GrStringDraw(&object->g_sContext,
|
||||
dispStr,
|
||||
AUTO_STRING_LENGTH,
|
||||
xp,
|
||||
yp,
|
||||
OPAQUE_TEXT);
|
||||
|
||||
GrFlush(&object->g_sContext);
|
||||
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplaySharp_close
|
||||
*
|
||||
* @brief Turns of the display and releases the LCD control pins
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplaySharp_close(Display_Handle hDisplay)
|
||||
{
|
||||
DisplaySharp_HWAttrs *hwAttrs = (DisplaySharp_HWAttrs *)hDisplay->hwAttrs;
|
||||
DisplaySharp_Object *object = (DisplaySharp_Object *)hDisplay->object;
|
||||
|
||||
if (object->hPins == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Grab LCD
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT))
|
||||
{
|
||||
// Turn off the display
|
||||
PIN_setOutputValue(object->hPins, hwAttrs->enablePin, 0);
|
||||
|
||||
// Release resources
|
||||
PIN_close(object->hPins);
|
||||
object->hPins = NULL;
|
||||
|
||||
SPI_close(object->hSpi);
|
||||
object->hSpi = NULL;
|
||||
|
||||
// Deconfigure GrLib back-end
|
||||
SharpGrLib_init(NULL, NULL, PIN_UNASSIGNED);
|
||||
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* @fn DisplaySharp_control
|
||||
*
|
||||
* @brief Function for setting control parameters of the Display driver
|
||||
* after it has been opened.
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param cmd - command to execute, supported commands are:
|
||||
* | Command | Description |
|
||||
* |------------------------------- |-------------------------|
|
||||
* | ::DISPLAY_CMD_TRANSPORT_CLOSE | Close SPI but leave control pins |
|
||||
* | ::DISPLAY_CMD_TRANSPORT_OPEN | Re-open SPI driver |
|
||||
* @param arg - argument to the command
|
||||
*
|
||||
* @return ::DISPLAY_STATUS_SUCCESS if success, or error code if error.
|
||||
*/
|
||||
int DisplaySharp_control(Display_Handle hDisplay, unsigned int cmd, void *arg)
|
||||
{
|
||||
DisplaySharp_HWAttrs *hwAttrs = (DisplaySharp_HWAttrs *)hDisplay->hwAttrs;
|
||||
DisplaySharp_Object *object = (DisplaySharp_Object *)hDisplay->object;
|
||||
|
||||
/* Initialize return value */
|
||||
int ret = DISPLAY_STATUS_ERROR;
|
||||
|
||||
/* Perform command */
|
||||
switch(cmd)
|
||||
{
|
||||
case DISPLAY_CMD_TRANSPORT_CLOSE:
|
||||
// Grab LCD
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT))
|
||||
{
|
||||
if (object->hSpi)
|
||||
{
|
||||
// Close SPI and tell back-end there is no SPI
|
||||
SPI_close(object->hSpi);
|
||||
SharpGrLib_init(NULL, object->hPins, hwAttrs->csPin);
|
||||
object->hSpi = NULL;
|
||||
ret = DISPLAY_STATUS_SUCCESS;
|
||||
}
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
}
|
||||
break;
|
||||
|
||||
case DISPLAY_CMD_TRANSPORT_OPEN:
|
||||
// Grab LCD
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT))
|
||||
{
|
||||
if (NULL == object->hSpi)
|
||||
{
|
||||
// Re-open SPI and re-init back-end
|
||||
SPI_Params spiParams;
|
||||
SPI_Params_init(&spiParams);
|
||||
spiParams.bitRate = 4000000;
|
||||
object->hSpi = SPI_open(hwAttrs->spiIndex, &spiParams);
|
||||
SharpGrLib_init(object->hSpi, object->hPins, hwAttrs->csPin);
|
||||
ret = DISPLAY_STATUS_SUCCESS;
|
||||
}
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
}
|
||||
break;
|
||||
|
||||
case DISPLAYSHARP_CMD_SET_COLORS:
|
||||
// Grab LCD
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->semLCD, ACCESS_TIMEOUT))
|
||||
{
|
||||
object->displayColor = *(DisplaySharpColor_t *)arg;
|
||||
|
||||
GrContextForegroundSet(&object->g_sContext, object->displayColor.fg);
|
||||
GrContextBackgroundSet(&object->g_sContext, object->displayColor.bg);
|
||||
|
||||
// Release LCD
|
||||
Semaphore_post((Semaphore_Handle) & object->semLCD);
|
||||
|
||||
// Return success
|
||||
ret = DISPLAY_STATUS_SUCCESS;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
/* The command is not defined */
|
||||
ret = SPI_STATUS_UNDEFINEDCMD;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @fn DisplaySharp_getType
|
||||
*
|
||||
* @brief Returns type of transport
|
||||
*
|
||||
* @return Display type define LCD
|
||||
*/
|
||||
unsigned int DisplaySharp_getType(void)
|
||||
{
|
||||
return Display_Type_LCD | Display_Type_GRLIB;
|
||||
}
|
||||
@@ -0,0 +1,331 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Includes
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include <ti/drivers/UART.h>
|
||||
|
||||
#include <xdc/runtime/Log.h>
|
||||
#include <xdc/runtime/Diags.h>
|
||||
#include <xdc/runtime/System.h>
|
||||
|
||||
#include <ti/mw/display/Display.h>
|
||||
#include <ti/mw/display/DisplayUart.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Constants and macros
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef MIN
|
||||
# define MIN(n, m) (((n) > (m)) ? (m) : (n))
|
||||
#endif
|
||||
|
||||
#define DISPLAY_UART_ESC_INITIAL "\x1b\x63" /* Reset terminal */ \
|
||||
"\x1b[2J" /* Clear screen */ \
|
||||
"\x1b[10r" /* Scrolling region from line 10 */ \
|
||||
"\x1b[11;1H" /* Set initial cursor to line 11 */
|
||||
|
||||
#define DISPLAY_UART_ESC_MOVEPOS_FMT "\x1b\x37" /* Save cursor position */ \
|
||||
"\x1b[10r" /* Retransmit scroll */ \
|
||||
"\x1b[%d;%dH" /* Move cursor fmt str */
|
||||
|
||||
#define DISPLAY_UART_ESC_RESTOREPOS "\x1b\x38" /* Restore saved cursor pos */
|
||||
|
||||
#define DISPLAY_UART_ESC_CLEAR_SCREEN "\x1b[2J" /* Clear screen */
|
||||
#define DISPLAY_UART_ESC_CLEAR_CUR_LEFT "\x1b[1K" /* Clear cursor left */
|
||||
#define DISPLAY_UART_ESC_CLEAR_CUR_RIGHT "\x1b[0K" /* Clear cursor right */
|
||||
#define DISPLAY_UART_ESC_CLEAR_BOTH "\x1b[2K" /* Clear line */
|
||||
#define DISPLAY_UART_ESC_CLEARSEQ_LEN 4
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Type definitions
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Local variables
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
/* Display function table for UART implementation */
|
||||
const Display_FxnTable DisplayUart_fxnTable = {
|
||||
DisplayUart_open,
|
||||
DisplayUart_clear,
|
||||
DisplayUart_clearLines,
|
||||
DisplayUart_put5,
|
||||
DisplayUart_close,
|
||||
DisplayUart_control,
|
||||
DisplayUart_getType,
|
||||
};
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Functions
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
/*!
|
||||
* @fn DisplayUart_open
|
||||
*
|
||||
* @brief Initialize the UART transport
|
||||
*
|
||||
* @descr Opens the UART index specified in the HWAttrs, and creates a
|
||||
* mutex semaphore
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param params - display parameters
|
||||
*
|
||||
* @return Pointer to Display_Config struct
|
||||
*/
|
||||
Display_Handle DisplayUart_open(Display_Handle hDisplay,
|
||||
Display_Params *params)
|
||||
{
|
||||
DisplayUart_HWAttrs *hwAttrs = (DisplayUart_HWAttrs *)hDisplay->hwAttrs;
|
||||
DisplayUart_Object *object = (DisplayUart_Object *)hDisplay->object;
|
||||
|
||||
UART_Params uartParams;
|
||||
UART_Params_init(&uartParams);
|
||||
uartParams.baudRate = hwAttrs->baudRate;
|
||||
uartParams.writeMode = UART_MODE_BLOCKING;
|
||||
|
||||
Semaphore_Params semParams;
|
||||
Semaphore_Params_init(&semParams);
|
||||
semParams.mode = Semaphore_Mode_BINARY;
|
||||
Semaphore_construct(&object->mutex, 1, &semParams);
|
||||
|
||||
switch (params->lineClearMode)
|
||||
{
|
||||
case DISPLAY_CLEAR_BOTH: object->lineClearSeq = DISPLAY_UART_ESC_CLEAR_BOTH; break;
|
||||
case DISPLAY_CLEAR_LEFT: object->lineClearSeq = DISPLAY_UART_ESC_CLEAR_CUR_LEFT; break;
|
||||
case DISPLAY_CLEAR_RIGHT: object->lineClearSeq = DISPLAY_UART_ESC_CLEAR_CUR_RIGHT; break;
|
||||
default: /* fall-through */
|
||||
case DISPLAY_CLEAR_NONE: object->lineClearSeq = NULL; break;
|
||||
}
|
||||
|
||||
object->hUart = UART_open(hwAttrs->uartIdx, &uartParams);
|
||||
if (NULL == object->hUart)
|
||||
{
|
||||
Log_print0(Diags_USER1, "DisplayUart.c: Couldn't open UART");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Send VT100 initial config to terminal */
|
||||
UART_write(object->hUart, DISPLAY_UART_ESC_INITIAL, sizeof DISPLAY_UART_ESC_INITIAL - 1);
|
||||
|
||||
return hDisplay;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @fn DisplayUart_clear
|
||||
*
|
||||
* @brief Does nothing, as output is stateless.
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplayUart_clear(Display_Handle hDisplay)
|
||||
{
|
||||
DisplayUart_Object *object = (DisplayUart_Object *)hDisplay->object;
|
||||
DisplayUart_HWAttrs *hwAttrs = (DisplayUart_HWAttrs *)hDisplay->hwAttrs;
|
||||
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->mutex, hwAttrs->mutexTimeout))
|
||||
{
|
||||
UART_write(object->hUart, DISPLAY_UART_ESC_CLEAR_SCREEN, 4);
|
||||
Semaphore_post((Semaphore_Handle) & object->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplayUart_clearLines
|
||||
*
|
||||
* @brief Does nothing, as output is stateless.
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param lineFrom - line index (0 .. )
|
||||
* @param lineTo - line index (0 .. )
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplayUart_clearLines(Display_Handle hDisplay,
|
||||
uint8_t lineFrom, uint8_t lineTo)
|
||||
{
|
||||
DisplayUart_Object *object = (DisplayUart_Object *)hDisplay->object;
|
||||
DisplayUart_HWAttrs *hwAttrs = (DisplayUart_HWAttrs *)hDisplay->hwAttrs;
|
||||
|
||||
uint32_t strSize = 0;
|
||||
uint32_t curLine = 0;
|
||||
const uint8_t uartClearLineMoveDown[] = "\x1b[2K\x1b\x45";
|
||||
|
||||
if (lineTo <= lineFrom)
|
||||
{
|
||||
lineTo = lineFrom;
|
||||
}
|
||||
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->mutex, hwAttrs->mutexTimeout))
|
||||
{
|
||||
strSize += System_snprintf(hwAttrs->strBuf, hwAttrs->strBufLen,
|
||||
DISPLAY_UART_ESC_MOVEPOS_FMT, lineFrom + 1, 0);
|
||||
|
||||
for (curLine = lineFrom + 1;
|
||||
curLine < lineTo + 2 &&
|
||||
hwAttrs->strBufLen - strSize > sizeof DISPLAY_UART_ESC_RESTOREPOS - 1;
|
||||
curLine++)
|
||||
{
|
||||
memcpy(hwAttrs->strBuf + strSize, uartClearLineMoveDown, sizeof uartClearLineMoveDown - 1);
|
||||
strSize += sizeof uartClearLineMoveDown - 1;
|
||||
}
|
||||
|
||||
memcpy(hwAttrs->strBuf + strSize, DISPLAY_UART_ESC_RESTOREPOS, sizeof DISPLAY_UART_ESC_RESTOREPOS - 1);
|
||||
strSize += sizeof DISPLAY_UART_ESC_RESTOREPOS - 1;
|
||||
|
||||
UART_write(object->hUart, hwAttrs->strBuf, strSize);
|
||||
Semaphore_post((Semaphore_Handle) & object->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplayUart_put5
|
||||
*
|
||||
* @brief Write a text string to UART with return and newline.
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param line - line index (0..)
|
||||
* @param column - column index (0..)
|
||||
* @param fmt - format string
|
||||
* @param aN - optional format arguments
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplayUart_put5(Display_Handle hDisplay, uint8_t line,
|
||||
uint8_t column, uintptr_t fmt, uintptr_t a0,
|
||||
uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4)
|
||||
{
|
||||
DisplayUart_Object *object = (DisplayUart_Object *)hDisplay->object;
|
||||
DisplayUart_HWAttrs *hwAttrs = (DisplayUart_HWAttrs *)hDisplay->hwAttrs;
|
||||
|
||||
uint32_t strSize = 0;
|
||||
|
||||
char *strBuf = hwAttrs->strBuf;
|
||||
const uint16_t bufLen = hwAttrs->strBufLen;
|
||||
|
||||
if (Semaphore_pend((Semaphore_Handle) & object->mutex, hwAttrs->mutexTimeout))
|
||||
{
|
||||
if (line != DisplayUart_SCROLLING)
|
||||
{
|
||||
/* Add cursor movement escape sequence */
|
||||
strSize += System_snprintf(strBuf + strSize, bufLen - strSize - 2,
|
||||
DISPLAY_UART_ESC_MOVEPOS_FMT, line + 1, column + 1);
|
||||
|
||||
/* Add line clearing escape sequence */
|
||||
if (object->lineClearSeq)
|
||||
{
|
||||
memcpy(strBuf + strSize, object->lineClearSeq, DISPLAY_UART_ESC_CLEARSEQ_LEN);
|
||||
strSize += DISPLAY_UART_ESC_CLEARSEQ_LEN;
|
||||
}
|
||||
}
|
||||
|
||||
strSize += System_snprintf(strBuf + strSize, bufLen - strSize - 2, (xdc_CString)fmt, a0, a1, a2, a3, a4);
|
||||
|
||||
if (line != DisplayUart_SCROLLING)
|
||||
{
|
||||
memcpy(strBuf + strSize, DISPLAY_UART_ESC_RESTOREPOS, sizeof DISPLAY_UART_ESC_RESTOREPOS - 1);
|
||||
strSize += 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
strBuf[strSize++] = '\r';
|
||||
strBuf[strSize++] = '\n';
|
||||
}
|
||||
|
||||
UART_write(object->hUart, strBuf, strSize);
|
||||
Semaphore_post((Semaphore_Handle) & object->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* @fn DisplayUart_close
|
||||
*
|
||||
* @brief Closes the UART handle
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void DisplayUart_close(Display_Handle hDisplay)
|
||||
{
|
||||
DisplayUart_Object *object = (DisplayUart_Object *)hDisplay->object;
|
||||
|
||||
// Not sure what happens if someone is writing
|
||||
UART_close(object->hUart);
|
||||
object->hUart = NULL;
|
||||
|
||||
// Not sure what happens if someone is pending
|
||||
Semaphore_destruct(&object->mutex);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @fn DisplayUart_control
|
||||
*
|
||||
* @brief Function for setting control parameters of the Display driver
|
||||
* after it has been opened.
|
||||
*
|
||||
* @param hDisplay - pointer to Display_Config struct
|
||||
* @param cmd - command to execute
|
||||
* @param arg - argument to the command
|
||||
*
|
||||
* @return ::DISPLAY_STATUS_UNDEFINEDCMD because no commands are supported
|
||||
*/
|
||||
int DisplayUart_control(Display_Handle hDisplay, unsigned int cmd, void *arg)
|
||||
{
|
||||
return DISPLAY_STATUS_UNDEFINEDCMD;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @fn DisplayUart_getType
|
||||
*
|
||||
* @brief Returns type of transport
|
||||
*
|
||||
* @return Display type UART
|
||||
*/
|
||||
unsigned int DisplayUart_getType(void)
|
||||
{
|
||||
return Display_Type_UART;
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Texas Instruments Incorporated
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* * Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _DISPLAY_UART_H_
|
||||
#define _DISPLAY_UART_H_
|
||||
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include <ti/drivers/UART.h>
|
||||
#include <ti/mw/display/Display.h>
|
||||
#include <stdint.h>
|
||||
|
||||
extern const Display_FxnTable DisplayUart_fxnTable;
|
||||
|
||||
/*
|
||||
* @brief Line number for text to appear in scrolling region
|
||||
*/
|
||||
#define DisplayUart_SCROLLING 0xFF
|
||||
|
||||
|
||||
typedef struct DisplayUart_HWAttrs
|
||||
{
|
||||
unsigned int uartIdx;
|
||||
unsigned int baudRate;
|
||||
unsigned int mutexTimeout;
|
||||
char *strBuf;
|
||||
uint16_t strBufLen;
|
||||
} DisplayUart_HWAttrs;
|
||||
|
||||
|
||||
typedef struct DisplayUart_Object
|
||||
{
|
||||
UART_Handle hUart;
|
||||
Semaphore_Struct mutex;
|
||||
uint8_t *lineClearSeq;
|
||||
} DisplayUart_Object, *DisplayUart_Handle;
|
||||
|
||||
|
||||
Display_Handle DisplayUart_open(Display_Handle,
|
||||
Display_Params * params);
|
||||
void DisplayUart_clear(Display_Handle handle);
|
||||
void DisplayUart_clearLines(Display_Handle handle,
|
||||
uint8_t fromLine,
|
||||
uint8_t toLine);
|
||||
void DisplayUart_put5(Display_Handle handle, uint8_t line,
|
||||
uint8_t column, uintptr_t fmt, uintptr_t a0,
|
||||
uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4);
|
||||
void DisplayUart_close(Display_Handle);
|
||||
int DisplayUart_control(Display_Handle handle, unsigned int cmd, void *arg);
|
||||
unsigned int DisplayUart_getType(void);
|
||||
|
||||
#endif // _DISPLAY_UART_H_
|
||||
@@ -55,7 +55,7 @@ extern "C"
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include "hal_types.h"
|
||||
#include "npi/src/inc/npi_config.h"
|
||||
#include "inc/npi_config.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file npi_config.h
|
||||
|
||||
This file contains the Network Processor Interface (NPI),
|
||||
which abstracts the physical link between the Application
|
||||
Processor (AP) and the Network Processor (NP). The NPI
|
||||
serves as the HAL's client for the SPI and UART drivers, and
|
||||
provides API and callback services for its client.
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SDI_CONFIG_H
|
||||
#define SDI_CONFIG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
|
||||
#include "Board.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
#if !defined(NPI_SPI_CONFIG)
|
||||
#define NPI_SPI_CONFIG Board_SPI1
|
||||
#endif
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
# if defined(NPI_USE_SPI)
|
||||
# if (NPI_SPI_CONFIG == Board_SPI1)
|
||||
# define MRDY_PIN Board_KEY_UP
|
||||
# define SRDY_PIN Board_KEY_DOWN
|
||||
# else
|
||||
# error "ERROR: You must choose Board_SPI1 SPI module for NPI."
|
||||
# endif
|
||||
# elif defined(SDI_USE_UART)
|
||||
# define MRDY_PIN Board_BUTTON0
|
||||
# define SRDY_PIN Board_BUTTON1
|
||||
# endif
|
||||
# define SRDY_ENABLE() PIN_setOutputValue(hSdiHandshakePins, SRDY_PIN, 0) /* RTS low */
|
||||
# define SRDY_DISABLE() PIN_setOutputValue(hSdiHandshakePins, SRDY_PIN, 1) /* RTS high */
|
||||
#else // ! POWER_SAVING
|
||||
# define SRDY_ENABLE()
|
||||
# define SRDY_DISABLE()
|
||||
#endif
|
||||
|
||||
#define SDI_TL_BUF_SIZE 270
|
||||
#define SDI_SPI_PAYLOAD_SIZE 255
|
||||
#define SDI_SPI_HDR_LEN 4
|
||||
|
||||
#ifdef NPI_USE_SPI
|
||||
# if (NPI_TL_BUF_SIZE - NPI_SPI_HDR_LEN) < NPI_SPI_PAYLOAD_SIZE
|
||||
# define NPI_MAX_FRAG_SIZE (NPI_TL_BUF_SIZE - NPI_SPI_HDR_LEN)
|
||||
# else
|
||||
# define NPI_MAX_FRAG_SIZE NPI_SPI_PAYLOAD_SIZE
|
||||
# endif
|
||||
#elif SDI_USE_UART
|
||||
# define SDI_MAX_FRAG_SIZE SDI_TL_BUF_SIZE
|
||||
#else
|
||||
# error "ERROR: SDI_USE_UART or NPI_USE_SPI must be defined."
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* NPI_CONFIG_H */
|
||||
@@ -0,0 +1,109 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file npi_data.h
|
||||
|
||||
SDI Data structures
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SDIDATA_H
|
||||
#define SDIDATA_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
// External Events for RTOS application
|
||||
#define UART_DATA_EVT 0x0010
|
||||
#define UART_ERROR_EVT 0x0020
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//! \brief SDI Command IDs.
|
||||
//!
|
||||
typedef enum
|
||||
{
|
||||
SDIMSG_Type_ASYNC = 0x00,
|
||||
SDIMSG_Type_SYNCREQ = 0x01,
|
||||
SDIMSG_Type_SYNCRSP = 0x02
|
||||
} SDIMSG_Type;
|
||||
|
||||
|
||||
//! \brief Structure to send an SDI message to the stack thread.
|
||||
//!
|
||||
typedef struct _npimsg_t
|
||||
{
|
||||
// Msg Type
|
||||
uint_least8_t msgType;
|
||||
|
||||
// message buffer size
|
||||
uint8_t pBufSize;
|
||||
|
||||
// message buffer
|
||||
uint8_t *pBuf;
|
||||
} SDIMSG_msg_t;
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SDIDATA_H */
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file npi_rxbuf.h
|
||||
|
||||
SDI RX Buffer and utilities
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
//******************************************************************************
|
||||
#ifndef SDIRXBUF_H
|
||||
#define SDIRXBUF_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include "hal_types.h"
|
||||
#include "OSAL.h"
|
||||
#include "sdi_config.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDIRxBuf_Read
|
||||
//!
|
||||
//! \param[in] len -
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_Read(uint16);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Returns number of bytes that are unparsed in RxBuf
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_GetRxBufCount();
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Returns number of bytes that are available in RxBuf
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_GetRxBufAvail();
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDIRxBuf_ReadFromRxBuf
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_ReadFromRxBuf(uint8_t *buf, uint16 len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SDIRXBUF_H */
|
||||
@@ -0,0 +1,131 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file sdi_task.h
|
||||
|
||||
SDI is a TI RTOS Application Thread that provides a
|
||||
common Network Processor Interface framework
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _SDITask_H
|
||||
#define _SDITask_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include "inc/sdi_data.h"
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
#define DEBUG(x) SDITask_sendToUART(x, strlen((const char*)x));
|
||||
#define DEBUG_NEWLINE() DEBUG("\n\r")
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Typedef for call back function mechanism to reroute incoming SDI
|
||||
//! messages.
|
||||
//! NOTE: Definer MUST copy contents to local buffer. SDI task will
|
||||
//! free this memory.
|
||||
//! NOTE: The contained message buffer does NOT include any "framing"
|
||||
//! bytes, ie. SOF, FCS etc.
|
||||
//! \param[in] pMsg Pointer to "unframed" message buffer.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
typedef void (*sdiIncomingEventCBack_t)(uint8_t event, uint8_t *pMsg, uint8_t len);
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDI task creation function
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
Void SDITask_createTask(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Register callback function to reroute incoming (from UART)
|
||||
//! SDI messages.
|
||||
//!
|
||||
//! \param[in] appRxCB Callback fucntion.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
extern void SDITask_registerIncomingRXEventAppCB(sdiIncomingEventCBack_t appRxCB);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief API for application task to send a message to the Host.
|
||||
//! NOTE: It's assumed all message traffic to the stack will use
|
||||
//! other (ICALL) APIs/Interfaces.
|
||||
//!
|
||||
//! \param[in] pMsg Pointer to "unframed" message buffer.
|
||||
//! \param[in] length Length of buffer
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
extern void SDITask_sendToUART(uint8_t *pMsg, uint16_t length);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief API for application task to set packet data size to send over the air.
|
||||
//!
|
||||
//! \param[in] mtuSize GATT MTU size.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
extern void SDITask_setAppDataSize(uint16_t mtuSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
#endif // extern "C"
|
||||
|
||||
#endif // end of _SDITask_H definition
|
||||
@@ -0,0 +1,185 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file sdi_tl.h
|
||||
|
||||
SDI Transport Layer API
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SDI_TL_H
|
||||
#define SDI_TL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include "hal_types.h"
|
||||
#include "inc/sdi_config.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
|
||||
#if defined(SDI_USE_UART)
|
||||
#define transportInit SDITLUART_initializeTransport
|
||||
#define transportRead SDITLUART_readTransport
|
||||
#define transportWrite SDITLUART_writeTransport
|
||||
#define transportStopTransfer SDITLUART_stopTransfer
|
||||
#define transportMrdyEvent SDITLUART_handleMrdyEvent
|
||||
#elif defined(NPI_USE_SPI)
|
||||
#define transportInit NPITLSPI_initializeTransport
|
||||
#define transportRead NPITLSPI_readTransport
|
||||
#define transportWrite NPITLSPI_writeTransport
|
||||
#define transportStopTransfer NPITLSPI_stopTransfer
|
||||
#define transportMrdyEvent NPITLSPI_handleMrdyEvent
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Typedef for call back function mechanism to notify SDI Task that
|
||||
//! an SDI transaction has occured
|
||||
//! \param[in] int number of bytes either received or transmitted
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
typedef void (*sdiRtosCB_t)(int size);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Typedef for call back function mechanism to notify SDI Task that
|
||||
//! an MRDY edge has occured
|
||||
//! \param[in] void
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
typedef void (*sdiMrdyRtosCB_t)();
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine initializes the transport layer and opens the port
|
||||
//! of the device. Note that based on project defines, either the
|
||||
//! UART, USB (CDC), or SPI driver can be used.
|
||||
//!
|
||||
//! \param[in] sdiCBTx - Call back function for TX complete event
|
||||
//! \param[in] sdiCBRx - Call back function for RX event
|
||||
//! \param[in] sdiCBMrdy - Call back function for MRDY event
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITL_initTL(sdiRtosCB_t sdiCBTx, sdiRtosCB_t sdiCBRx, sdiRtosCB_t sdiCBMrdy);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine reads data from the transport layer based on len,
|
||||
//! and places it into the buffer.
|
||||
//!
|
||||
//! \param[in] buf - Pointer to buffer to place read data.
|
||||
//! \param[in] len - Number of bytes to read.
|
||||
//!
|
||||
//! \return uint16 - the number of bytes read from transport
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_readTL(uint8 *buf, uint16 len);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine writes data from the buffer to the transport layer.
|
||||
//!
|
||||
//! \param[in] buf - Pointer to buffer to write data from.
|
||||
//! \param[in] len - Number of bytes to write.
|
||||
//!
|
||||
//! \return uint16 - the number of bytes written to transport
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_writeTL(uint8 *buf, uint16 len);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine is used to handle an MRDY edge from the application
|
||||
//! context. Certain operations such as UART_read() cannot be
|
||||
//! performed from the actual MRDY hwi handler
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITL_handleMrdyEvent(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine returns the max size receive buffer.
|
||||
//!
|
||||
//! \return uint16 - max size of the receive buffer
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_getMaxRxBufSize(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine returns the max size transmit buffer.
|
||||
//!
|
||||
//! \return uint16 - max size of the transmit buffer
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_getMaxTxBufSize(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Returns number of bytes that are unread in RxBuf
|
||||
//!
|
||||
//! \return uint16 - number of unread bytes
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_getRxBufLen(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine returns the state of transmission on SDI
|
||||
//!
|
||||
//! \return bool - state of SDI transmission - 1 - active, 0 - not active
|
||||
// -----------------------------------------------------------------------------
|
||||
bool SDITL_checkSdiBusy(void);
|
||||
|
||||
/*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SDI_TL_H */
|
||||
@@ -0,0 +1,171 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file sdi_tl_uart.h
|
||||
|
||||
SDI Transport Layer Module for UART
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
#ifndef SDI_TL_UART_H
|
||||
#define SDI_TL_UART_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include <ti/drivers/UART.h>
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
#define SDI_UART_FC_THRESHOLD 48
|
||||
#define SDI_UART_IDLE_TIMEOUT 6
|
||||
#define SDI_UART_INT_ENABLE TRUE
|
||||
|
||||
#if !defined(SDI_UART_BR)
|
||||
#define SDI_UART_BR 115200
|
||||
#endif // !SDI_UART_BR
|
||||
|
||||
// UART ISR Buffer define
|
||||
#define UART_ISR_BUF_SIZE 128
|
||||
#define UART_ISR_BUF_CNT 2
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Typedef for call back function mechanism to notify SDI TL that
|
||||
//! an SDI transaction has occured
|
||||
//! \param[in] uint16 number of bytes received
|
||||
//! \param[in] uint16 number of bytes transmitted
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
typedef void (*sdiCB_t)(uint16 Rxlen, uint16 Txlen);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Typedef for call back function mechanism to reroute incoming SDI
|
||||
//! messages.
|
||||
//! NOTE: Definer MUST copy contents to local buffer. SDI task will
|
||||
//! free this memory.
|
||||
//! NOTE: The contained message buffer does NOT include any "framing"
|
||||
//! bytes, ie. SOF, FCS etc.
|
||||
//! \param[in] pMsg Pointer to "unframed" message buffer.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
typedef void (*sdiTLIncomingEventCBack_t)(uint8_t event, uint8_t *pMsg, uint8_t len);
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
extern UART_Params paramsUART;
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
uint8 SDITLUART_configureUARTParams(UART_Params *initParams);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine initializes the transport layer and opens the port
|
||||
//! of the device.
|
||||
//!
|
||||
//! \param[in] tRxBuf - pointer to SDI TL Tx Buffer
|
||||
//! \param[in] tTxBuf - pointer to SDI TL Rx Buffer
|
||||
//! \param[in] sdiCBack - SDI TL call back function to be invoked at the end of
|
||||
//! a UART transaction
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_initializeTransport(Char *tRxBuf, Char *tTxBuf, sdiCB_t sdiCBack);
|
||||
|
||||
void SDITLUART_closeUART(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Register callback function to reroute incoming (from UART)
|
||||
//! SDI messages.
|
||||
//!
|
||||
//! \param[in] appRxCB Callback fucntion.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
extern void SDITLUART_registerIncomingRXErrorStatusAppCB(sdiTLIncomingEventCBack_t appRxErrStatusCB);
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine reads data from the UART
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_readTransport(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine writes copies buffer addr to the transport layer.
|
||||
//!
|
||||
//! \param[in] len - Number of bytes to write.
|
||||
//!
|
||||
//! \return uint16 - number of bytes written to transport
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITLUART_writeTransport(uint16);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine stops any pending reads
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_stopTransfer(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine is called from the application context when MRDY is
|
||||
//! de-asserted
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_handleMrdyEvent(void);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SDI_TL_UART_H */
|
||||
@@ -0,0 +1,148 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file sdi_rxbuf.c
|
||||
|
||||
SDI RX Buffer and utilities
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include <string.h>
|
||||
#include <xdc/std.h>
|
||||
|
||||
#include "Board.h"
|
||||
#include "hal_types.h"
|
||||
#include "inc/sdi_config.h"
|
||||
#include "inc/sdi_tl.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
#define SDIRXBUF_RXHEAD_INC(x) RxBufHead += x; \
|
||||
RxBufHead %= SDI_TL_BUF_SIZE;
|
||||
|
||||
#define SDIRXBUF_RXTAIL_INC(x) RxBufTail += x; \
|
||||
RxBufTail %= SDI_TL_BUF_SIZE;
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//Recieve Buffer for all SDI messages
|
||||
static uint8 RxBuf[SDI_TL_BUF_SIZE];
|
||||
static uint16 RxBufHead = 0;
|
||||
static uint16 RxBufTail = 0;
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDIRxBuf_Read
|
||||
//!
|
||||
//! \param[in] len -
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_Read(uint16 len)
|
||||
{
|
||||
uint16 partialLen = 0;
|
||||
|
||||
// Need to make two reads due to wrap around of circular buffer
|
||||
if ((len + RxBufTail) > SDI_TL_BUF_SIZE)
|
||||
{
|
||||
partialLen = SDI_TL_BUF_SIZE - RxBufTail;
|
||||
SDITL_readTL(&RxBuf[RxBufTail],partialLen);
|
||||
len -= partialLen;
|
||||
RxBufTail = 0;
|
||||
}
|
||||
|
||||
// Read remainder of data from Transport Layer
|
||||
SDITL_readTL(&RxBuf[RxBufTail],len);
|
||||
SDIRXBUF_RXTAIL_INC(len);
|
||||
|
||||
// Return len to original size
|
||||
len += partialLen;
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Returns number of bytes that are unparsed in RxBuf
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_GetRxBufCount(void)
|
||||
{
|
||||
return ((RxBufTail - RxBufHead) + SDI_TL_BUF_SIZE) % SDI_TL_BUF_SIZE;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Returns number of bytes that are available in RxBuf
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_GetRxBufAvail(void)
|
||||
{
|
||||
return (SDI_TL_BUF_SIZE - SDIRxBuf_GetRxBufCount());
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDIRxBuf_ReadFromRxBuf
|
||||
//!
|
||||
//! \return uint16 -
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDIRxBuf_ReadFromRxBuf(uint8_t *buf, uint16 len)
|
||||
{
|
||||
uint16_t idx;
|
||||
for (idx = 0; idx < len; idx++)
|
||||
{
|
||||
*buf++ = RxBuf[RxBufHead];
|
||||
SDIRXBUF_RXHEAD_INC(1)
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
@@ -0,0 +1,525 @@
|
||||
/******************************************************************************
|
||||
|
||||
* Filename: sdi_task.c
|
||||
|
||||
SDI is a TI RTOS Application Thread that provides a common serial data interface
|
||||
framework
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
|
||||
#include <xdc/std.h>
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
#include <ti/sysbios/knl/Queue.h>
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
#include <ti/sysbios/knl/Event.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <ti/sysbios/family/arm/m3/Hwi.h>
|
||||
|
||||
#include "inc/sdi_task.h"
|
||||
#include "inc/sdi_data.h"
|
||||
#include "inc/sdi_rxbuf.h"
|
||||
#include "inc/sdi_tl.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
//! \brief Transport layer RX Event (ie. bytes received, RX ISR etc.)
|
||||
#define SDITASK_TRANSPORT_RX_EVENT Event_Id_00
|
||||
|
||||
//! \brief Transmit Complete Event (likely associated with TX ISR etc.)
|
||||
#define SDITASK_TRANSPORT_TX_DONE_EVENT Event_Id_01
|
||||
|
||||
//! \brief A framed message buffer is ready to be sent to the transport layer.
|
||||
#define SDITASK_TX_READY_EVENT Event_Id_02
|
||||
|
||||
//! \brief MRDY Received Event
|
||||
#define SDITASK_MRDY_EVENT Event_Id_03
|
||||
|
||||
//! \brief Size of stack created for SDI RTOS task
|
||||
#ifndef Display_DISABLE_ALL
|
||||
#ifdef __TI_COMPILER_VERSION__
|
||||
#define SDITASK_STACK_SIZE 752 /* in order to optimize memory, this value should be a multiple of 8 bytes */
|
||||
#else // !__TI_COMPILER_VERSION__
|
||||
#define SDITASK_STACK_SIZE 656 /* in order to optimize memory, this value should be a multiple of 8 bytes */
|
||||
#endif // __TI_COMPILER_VERSION__
|
||||
#else // Display_DISABLE_ALL
|
||||
#ifdef __TI_COMPILER_VERSION__
|
||||
#define SDITASK_STACK_SIZE 752 /* in order to optimize memory, this value should be a multiple of 8 bytes */
|
||||
#else // !__TI_COMPILER_VERSION__
|
||||
#define SDITASK_STACK_SIZE 608 /* in order to optimize memory, this value should be a multiple of 8 bytes */
|
||||
#endif // __TI_COMPILER_VERSION__
|
||||
#endif // Display_DISABLE_ALL
|
||||
|
||||
//! \brief Task priority for SDI RTOS task
|
||||
#define SDITASK_PRIORITY 2
|
||||
|
||||
//! \brief Max bytes received from UART send to App
|
||||
#define DEFAULT_APP_DATA_LENGTH 20
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//! \brief Queue record structure
|
||||
//!
|
||||
typedef struct SDI_QueueRec_t
|
||||
{
|
||||
Queue_Elem _elem;
|
||||
SDIMSG_msg_t *sdiMsg;
|
||||
} SDI_QueueRec;
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
//! \brief RTOS task structure for SDI task
|
||||
//!
|
||||
static Task_Struct sdiTaskStruct;
|
||||
|
||||
//! \brief Allocated memory block for SDI task's stack
|
||||
//!
|
||||
#if defined __TI_COMPILER_VERSION__
|
||||
#pragma DATA_ALIGN(sdiTaskStack, 8)
|
||||
#else
|
||||
#pragma data_alignment=8
|
||||
#endif
|
||||
uint8_t sdiTaskStack[SDITASK_STACK_SIZE];
|
||||
|
||||
//! \brief Handle for the ASYNC TX Queue
|
||||
//!
|
||||
static Queue_Handle sdiTxQueue;
|
||||
|
||||
//! \brief Pointer to last tx message. This is free'd once confirmation is
|
||||
//! is received that the buffer has been transmitted
|
||||
//! (ie. SDITASK_TRANSPORT_TX_DONE_EVENT)
|
||||
//!
|
||||
static uint8_t *lastQueuedTxMsg;
|
||||
|
||||
Event_Struct uartEvent;
|
||||
Event_Handle hUartEvent; //!< Event used to control the UART thread
|
||||
|
||||
//! \brief Pointer to Application RX event callback function for optional
|
||||
//! rerouting of messages to application.
|
||||
//!
|
||||
static sdiIncomingEventCBack_t incomingRXEventAppCBFunc = NULL;
|
||||
|
||||
//! \brief Data buffer to send to application
|
||||
//!
|
||||
static uint8 buf[SDI_TL_BUF_SIZE] ={0x00,};
|
||||
static uint16 length;
|
||||
static uint8 lengthRead;
|
||||
|
||||
//! \brief Size of data to send to application
|
||||
//!
|
||||
static uint16 maxAppDataSize = DEFAULT_APP_DATA_LENGTH;
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
//! \brief SDI main event processing loop.
|
||||
//!
|
||||
static void SDITask_process(void);
|
||||
|
||||
//! \brief Callback function registered with Transport Layer
|
||||
//!
|
||||
static void SDITask_transportRXCallBack(int size);
|
||||
|
||||
//! \brief Callback function registered with Transport Layer
|
||||
//!
|
||||
static void SDITask_transportTxDoneCallBack(int size);
|
||||
|
||||
//! \brief Callback function registered with Transport Layer
|
||||
//!
|
||||
static void SDITask_MRDYEventCB(int size);
|
||||
|
||||
//! \brief ASYNC TX Q Processing function.
|
||||
//!
|
||||
static void SDITask_ProcessTXQ(void);
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Initialization for the SDI Thread
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITask_setAppDataSize(uint16 mtuSize)
|
||||
{
|
||||
maxAppDataSize = mtuSize - 3; //subtract GATT Notification overhead: 1 byte opcode, 2 bytes conn. handle
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Initialization for the SDI Thread
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITask_inititializeTask(void)
|
||||
{
|
||||
lastQueuedTxMsg = NULL;
|
||||
|
||||
// create a Tx Queue instance
|
||||
sdiTxQueue = Queue_create(NULL, NULL);
|
||||
|
||||
Event_Params evParams;
|
||||
Event_Params_init(&evParams);
|
||||
|
||||
Event_construct(&uartEvent, &evParams);
|
||||
hUartEvent = Event_handle(&uartEvent);
|
||||
|
||||
// Initialize Network Processor Interface (SDI) and Transport Layer
|
||||
SDITL_initTL( &SDITask_transportTxDoneCallBack,
|
||||
&SDITask_transportRXCallBack,
|
||||
&SDITask_MRDYEventCB );
|
||||
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDI main event processing loop.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITask_process(void)
|
||||
{
|
||||
UInt postedEvents;
|
||||
|
||||
/* Forever loop */
|
||||
for (;; )
|
||||
{
|
||||
/* Wait for response message */
|
||||
postedEvents = Event_pend(hUartEvent, Event_Id_NONE, SDITASK_MRDY_EVENT | SDITASK_TX_READY_EVENT | SDITASK_TRANSPORT_RX_EVENT | SDITASK_TRANSPORT_TX_DONE_EVENT, BIOS_WAIT_FOREVER);
|
||||
|
||||
{
|
||||
// Capture the ISR events flags now within this task loop.
|
||||
|
||||
// MRDY event
|
||||
if (postedEvents & SDITASK_MRDY_EVENT)
|
||||
{
|
||||
#ifdef POWER_SAVING
|
||||
SDITL_handleMrdyEvent();
|
||||
#endif //POWER_SAVING
|
||||
|
||||
}
|
||||
|
||||
// An ASYNC message is ready to send to the Host
|
||||
if(postedEvents & SDITASK_TX_READY_EVENT)
|
||||
{
|
||||
|
||||
if ((!Queue_empty(sdiTxQueue)) && !SDITL_checkSdiBusy())
|
||||
{
|
||||
SDITask_ProcessTXQ();
|
||||
}
|
||||
|
||||
if (Queue_empty(sdiTxQueue))
|
||||
{
|
||||
// Q is empty, no action.
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Q is not empty, there's more to handle so preserve the
|
||||
// flag and repost to the task event.
|
||||
Event_post(hUartEvent, SDITASK_TX_READY_EVENT);
|
||||
}
|
||||
}
|
||||
|
||||
// The Transport Layer has received some bytes
|
||||
if(postedEvents & SDITASK_TRANSPORT_RX_EVENT)
|
||||
{
|
||||
length = SDIRxBuf_GetRxBufCount();
|
||||
|
||||
if(length > maxAppDataSize)
|
||||
{
|
||||
lengthRead = (maxAppDataSize & 0xFF);
|
||||
}else
|
||||
{
|
||||
lengthRead = (length & 0xFF);
|
||||
}
|
||||
|
||||
//Do custom app processing
|
||||
SDIRxBuf_ReadFromRxBuf(buf, lengthRead);
|
||||
|
||||
//Echo back via UART
|
||||
//SDITask_sendToUART(buf, length);
|
||||
|
||||
if (incomingRXEventAppCBFunc != NULL)
|
||||
{
|
||||
incomingRXEventAppCBFunc( UART_DATA_EVT , buf, lengthRead);
|
||||
}
|
||||
|
||||
if(length > maxAppDataSize)
|
||||
{
|
||||
// Additional bytes to collect, preserve the flag and repost
|
||||
// to the event
|
||||
Event_post(hUartEvent, SDITASK_TRANSPORT_RX_EVENT);
|
||||
}
|
||||
}
|
||||
|
||||
// The last transmission to the host has completed.
|
||||
if(postedEvents & SDITASK_TRANSPORT_TX_DONE_EVENT)
|
||||
{
|
||||
// Current TX is done.
|
||||
|
||||
if (!Queue_empty(sdiTxQueue))
|
||||
{
|
||||
// There are pending ASYNC messages waiting to be sent
|
||||
// to the host. Post to event.
|
||||
|
||||
Event_post(hUartEvent, SDITASK_TX_READY_EVENT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDI Task function called from within SDITask_Fxn
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITask_task(void)
|
||||
{
|
||||
// Initialize application
|
||||
SDITask_inititializeTask();
|
||||
|
||||
// No return from TestProfile2 process
|
||||
SDITask_process();
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Exported Functions
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief SDI task entry point.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
Void SDITask_Fxn(UArg a0, UArg a1)
|
||||
{
|
||||
SDITask_task();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Task creation function for SDI
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITask_createTask(void)
|
||||
{
|
||||
memset(&sdiTaskStack, 0xDD, sizeof(sdiTaskStack));
|
||||
|
||||
// Configure and create the SDI task.
|
||||
Task_Params sdiTaskParams;
|
||||
Task_Params_init(&sdiTaskParams);
|
||||
sdiTaskParams.stack = sdiTaskStack;
|
||||
sdiTaskParams.stackSize = SDITASK_STACK_SIZE;
|
||||
sdiTaskParams.priority = SDITASK_PRIORITY;
|
||||
|
||||
Task_construct(&sdiTaskStruct, SDITask_Fxn, &sdiTaskParams, NULL);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Register callback function to reroute incoming (from UART)
|
||||
//! SDI messages.
|
||||
//!
|
||||
//! \param[in] appRxCB Callback fucntion.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITask_registerIncomingRXEventAppCB(sdiIncomingEventCBack_t appRxCB)
|
||||
{
|
||||
incomingRXEventAppCBFunc = appRxCB;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief API for application task to send a message to the Host.
|
||||
//! NOTE: It's assumed all message traffic to the stack will use
|
||||
//! other (ICALL) APIs/Interfaces.
|
||||
//!
|
||||
//! \param[in] pMsg Pointer to "unframed" message buffer.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITask_sendToUART(uint8_t *pMsg, uint16 length)
|
||||
{
|
||||
ICall_CSState key;
|
||||
SDI_QueueRec *recPtr;
|
||||
|
||||
SDIMSG_msg_t *pSDIMsg =(SDIMSG_msg_t *)ICall_malloc( sizeof(SDIMSG_msg_t));
|
||||
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
if(pSDIMsg)
|
||||
{
|
||||
pSDIMsg->msgType = SDIMSG_Type_ASYNC;
|
||||
pSDIMsg->pBuf = (uint8 *)ICall_allocMsg(length);
|
||||
pSDIMsg->pBufSize = length;
|
||||
|
||||
if(pSDIMsg->pBuf)
|
||||
{
|
||||
// Payload
|
||||
memcpy(pSDIMsg->pBuf, pMsg, length);
|
||||
}
|
||||
|
||||
recPtr = ICall_malloc(sizeof(SDI_QueueRec));
|
||||
|
||||
recPtr->sdiMsg = pSDIMsg;
|
||||
}
|
||||
|
||||
switch (pSDIMsg->msgType)
|
||||
{
|
||||
case SDIMSG_Type_ASYNC:
|
||||
{
|
||||
Queue_enqueue(sdiTxQueue, &recPtr->_elem);
|
||||
Event_post(hUartEvent, SDITASK_TX_READY_EVENT);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
//error
|
||||
break;
|
||||
}
|
||||
}
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Dequeue next message in the ASYNC TX Queue and send to serial
|
||||
//! interface.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITask_ProcessTXQ(void)
|
||||
{
|
||||
ICall_CSState key;
|
||||
SDI_QueueRec *recPtr = NULL;
|
||||
|
||||
// Processing of any TX Queue should only be done
|
||||
// in a critical section since any application
|
||||
// task can enqueue items freely
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
if (!Queue_empty(sdiTxQueue))
|
||||
{
|
||||
recPtr = Queue_dequeue(sdiTxQueue);
|
||||
|
||||
if (recPtr != NULL)
|
||||
{
|
||||
lastQueuedTxMsg = recPtr->sdiMsg->pBuf;
|
||||
|
||||
SDITL_writeTL(recPtr->sdiMsg->pBuf, recPtr->sdiMsg->pBufSize);
|
||||
|
||||
//free the Queue record
|
||||
ICall_free(recPtr->sdiMsg);
|
||||
ICall_free(recPtr);
|
||||
}
|
||||
}
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Call Back Functions
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Call back function for TX Done event from transport layer.
|
||||
//!
|
||||
//! \param[in] size Number of bytes transmitted.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITask_transportTxDoneCallBack(int size)
|
||||
{
|
||||
|
||||
if(lastQueuedTxMsg)
|
||||
{
|
||||
//Deallocate most recent message being transmitted.
|
||||
ICall_freeMsg(lastQueuedTxMsg);
|
||||
|
||||
lastQueuedTxMsg = NULL;
|
||||
}
|
||||
|
||||
// Post the event to the SDI task thread.
|
||||
Event_post(hUartEvent, SDITASK_TRANSPORT_TX_DONE_EVENT);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief RX Callback provided to Transport Layer for RX Event (ie.Bytes
|
||||
//! received).
|
||||
//!
|
||||
//! \param[in] size Number of bytes received.
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITask_transportRXCallBack(int size)
|
||||
{
|
||||
if ( size < SDIRxBuf_GetRxBufAvail() )
|
||||
{
|
||||
SDIRxBuf_Read(size);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Trap here for pending buffer overflow. If SDI_FLOW_CTRL is
|
||||
// enabled, increase size of RxBuf to handle larger frames from host.
|
||||
for(;;);
|
||||
}
|
||||
Event_post(hUartEvent, SDITASK_TRANSPORT_RX_EVENT);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief RX Callback provided to Transport Layer for MRDY Event
|
||||
//!
|
||||
//! \param[in] size N/A
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITask_MRDYEventCB(int size)
|
||||
{
|
||||
Event_post(hUartEvent, SDITASK_MRDY_EVENT);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,475 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file sdi_tl.c
|
||||
|
||||
SDI Transport Layer API
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include <string.h>
|
||||
#include <xdc/std.h>
|
||||
#include <ti/drivers/Power.h>
|
||||
#include <ti/drivers/power/PowerCC26XX.h>
|
||||
#include <ti/sysbios/family/arm/m3/Hwi.h>
|
||||
#include <ti/drivers/pin/PINCC26XX.h>
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Swi.h>
|
||||
|
||||
#include "inc/hw_memmap.h"
|
||||
#include "inc/hw_ints.h"
|
||||
#include "Board.h"
|
||||
#include "ICall.h"
|
||||
#include "hal_types.h"
|
||||
#include "inc/sdi_tl.h"
|
||||
#include "inc/sdi_config.h"
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
#if defined(SDI_USE_SPI)
|
||||
#include "inc/sdi_tl_spi.h"
|
||||
#elif defined(SDI_USE_UART)
|
||||
#include "inc/sdi_tl_uart.h"
|
||||
#else
|
||||
#error Must define an underlying serial bus for SDI
|
||||
#endif
|
||||
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
|
||||
//! \brief Flag for low power mode
|
||||
static volatile bool sdiPMSetConstraint = FALSE;
|
||||
|
||||
//! \brief Flag for ongoing SDI TX
|
||||
static volatile bool sdiTxActive = FALSE;
|
||||
|
||||
//! \brief The packet that was being sent when HWI of MRDY going low was received
|
||||
static volatile uint32 mrdyPktStamp = 0;
|
||||
|
||||
//! \brief Packets transmitted counter
|
||||
static uint32 txPktCount = 0;
|
||||
|
||||
//! \brief SDI Transport Layer receive buffer
|
||||
static Char sdiRxBuf[SDI_TL_BUF_SIZE];
|
||||
|
||||
//! \brief Index to last byte written into SDI Transport Layer receive buffer
|
||||
static uint16_t sdiRxBufTail = 0;
|
||||
|
||||
//! \brief Index to first byte to be read from SDI Transport Layer receive buffer
|
||||
static uint16_t sdiRxBufHead = 0;
|
||||
|
||||
//! \brief SDI Transport Layer transmit buffer
|
||||
static Char sdiTxBuf[SDI_TL_BUF_SIZE];
|
||||
|
||||
//! \brief Number of bytes in SDI Transport Layer transmit buffer
|
||||
static uint16_t sdiTxBufLen = 0;
|
||||
|
||||
//! \brief Call back function in SDI Task for transmit complete
|
||||
static sdiRtosCB_t taskTxCB = NULL;
|
||||
|
||||
//! \brief Call back function in SDI Task for receive complete
|
||||
static sdiRtosCB_t taskRxCB = NULL;
|
||||
|
||||
//! \brief The remainder of any message that is fragmented
|
||||
static uint8 *msgFrag = NULL;
|
||||
|
||||
//! \brief The length of the remaining message fragment
|
||||
static uint16 msgFragLen = 0;
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
//! \brief Call back function in SDI Task for MRDY hardware interrupt
|
||||
static sdiMrdyRtosCB_t taskMrdyCB = NULL;
|
||||
|
||||
//! \brief PIN Config for Mrdy and Srdy signals
|
||||
static PIN_Config sdiHandshakePinsCfg[] =
|
||||
{
|
||||
MRDY_PIN | PIN_GPIO_OUTPUT_DIS | PIN_INPUT_EN | PIN_PULLUP,
|
||||
SRDY_PIN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
PIN_TERMINATE
|
||||
};
|
||||
|
||||
//! \brief PIN State for Mrdy and Srdy signals
|
||||
static PIN_State sdiHandshakePins;
|
||||
|
||||
//! \brief PIN Handles for Mrdy and Srdy signals
|
||||
static PIN_Handle hSdiHandshakePins;
|
||||
|
||||
//! \brief No way to detect whether positive or negative edge with PIN Driver
|
||||
//! Use a flag to keep track of state
|
||||
static uint8 mrdy_state;
|
||||
#endif
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
//! \brief Call back function provided to underlying serial interface to be
|
||||
// invoked upon the completion of a transmission
|
||||
static void SDITL_transmissionCallBack(uint16 Rxlen, uint16 Txlen);
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
//! \brief HWI interrupt function for MRDY
|
||||
static void SDITL_MRDYPinHwiFxn(PIN_Handle hPin, PIN_Id pinId);
|
||||
#endif
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine initializes the transport layer and opens the port
|
||||
//! of the device. Note that based on project defines, either the
|
||||
//! UART, or SPI driver can be used.
|
||||
//!
|
||||
//! \param[in] sdiCBTx - Call back function for TX complete event
|
||||
//! \param[in] sdiCBRx - Call back function for RX event
|
||||
//! \param[in] sdiCBMrdy - Call back function for MRDY event
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITL_initTL(sdiRtosCB_t sdiCBTx, sdiRtosCB_t sdiCBRx, sdiRtosCB_t sdiCBMrdy)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
taskTxCB = sdiCBTx;
|
||||
taskRxCB = sdiCBRx;
|
||||
#ifdef POWER_SAVING
|
||||
taskMrdyCB = sdiCBMrdy;
|
||||
#endif
|
||||
|
||||
transportInit(sdiRxBuf,sdiTxBuf, SDITL_transmissionCallBack);
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
SRDY_DISABLE();
|
||||
|
||||
// Initialize SRDY/MRDY. Enable int after callback registered
|
||||
hSdiHandshakePins = PIN_open(&sdiHandshakePins, sdiHandshakePinsCfg);
|
||||
PIN_registerIntCb(hSdiHandshakePins, SDITL_MRDYPinHwiFxn);
|
||||
PIN_setConfig(hSdiHandshakePins, PIN_BM_IRQ, MRDY_PIN | PIN_IRQ_BOTHEDGES);
|
||||
|
||||
// Enable wakeup
|
||||
PIN_setConfig(hSdiHandshakePins, PINCC26XX_BM_WAKEUP, MRDY_PIN | PINCC26XX_WAKEUP_NEGEDGE);
|
||||
|
||||
mrdy_state = PIN_getInputValue(MRDY_PIN);
|
||||
#endif // ! POWER_SAVING
|
||||
|
||||
#ifndef POWER_SAVING
|
||||
// This call will start repeated Uart Reads when Power Savings is disabled
|
||||
transportRead();
|
||||
#endif //!POWER_SAVING
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine returns the state of transmission on SDI
|
||||
//!
|
||||
//! \return bool - state of SDI transmission - 1 - active, 0 - not active
|
||||
// -----------------------------------------------------------------------------
|
||||
bool SDITL_checkSdiBusy(void)
|
||||
{
|
||||
#ifdef POWER_SAVING
|
||||
|
||||
return !PIN_getOutputValue(SRDY_PIN);
|
||||
#else
|
||||
return sdiTxActive;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine is used to set constraints on power manager
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITL_setPM(void)
|
||||
{
|
||||
if( sdiPMSetConstraint )
|
||||
{
|
||||
return;
|
||||
}
|
||||
// set constraints for Standby and idle mode
|
||||
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
|
||||
Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
|
||||
sdiPMSetConstraint = TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine is used to release constraints on power manager
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITL_relPM(void)
|
||||
{
|
||||
|
||||
if ( ! sdiPMSetConstraint )
|
||||
{
|
||||
return;
|
||||
}
|
||||
// release constraints for Standby and idle mode
|
||||
Power_releaseConstraint(PowerCC26XX_SB_DISALLOW);
|
||||
Power_releaseConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
|
||||
sdiPMSetConstraint = FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine is used to handle an MRDY transition from a task
|
||||
//! context. Certain operations such as UART_read() cannot be
|
||||
//! performed from a HWI context
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITL_handleMrdyEvent(void)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
// Check to make sure this event is not occuring during the next packet
|
||||
// transmission
|
||||
if ( PIN_getInputValue(MRDY_PIN) == 0 ||
|
||||
(sdiTxActive && mrdyPktStamp == txPktCount ) )
|
||||
{
|
||||
transportMrdyEvent();
|
||||
SRDY_ENABLE();
|
||||
}
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This is a HWI function handler for the MRDY pin. Some MRDY
|
||||
//! functionality can execute from this HWI context. Others
|
||||
//! must be executed from task context hence the taskMrdyCB()
|
||||
//!
|
||||
//! \param[in] hPin - PIN Handle
|
||||
//! \param[in] pinId - ID of pin that triggered HWI
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITL_MRDYPinHwiFxn(PIN_Handle hPin, PIN_Id pinId)
|
||||
{
|
||||
// The pin driver does not currently support returning whether the int
|
||||
// was neg or pos edge so we must use a variable to keep track of state.
|
||||
// If the physical state of the pin was used then a very quick toggle of
|
||||
// of MRDY could be missed.
|
||||
mrdy_state ^= 1;
|
||||
|
||||
if(mrdy_state == 0)
|
||||
{
|
||||
mrdyPktStamp = txPktCount;
|
||||
SDITL_setPM();
|
||||
if ( taskMrdyCB )
|
||||
{
|
||||
|
||||
taskMrdyCB();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
transportStopTransfer();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This callback is invoked on the completion of one transmission
|
||||
//! to/from the host MCU. Any bytes receives will be [0,Rxlen) in
|
||||
//! sdiRxBuf.
|
||||
//! If bytes were receives or transmitted, this function notifies
|
||||
//! the SDI task via registered call backs
|
||||
//!
|
||||
//! \param[in] Rxlen - lenth of the data received
|
||||
//! \param[in] Txlen - length of the data transferred
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITL_transmissionCallBack(uint16 Rxlen, uint16 Txlen)
|
||||
{
|
||||
|
||||
sdiRxBufHead = 0;
|
||||
sdiRxBufTail = Rxlen;
|
||||
|
||||
if(Rxlen)
|
||||
{
|
||||
if ( taskRxCB )
|
||||
{
|
||||
taskRxCB(Rxlen);
|
||||
}
|
||||
}
|
||||
if(Txlen)
|
||||
{
|
||||
sdiTxActive = FALSE;
|
||||
// Only perform call back if SDI Task has been registered
|
||||
// and if there is not another fragment to send of this message
|
||||
if ( taskTxCB && !msgFragLen )
|
||||
{
|
||||
taskTxCB(Txlen);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
// Reset mrdy state in case of missed HWI
|
||||
mrdy_state = PIN_getInputValue(MRDY_PIN);
|
||||
|
||||
SDITL_relPM();
|
||||
SRDY_DISABLE();
|
||||
#endif
|
||||
|
||||
// If there is another fragment to send, begin write without notifying
|
||||
// higher level tasks
|
||||
if ( msgFragLen )
|
||||
{
|
||||
SDITL_writeTL(msgFrag,msgFragLen);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine reads data from the transport layer based on len,
|
||||
//! and places it into the buffer.
|
||||
//!
|
||||
//! \param[in] buf - Pointer to buffer to place read data.
|
||||
//! \param[in] len - Number of bytes to read.
|
||||
//!
|
||||
//! \return uint16 - the number of bytes read from transport
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_readTL(uint8 *buf, uint16 len)
|
||||
{
|
||||
// Only copy the lowest number between len and bytes remaining in buffer
|
||||
len = (len > SDITL_getRxBufLen()) ? SDITL_getRxBufLen() : len;
|
||||
|
||||
memcpy(buf, &sdiRxBuf[sdiRxBufHead], len);
|
||||
sdiRxBufHead += len;
|
||||
return len;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine writes data from the buffer to the transport layer.
|
||||
//!
|
||||
//! \param[in] buf - Pointer to buffer to write data from.
|
||||
//! \param[in] len - Number of bytes to write.
|
||||
//!
|
||||
//! \return uint16 - the number of bytes written to transport
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_writeTL(uint8 *buf, uint16 len)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
// Writes are atomic at transport layer
|
||||
if ( SDITL_checkSdiBusy() )
|
||||
{
|
||||
ICall_leaveCriticalSection(key);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// If len of message is greater than fragment size
|
||||
// then message must be sent over the span of multiple
|
||||
// fragments
|
||||
if ( len > SDI_MAX_FRAG_SIZE )
|
||||
{
|
||||
msgFrag = buf + SDI_MAX_FRAG_SIZE;
|
||||
msgFragLen = len - SDI_MAX_FRAG_SIZE;
|
||||
len = SDI_MAX_FRAG_SIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
msgFrag = NULL;
|
||||
msgFragLen = 0;
|
||||
}
|
||||
|
||||
memcpy(sdiTxBuf, buf, len);
|
||||
sdiTxBufLen = len;
|
||||
sdiTxActive = TRUE;
|
||||
txPktCount++;
|
||||
|
||||
len = transportWrite(sdiTxBufLen);
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
SRDY_ENABLE();
|
||||
#endif
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine returns the max size receive buffer.
|
||||
//!
|
||||
//! \return uint16 - max size of the receive buffer
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_getMaxRxBufSize(void)
|
||||
{
|
||||
return(SDI_TL_BUF_SIZE);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine returns the max size transmit buffer.
|
||||
//!
|
||||
//! \return uint16 - max size of the transmit buffer
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_getMaxTxBufSize(void)
|
||||
{
|
||||
return(SDI_TL_BUF_SIZE);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief Returns number of bytes that are unread in RxBuf
|
||||
//!
|
||||
//! \return uint16 - number of unread bytes
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITL_getRxBufLen(void)
|
||||
{
|
||||
return ((sdiRxBufTail - sdiRxBufHead) + SDI_TL_BUF_SIZE) % SDI_TL_BUF_SIZE;
|
||||
}
|
||||
@@ -0,0 +1,497 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file sdi_tl_uart.c
|
||||
|
||||
SDI Transport Layer Module for UART
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
// ****************************************************************************
|
||||
// includes
|
||||
// ****************************************************************************
|
||||
#include <string.h>
|
||||
#include <xdc/std.h>
|
||||
#include <ti/sysbios/family/arm/m3/Hwi.h>
|
||||
#include "inc/hw_memmap.h"
|
||||
#include "inc/hw_ints.h"
|
||||
#include "ICall.h"
|
||||
#include "Board.h"
|
||||
#include "hal_types.h"
|
||||
#include "bcomdef.h"
|
||||
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Swi.h>
|
||||
|
||||
#include "inc/sdi_config.h"
|
||||
#include "inc/sdi_tl_uart.h"
|
||||
#include "inc/sdi_data.h"
|
||||
|
||||
#include <ti/drivers/uart/UARTCC26XX.h>
|
||||
|
||||
// ****************************************************************************
|
||||
// defines
|
||||
// ****************************************************************************
|
||||
|
||||
// ****************************************************************************
|
||||
// typedefs
|
||||
// ****************************************************************************
|
||||
|
||||
//*****************************************************************************
|
||||
// globals
|
||||
//*****************************************************************************
|
||||
//! \brief UART Handle for UART Driver
|
||||
static UART_Handle uartHandle;
|
||||
|
||||
//! \brief UART ISR Rx Buffer
|
||||
static Char isrRxBuf[UART_ISR_BUF_SIZE];
|
||||
|
||||
//! \brief SDI TL call back function for the end of a UART transaction
|
||||
static sdiCB_t sdiTransmitCB = NULL;
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
//! \brief Flag signalling receive in progress
|
||||
static uint8 RxActive = FALSE;
|
||||
|
||||
//! \brief Flag signalling transmit in progress
|
||||
static uint8 TxActive = FALSE;
|
||||
|
||||
//! \brief Value of MRDY SDI TL pin
|
||||
static uint8 mrdy_flag = 1;
|
||||
#endif //POWER_SAVING
|
||||
|
||||
//! \brief Pointer to SDI TL TX Buffer
|
||||
static Char* TransportRxBuf;
|
||||
|
||||
//! \brief Length of bytes received
|
||||
static uint16 TransportRxLen = 0;
|
||||
|
||||
//! \brief Pointer to SDI TL RX Buffer
|
||||
static Char* TransportTxBuf;
|
||||
|
||||
//! \brief Length of bytes to send from SDI TL Tx Buffer
|
||||
static uint16 TransportTxLen = 0;
|
||||
|
||||
//! \brief UART Object. Initialized in board specific files
|
||||
extern UARTCC26XX_Object uartCC26XXObjects[];
|
||||
|
||||
UART_Params paramsUART;
|
||||
|
||||
//! \brief Pointer to Application RX event callback function for optional
|
||||
//! rerouting of messages to application.
|
||||
//!
|
||||
static sdiTLIncomingEventCBack_t incomingRXErrorStatusAppCBFunc = NULL;
|
||||
|
||||
//*****************************************************************************
|
||||
// function prototypes
|
||||
//*****************************************************************************
|
||||
|
||||
//! \brief UART ISR function. Invoked upon specific threshold of UART RX FIFO size
|
||||
static uint16 SDITLUART_readIsrBuf(size_t size);
|
||||
|
||||
//! \brief UART Callback invoked after UART write completion
|
||||
static void SDITLUART_writeCallBack(UART_Handle handle, void *ptr, size_t size);
|
||||
|
||||
//! \brief UART Callback invoked after readsize has been read or timeout
|
||||
static void SDITLUART_readCallBack(UART_Handle handle, void *ptr, size_t size);
|
||||
|
||||
|
||||
void SDITLUART_registerIncomingRXErrorStatusAppCB(sdiTLIncomingEventCBack_t appRxErrStatusCB)
|
||||
{
|
||||
incomingRXErrorStatusAppCBFunc = appRxErrStatusCB;
|
||||
}
|
||||
|
||||
|
||||
void SDITLUART_closeUART(void)
|
||||
{
|
||||
ICall_CSState key;
|
||||
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
// Cancel any pending reads
|
||||
UART_readCancel(uartHandle);
|
||||
|
||||
// Close / power off the UART.
|
||||
UART_close(uartHandle);
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
|
||||
uint8 SDITLUART_configureUARTParams(UART_Params *initParams)
|
||||
{
|
||||
uint8 status = SUCCESS;
|
||||
ICall_CSState key;
|
||||
|
||||
SDITLUART_closeUART();
|
||||
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
// Open / power on the UART.
|
||||
uartHandle = UART_open(Board_UART, ¶msUART);
|
||||
if(uartHandle != NULL)
|
||||
{
|
||||
//DEBUG("UART_open successful");
|
||||
}else{
|
||||
//DEBUG("ERROR in UART_open");
|
||||
status = FAILURE;
|
||||
}
|
||||
|
||||
//Enable Partial Reads on all subsequent UART_read()
|
||||
status = UART_control(uartHandle, UARTCC26XX_RETURN_PARTIAL_ENABLE, NULL);
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
|
||||
#ifndef POWER_SAVING
|
||||
//Initiate first read to start polling UART
|
||||
SDITLUART_readTransport();
|
||||
#endif //POWER_SAVING
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine initializes the transport layer and opens the port
|
||||
//! of the device.
|
||||
//!
|
||||
//! \param[in] tRxBuf - pointer to SDI TL Tx Buffer
|
||||
//! \param[in] tTxBuf - pointer to SDI TL Rx Buffer
|
||||
//! \param[in] sdiCBack - SDI TL call back function to be invoked at the end of
|
||||
//! a UART transaction
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_initializeTransport(Char *tRxBuf, Char *tTxBuf, sdiCB_t sdiCBack)
|
||||
{
|
||||
// Set UART transport callbacks
|
||||
TransportRxBuf = tRxBuf;
|
||||
TransportTxBuf = tTxBuf;
|
||||
sdiTransmitCB = sdiCBack;
|
||||
|
||||
// Configure UART parameters.
|
||||
UART_Params_init(¶msUART);
|
||||
paramsUART.baudRate = SDI_UART_BR;
|
||||
paramsUART.readDataMode = UART_DATA_BINARY;
|
||||
paramsUART.writeDataMode = UART_DATA_BINARY;
|
||||
paramsUART.dataLength = UART_LEN_8;
|
||||
paramsUART.stopBits = UART_STOP_ONE;
|
||||
paramsUART.readMode = UART_MODE_CALLBACK;
|
||||
paramsUART.writeMode = UART_MODE_CALLBACK;
|
||||
paramsUART.readEcho = UART_ECHO_OFF;
|
||||
|
||||
paramsUART.readCallback = SDITLUART_readCallBack;
|
||||
paramsUART.writeCallback = SDITLUART_writeCallBack;
|
||||
|
||||
//paramsUART.readReturnMode = UART_RETURN_FULL;
|
||||
|
||||
// Open / power on the UART.
|
||||
uartHandle = UART_open(Board_UART, ¶msUART);
|
||||
if(uartHandle != NULL)
|
||||
{
|
||||
//DEBUG("ERROR in UART_open");
|
||||
}
|
||||
//Enable Partial Reads on all subsequent UART_read()
|
||||
UART_control(uartHandle, UARTCC26XX_RETURN_PARTIAL_ENABLE, NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine stops any pending reads
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_stopTransfer(void)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
mrdy_flag = 1;
|
||||
|
||||
// If we have no bytes in FIFO yet we must assume there was nothing to read
|
||||
// or that the FIFO has already been read for this UART_read()
|
||||
// In either case UART_readCancel will call the read CB function and it will
|
||||
// invoke sdiTransmitCB with the appropriate number of bytes read
|
||||
if (!UARTCharsAvail(((UARTCC26XX_HWAttrsV1 const *)(uartHandle->hwAttrs))->baseAddr))
|
||||
{
|
||||
RxActive = FALSE;
|
||||
UART_readCancel(uartHandle);
|
||||
}
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
return;
|
||||
}
|
||||
#endif //POWER_SAVING
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine is called from the application context when MRDY is
|
||||
//! de-asserted
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_handleMrdyEvent(void)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
mrdy_flag = 0;
|
||||
|
||||
// If we haven't already begun reading, now is the time before Master
|
||||
// potentially starts to send data
|
||||
// The !TxActive condition is because we will call UART_sdiRead() prior to setting
|
||||
// TxActive true. There is the possibility that MRDY gets set high which
|
||||
// clears RxActive prior to us getting to this event. This will cause us to
|
||||
// read twice per transaction which will cause the transaction to never
|
||||
// complete
|
||||
if ( !RxActive && !TxActive )
|
||||
{
|
||||
SDITLUART_readTransport();
|
||||
}
|
||||
|
||||
// If we have something to write, then the Master has signalled it is ready
|
||||
// to receive. Time to write.
|
||||
if ( TxActive )
|
||||
{
|
||||
// Check to see if transport is successful. If not, reset TxLen to allow
|
||||
// another write to be processed
|
||||
if ( UART_write(uartHandle, TransportTxBuf, TransportTxLen) == UART_ERROR )
|
||||
{
|
||||
TxActive = FALSE;
|
||||
TransportTxLen = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
|
||||
return;
|
||||
}
|
||||
#endif //POWER_SAVING
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This callback is invoked on Write completion
|
||||
//!
|
||||
//! \param[in] handle - handle to the UART port
|
||||
//! \param[in] ptr - pointer to data to be transmitted
|
||||
//! \param[in] size - size of the data
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITLUART_writeCallBack(UART_Handle handle, void *ptr, size_t size)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
uint8 errStatus = 0;
|
||||
|
||||
if (errStatus = ((UARTCC26XX_Handle)handle->object)->status)
|
||||
{
|
||||
//report UART error status to application
|
||||
if(incomingRXErrorStatusAppCBFunc != NULL)
|
||||
incomingRXErrorStatusAppCBFunc(UART_ERROR_EVT, &errStatus, sizeof(errStatus));
|
||||
}
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
if ( !RxActive )
|
||||
{
|
||||
UART_readCancel(uartHandle);
|
||||
if ( sdiTransmitCB )
|
||||
{
|
||||
sdiTransmitCB(TransportRxLen,TransportTxLen);
|
||||
}
|
||||
}
|
||||
|
||||
TxActive = FALSE;
|
||||
|
||||
#else
|
||||
if ( sdiTransmitCB )
|
||||
{
|
||||
sdiTransmitCB(0,TransportTxLen);
|
||||
}
|
||||
#endif //POWER_SAVING
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This callback is invoked on Read completion of readSize/receive
|
||||
//! timeout
|
||||
//!
|
||||
//! \param[in] handle - handle to the UART port
|
||||
//! \param[in] ptr - pointer to buffer to read data into
|
||||
//! \param[in] size - size of the data
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
static void SDITLUART_readCallBack(UART_Handle handle, void *ptr, size_t size)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
uint8 errStatus = 0;
|
||||
|
||||
if (errStatus = ((UARTCC26XX_Handle)handle->object)->status)
|
||||
{
|
||||
//report UART error status to application
|
||||
if(incomingRXErrorStatusAppCBFunc != NULL)
|
||||
incomingRXErrorStatusAppCBFunc(UART_ERROR_EVT, &errStatus, sizeof(errStatus));
|
||||
}
|
||||
|
||||
if (size)
|
||||
{
|
||||
if (size != SDITLUART_readIsrBuf(size))
|
||||
{
|
||||
// Buffer overflow imminent. Cancel read and pass to higher layers
|
||||
// for handling
|
||||
#ifdef POWER_SAVING
|
||||
RxActive = FALSE;
|
||||
#endif //POWER_SAVING
|
||||
if ( sdiTransmitCB )
|
||||
{
|
||||
sdiTransmitCB(SDI_TL_BUF_SIZE,TransportTxLen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
// Read has been cancelled by transport layer, or bus timeout and no bytes in FIFO
|
||||
// - do not invoke another read
|
||||
if ( !UARTCharsAvail(((UARTCC26XX_HWAttrsV1 const *)(uartHandle->hwAttrs))->baseAddr) &&
|
||||
mrdy_flag )
|
||||
{
|
||||
RxActive = FALSE;
|
||||
|
||||
// If TX has also completed then we are safe to issue call back
|
||||
if ( !TxActive && sdiTransmitCB )
|
||||
{
|
||||
sdiTransmitCB(TransportRxLen,TransportTxLen);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UART_read(uartHandle, &isrRxBuf[0], UART_ISR_BUF_SIZE);
|
||||
}
|
||||
#else
|
||||
if ( sdiTransmitCB )
|
||||
{
|
||||
sdiTransmitCB(size,0);
|
||||
}
|
||||
TransportRxLen = 0;
|
||||
UART_read(uartHandle, &isrRxBuf[0], UART_ISR_BUF_SIZE);
|
||||
#endif //POWER_SAVING
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine reads data from the transport layer based on len,
|
||||
//! and places it into the buffer.
|
||||
//!
|
||||
//! \param[in] size - amount of bytes in UART ISR Rx Buffer
|
||||
//!
|
||||
//! \return uint16 - number of bytes read from transport
|
||||
// -----------------------------------------------------------------------------
|
||||
static uint16 SDITLUART_readIsrBuf(size_t size)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
|
||||
// Copy the UART buffer to the application buffer
|
||||
// Do not allow overflow of buffer. Instead pass up to SDI module and allow
|
||||
// it to handle
|
||||
for (; (i < size) && (TransportRxLen < SDI_TL_BUF_SIZE); i++)
|
||||
{
|
||||
TransportRxBuf[TransportRxLen++] = isrRxBuf[i];
|
||||
isrRxBuf[i] = 0;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine reads data from the UART
|
||||
//!
|
||||
//! \return void
|
||||
// -----------------------------------------------------------------------------
|
||||
void SDITLUART_readTransport(void)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
RxActive = TRUE;
|
||||
#endif //POWER_SAVING
|
||||
|
||||
TransportRxLen = 0;
|
||||
UART_read(uartHandle, &isrRxBuf[0], UART_ISR_BUF_SIZE);
|
||||
|
||||
ICall_leaveCriticalSection(key);
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
//! \brief This routine writes copies buffer addr to the transport layer.
|
||||
//!
|
||||
//! \param[in] len - Number of bytes to write.
|
||||
//!
|
||||
//! \return uint8 - number of bytes written to transport
|
||||
// -----------------------------------------------------------------------------
|
||||
uint16 SDITLUART_writeTransport(uint16 len)
|
||||
{
|
||||
ICall_CSState key;
|
||||
key = ICall_enterCriticalSection();
|
||||
|
||||
TransportTxLen = len;
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
TxActive = TRUE;
|
||||
|
||||
// Start reading prior to impending write transaction
|
||||
// We can only call UART_write() once MRDY has been signaled from Master
|
||||
// device
|
||||
SDITLUART_readTransport();
|
||||
#else
|
||||
// Check to see if transport is successful. If not, reset TxLen to allow
|
||||
// another write to be processed
|
||||
if(UART_write(uartHandle, TransportTxBuf, TransportTxLen) == UART_ERROR )
|
||||
{
|
||||
TransportTxLen = 0;
|
||||
}
|
||||
#endif //POWER_SAVING
|
||||
ICall_leaveCriticalSection(key);
|
||||
|
||||
return TransportTxLen;
|
||||
}
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
@@ -0,0 +1,273 @@
|
||||
/*
|
||||
Copyright (c) 2013-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ======== lcdSmartRF06EB.c ========
|
||||
*/
|
||||
|
||||
/* XDCtools Header files */
|
||||
#include <xdc/std.h>
|
||||
#include <xdc/runtime/System.h>
|
||||
|
||||
/* BIOS Header files */
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include <driverlib/ioc.h>
|
||||
|
||||
/* TI-RTOS Header files */
|
||||
#include <ti/mw/lcd/LCDDogm1286.h>
|
||||
#include <ti/drivers/Power.h>
|
||||
#include <ti/drivers/power/PowerCC26XX.h>
|
||||
|
||||
#include <inc/hw_fcfg1.h>
|
||||
|
||||
#include "Board.h"
|
||||
|
||||
// RF Driver
|
||||
#include <ti/drivers/rf/RF.h>
|
||||
#include "smartrf_settings.h"
|
||||
|
||||
/***** Defines *****/
|
||||
#define BEACON_TASK_STACK_SIZE 1024
|
||||
#define BEACON_TASK_PRIORITY 2
|
||||
|
||||
/* TX Configuration */
|
||||
#define NUMBER_OF_PACKETS 1000
|
||||
#define PAYLOAD_LENGTH 30
|
||||
#define PACKET_INTERVAL 50*4000 //50 ms @ 4 MHz
|
||||
#define BBEACON_DELAY 4000*4000 //4 seconds @4 MHz
|
||||
#define ABEACON_COUNT 20
|
||||
#define ADV_PERIOD (8000 * 4000) - ((PACKET_INTERVAL * ABEACON_COUNT) + BBEACON_DELAY)
|
||||
#define ADVLEN 31
|
||||
|
||||
/***** Prototypes *****/
|
||||
static void beaconTaskFunction(UArg arg0, UArg arg1);
|
||||
|
||||
/***** Variable declarations *****/
|
||||
static Task_Params beaconTaskParams;
|
||||
static Task_Struct beaconTask;
|
||||
static uint8_t beaconTaskStack[BEACON_TASK_STACK_SIZE];
|
||||
|
||||
static RF_Object rfObject;
|
||||
static RF_Handle rfHandle;
|
||||
|
||||
uint32_t time;
|
||||
static uint8_t advCount = 1;
|
||||
|
||||
static char aBeaconData[ADVLEN] =
|
||||
{
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
0xAA,
|
||||
};
|
||||
|
||||
static char bBeaconData[ADVLEN] =
|
||||
{
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
0xBB,
|
||||
};
|
||||
|
||||
void beaconTask_init(void) {
|
||||
|
||||
Task_Params_init(&beaconTaskParams);
|
||||
beaconTaskParams.stackSize = BEACON_TASK_STACK_SIZE;
|
||||
beaconTaskParams.priority = BEACON_TASK_PRIORITY;
|
||||
beaconTaskParams.stack = &beaconTaskStack;
|
||||
beaconTaskParams.arg0 = (UInt)1000000;
|
||||
|
||||
Task_construct(&beaconTask, beaconTaskFunction, &beaconTaskParams, NULL);
|
||||
}
|
||||
|
||||
|
||||
static void beaconTaskFunction(UArg arg0, UArg arg1)
|
||||
{
|
||||
uint32_t time;
|
||||
RF_Params rfParams;
|
||||
RF_Params_init(&rfParams);
|
||||
|
||||
/* Request access to the radio */
|
||||
rfHandle = RF_open(&rfObject, &RF_ble, (RF_RadioSetup*)&RF_cmdBleRadioSetup, &rfParams);
|
||||
|
||||
/* Get current time */
|
||||
time = RF_getCurrentTime();
|
||||
|
||||
while(1)
|
||||
{
|
||||
#ifdef EVERY_OTHER
|
||||
if (advCount)
|
||||
{
|
||||
//set adv data
|
||||
RF_cmdAdvNc0.pParams->pAdvData = (uint8_t*)aBeaconData;
|
||||
RF_cmdAdvNc0.pParams->advLen = ADVLEN;
|
||||
//switch
|
||||
advCount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//set advertising data
|
||||
RF_cmdAdvNc0.pParams->pAdvData = (uint8_t*)bBeaconData;
|
||||
RF_cmdAdvNc0.pParams->advLen = ADVLEN;
|
||||
//switch
|
||||
advCount = 1;
|
||||
}
|
||||
time += PACKET_INTERVAL;
|
||||
#elif // periodic use case
|
||||
if (advCount == 1) //first aBeacon packet
|
||||
{
|
||||
//set adv data
|
||||
RF_cmdAdvNc0.pParams->pAdvData = (uint8_t*)aBeaconData;
|
||||
RF_cmdAdvNc0.pParams->advLen = ADVLEN;
|
||||
//increment aBeacon counter
|
||||
advCount++;
|
||||
//set time to next advertisement
|
||||
time += PACKET_INTERVAL;
|
||||
}
|
||||
else if (advCount < ABEACON_COUNT) // aBeacon packet
|
||||
{
|
||||
//set time for next packet
|
||||
time += PACKET_INTERVAL;
|
||||
//increment aBeacon counter
|
||||
advCount++;
|
||||
}
|
||||
else if (advCount == ABEACON_COUNT) //last aBeacon packet
|
||||
{
|
||||
//delay before bBeacon packet
|
||||
time += BBEACON_DELAY;
|
||||
//set advertising data
|
||||
RF_cmdAdvNc0.pParams->pAdvData = (uint8_t*)bBeaconData;
|
||||
RF_cmdAdvNc0.pParams->advLen = ADVLEN;
|
||||
//increment aBeacon counter
|
||||
advCount++;
|
||||
}
|
||||
else //bBeacon packet
|
||||
{
|
||||
//reset aBeacon counter
|
||||
advCount = 1;
|
||||
//don't advertise again until end of period
|
||||
time += ADV_PERIOD;
|
||||
}
|
||||
#endif
|
||||
|
||||
RF_cmdAdvNc0.startTime = time;
|
||||
|
||||
/* Send packet */
|
||||
RF_EventMask result = RF_runCmd(rfHandle, (RF_Op*)&RF_cmdAdvNc0, RF_PriorityNormal, NULL, 0);
|
||||
if (!(result & RF_EventLastCmdDone))
|
||||
{
|
||||
/* Error */
|
||||
while(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ======== main ========
|
||||
*
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
/* Call board init functions. */
|
||||
PIN_init(BoardGpioInitTable);
|
||||
|
||||
#ifndef POWER_SAVING
|
||||
/* Set constraints for Standby, powerdown and idle mode */
|
||||
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
|
||||
Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
|
||||
#endif //POWER_SAVING
|
||||
|
||||
/* Initialize task */
|
||||
beaconTask_init();
|
||||
|
||||
/* Start BIOS */
|
||||
BIOS_start();
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
/*
|
||||
* Filename: smartrf_settings.c
|
||||
*
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
//*********************************************************************************
|
||||
// These settings have been manually typed for use with ble non-connectable advertising on CC26xx with tirtos rf driver
|
||||
//
|
||||
//*********************************************************************************
|
||||
|
||||
|
||||
//*********************************************************************************
|
||||
#include <driverlib/rf_mailbox.h>
|
||||
#include <driverlib/rf_common_cmd.h>
|
||||
#include <driverlib/rf_ble_cmd.h>
|
||||
#include <ti/drivers/rf/RF.h>
|
||||
#include <rf_patches/rf_patch_cpe_ble.h>
|
||||
#include <rf_patches/rf_patch_rfe_ble.h>
|
||||
#include "smartrf_settings.h"
|
||||
|
||||
|
||||
//Advertisment payload length in bytes
|
||||
#define ADVLEN 31
|
||||
|
||||
// Advertisment data. Must be global for other files to access it.
|
||||
char advData[ADVLEN] = {0};
|
||||
|
||||
static uint64_t devAddress = { 0xEEEEEEEEEEEE };
|
||||
|
||||
//#pragma data_alignment=4
|
||||
//rfCoreHal_bleAdvOutput_t advOutput = {0};
|
||||
|
||||
// TI-RTOS RF Mode Object
|
||||
RF_Mode RF_ble =
|
||||
{
|
||||
.rfMode = RF_MODE_BLE,
|
||||
.cpePatchFxn = &rf_patch_cpe_ble,
|
||||
.mcePatchFxn = 0,
|
||||
#ifdef ADV_NC_OPTIMIZED
|
||||
.rfePatchFxn = 0,
|
||||
#else
|
||||
.rfePatchFxn = &rf_patch_rfe_ble,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
// Overrides for CMD_RADIO_SETUP
|
||||
uint32_t pOverrides[] =
|
||||
{
|
||||
#ifndef ADV_NC_OPTIMIZED
|
||||
0x00001007, // Remove if RFE patch is not applied.
|
||||
0x00456088, // Adjust AGC reference level
|
||||
#endif
|
||||
0x00354038, // Synth: Set RTRIM (POTAILRESTRIM) to 5
|
||||
0x4001402D, // Synth: Correct CKVD latency setting (address)
|
||||
0x00608402, // Synth: Correct CKVD latency setting (value)
|
||||
0x4001405D, // Synth: Set ANADIV DIV_BIAS_MODE to PG1 (address)
|
||||
0x1801F800, // Synth: Set ANADIV DIV_BIAS_MODE to PG1 (value)
|
||||
0x000784A3, // Synth: Set FREF = 3.43 MHz (24 MHz / 7)
|
||||
0xA47E0583, // Synth: Set loop bandwidth after lock to 80 kHz (K2)
|
||||
0xEAE00603, // Synth: Set loop bandwidth after lock to 80 kHz (K3, LSB)
|
||||
0x00010623, // Synth: Set loop bandwidth after lock to 80 kHz (K3, MSB)
|
||||
0x013800C3, // Use enhanced BLE shape
|
||||
/* Spur fix */
|
||||
0x02010403, // Synth: Use 24 MHz XOSC as synth clock, enable phase error discard feature
|
||||
0x40014035, // Synth: Set phase error error discard count to 1 (default 2) to get faster settling in TX (address)
|
||||
0x177F0408, // Synth: Set phase error error discard count to 1 (default 2) to get faster settling in TX (value)
|
||||
0x38000463, // Synth: Modify phase error discard threshold factor and offset
|
||||
/* Increase tone length due to spur fix */
|
||||
0x036052AC, // Add 6 us to tone in front of packet
|
||||
0x01AD02A3, // Compensate for 6 us added to tone in front of packet
|
||||
0x01680263, // Compensate for 6 us added to tone in front of packet
|
||||
0xFFFFFFFF, // End of override list
|
||||
};
|
||||
|
||||
|
||||
// CMD_RADIO_SETUP
|
||||
//#pragma data_alignment=4
|
||||
rfc_CMD_RADIO_SETUP_t RF_cmdBleRadioSetup =
|
||||
{
|
||||
.commandNo = CMD_RADIO_SETUP,
|
||||
.pNextOp = NULL,
|
||||
.startTrigger.triggerType = TRIG_NOW,
|
||||
.condition.rule = COND_ALWAYS,
|
||||
.pRegOverride = pOverrides,
|
||||
.config.frontEndMode = 0x0, // Differential
|
||||
.config.biasMode = 0x0, // Internal bias
|
||||
// .txPower = 0x3161, // 0 dbm
|
||||
.txPower = 0x9330, // 5 dbm
|
||||
.mode = 0, // BLE mode
|
||||
};
|
||||
|
||||
/*
|
||||
{ TX_POWER_0_DBM, GEN_TX_POWER_VAL( 0x21, 1, 0x31 ) },
|
||||
{ TX_POWER_5_DBM, GEN_TX_POWER_VAL( 0x30, 0, 0x93 ) } };
|
||||
#define GEN_TX_POWER_VAL( ib, gc, tc ) \
|
||||
(uint16)(((ib) & 0x3F) | (((gc) & 0x03) << 6) | (((tc)&0xFF) << 8))
|
||||
|
||||
0 dBm = 0x0021 | 0x0080 | 0x3100 = 0x3161
|
||||
5 dBm = 0x0030 | 0x0000 | 0x9300 = 0x9330
|
||||
*/
|
||||
|
||||
rfc_bleAdvPar_t cmdAdvParam = {
|
||||
.advLen = ADVLEN,
|
||||
.pAdvData = (uint8_t*)advData,
|
||||
.pDeviceAddress = (uint16_t*)&devAddress,
|
||||
// .endTrigger.triggerType = TRIG_NEVER,
|
||||
};
|
||||
|
||||
|
||||
// CMD_ADV_NC (Beacon channel 37)
|
||||
rfc_CMD_BLE_ADV_NC_t RF_cmdAdvNc0 =
|
||||
{
|
||||
.commandNo = CMD_BLE_ADV_NC,
|
||||
.status = 0x0000,
|
||||
.pNextOp = (rfc_radioOp_t*)&RF_cmdAdvNc1,
|
||||
.startTime = 0x00000000,
|
||||
.startTrigger.triggerType = TRIG_ABSTIME,
|
||||
.condition.rule = COND_ALWAYS,
|
||||
.channel = 37,
|
||||
.whitening = 0, // Use default
|
||||
.pParams = &cmdAdvParam,
|
||||
.pOutput = 0,
|
||||
};
|
||||
|
||||
|
||||
// CMD_ADV_NC (Beacon channel 38)
|
||||
rfc_CMD_BLE_ADV_NC_t RF_cmdAdvNc1 =
|
||||
{
|
||||
.commandNo = CMD_BLE_ADV_NC,
|
||||
.status = 0x0000,
|
||||
.pNextOp = (rfc_radioOp_t*)&RF_cmdAdvNc2,
|
||||
.startTime = 0x00000000,
|
||||
.startTrigger.triggerType = TRIG_NOW,
|
||||
.condition.rule = COND_ALWAYS,
|
||||
.channel = 38,
|
||||
.whitening = 0, // Use default
|
||||
.pParams = &cmdAdvParam,
|
||||
.pOutput = 0,
|
||||
};
|
||||
|
||||
|
||||
// CMD_ADV_NC (Beacon channel 39)
|
||||
rfc_CMD_BLE_ADV_NC_t RF_cmdAdvNc2 =
|
||||
{
|
||||
.commandNo = CMD_BLE_ADV_NC,
|
||||
.status = 0x0000,
|
||||
.pNextOp = NULL,
|
||||
.startTime = 0x00000000,
|
||||
.startTrigger.triggerType = TRIG_NOW,
|
||||
.condition.rule = COND_NEVER,
|
||||
.channel = 39,
|
||||
.whitening = 0, // Use default
|
||||
.pParams = &cmdAdvParam,
|
||||
.pOutput = 0,
|
||||
};
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
Copyright (c) 2013-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef SMARTRF_SETTINGS_H
|
||||
#define SMARTRF_SETTINGS_H
|
||||
|
||||
//*********************************************************************************
|
||||
// These settings has been ported for use with TI-RTOS RF driver and cc26xxware
|
||||
//
|
||||
//*********************************************************************************
|
||||
#include <driverlib/rf_mailbox.h>
|
||||
#include <driverlib/rf_common_cmd.h>
|
||||
#include <driverlib/rf_ble_cmd.h>
|
||||
#include <ti/drivers/rf/RF.h>
|
||||
|
||||
|
||||
// TI-RTOS RF Mode Object
|
||||
extern RF_Mode RF_ble;
|
||||
|
||||
|
||||
// RF Core API commands
|
||||
extern rfc_CMD_RADIO_SETUP_t RF_cmdBleRadioSetup;
|
||||
extern rfc_CMD_BLE_ADV_NC_t RF_cmdAdvNc0; // Non connectable advertising ch. 37
|
||||
extern rfc_CMD_BLE_ADV_NC_t RF_cmdAdvNc1; // Non connectable advertising ch. 38
|
||||
extern rfc_CMD_BLE_ADV_NC_t RF_cmdAdvNc2; // Non connectable advertising ch. 39
|
||||
|
||||
|
||||
|
||||
#endif // SMARTRF_SETTINGS_H
|
||||
+1353
File diff suppressed because it is too large
Load Diff
+87
@@ -0,0 +1,87 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file central_to_multiperipheral.h
|
||||
|
||||
@brief This file contains the Simple BLE Central sample application
|
||||
definitions and prototypes.
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Copyright (c) 2013-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
******************************************************************************
|
||||
Release Name: ble_sdk_2_02_01_18
|
||||
Release Date: 2016-10-26 15:20:04
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef CENTRALTOMULTIPERIPHERAL_H
|
||||
#define CENTRALTOMULTIPERIPHERAL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* EXTERNAL VARIABLES
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* MACROS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* FUNCTIONS
|
||||
*/
|
||||
/*
|
||||
* Task creation function for the Simple BLE Central.
|
||||
*/
|
||||
extern void central_to_multiperipheral_createTask(void);
|
||||
|
||||
/*********************************************************************
|
||||
*********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CENTRALTOMULTIPERIPHERAL_H */
|
||||
+239
@@ -0,0 +1,239 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file main.c
|
||||
|
||||
@brief main entry of the BLE stack sample application.
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Copyright (c) 2013-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
******************************************************************************
|
||||
Release Name: ble_sdk_2_02_00_31_s
|
||||
Release Date: 2016-06-16 18:59:11
|
||||
*****************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
|
||||
#include <xdc/runtime/Error.h>
|
||||
|
||||
#include <ti/drivers/Power.h>
|
||||
#include <ti/drivers/power/PowerCC26XX.h>
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
|
||||
#include "icall.h"
|
||||
#include "hal_assert.h"
|
||||
#include "central.h"
|
||||
#include "central_to_multiperipheral.h"
|
||||
|
||||
/* Header files required to enable instruction fetch cache */
|
||||
#include <inc/hw_memmap.h>
|
||||
#include <driverlib/vims.h>
|
||||
|
||||
#ifndef USE_DEFAULT_USER_CFG
|
||||
|
||||
#include "ble_user_config.h"
|
||||
|
||||
// BLE user defined configuration
|
||||
bleUserCfg_t user0Cfg = BLE_USER_CFG;
|
||||
|
||||
#endif // USE_DEFAULT_USER_CFG
|
||||
|
||||
#include <ti/mw/display/Display.h>
|
||||
|
||||
/*******************************************************************************
|
||||
* MACROS
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* TYPEDEFS
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* LOCAL VARIABLES
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* EXTERNS
|
||||
*/
|
||||
|
||||
extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
|
||||
|
||||
extern Display_Handle dispHandle;
|
||||
|
||||
/*******************************************************************************
|
||||
* @fn Main
|
||||
*
|
||||
* @brief Application Main
|
||||
*
|
||||
* input parameters
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* output parameters
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
int main()
|
||||
{
|
||||
/* Register Application callback to trap asserts raised in the Stack */
|
||||
RegisterAssertCback(AssertHandler);
|
||||
|
||||
PIN_init(BoardGpioInitTable);
|
||||
|
||||
#ifndef POWER_SAVING
|
||||
/* Set constraints for Standby, powerdown and idle mode */
|
||||
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
|
||||
Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
|
||||
#endif //POWER_SAVING
|
||||
|
||||
/* Initialize ICall module */
|
||||
ICall_init();
|
||||
|
||||
/* Start tasks of external images - Priority 5 */
|
||||
ICall_createRemoteTasks();
|
||||
|
||||
/* Kick off profile - Priority 3 */
|
||||
GAPCentralRole_createTask();
|
||||
|
||||
/* Kick off application - Priority 1 */
|
||||
central_to_multiperipheral_createTask();
|
||||
|
||||
/* enable interrupts and start SYS/BIOS */
|
||||
BIOS_start();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @fn AssertHandler
|
||||
*
|
||||
* @brief This is the Application's callback handler for asserts raised
|
||||
* in the stack.
|
||||
*
|
||||
* input parameters
|
||||
*
|
||||
* @param assertCause - Assert cause as defined in hal_assert.h.
|
||||
* @param assertSubcause - Optional assert subcause (see hal_assert.h).
|
||||
*
|
||||
* output parameters
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
void AssertHandler(uint8 assertCause, uint8 assertSubcause)
|
||||
{
|
||||
// Open the display if the app has not already done so
|
||||
if ( !dispHandle )
|
||||
{
|
||||
dispHandle = Display_open(Display_Type_LCD, NULL);
|
||||
}
|
||||
|
||||
Display_print0(dispHandle, 0, 0, ">>>STACK ASSERT");
|
||||
|
||||
// check the assert cause
|
||||
switch (assertCause)
|
||||
{
|
||||
case HAL_ASSERT_CAUSE_OUT_OF_MEMORY:
|
||||
Display_print0(dispHandle, 0, 0, "***ERROR***");
|
||||
Display_print0(dispHandle, 2, 0, ">> OUT OF MEMORY!");
|
||||
break;
|
||||
|
||||
case HAL_ASSERT_CAUSE_INTERNAL_ERROR:
|
||||
// check the subcause
|
||||
if (assertSubcause == HAL_ASSERT_SUBCAUSE_FW_INERNAL_ERROR)
|
||||
{
|
||||
Display_print0(dispHandle, 0, 0, "***ERROR***");
|
||||
Display_print0(dispHandle, 2, 0, ">> INTERNAL FW ERROR!");
|
||||
}
|
||||
else
|
||||
{
|
||||
Display_print0(dispHandle, 0, 0, "***ERROR***");
|
||||
Display_print0(dispHandle, 2, 0, ">> INTERNAL ERROR!");
|
||||
}
|
||||
break;
|
||||
|
||||
case HAL_ASSERT_CAUSE_ICALL_ABORT:
|
||||
Display_print0(dispHandle, 0, 0, "***ERROR***");
|
||||
Display_print0(dispHandle, 2, 0, ">> ICALL ABORT!");
|
||||
HAL_ASSERT_SPINLOCK;
|
||||
break;
|
||||
|
||||
default:
|
||||
Display_print0(dispHandle, 0, 0, "***ERROR***");
|
||||
Display_print0(dispHandle, 2, 0, ">> DEFAULT SPINLOCK!");
|
||||
HAL_ASSERT_SPINLOCK;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @fn smallErrorHook
|
||||
*
|
||||
* @brief Error handler to be hooked into TI-RTOS.
|
||||
*
|
||||
* input parameters
|
||||
*
|
||||
* @param eb - Pointer to Error Block.
|
||||
*
|
||||
* output parameters
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
void smallErrorHook(Error_Block *eb)
|
||||
{
|
||||
for (;;);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*/
|
||||
+227
@@ -0,0 +1,227 @@
|
||||
|
||||
/******************************************************************************
|
||||
|
||||
@file osal_icall_ble.c
|
||||
|
||||
@brief This file contains function that allows user setup tasks
|
||||
|
||||
Group: WCS, BTS
|
||||
$Target Device: DEVICES $
|
||||
|
||||
******************************************************************************
|
||||
Copyright (c) 2013-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
/**************************************************************************************************
|
||||
* INCLUDES
|
||||
**************************************************************************************************/
|
||||
#include <icall.h>
|
||||
#include "hal_types.h"
|
||||
#include "hal_mcu.h"
|
||||
#include "osal.h"
|
||||
#include "osal_tasks.h"
|
||||
#include "osal_snv.h"
|
||||
|
||||
|
||||
/* LL */
|
||||
#include "ll.h"
|
||||
|
||||
#if defined ( OSAL_CBTIMER_NUM_TASKS )
|
||||
#include "osal_cbtimer.h"
|
||||
#endif
|
||||
|
||||
/* L2CAP */
|
||||
#include "l2cap.h"
|
||||
|
||||
/* gap */
|
||||
#include "gap.h"
|
||||
|
||||
#if defined ( GAP_BOND_MGR )
|
||||
#include "gapbondmgr.h"
|
||||
#endif
|
||||
|
||||
/* GATT */
|
||||
#include "gatt.h"
|
||||
|
||||
/* Application */
|
||||
#include "hci_tl.h"
|
||||
|
||||
#include "gattservapp.h"
|
||||
|
||||
#include "ble_user_config.h"
|
||||
#include "ble_dispatch.h"
|
||||
|
||||
/*********************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
|
||||
// The order in this table must be identical to the task initialization calls below in osalInitTask.
|
||||
const pTaskEventHandlerFn tasksArr[] =
|
||||
{
|
||||
LL_ProcessEvent, // task 0
|
||||
HCI_ProcessEvent, // task 1
|
||||
#if defined ( OSAL_CBTIMER_NUM_TASKS )
|
||||
OSAL_CBTIMER_PROCESS_EVENT( osal_CbTimerProcessEvent ), // task 2
|
||||
#endif
|
||||
L2CAP_ProcessEvent, // task 3
|
||||
GAP_ProcessEvent, // task 4
|
||||
SM_ProcessEvent, // task 5
|
||||
GATT_ProcessEvent, // task 6
|
||||
GATTServApp_ProcessEvent, // task 7
|
||||
#if defined ( GAP_BOND_MGR )
|
||||
GAPBondMgr_ProcessEvent, // task 8
|
||||
#endif
|
||||
bleDispatch_ProcessEvent // task 9
|
||||
};
|
||||
|
||||
const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr[0] );
|
||||
uint16 *tasksEvents;
|
||||
|
||||
/*********************************************************************
|
||||
* FUNCTIONS
|
||||
*********************************************************************/
|
||||
|
||||
/*********************************************************************
|
||||
* @fn osalInitTasks
|
||||
*
|
||||
* @brief This function invokes the initialization function for each task.
|
||||
*
|
||||
* @param void
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void osalInitTasks( void )
|
||||
{
|
||||
ICall_EntityID entity;
|
||||
ICall_Semaphore sem;
|
||||
uint8 taskID = 0;
|
||||
uint8 i;
|
||||
|
||||
tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);
|
||||
osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));
|
||||
|
||||
/* LL Task */
|
||||
LL_Init( taskID++ );
|
||||
|
||||
/* HCI Task */
|
||||
HCI_Init( taskID++ );
|
||||
|
||||
#if defined ( OSAL_CBTIMER_NUM_TASKS )
|
||||
/* Callback Timer Tasks */
|
||||
osal_CbTimerInit( taskID );
|
||||
taskID += OSAL_CBTIMER_NUM_TASKS;
|
||||
#endif
|
||||
|
||||
/* L2CAP Task */
|
||||
L2CAP_Init( taskID++ );
|
||||
|
||||
/* GAP Task */
|
||||
GAP_Init( taskID++ );
|
||||
|
||||
/* SM Task */
|
||||
SM_Init( taskID++ );
|
||||
|
||||
/* GATT Task */
|
||||
GATT_Init( taskID++ );
|
||||
|
||||
/* GATT Server App Task */
|
||||
GATTServApp_Init( taskID++ );
|
||||
|
||||
#if defined ( GAP_BOND_MGR )
|
||||
/* Bond Manager Task */
|
||||
GAPBondMgr_Init( taskID++ );
|
||||
#endif
|
||||
|
||||
/* ICall BLE Dispatcher Task */
|
||||
bleDispatch_Init( taskID );
|
||||
|
||||
// ICall enrollment
|
||||
/* Enroll the service that this stack represents */
|
||||
ICall_enrollService(ICALL_SERVICE_CLASS_BLE, NULL, &entity, &sem);
|
||||
|
||||
/* Enroll the obtained dispatcher entity and OSAL task ID of HCI Ext App
|
||||
* to OSAL so that OSAL can route the dispatcher message into
|
||||
* the appropriate OSAL task.
|
||||
*/
|
||||
osal_enroll_dispatchid(taskID, entity);
|
||||
|
||||
/* Register all other OSAL tasks to use the registered dispatcher entity
|
||||
* ID as the source of dispatcher messages, even though the other OSAL
|
||||
* tasks didn't register themselves to receive messages from application.
|
||||
*/
|
||||
for (i = 0; i < taskID; i++)
|
||||
{
|
||||
osal_enroll_senderid(i, entity);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Main entry function for the stack image
|
||||
*/
|
||||
int stack_main( void *arg )
|
||||
{
|
||||
/* User reconfiguration of BLE Controller and Host variables */
|
||||
setBleUserConfig( (bleUserCfg_t *)arg );
|
||||
|
||||
/* Establish OSAL for a stack service that requires accompanying
|
||||
* messaging service */
|
||||
if (ICall_enrollService(ICALL_SERVICE_CLASS_BLE_MSG,
|
||||
(ICall_ServiceFunc) osal_service_entry,
|
||||
&osal_entity, &osal_semaphore) !=
|
||||
ICALL_ERRNO_SUCCESS)
|
||||
{
|
||||
/* abort */
|
||||
ICall_abort();
|
||||
}
|
||||
|
||||
halIntState_t state;
|
||||
HAL_ENTER_CRITICAL_SECTION(state);
|
||||
|
||||
// Turn off interrupts
|
||||
//osal_int_disable( INTS_ALL );
|
||||
|
||||
// Initialize NV System
|
||||
osal_snv_init( );
|
||||
|
||||
// Initialize the operating system
|
||||
osal_init_system();
|
||||
|
||||
// Allow interrupts
|
||||
//osal_int_enable( INTS_ALL );
|
||||
HAL_EXIT_CRITICAL_SECTION(state);
|
||||
|
||||
osal_start_system(); // No Return from here
|
||||
|
||||
return 0; // Shouldn't get here.
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*********************************************************************/
|
||||
+1596
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,740 @@
|
||||
/*
|
||||
* Filename: hidemukbdlp.c
|
||||
*
|
||||
* Description: This is the simple_peripheral example modified to send
|
||||
* data over BLE at a high throughput.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2016 Texas Instruments Incorporated - http://www.ti.com/
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
* its contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include <ti/sysbios/knl/Queue.h>
|
||||
|
||||
#include "gatt.h"
|
||||
#include "gapgattserver.h"
|
||||
#include "gattservapp.h"
|
||||
#include "gatt_profile_uuid.h"
|
||||
#include "devinfoservice.h"
|
||||
#include "battservice.h"
|
||||
#include "hidkbdservice.h"
|
||||
#include "hiddev.h"
|
||||
|
||||
#include "peripheral.h"
|
||||
#include "gapbondmgr.h"
|
||||
|
||||
#include "osal_snv.h"
|
||||
#include "icall_apimsg.h"
|
||||
|
||||
#include "util.h"
|
||||
#include <ti/mw/display/Display.h>
|
||||
#include "board_key.h"
|
||||
#include "board.h"
|
||||
|
||||
#include "hidemukbdlp.h"
|
||||
|
||||
/*********************************************************************
|
||||
* MACROS
|
||||
*/
|
||||
|
||||
#define KEY_NONE 0x00
|
||||
|
||||
// Selected HID LED bitmaps
|
||||
#define LED_NUM_LOCK 0x01
|
||||
#define LED_CAPS_LOCK 0x02
|
||||
|
||||
// Selected HID mouse button values
|
||||
#define MOUSE_BUTTON_1 0x01
|
||||
#define MOUSE_BUTTON_NONE 0x00
|
||||
|
||||
// HID keyboard input report length
|
||||
#define HID_KEYBOARD_IN_RPT_LEN 8
|
||||
|
||||
// HID LED output report length
|
||||
#define HID_LED_OUT_RPT_LEN 1
|
||||
|
||||
// HID mouse input report length
|
||||
#define HID_MOUSE_IN_RPT_LEN 5
|
||||
|
||||
/*********************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
// HID idle timeout in msec; set to zero to disable timeout
|
||||
#define DEFAULT_HID_IDLE_TIMEOUT 60000
|
||||
|
||||
// Minimum connection interval (units of 1.25ms) if automatic parameter update
|
||||
// request is enabled.
|
||||
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 8
|
||||
|
||||
// Maximum connection interval (units of 1.25ms) if automatic parameter update
|
||||
// request is enabled.
|
||||
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 8
|
||||
|
||||
// Slave latency to use if automatic parameter update request is enabled
|
||||
#define DEFAULT_DESIRED_SLAVE_LATENCY 50
|
||||
|
||||
// Supervision timeout value (units of 10ms) if automatic parameter update
|
||||
// request is enabled.
|
||||
#define DEFAULT_DESIRED_CONN_TIMEOUT 500
|
||||
|
||||
// Whether to enable automatic parameter update request when a connection is
|
||||
// formed.
|
||||
#define DEFAULT_ENABLE_UPDATE_REQUEST GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS
|
||||
|
||||
// Connection Pause Peripheral time value (in seconds)
|
||||
#define DEFAULT_CONN_PAUSE_PERIPHERAL 10
|
||||
|
||||
// Default passcode
|
||||
#define DEFAULT_PASSCODE 0
|
||||
|
||||
// Default GAP pairing mode
|
||||
#define DEFAULT_PAIRING_MODE GAPBOND_PAIRING_MODE_INITIATE
|
||||
|
||||
// Default MITM mode (TRUE to require passcode or OOB when pairing)
|
||||
#define DEFAULT_MITM_MODE FALSE
|
||||
|
||||
// Default bonding mode, TRUE to bond
|
||||
#define DEFAULT_BONDING_MODE TRUE
|
||||
|
||||
// Default GAP bonding I/O capabilities
|
||||
#define DEFAULT_IO_CAPABILITIES GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT
|
||||
|
||||
// Battery level is critical when it is less than this %
|
||||
#define DEFAULT_BATT_CRITICAL_LEVEL 6
|
||||
|
||||
// Task configuration
|
||||
#define HIDEMUKBD_TASK_PRIORITY 1
|
||||
|
||||
#ifndef HIDEMUKBD_TASK_STACK_SIZE
|
||||
#define HIDEMUKBD_TASK_STACK_SIZE 644
|
||||
#endif
|
||||
|
||||
// Task Events
|
||||
#define HIDEMUKBD_KEY_CHANGE_EVT 0x0001
|
||||
|
||||
/*********************************************************************
|
||||
* TYPEDEFS
|
||||
*/
|
||||
|
||||
// App event passed from profiles.
|
||||
typedef struct
|
||||
{
|
||||
appEvtHdr_t hdr; // Event header
|
||||
} hidEmuKbdEvt_t;
|
||||
|
||||
/*********************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
|
||||
// Display Interface
|
||||
Display_Handle dispHandle = NULL;
|
||||
|
||||
/*********************************************************************
|
||||
* EXTERNAL VARIABLES
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* EXTERNAL FUNCTIONS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL VARIABLES
|
||||
*/
|
||||
|
||||
// Entity ID globally used to check for source and/or destination of messages
|
||||
static ICall_EntityID selfEntity;
|
||||
|
||||
// Semaphore globally used to post events to the application thread
|
||||
static ICall_Semaphore sem;
|
||||
|
||||
// Queue object used for app messages
|
||||
static Queue_Struct appMsg;
|
||||
static Queue_Handle appMsgQueue;
|
||||
|
||||
// Task configuration
|
||||
Task_Struct hidEmuKbdTask;
|
||||
Char hidEmuKbdTaskStack[HIDEMUKBD_TASK_STACK_SIZE];
|
||||
|
||||
// GAP Profile - Name attribute for SCAN RSP data
|
||||
static uint8_t scanData[] =
|
||||
{
|
||||
0x0E, // length of this data
|
||||
GAP_ADTYPE_LOCAL_NAME_COMPLETE, // AD Type = Complete local name
|
||||
'H',
|
||||
'I',
|
||||
'D',
|
||||
' ',
|
||||
'L',
|
||||
'a',
|
||||
'u',
|
||||
'n',
|
||||
'c',
|
||||
'h',
|
||||
'p',
|
||||
'a',
|
||||
'd'
|
||||
};
|
||||
|
||||
// Advertising data
|
||||
static uint8_t advData[] =
|
||||
{
|
||||
// flags
|
||||
0x02, // length of this data
|
||||
GAP_ADTYPE_FLAGS,
|
||||
GAP_ADTYPE_FLAGS_LIMITED | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
|
||||
|
||||
// appearance
|
||||
0x03, // length of this data
|
||||
GAP_ADTYPE_APPEARANCE,
|
||||
LO_UINT16(GAP_APPEARE_HID_KEYBOARD),
|
||||
HI_UINT16(GAP_APPEARE_HID_KEYBOARD),
|
||||
|
||||
// service UUIDs
|
||||
0x05, // length of this data
|
||||
GAP_ADTYPE_16BIT_MORE,
|
||||
LO_UINT16(HID_SERV_UUID),
|
||||
HI_UINT16(HID_SERV_UUID),
|
||||
LO_UINT16(BATT_SERV_UUID),
|
||||
HI_UINT16(BATT_SERV_UUID)
|
||||
};
|
||||
|
||||
// Device name attribute value
|
||||
static CONST uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "HID Launchpad";
|
||||
|
||||
// HID Dev configuration
|
||||
static hidDevCfg_t hidEmuKbdCfg =
|
||||
{
|
||||
DEFAULT_HID_IDLE_TIMEOUT, // Idle timeout
|
||||
HID_KBD_FLAGS // HID feature flags
|
||||
};
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL FUNCTIONS
|
||||
*/
|
||||
|
||||
// Application task and event processing.
|
||||
static void HidEmuKbd_init(void);
|
||||
static void HidEmuKbd_taskFxn(UArg a0, UArg a1);
|
||||
static void HidEmuKbd_processAppMsg(hidEmuKbdEvt_t *pMsg);
|
||||
static void HidEmuKbd_processStackMsg(ICall_Hdr *pMsg);
|
||||
static void HidEmuKbd_processGattMsg(gattMsgEvent_t *pMsg);
|
||||
static uint8_t HidEmuKbd_enqueueMsg(uint16_t event, uint8_t state);
|
||||
|
||||
// Key press.
|
||||
static void HidEmuKbd_keyPressHandler(uint8_t keys);
|
||||
static void HidEmuKbd_handleKeys(uint8_t shift, uint8_t keys);
|
||||
|
||||
// HID reports.
|
||||
static void HidEmuKbd_sendReport(uint8_t keycode);
|
||||
static uint8_t HidEmuKbd_receiveReport(uint8_t len, uint8_t *pData);
|
||||
static uint8_t HidEmuKbd_reportCB(uint8_t id, uint8_t type, uint16_t uuid,
|
||||
uint8_t oper, uint16_t *pLen, uint8_t *pData);
|
||||
static void HidEmuKbd_hidEventCB(uint8_t evt);
|
||||
|
||||
/*********************************************************************
|
||||
* PROFILE CALLBACKS
|
||||
*/
|
||||
|
||||
static hidDevCB_t hidEmuKbdHidCBs =
|
||||
{
|
||||
HidEmuKbd_reportCB,
|
||||
HidEmuKbd_hidEventCB,
|
||||
NULL
|
||||
};
|
||||
|
||||
/*********************************************************************
|
||||
* PUBLIC FUNCTIONS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_createTask
|
||||
*
|
||||
* @brief Task creation function for the HID emulated keyboard.
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void HidEmuKbd_createTask(void)
|
||||
{
|
||||
Task_Params taskParams;
|
||||
|
||||
// Configure task
|
||||
Task_Params_init(&taskParams);
|
||||
taskParams.stack = hidEmuKbdTaskStack;
|
||||
taskParams.stackSize = HIDEMUKBD_TASK_STACK_SIZE;
|
||||
taskParams.priority = HIDEMUKBD_TASK_PRIORITY;
|
||||
|
||||
Task_construct(&hidEmuKbdTask, HidEmuKbd_taskFxn, &taskParams, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_init
|
||||
*
|
||||
* @brief Initialization function for the HidEmuKbd App Task.
|
||||
* This is called during initialization and should contain
|
||||
* any application specific initialization (ie. hardware
|
||||
* initialization/setup, table initialization, power up
|
||||
* notification ...).
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void HidEmuKbd_init(void)
|
||||
{
|
||||
// ******************************************************************
|
||||
// N0 STACK API CALLS CAN OCCUR BEFORE THIS CALL TO ICall_registerApp
|
||||
// ******************************************************************
|
||||
// Register the current thread as an ICall dispatcher application
|
||||
// so that the application can send and receive messages.
|
||||
ICall_registerApp(&selfEntity, &sem);
|
||||
|
||||
// Hard code the DB Address till CC2650 board gets its own IEEE address
|
||||
//uint8 bdAddress[B_ADDR_LEN] = { 0x22, 0x22, 0x22, 0x22, 0x22, 0x5A };
|
||||
//HCI_EXT_SetBDADDRCmd(bdAddress);
|
||||
|
||||
// Set device's Sleep Clock Accuracy
|
||||
//HCI_EXT_SetSCACmd(40);
|
||||
|
||||
// Create an RTOS queue for message from profile to be sent to app.
|
||||
appMsgQueue = Util_constructQueue(&appMsg);
|
||||
|
||||
// Setup the GAP
|
||||
VOID GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL,
|
||||
DEFAULT_CONN_PAUSE_PERIPHERAL);
|
||||
|
||||
// Setup the GAP Peripheral Role Profile
|
||||
{
|
||||
uint8_t initial_advertising_enable = TRUE;
|
||||
|
||||
// By setting this to zero, the device will go into the waiting state after
|
||||
// being discoverable for 30.72 second, and will not being advertising again
|
||||
// until the enabler is set back to TRUE
|
||||
uint16_t gapRole_AdvertOffTime = 0;
|
||||
|
||||
uint8_t enable_update_request = DEFAULT_ENABLE_UPDATE_REQUEST;
|
||||
uint16_t desired_min_interval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
|
||||
uint16_t desired_max_interval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
|
||||
uint16_t desired_slave_latency = DEFAULT_DESIRED_SLAVE_LATENCY;
|
||||
uint16_t desired_conn_timeout = DEFAULT_DESIRED_CONN_TIMEOUT;
|
||||
|
||||
// Set the GAP Role Parameters
|
||||
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),
|
||||
&initial_advertising_enable);
|
||||
GAPRole_SetParameter(GAPROLE_ADVERT_OFF_TIME, sizeof(uint16_t),
|
||||
&gapRole_AdvertOffTime);
|
||||
|
||||
GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advData), advData);
|
||||
GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanData), scanData);
|
||||
|
||||
GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t),
|
||||
&enable_update_request);
|
||||
GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t),
|
||||
&desired_min_interval);
|
||||
GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t),
|
||||
&desired_max_interval);
|
||||
GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t),
|
||||
&desired_slave_latency);
|
||||
GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t),
|
||||
&desired_conn_timeout);
|
||||
}
|
||||
|
||||
// Set the GAP Characteristics
|
||||
GGS_SetParameter(GGS_DEVICE_NAME_ATT, GAP_DEVICE_NAME_LEN,
|
||||
(void *)attDeviceName);
|
||||
|
||||
// Setup the GAP Bond Manager
|
||||
{
|
||||
uint32_t passkey = DEFAULT_PASSCODE;
|
||||
uint8_t pairMode = DEFAULT_PAIRING_MODE;
|
||||
uint8_t mitm = DEFAULT_MITM_MODE;
|
||||
uint8_t ioCap = DEFAULT_IO_CAPABILITIES;
|
||||
uint8_t bonding = DEFAULT_BONDING_MODE;
|
||||
|
||||
GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t),
|
||||
&passkey);
|
||||
GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);
|
||||
GAPBondMgr_SetParameter(GAPBOND_MITM_PROTECTION, sizeof(uint8_t), &mitm);
|
||||
GAPBondMgr_SetParameter(GAPBOND_IO_CAPABILITIES, sizeof(uint8_t), &ioCap);
|
||||
GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bonding);
|
||||
}
|
||||
|
||||
// Setup Battery Characteristic Values
|
||||
{
|
||||
uint8_t critical = DEFAULT_BATT_CRITICAL_LEVEL;
|
||||
|
||||
Batt_SetParameter(BATT_PARAM_CRITICAL_LEVEL, sizeof (uint8_t), &critical);
|
||||
}
|
||||
|
||||
// Set up HID keyboard service
|
||||
HidKbd_AddService();
|
||||
|
||||
// Register for HID Dev callback
|
||||
HidDev_Register(&hidEmuKbdCfg, &hidEmuKbdHidCBs);
|
||||
|
||||
// Start the GAP Role and Register the Bond Manager.
|
||||
HidDev_StartDevice();
|
||||
|
||||
Board_initKeys(HidEmuKbd_keyPressHandler);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_taskFxn
|
||||
*
|
||||
* @brief HidEmuKbd Application Task event processor. This function
|
||||
* is called to process all events for the task. Events
|
||||
* include timers, messages and any other user defined events.
|
||||
*
|
||||
* @param a0, a1 - not used.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void HidEmuKbd_taskFxn(UArg a0, UArg a1)
|
||||
{
|
||||
// Initialize the application.
|
||||
HidEmuKbd_init();
|
||||
|
||||
// Application main loop.
|
||||
for (;;)
|
||||
{
|
||||
// Waits for a signal to the semaphore associated with the calling thread.
|
||||
// Note that the semaphore associated with a thread is signaled when a
|
||||
// message is queued to the message receive queue of the thread or when
|
||||
// ICall_signal() function is called onto the semaphore.
|
||||
ICall_Errno errno = ICall_wait(ICALL_TIMEOUT_FOREVER);
|
||||
|
||||
if (errno == ICALL_ERRNO_SUCCESS)
|
||||
{
|
||||
ICall_EntityID dest;
|
||||
ICall_ServiceEnum src;
|
||||
ICall_HciExtEvt *pMsg = NULL;
|
||||
|
||||
if (ICall_fetchServiceMsg(&src, &dest,
|
||||
(void **)&pMsg) == ICALL_ERRNO_SUCCESS)
|
||||
{
|
||||
if ((src == ICALL_SERVICE_CLASS_BLE) && (dest == selfEntity))
|
||||
{
|
||||
// Process inter-task message
|
||||
HidEmuKbd_processStackMsg((ICall_Hdr *)pMsg);
|
||||
}
|
||||
|
||||
if (pMsg)
|
||||
{
|
||||
ICall_freeMsg(pMsg);
|
||||
}
|
||||
}
|
||||
|
||||
// If RTOS queue is not empty, process app message.
|
||||
while (!Queue_empty(appMsgQueue))
|
||||
{
|
||||
hidEmuKbdEvt_t *pMsg = (hidEmuKbdEvt_t *)Util_dequeueMsg(appMsgQueue);
|
||||
if (pMsg)
|
||||
{
|
||||
// Process message.
|
||||
HidEmuKbd_processAppMsg(pMsg);
|
||||
|
||||
// Free the space from the message.
|
||||
ICall_free(pMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_processStackMsg
|
||||
*
|
||||
* @brief Process an incoming stack message.
|
||||
*
|
||||
* @param pMsg - message to process
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HidEmuKbd_processStackMsg(ICall_Hdr *pMsg)
|
||||
{
|
||||
switch (pMsg->event)
|
||||
{
|
||||
case GATT_MSG_EVENT:
|
||||
HidEmuKbd_processGattMsg((gattMsgEvent_t *) pMsg);
|
||||
break;
|
||||
|
||||
default:
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_processGattMsg
|
||||
*
|
||||
* @brief Process GATT messages
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HidEmuKbd_processGattMsg(gattMsgEvent_t *pMsg)
|
||||
{
|
||||
GATT_bm_free(&pMsg->msg, pMsg->method);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_processAppMsg
|
||||
*
|
||||
* @brief Process an incoming task message.
|
||||
*
|
||||
* @param pMsg - message to process
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HidEmuKbd_processAppMsg(hidEmuKbdEvt_t *pMsg)
|
||||
{
|
||||
switch (pMsg->hdr.event)
|
||||
{
|
||||
case HIDEMUKBD_KEY_CHANGE_EVT:
|
||||
HidEmuKbd_handleKeys(0, pMsg->hdr.state);
|
||||
break;
|
||||
|
||||
default:
|
||||
//Do nothing.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidKEmukbd_keyPressHandler
|
||||
*
|
||||
* @brief Key event handler function.
|
||||
*
|
||||
* @param a0 - ignored
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HidEmuKbd_keyPressHandler(uint8_t keys)
|
||||
{
|
||||
// Enqueue the event.
|
||||
HidEmuKbd_enqueueMsg(HIDEMUKBD_KEY_CHANGE_EVT, keys);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_handleKeys
|
||||
*
|
||||
* @brief Handles all key events for this device.
|
||||
*
|
||||
* @param shift - true if in shift/alt.
|
||||
* @param keys - bit field for key events. Valid entries:
|
||||
* KEY_LEFT
|
||||
* KEY_RIGHT
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HidEmuKbd_handleKeys(uint8_t shift, uint8_t keys)
|
||||
{
|
||||
(void)shift; // Intentionally unreferenced parameter
|
||||
|
||||
if (keys & KEY_LEFT)
|
||||
{
|
||||
// Key Press.
|
||||
HidEmuKbd_sendReport(HID_KEYBOARD_LEFT_ARROW);
|
||||
|
||||
// Key Release.
|
||||
// NB: releasing a key press will not propagate a signal to this function,
|
||||
// so a "key release" is reported immediately afterwards here.
|
||||
HidEmuKbd_sendReport(KEY_NONE);
|
||||
}
|
||||
|
||||
if (keys & KEY_RIGHT)
|
||||
{
|
||||
// Key Press.
|
||||
HidEmuKbd_sendReport(HID_KEYBOARD_RIGHT_ARROW);
|
||||
|
||||
// Key Release
|
||||
// NB: releasing a key press will not propagate a signal to this function,
|
||||
// so a "key release" is reported immediately afterwards here.
|
||||
HidEmuKbd_sendReport(KEY_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_sendReport
|
||||
*
|
||||
* @brief Build and send a HID keyboard report.
|
||||
*
|
||||
* @param keycode - HID keycode.
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HidEmuKbd_sendReport(uint8_t keycode)
|
||||
{
|
||||
uint8_t buf[HID_KEYBOARD_IN_RPT_LEN];
|
||||
|
||||
buf[0] = 0; // Modifier keys
|
||||
buf[1] = 0; // Reserved
|
||||
buf[2] = keycode; // Keycode 1
|
||||
buf[3] = 0; // Keycode 2
|
||||
buf[4] = 0; // Keycode 3
|
||||
buf[5] = 0; // Keycode 4
|
||||
buf[6] = 0; // Keycode 5
|
||||
buf[7] = 0; // Keycode 6
|
||||
|
||||
HidDev_Report(HID_RPT_ID_KEY_IN, HID_REPORT_TYPE_INPUT,
|
||||
HID_KEYBOARD_IN_RPT_LEN, buf);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_receiveReport
|
||||
*
|
||||
* @brief Process an incoming HID keyboard report.
|
||||
*
|
||||
* @param len - Length of report.
|
||||
* @param pData - Report data.
|
||||
*
|
||||
* @return status
|
||||
*/
|
||||
static uint8_t HidEmuKbd_receiveReport(uint8_t len, uint8_t *pData)
|
||||
{
|
||||
// Verify data length
|
||||
if (len == HID_LED_OUT_RPT_LEN)
|
||||
{
|
||||
return SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ATT_ERR_INVALID_VALUE_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_reportCB
|
||||
*
|
||||
* @brief HID Dev report callback.
|
||||
*
|
||||
* @param id - HID report ID.
|
||||
* @param type - HID report type.
|
||||
* @param uuid - attribute uuid.
|
||||
* @param oper - operation: read, write, etc.
|
||||
* @param len - Length of report.
|
||||
* @param pData - Report data.
|
||||
*
|
||||
* @return GATT status code.
|
||||
*/
|
||||
static uint8_t HidEmuKbd_reportCB(uint8_t id, uint8_t type, uint16_t uuid,
|
||||
uint8_t oper, uint16_t *pLen, uint8_t *pData)
|
||||
{
|
||||
uint8_t status = SUCCESS;
|
||||
|
||||
// Write
|
||||
if (oper == HID_DEV_OPER_WRITE)
|
||||
{
|
||||
if (uuid == REPORT_UUID)
|
||||
{
|
||||
// Process write to LED output report; ignore others
|
||||
if (type == HID_REPORT_TYPE_OUTPUT)
|
||||
{
|
||||
status = HidEmuKbd_receiveReport(*pLen, pData);
|
||||
}
|
||||
}
|
||||
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
status = HidKbd_SetParameter(id, type, uuid, *pLen, pData);
|
||||
}
|
||||
}
|
||||
// Read
|
||||
else if (oper == HID_DEV_OPER_READ)
|
||||
{
|
||||
uint8_t len;
|
||||
|
||||
status = HidKbd_GetParameter(id, type, uuid, &len, pData);
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
*pLen = len;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_hidEventCB
|
||||
*
|
||||
* @brief HID Dev event callback.
|
||||
*
|
||||
* @param evt - event ID.
|
||||
*
|
||||
* @return HID response code.
|
||||
*/
|
||||
static void HidEmuKbd_hidEventCB(uint8_t evt)
|
||||
{
|
||||
// Process enter/exit suspend or enter/exit boot mode
|
||||
return;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HidEmuKbd_enqueueMsg
|
||||
*
|
||||
* @brief Creates a message and puts the message in RTOS queue.
|
||||
*
|
||||
* @param event - message event.
|
||||
* @param state - message state.
|
||||
*
|
||||
* @return TRUE or FALSE
|
||||
*/
|
||||
static uint8_t HidEmuKbd_enqueueMsg(uint16_t event, uint8_t state)
|
||||
{
|
||||
hidEmuKbdEvt_t *pMsg;
|
||||
|
||||
// Create dynamic pointer to message.
|
||||
if (pMsg = ICall_malloc(sizeof(hidEmuKbdEvt_t)))
|
||||
{
|
||||
pMsg->hdr.event = event;
|
||||
pMsg->hdr.state = state;
|
||||
|
||||
// Enqueue the message.
|
||||
return Util_enqueueMsg(appMsgQueue, sem, (uint8_t *)pMsg);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
*********************************************************************/
|
||||
@@ -0,0 +1,85 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file hidemukbd.h
|
||||
|
||||
@brief This file contains the HID emulated keyboard sample application
|
||||
definitions and prototypes.
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640, CC1350
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Copyright (c) 2011-2016, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of Texas Instruments Incorporated nor the names of
|
||||
its contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef HIDEMUKBD_H
|
||||
#define HIDEMUKBD_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* MACROS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* FUNCTIONS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
|
||||
/*
|
||||
* Task creation function for the HID emulated keyboard.
|
||||
*/
|
||||
extern void HidEmuKbd_createTask(void);
|
||||
|
||||
/*********************************************************************
|
||||
*********************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*HIDEMUKBD_H */
|
||||
@@ -9,7 +9,7 @@
|
||||
Target Device: CC2650, CC2640
|
||||
|
||||
******************************************************************************
|
||||
|
||||
|
||||
Copyright (c) 2013-2018, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
@@ -286,7 +286,7 @@ static void HostTestApp_processGapEvent(ICall_HciExtEvt *message) {
|
||||
msgHdr = (osal_msg_hdr_t *)message;
|
||||
msgHdr--; // Backup to the message header
|
||||
|
||||
len = (uint8)(msgHdr->len - sizeof(hciEvt_CmdComplete_t));
|
||||
len = (uint8)(msgHdr->len - sizeof ( hciEvt_CmdComplete_t ));
|
||||
|
||||
sendCommandCompleteEvent(HCI_COMMAND_COMPLETE_EVENT_CODE, pkt->cmdOpcode, len, pkt->pReturnParam);
|
||||
}
|
||||
@@ -332,6 +332,16 @@ static void HostTestApp_processGapEvent(ICall_HciExtEvt *message) {
|
||||
break;
|
||||
}
|
||||
|
||||
case HCI_EXT_SET_MAX_DATA_LEGNTH_EVENT: {
|
||||
switch (message->event)
|
||||
{
|
||||
case HCI_EXT_SET_MAX_DATA_LENGTH_EVENT: {
|
||||
break;
|
||||
}
|
||||
default :
|
||||
break;
|
||||
}
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -379,19 +389,25 @@ static void HostTestApp_processBLEEvent(ICall_HciExtEvt *message) {
|
||||
uint8 event[HCI_PHY_UPDATE_COMPLETE_EVENT_LEN];
|
||||
uint8 eventLen = 0;
|
||||
|
||||
switch (pEvt->BLEEventCode) {
|
||||
case HCI_BLE_PHY_UPDATE_COMPLETE_EVENT: {
|
||||
event[0] = HCI_BLE_PHY_UPDATE_COMPLETE_EVENT; // event code
|
||||
event[1] = pEvt->status; // status
|
||||
event[2] = LO_UINT16(pEvt->connHandle); // connection handle (LSB)
|
||||
event[3] = HI_UINT16(pEvt->connHandle); // connection handle (MSB)
|
||||
event[4] = pEvt->txPhy; // TX PHY
|
||||
event[5] = pEvt->rxPhy; // RX PHY
|
||||
switch (pEvt->BLEEventCode)
|
||||
{
|
||||
case HCI_BLE_PHY_UPDATE_COMPLETE_EVENT:
|
||||
{
|
||||
event[0] = HCI_BLE_PHY_UPDATE_COMPLETE_EVENT; // event code
|
||||
event[1] = pEvt->status; // status
|
||||
event[2] = LO_UINT16(pEvt->connHandle); // connection handle (LSB)
|
||||
event[3] = HI_UINT16(pEvt->connHandle); // connection handle (MSB)
|
||||
event[4] = pEvt->txPhy; // TX PHY
|
||||
event[5] = pEvt->rxPhy; // RX PHY
|
||||
|
||||
eventLen = HCI_PHY_UPDATE_COMPLETE_EVENT_LEN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
eventLen = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (eventLen > 0) {
|
||||
// Send BLE Complete Event
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user