Compare commits
179 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 330dbc8860 | |||
| a7d2986dd5 | |||
| a63e4468d8 | |||
| 6233e7d4dd | |||
| 0b1179aa6d | |||
| 8b3b009d2f | |||
| ce7037c563 | |||
| abf58c8a5b | |||
| cc6121b0e2 | |||
| 8dde56e12e | |||
| 1cf63cbd96 | |||
| 38931e9040 | |||
| 7357d4b463 | |||
| 1d475633ed | |||
| 1d1e08771d | |||
| 916e27ba33 | |||
| 598c3e2629 | |||
| ca39a15e60 | |||
| 2c992d8526 | |||
| 127742b194 | |||
| dff979cbe6 | |||
| 3b13a0ff90 | |||
| 1e061f2511 | |||
| cc2648585c | |||
| b965f81fc4 | |||
| b5ddf300b9 | |||
| 22175f379f | |||
| 6ff966df58 | |||
| 65f159fad2 | |||
| 515fc57307 | |||
| b84fbb6044 | |||
| d1cdaf7041 | |||
| d824b1fbd9 | |||
| 0df352d6ff | |||
| c27b6a0ac7 | |||
| e1152f6713 | |||
| e6ab11b004 | |||
| e3e40d25e9 | |||
| 495d4deb91 | |||
| aa662f4a7b | |||
| 21f17ab7a3 | |||
| 6000816833 | |||
| 95116252c8 | |||
| 28e8a66221 | |||
| 3249e7e1e2 | |||
| d5d97db086 | |||
| c806a7e09f | |||
| 95e563e04f | |||
| 747ebf5f8b | |||
| fb942c8e40 | |||
| fdc2f05d46 | |||
| 3c2823cc13 | |||
| 9ba9131a51 | |||
| bd64c60b40 | |||
| bb7e609665 | |||
| 9c4794c868 | |||
| 019c32faf5 | |||
| 96b6e4d1b9 | |||
| 105d01e636 | |||
| 71fcc98862 | |||
| c63656ac97 | |||
| 47a24ccef3 | |||
| 2ee3abf193 | |||
| d9039070ad | |||
| f69fd4a40f | |||
| a6287ad7e3 | |||
| 5103ad1d5c | |||
| 627b1a4675 | |||
| 34a7aa4551 | |||
| c685b50960 | |||
| 2d5733190e | |||
| 551546ab56 | |||
| d6a9017b5e | |||
| df182c9ab7 | |||
| ba2fb3eb1e | |||
| 9bc065905c | |||
| 60dcd75bf1 | |||
| 78d00fdd0d | |||
| 4a8199ae8d | |||
| 84e110383f | |||
| 71169d5a6d | |||
| 7797c51579 | |||
| 7f1fbacf1e | |||
| 31428e35b3 | |||
| 40dfe19285 | |||
| 0983888cd9 | |||
| 50fa842b6f | |||
| d0cbab98e5 | |||
| f990de5498 | |||
| b133a4f8ae | |||
| f9d1fa88f9 | |||
| 26452b3362 | |||
| 63ca1cdd8e | |||
| 8b569c64e8 | |||
| 317be48f98 | |||
| 4632d3a2bc | |||
| a16eebf2d8 | |||
| 59cffddc73 | |||
| 6cdbb3e2eb | |||
| a3161eeaae | |||
| 334f6eee37 | |||
| e804a93e24 | |||
| f69d373f1e | |||
| 8404a9b2c1 | |||
| 6d2ed3bac4 | |||
| 93b7d2ebea | |||
| d6ef557cd3 | |||
| e0934045d2 | |||
| 2180e7011b | |||
| 8de364dca3 | |||
| dc24e93681 | |||
| d60633137a | |||
| de86c581fc | |||
| a2a192b421 | |||
| c02472fedc | |||
| 638c92912c | |||
| 058ce18fe0 | |||
| 41bf1cc8bf | |||
| d691b7f6f3 | |||
| 66b7f82339 | |||
| 323ee6ee9f | |||
| c057e057f4 | |||
| 122269fd7d | |||
| b4219fe097 | |||
| 6a11e0ccca | |||
| 21b6fb3038 | |||
| 1708d32d49 | |||
| aab152ba8c | |||
| 6084a294a5 | |||
| d7555c84dd | |||
| b562d111b8 | |||
| 787e98c9b1 | |||
| b81a3ff623 | |||
| 02a8696873 | |||
| 3ac0352ac3 | |||
| e9b7f2f90b | |||
| 6df42ea165 | |||
| ecd558f138 | |||
| 13a7844327 | |||
| c840b10d30 | |||
| 00d1f3539f | |||
| 665b1beaa8 | |||
| c344b5c1d1 | |||
| 2c36d20976 | |||
| eaed2ca15f | |||
| 28f17b7495 | |||
| 98329ba665 | |||
| 4a9bab8012 | |||
| 60dcc8ef7c | |||
| 1883718a3a | |||
| 2eed05577a | |||
| 44b4e249bb | |||
| e7ba561277 | |||
| bb12cc95d8 | |||
| e335a53b0c | |||
| ff0d0a7e56 | |||
| bb9711ed6a | |||
| 1015afb5d9 | |||
| b8bcf3acc4 | |||
| db0e149192 | |||
| a2d41bd680 | |||
| e485d54102 | |||
| 1eb10e9fe8 | |||
| a9bff07401 | |||
| 2ca42aa666 | |||
| ae080d798b | |||
| 2fa4300f8e | |||
| 70b1bff19a | |||
| bf2b1b1b98 | |||
| a04c82b07d | |||
| 50ec272125 | |||
| c34f7befc0 | |||
| 7531af6a48 | |||
| 1453da201c | |||
| 846e4938e4 | |||
| b55e595a67 | |||
| 69c71112c7 | |||
| 61f7df84ac | |||
| 0022512f44 |
+1
-1
@@ -8,6 +8,6 @@ AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
IndentCaseLabels: false
|
||||
IndentCaseLabels: true
|
||||
SortIncludes: true
|
||||
TabWidth: 4
|
||||
|
||||
+4
-1
@@ -5,4 +5,7 @@ xdctools_*/
|
||||
ccsv8/
|
||||
|
||||
# CSS build files
|
||||
FlashROM/
|
||||
FlashROM/
|
||||
|
||||
# python cache
|
||||
__pycache__/
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="keyword" value="Copyright .*" />
|
||||
<option name="notice" value="Copyright (c) &#36;today.year. BioPro. Scientific." />
|
||||
<option name="myName" value="BioProSci" />
|
||||
</copyright>
|
||||
</component>
|
||||
Generated
+7
@@ -0,0 +1,7 @@
|
||||
<component name="CopyrightManager">
|
||||
<settings default="BioProSci">
|
||||
<module2copyright>
|
||||
<element module="SimplePeripheral" copyright="BioProSci" />
|
||||
</module2copyright>
|
||||
</settings>
|
||||
</component>
|
||||
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>
|
||||
Generated
+3
@@ -0,0 +1,3 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="HostTest" pattern="file[BioProCC2650]:simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/master//*" />
|
||||
</component>
|
||||
Generated
+3
@@ -0,0 +1,3 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="SimplePeripheral" pattern="file[BioProCC2650]:simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage//*" />
|
||||
</component>
|
||||
@@ -0,0 +1,63 @@
|
||||
BioProCC2650
|
||||
============
|
||||
|
||||
BioPro Device
|
||||
-------------
|
||||
|
||||
### Major source code path
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage.h`
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/simple_peripheral.c`
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/main.c`
|
||||
|
||||
|
||||
### Current project
|
||||
|
||||
1. Elite
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_tni.h`
|
||||
|
||||
2. Neulive 1.2
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_uni.h`
|
||||
|
||||
3. Neulive 1.3
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_neulive.h`
|
||||
|
||||
4. EliteZM
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_zm.h`
|
||||
|
||||
5. NeuliveSTI
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/headstage_sti.h`
|
||||
|
||||
### Notable source code
|
||||
|
||||
* gpio table
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/boards/BOOSTXL_CC2650MA/BOOSTXL_CC2650MA.h`
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/boards/CC2650_LAUNCHXL/CC2650_LAUNCHXL.h`
|
||||
|
||||
* characteristic
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/simple_gatt_profile.h`
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/cc26xx/simple_gatt_profile.c`
|
||||
|
||||
BioPro Control
|
||||
--------------
|
||||
|
||||
major source code path:
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/host_test_app.c`
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/main.c`
|
||||
|
||||
-----------------------------------------------
|
||||
|
||||
Copyright (c) 2019. BioPro. Scientific.
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/common/cc26xx/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/controller/cc26xx/inc/
|
||||
@@ -1 +0,0 @@
|
||||
../tirtos_cc13xx_cc26xx_2_21_01_08/products/cc26xxware_2_24_03_17272/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/hal/src/inc/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/hal/src/target/_common/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/hal/src/target/_common/cc26xx/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/heapmgr/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/icall/inc/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/icall/src/inc/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/inc/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/npi/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/osal/src/inc/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/profiles/roles/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/profiles/dev_info/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/rom/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/services/src/saddr/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/components/services/src/sdata/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/
|
||||
@@ -1 +0,0 @@
|
||||
../simplelink/ble_sdk_2_02_02_25/src/target/
|
||||
@@ -0,0 +1,673 @@
|
||||
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: Optional[str] = None):
|
||||
buffer = []
|
||||
|
||||
eval_instruction(expr, context, buffer)
|
||||
|
||||
if append_ris_type is not None and isinstance(expr, str):
|
||||
length = len(buffer)
|
||||
buffer.insert(0, 0x30)
|
||||
buffer.insert(1, length)
|
||||
|
||||
if append_ris_type is None:
|
||||
print(hex_line(buffer))
|
||||
else:
|
||||
for i, v in enumerate(buffer):
|
||||
print(append_ris_type, '[%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,134 @@
|
||||
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_WAVEFORM_SIN = 0x04
|
||||
|
||||
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_SIN,
|
||||
'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_SIN,
|
||||
'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='ins')
|
||||
|
||||
if not validate_frequency_parameter(STI_PARAMETER_0):
|
||||
print('invalidate parameter')
|
||||
else:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['LOCAL'], STI_PARAMETER_0, append_ris_type='ins')
|
||||
|
||||
if not validate_frequency_parameter(STI_PARAMETER_1):
|
||||
print('invalidate parameter')
|
||||
else:
|
||||
print('----')
|
||||
print_instruction(STI_INSTRUCTION['LOCAL'], STI_PARAMETER_1, append_ris_type='ins')
|
||||
|
||||
print('--sti--')
|
||||
print_instruction(DeviceInstruction.VIS_STI, {})
|
||||
|
||||
print('--int--')
|
||||
print_instruction(DeviceInstruction.VIS_INT, {})
|
||||
@@ -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()
|
||||
@@ -0,0 +1,146 @@
|
||||
import unittest
|
||||
from random import randint
|
||||
from typing import List, Optional
|
||||
|
||||
REC_CHANNEL_COUNT = 16
|
||||
|
||||
|
||||
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]]:
|
||||
enable_channel_number = 0
|
||||
last_enable_channel = 0
|
||||
|
||||
for i in range(REC_CHANNEL_COUNT):
|
||||
if channel_table[i]:
|
||||
last_enable_channel = i
|
||||
enable_channel_number += 1
|
||||
|
||||
if enable_channel_number == 0:
|
||||
return None
|
||||
|
||||
channel_mux = [0 for _ in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
if enable_channel_number == 1:
|
||||
channel_mux[0] = last_enable_channel
|
||||
|
||||
return channel_mux
|
||||
|
||||
next_enable_channel = last_enable_channel
|
||||
channel_mux_index = last_enable_channel
|
||||
|
||||
channel_mux[channel_mux_index] = last_enable_channel
|
||||
channel_mux_index -= 1
|
||||
|
||||
while channel_mux_index >= 0:
|
||||
i = next_enable_channel - 1
|
||||
|
||||
while i >= 0:
|
||||
if channel_table[i]:
|
||||
next_enable_channel = i
|
||||
break
|
||||
|
||||
i -= 1
|
||||
|
||||
if i < 0:
|
||||
break
|
||||
|
||||
else:
|
||||
channel_mux[channel_mux_index] = next_enable_channel
|
||||
channel_mux_index -= 1
|
||||
|
||||
offset = last_enable_channel - channel_mux_index
|
||||
|
||||
while channel_mux_index >= 0:
|
||||
channel_mux[channel_mux_index] = channel_mux[channel_mux_index + offset]
|
||||
channel_mux_index -= 1
|
||||
|
||||
return channel_mux
|
||||
|
||||
|
||||
def rearrange_channel_count(channel_table: List[int]) -> List[int]:
|
||||
ret = [0 for _ in range(REC_CHANNEL_COUNT)]
|
||||
|
||||
i = len(channel_table) - 1
|
||||
|
||||
if i < 0:
|
||||
return ret
|
||||
|
||||
c = channel_table[i]
|
||||
|
||||
if i == 0:
|
||||
ret[c] += 1
|
||||
return ret
|
||||
|
||||
while c >= 0:
|
||||
ret[channel_table[i]] += 1
|
||||
|
||||
c -= 1
|
||||
|
||||
if i == 0:
|
||||
i = len(channel_table) - 1
|
||||
else:
|
||||
i -= 1
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
class UniRearrangeMuxChannelTest(unittest.TestCase):
|
||||
def test_empty_channel(self):
|
||||
self.assertIsNone(rearrange_channel_mux_table(to_channel_table()))
|
||||
|
||||
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)))
|
||||
|
||||
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.assertEqual([3, 7, 2, 3, 7, 2, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
rearrange_channel_mux_table(to_channel_table(7, 3, 2)))
|
||||
|
||||
def test_many_channel(self):
|
||||
self.assertEqual([5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
|
||||
rearrange_channel_mux_table(to_channel_table(5)))
|
||||
|
||||
self.assertEqual([2, 5, 2, 5, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
|
||||
rearrange_channel_mux_table(to_channel_table(2, 5)))
|
||||
|
||||
self.assertEqual([1, 3, 5, 1, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
|
||||
rearrange_channel_mux_table(to_channel_table(1, 3, 5)))
|
||||
|
||||
self.assertEqual([3, 5, 0, 1, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
|
||||
rearrange_channel_mux_table(to_channel_table(0, 1, 3, 5)))
|
||||
|
||||
self.assertEqual([5, 0, 1, 2, 3, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
|
||||
rearrange_channel_mux_table(to_channel_table(0, 1, 2, 3, 5)))
|
||||
|
||||
self.assertEqual([0, 1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],
|
||||
rearrange_channel_mux_table(to_channel_table(0, 1, 2, 3, 4, 5)))
|
||||
|
||||
|
||||
class UniRearrangeChannelCount(unittest.TestCase):
|
||||
def test_empty_channel(self):
|
||||
self.assertEqual([0 for _ in range(REC_CHANNEL_COUNT)], rearrange_channel_count([]))
|
||||
|
||||
def test_single_channel(self):
|
||||
self.assertEqual([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
rearrange_channel_count([2]))
|
||||
self.assertEqual([0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
rearrange_channel_count([4]))
|
||||
|
||||
def test_two_channel(self):
|
||||
self.assertEqual([0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
rearrange_channel_count([2, 4]))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+4
-4
@@ -16,11 +16,11 @@ 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_00_06_core/packages/../bin/rm -f
|
||||
CP = C:/ti/xdctools_3_32_00_06_core/packages/../bin/cp -f
|
||||
|
||||
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>
|
||||
|
||||
+230
-57
@@ -18,13 +18,17 @@
|
||||
<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.308833195" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.2125878104">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.2138235341" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.1422447968"
|
||||
name="TI Build Tools"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain"
|
||||
targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1198402338">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1621456516"
|
||||
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"/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
|
||||
<listOptionValue builtIn="false" value="XDC_VERSION=3.32.0.06_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;"/>
|
||||
@@ -34,17 +38,55 @@
|
||||
<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.243195404" 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.955793533" 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.638576662" 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.1016177761" 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.2070806136" 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.1411365061" 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.193495829" 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.1573436637" 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.978889992" 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.1392883332" 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.511635494" 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.1743525540"
|
||||
name="Compiler version"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION"
|
||||
value="18.1.5.LTS" valueType="string"/>
|
||||
<targetPlatform
|
||||
id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.1923259253"
|
||||
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.1779067805"
|
||||
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.613173958"
|
||||
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.342903528"
|
||||
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.1478061741"
|
||||
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.460891013"
|
||||
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.429679904"
|
||||
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.1643626429"
|
||||
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.601582984"
|
||||
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.322885347"
|
||||
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,10 +112,15 @@
|
||||
<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.521147483" 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.126612185"
|
||||
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="POWER_SAVING"/>
|
||||
<listOptionValue builtIn="false" value="BOOSTXL_CC2650MA"/>
|
||||
<listOptionValue builtIn="false" value="CC2650_LAUNCHXL"/>
|
||||
<listOptionValue builtIn="false" value="HEADSTAGE_MA_USE_SPI2"/>
|
||||
<listOptionValue builtIn="false" value="HEADSTAGE_MA_USE_ADC"/>
|
||||
<listOptionValue builtIn="false" value="CC26XX"/>
|
||||
<listOptionValue builtIn="false" value="GAPROLE_TASK_STACK_SIZE=540"/>
|
||||
<listOptionValue builtIn="false" value="HEAPMGR_SIZE=0"/>
|
||||
@@ -85,71 +132,197 @@
|
||||
<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.1861999587" 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.1867564782" 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.2052831394" 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.1102242787" 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.2068756498"
|
||||
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.1950504663"
|
||||
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.1475277164"
|
||||
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.275716768"
|
||||
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.727880917" 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.1572259170"
|
||||
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.996618365" 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.858761211" 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.96303422" 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.1634706392" 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.409486974"
|
||||
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.1205714801"
|
||||
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.227798212"
|
||||
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.1580464089"
|
||||
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.1149005836" 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.404213358" 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.1356338499" 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.1609020645" 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.2086978995"
|
||||
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.599989674"
|
||||
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.985689011"
|
||||
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.860993169"
|
||||
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.2125878104" 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.1993482378" 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.833137428" 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.1072440081" 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.95815077" 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.1766117832" 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.1198402338"
|
||||
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.1980812168"
|
||||
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.604359436"
|
||||
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.605421445"
|
||||
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.1425430523"
|
||||
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.1076512063"
|
||||
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.1149343368" 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.1704469433"
|
||||
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.512740056" 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.737788064"
|
||||
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.755787473" 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.1039632635" 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.160090718" 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.1907564273" 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.1278577864" 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.1166775149" 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.1192919935" 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.1491242603" 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.1256724103"
|
||||
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.1363276362"
|
||||
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.439996804"
|
||||
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.2063712626"
|
||||
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.1634913080"
|
||||
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.1186187707"
|
||||
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.329534377"
|
||||
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.571369317"
|
||||
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.1967400950" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1242139870" 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.1863065780" 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.47746446" 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.385303940" name="ARM Hex Utility"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1687380504"
|
||||
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.1954173385"
|
||||
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.1612714305"
|
||||
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.1864525425" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.46430604" 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.1496651133" name="XDCtools"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.1070496263"
|
||||
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.313008504" 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.807892561" 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.1808973543" 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.1028195441" 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.295955151" 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.128448790" 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.1369376857"
|
||||
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.498611106"
|
||||
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.712644920"
|
||||
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.864506159"
|
||||
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.2142459898"
|
||||
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.2071237842"
|
||||
name="Additional compiler options (--compileOptions)"
|
||||
superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS"
|
||||
value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
|
||||
+536
-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">
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+4
-4
@@ -16,11 +16,11 @@ 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/simple_peripheral/cc26xx/app/headstage" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/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/profiles/dev_info" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile" --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/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/simple_peripheral/cc26xx/app/headstage" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/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/profiles/dev_info" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile" --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/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
|
||||
|
||||
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>
|
||||
|
||||
+154
-45
@@ -15,8 +15,12 @@
|
||||
<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.1209999684" name="FlashROM" parent="com.ti.ccstudio.buildDefinitions.TMS470.Default" postannouncebuildStep="" 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" preannouncebuildStep="" 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.1209999684." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.929750171" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.1008890994">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1479696404" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.2074238986"
|
||||
name="TI Build Tools"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain"
|
||||
targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.148013746">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.833674768"
|
||||
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 +30,46 @@
|
||||
<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"/>
|
||||
<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"/>
|
||||
<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.core.OPT_CODEGEN_VERSION.91116411"
|
||||
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.729117574"
|
||||
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.1049643344"
|
||||
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.1500328690"
|
||||
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.1732561390"
|
||||
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.1008755768"
|
||||
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.1303985247"
|
||||
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.680608899"
|
||||
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.1369821195"
|
||||
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.469619136"
|
||||
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.1916297111"
|
||||
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,7 +93,9 @@
|
||||
<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.461117382"
|
||||
superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE"
|
||||
valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="CC26XX"/>
|
||||
<listOptionValue builtIn="false" value="POWER_SAVING"/>
|
||||
<listOptionValue builtIn="false" value="CC26XXWARE"/>
|
||||
@@ -81,60 +116,134 @@
|
||||
<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.2032339029"
|
||||
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.653240305"
|
||||
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.738763507"
|
||||
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.640302916"
|
||||
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.526476506"
|
||||
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.1797055053"
|
||||
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.313905687" 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.1129729173" 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.156783227" 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.538375181" 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.498731550"
|
||||
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.1585281532"
|
||||
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.253755398"
|
||||
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.1473169379"
|
||||
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">
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.148013746"
|
||||
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.968990490"
|
||||
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.740945917"
|
||||
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.650302364"
|
||||
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.1896286345"
|
||||
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.317147830"
|
||||
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.932239677"
|
||||
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.1432215405"
|
||||
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"/>
|
||||
<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"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.1227797037"
|
||||
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.317429606"
|
||||
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.1265405801"
|
||||
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.1568599290"
|
||||
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.1910777613"
|
||||
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.444047828"
|
||||
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.1074932025"
|
||||
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.1096594144"
|
||||
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.1847623715"
|
||||
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"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.1313691321"
|
||||
name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1579314374"
|
||||
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.530787755"
|
||||
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.1276441033"
|
||||
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">
|
||||
|
||||
+66
-62
@@ -16,35 +16,35 @@
|
||||
</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" 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_5.2.exe.DebugToolchain.936572434" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.linkerDebug.1170584915">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1442263665" 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="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE="/>
|
||||
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY="libc.a""/>
|
||||
<listOptionValue builtIn="false" value="RTSC_MBS_VERSION=2.2.0"/>
|
||||
<listOptionValue builtIn="false" value="XDC_VERSION=3.32.0.06_core"/>
|
||||
<listOptionValue builtIn="false" value="RTSC_PRODUCTS=com.ti.rtsc.TIRTOSCC13XX_CC26XX:2.21.01.08;"/>
|
||||
<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="LINK_ORDER=TOOLS/ccs_linker_defines.cmd;TOOLS/cc26xx_app.cmd;"/>
|
||||
<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"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1948686990" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="16.9.4.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.targetPlatformDebug.436655999" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.builderDebug.2122969898" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.compilerDebug.1022199392" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.SILICON_VERSION.945741939" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.CODE_STATE.1772665994" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.ABI.28185992" name="Application binary interface. [See 'General' page to edit] (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.LITTLE_ENDIAN.1551593263" name="Little endian code [See 'General' page to edit] (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.OPT_LEVEL.528776966" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.OPT_FOR_SPEED.1185808991" name="Speed vs. size trade-offs (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.INCLUDE_PATH.84242771" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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 +70,10 @@
|
||||
<listOptionValue builtIn="false" value="${SRC_BLE_CORE}/rom"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DEBUGGING_MODEL.619228148" name="Debugging model" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.C_DIALECT.1814512415" name="C Dialect" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.GCC.1003845117" name="Enable support for GCC extensions (DEPRECATED) (--gcc)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.GCC" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DEFINE.1619548278" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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,64 +89,68 @@
|
||||
<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_5.2.compilerID.DIAG_WARNING.468139615" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.compilerID.DISPLAY_ERROR_NUMBER.815341255" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DIAG_SUPPRESS.1499939580" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.compilerID.DIAG_WRAP.1353908093" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.GEN_FUNC_SUBSECTIONS.522002742" name="Place each function in a separate subsection (--gen_func_subsections, -ms)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compilerID.CMD_FILE.1093592148" name="Read options from specified file (--cmd_file, -@)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.compiler.inputType__C_SRCS.1484724680" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compiler.inputType__C_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compiler.inputType__CPP_SRCS.1857516437" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compiler.inputType__CPP_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compiler.inputType__ASM_SRCS.842046581" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compiler.inputType__ASM_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.compiler.inputType__ASM2_SRCS.880239501" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.exe.linkerDebug.1170584915" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.STACK_SIZE.1798831431" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.HEAP_SIZE.1039761941" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.MAP_FILE.80438512" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.OUTPUT_FILE.323523388" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.OUTPUT_FILE" useByScannerDiscovery="false" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.LIBRARY.203910805" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.linkerID.SEARCH_PATH.2045110069" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.linkerID.DIAG_WRAP.1885279599" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.DIAG_SUPPRESS.1195915855" name="Suppress diagnostic <id> (--diag_suppress)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.linkerID.DISPLAY_ERROR_NUMBER.812278410" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.XML_LINK_INFO.655770989" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.UNUSED_SECTION_ELIMINATION.290129903" name="Eliminate sections not needed in the executable (--unused_section_elimination)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.COMPRESS_DWARF.820922589" name="Aggressively reduce size of the DWARF information (--compress_dwarf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_5.2.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__CMD_SRCS.1627390590" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__CMD2_SRCS.314219026" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_5.2.exeLinker.inputType__GEN_CMDS.298789754" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.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_5.2.hex.645947981" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_5.2.hex"/>
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.1311186821" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.77089036" name="Package repositories (--xdcpath)" 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.595027378" 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.942771587" 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.309371946" 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.567582658" 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.888142064" 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.2133539592" 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.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>
|
||||
@@ -292,8 +296,8 @@
|
||||
<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)" 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)" 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">
|
||||
|
||||
+4
@@ -1,9 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="com.ti.ccstudio.debug.launchType.device.debugging">
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\app\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <PropertyValues> <property id="ConnectOnStartup"> <curValue>1</curValue> </property> <property id="EnableInstalledBreakpoint"> <curValue>1</curValue> </property> <property id="IgnoreSoftLaunchFailures"> <curValue>0</curValue> </property> </PropertyValues> "/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <PropertyValues> <property id="ConnectOnStartup"> <curValue>1</curValue> </property> <property id="EnableInstalledBreakpoint"> <curValue>1</curValue> </property> <property id="IgnoreSoftLaunchFailures"> <curValue>0</curValue> </property> </PropertyValues> "/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\app\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="${build_artifact:simple_peripheral_cc2650lp_app}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="${build_artifact:simple_peripheral_cc2650lp_app}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\app\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="simple_peripheral_cc2650lp_app"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\app\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="simple_peripheral_cc2650lp_app"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:simple_peripheral_cc2650lp_app}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\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\simple_peripheral\ccs\app\FlashROM\simple_peripheral_cc2650lp_app.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\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\cc2650lp\simple_peripheral\ccs\app\FlashROM\simple_peripheral_cc2650lp_app.out"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/simple_peripheral_cc2650lp_app"/>
|
||||
|
||||
+5
-4
@@ -1,9 +1,10 @@
|
||||
/*
|
||||
** Stack Frontier Generator 1.1.0 (2016-03-28 14:11:07.308000)
|
||||
** Stack Frontier Generator 1.1.0 (2019-05-13 17:33:59.404000)
|
||||
**
|
||||
** WARNING - Auto-generated file. Modifications could be lost!
|
||||
*/
|
||||
|
||||
--define=ICALL_STACK0_ADDR=0xe001
|
||||
--define=ICALL_STACK0_START=0xe000
|
||||
--define=ICALL_RAM0_START=0x20004368
|
||||
--define=ICALL_STACK0_ADDR=0xf001
|
||||
--define=ICALL_STACK0_START=0xf000
|
||||
--define=ICALL_RAM0_START=0x20004320
|
||||
|
||||
|
||||
+5
-4
@@ -1,9 +1,10 @@
|
||||
/*
|
||||
** Stack Frontier Generator 1.1.0 (2016-03-28 14:11:07.308000)
|
||||
** Stack Frontier Generator 1.1.0 (2019-05-13 17:33:59.404000)
|
||||
**
|
||||
** WARNING - Auto-generated file. Modifications could be lost!
|
||||
*/
|
||||
|
||||
--define=ICALL_RAM0_START=0x20004368
|
||||
--define=ICALL_STACK0_START=0xe000
|
||||
--define=ICALL_STACK0_ADDR=0xe001
|
||||
--define=ICALL_RAM0_START=0x20004320
|
||||
--define=ICALL_STACK0_START=0xf000
|
||||
--define=ICALL_STACK0_ADDR=0xf001
|
||||
|
||||
|
||||
+2
-2
@@ -4,5 +4,5 @@
|
||||
*/
|
||||
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\host\host_pxxx.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\ctrl\cc2640\cc2640_ctrl_pxxx_ext.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\hci_tl\cc26xx\cc26xx_hci_tl_none_v41_v42.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\ctrl\cc2640\cc2640_ctrl_pxxx.a"
|
||||
"C:\ti\simplelink\ble_sdk_2_02_02_25\blelib\hci_tl\cc26xx\cc26xx_hci_tl_none.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_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/
|
||||
|
||||
@@ -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.3.LTS/include" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/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/profiles/dev_info" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile" --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/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.4.LTS/include" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/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/profiles/dev_info" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/cc26xx" --include_path="C:/ti/simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile" --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/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.3.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.3.LTS/include
|
||||
ASM = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.3.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.3.LTS/include
|
||||
AR = C:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.3.LTS/bin/armar rq
|
||||
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
|
||||
|
||||
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.
+4
@@ -1,9 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="com.ti.ccstudio.debug.launchType.device.debugging">
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <PropertyValues> <property id="ConnectOnStartup"> <curValue>1</curValue> </property> <property id="EnableInstalledBreakpoint"> <curValue>1</curValue> </property> <property id="IgnoreSoftLaunchFailures"> <curValue>0</curValue> </property> </PropertyValues> "/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <PropertyValues> <property id="ConnectOnStartup"> <curValue>1</curValue> </property> <property id="EnableInstalledBreakpoint"> <curValue>1</curValue> </property> <property id="IgnoreSoftLaunchFailures"> <curValue>0</curValue> </property> </PropertyValues> "/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="${build_artifact:simple_peripheral_cc2650lp_stack}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="${build_artifact:simple_peripheral_cc2650lp_stack}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="simple_peripheral_cc2650lp_stack"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_PROJECT.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2650F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="simple_peripheral_cc2650lp_stack"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_TARGET_CONFIG" value="${target_config_active_default:simple_peripheral_cc2650lp_stack}"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\targetConfigs\CC2640F128.ccxml.Texas Instruments XDS110 USB Debug Probe/Cortex_M3_0" value="C:/ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\simple_peripheral\ccs\stack\FlashROM\simple_peripheral_cc2650lp_stack.out"/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.MRU_PROGRAM.C:\ti\simplelink\ble_sdk_2_02_02_25\examples\cc2650lp\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\cc2650lp\simple_peripheral\ccs\stack\FlashROM\simple_peripheral_cc2650lp_stack.out"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/simple_peripheral_cc2650lp_stack"/>
|
||||
|
||||
@@ -36,10 +36,11 @@
|
||||
* CC2650 Booster Pack.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* ====================== Includes ============================================
|
||||
*/
|
||||
|
||||
// clang-format off
|
||||
#include <xdc/std.h>
|
||||
#include <xdc/runtime/System.h>
|
||||
|
||||
@@ -56,6 +57,7 @@
|
||||
#include <inc/hw_ints.h>
|
||||
#include <driverlib/ioc.h>
|
||||
#include <driverlib/udma.h>
|
||||
// clang-format on
|
||||
|
||||
#include "Board.h"
|
||||
|
||||
@@ -65,7 +67,7 @@
|
||||
* settings for this board.
|
||||
* When a pin is allocated and then de-allocated, it will revert to the state
|
||||
* configured in this table.
|
||||
*/
|
||||
*/
|
||||
|
||||
/* Place into subsections to allow the TI linker to remove items properly */
|
||||
#if defined(__TI_COMPILER_VERSION__)
|
||||
@@ -73,19 +75,20 @@
|
||||
#pragma DATA_SECTION(PINCC26XX_hwAttrs, ".const:PINCC26XX_hwAttrs")
|
||||
#endif
|
||||
|
||||
const PIN_Config BoardGpioInitTable[] = {
|
||||
Board_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
|
||||
Board_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
|
||||
Board_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN, /* UART RX */
|
||||
Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* UART TX */
|
||||
Board_SRDY | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* SRDY */
|
||||
Board_MRDY | PIN_INPUT_EN | PIN_PULLDOWN, /* MRDY */
|
||||
PIN_TERMINATE
|
||||
};
|
||||
const PIN_Config BoardGpioInitTable[] = { //
|
||||
Board_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
|
||||
Board_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
|
||||
Board_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN, /* UART RX */
|
||||
Board_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* UART TX */
|
||||
Board_SRDY | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL, /* SRDY */
|
||||
Board_MRDY | PIN_INPUT_EN | PIN_PULLDOWN, /* MRDY */
|
||||
PIN_TERMINATE};
|
||||
|
||||
const PINCC26XX_HWAttrs PINCC26XX_hwAttrs = {
|
||||
//
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0
|
||||
//
|
||||
};
|
||||
/*============================================================================*/
|
||||
|
||||
@@ -96,13 +99,14 @@ const PINCC26XX_HWAttrs PINCC26XX_hwAttrs = {
|
||||
#if defined(__TI_COMPILER_VERSION__)
|
||||
#pragma DATA_SECTION(PowerCC26XX_config, ".const:PowerCC26XX_config")
|
||||
#endif
|
||||
|
||||
const PowerCC26XX_Config PowerCC26XX_config = {
|
||||
.policyInitFxn = NULL,
|
||||
.policyFxn = &PowerCC26XX_standbyPolicy,
|
||||
.calibrateFxn = &PowerCC26XX_calibrate,
|
||||
.enablePolicy = TRUE,
|
||||
.calibrateRCOSC_LF = TRUE,
|
||||
.calibrateRCOSC_HF = TRUE,
|
||||
.policyInitFxn = NULL,
|
||||
.policyFxn = &PowerCC26XX_standbyPolicy,
|
||||
.calibrateFxn = &PowerCC26XX_calibrate,
|
||||
.enablePolicy = TRUE,
|
||||
.calibrateRCOSC_LF = TRUE,
|
||||
.calibrateRCOSC_HF = TRUE,
|
||||
};
|
||||
/*
|
||||
* ============================= Power end ====================================
|
||||
@@ -126,28 +130,32 @@ UARTCC26XX_Object uartCC26XXObjects[BOOSTXL_CC2650MA_UARTCOUNT];
|
||||
|
||||
/* UART hardware parameter structure, also used to assign UART pins */
|
||||
const UARTCC26XX_HWAttrsV2 uartCC26XXHWAttrs[BOOSTXL_CC2650MA_UARTCOUNT] = {
|
||||
//
|
||||
{
|
||||
.baseAddr = UART0_BASE,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_UART0,
|
||||
.intNum = INT_UART0_COMB,
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0,
|
||||
.txPin = Board_UART_TX,
|
||||
.rxPin = Board_UART_RX,
|
||||
.ctsPin = PIN_UNASSIGNED,
|
||||
.rtsPin = PIN_UNASSIGNED
|
||||
.baseAddr = UART0_BASE,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_UART0,
|
||||
.intNum = INT_UART0_COMB,
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0,
|
||||
.txPin = Board_UART_TX,
|
||||
.rxPin = Board_UART_RX,
|
||||
.ctsPin = PIN_UNASSIGNED,
|
||||
.rtsPin = PIN_UNASSIGNED
|
||||
//
|
||||
}
|
||||
//
|
||||
};
|
||||
|
||||
/* UART configuration structure */
|
||||
const UART_Config UART_config[] = {
|
||||
const UART_Config UART_config[] = { //
|
||||
{
|
||||
//
|
||||
.fxnTablePtr = &UARTCC26XX_fxnTable,
|
||||
.object = &uartCC26XXObjects[0],
|
||||
.hwAttrs = &uartCC26XXHWAttrs[0]
|
||||
//
|
||||
},
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
{NULL, NULL, NULL}};
|
||||
/*
|
||||
* ============================= UART end =====================================
|
||||
*/
|
||||
@@ -169,22 +177,27 @@ UDMACC26XX_Object udmaObjects[BOOSTXL_CC2650MA_UDMACOUNT];
|
||||
|
||||
/* UDMA configuration structure */
|
||||
const UDMACC26XX_HWAttrs udmaHWAttrs[BOOSTXL_CC2650MA_UDMACOUNT] = {
|
||||
//
|
||||
{
|
||||
//
|
||||
.baseAddr = UDMA0_BASE,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_UDMA,
|
||||
.intNum = INT_DMA_ERR,
|
||||
.intPriority = ~0
|
||||
//
|
||||
}
|
||||
//
|
||||
};
|
||||
|
||||
/* UDMA configuration structure */
|
||||
const UDMACC26XX_Config UDMACC26XX_config[] = {
|
||||
const UDMACC26XX_Config UDMACC26XX_config[] = { //
|
||||
{
|
||||
.object = &udmaObjects[0],
|
||||
.hwAttrs = &udmaHWAttrs[0]
|
||||
//
|
||||
.object = &udmaObjects[0],
|
||||
.hwAttrs = &udmaHWAttrs[0]
|
||||
//
|
||||
},
|
||||
{NULL, NULL}
|
||||
};
|
||||
{NULL, NULL}};
|
||||
/*
|
||||
* ============================= UDMA end =====================================
|
||||
*/
|
||||
@@ -205,41 +218,65 @@ const UDMACC26XX_Config UDMACC26XX_config[] = {
|
||||
SPICC26XXDMA_Object spiCC26XXDMAObjects[BOOSTXL_CC2650MA_SPICOUNT];
|
||||
|
||||
/* SPI configuration structure, describing which pins are to be used */
|
||||
const SPICC26XXDMA_HWAttrsV1 spiCC26XXDMAHWAttrs[BOOSTXL_CC2650MA_UDMACOUNT] = {
|
||||
const SPICC26XXDMA_HWAttrsV1 spiCC26XXDMAHWAttrs[BOOSTXL_CC2650MA_SPICOUNT] = {
|
||||
//
|
||||
{
|
||||
.baseAddr = SSI0_BASE,
|
||||
.intNum = INT_SSI0_COMB,
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_SSI0,
|
||||
.defaultTxBufValue = 0,
|
||||
.rxChannelBitMask = 1<<UDMA_CHAN_SSI0_RX,
|
||||
.txChannelBitMask = 1<<UDMA_CHAN_SSI0_TX,
|
||||
.mosiPin = Board_SPI0_MOSI,
|
||||
.misoPin = Board_SPI0_MISO,
|
||||
.clkPin = Board_SPI0_CLK,
|
||||
.csnPin = Board_SPI0_CS
|
||||
//
|
||||
.baseAddr = SSI0_BASE,
|
||||
.intNum = INT_SSI0_COMB,
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_SSI0,
|
||||
.defaultTxBufValue = 0,
|
||||
.rxChannelBitMask = 1 << UDMA_CHAN_SSI0_RX,
|
||||
.txChannelBitMask = 1 << UDMA_CHAN_SSI0_TX,
|
||||
.mosiPin = Board_SPI0_MOSI,
|
||||
.misoPin = Board_SPI0_MISO,
|
||||
.clkPin = Board_SPI0_CLK,
|
||||
.csnPin = Board_SPI0_CS
|
||||
//
|
||||
},
|
||||
#ifdef HEADSTAGE_MA_USE_SPI2
|
||||
{
|
||||
//
|
||||
.baseAddr = SSI1_BASE,
|
||||
.intNum = INT_SSI1_COMB,
|
||||
.intPriority = ~0,
|
||||
.swiPriority = 0,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_SSI1,
|
||||
.defaultTxBufValue = 0,
|
||||
.rxChannelBitMask = 1 << UDMA_CHAN_SSI1_RX,
|
||||
.txChannelBitMask = 1 << UDMA_CHAN_SSI1_TX,
|
||||
.mosiPin = Board_SPI1_MOSI,
|
||||
.misoPin = Board_SPI1_MISO,
|
||||
.clkPin = Board_SPI1_CLK,
|
||||
.csnPin = Board_SPI1_CS //
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
/* SPI configuration structure */
|
||||
const SPI_Config SPI_config[] = {
|
||||
const SPI_Config SPI_config[] = { //
|
||||
{
|
||||
.fxnTablePtr = &SPICC26XXDMA_fxnTable,
|
||||
.object = &spiCC26XXDMAObjects[0],
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[0]
|
||||
//
|
||||
.fxnTablePtr = &SPICC26XXDMA_fxnTable,
|
||||
.object = &spiCC26XXDMAObjects[0],
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[0]
|
||||
//
|
||||
},
|
||||
#ifdef HEADSTAGE_MA_USE_SPI2
|
||||
{
|
||||
.fxnTablePtr = &SPICC26XXDMA_fxnTable,
|
||||
.object = &spiCC26XXDMAObjects[1],
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[1]
|
||||
//
|
||||
.fxnTablePtr = &SPICC26XXDMA_fxnTable,
|
||||
.object = &spiCC26XXDMAObjects[1],
|
||||
.hwAttrs = &spiCC26XXDMAHWAttrs[1]
|
||||
//
|
||||
},
|
||||
{NULL, NULL, NULL}
|
||||
};
|
||||
#endif
|
||||
{NULL, NULL, NULL}};
|
||||
/*
|
||||
* ========================== SPI DMA end =====================================
|
||||
*/
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
* ========================== Crypto begin ====================================
|
||||
@@ -259,28 +296,28 @@ const SPI_Config SPI_config[] = {
|
||||
CryptoCC26XX_Object cryptoCC26XXObjects[BOOSTXL_CC2650MA_CRYPTOCOUNT];
|
||||
|
||||
/* Crypto configuration structure, describing which pins are to be used */
|
||||
const CryptoCC26XX_HWAttrs cryptoCC26XXHWAttrs[BOOSTXL_CC2650MA_CRYPTOCOUNT] = {
|
||||
{
|
||||
.baseAddr = CRYPTO_BASE,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_CRYPTO,
|
||||
.intNum = INT_CRYPTO_RESULT_AVAIL_IRQ,
|
||||
.intPriority = ~0,
|
||||
}
|
||||
};
|
||||
const CryptoCC26XX_HWAttrs cryptoCC26XXHWAttrs[BOOSTXL_CC2650MA_CRYPTOCOUNT] = {{
|
||||
//
|
||||
.baseAddr = CRYPTO_BASE,
|
||||
.powerMngrId = PowerCC26XX_PERIPH_CRYPTO,
|
||||
.intNum = INT_CRYPTO_RESULT_AVAIL_IRQ,
|
||||
.intPriority = ~0,
|
||||
//
|
||||
}};
|
||||
|
||||
/* Crypto configuration structure */
|
||||
const CryptoCC26XX_Config CryptoCC26XX_config[] = {
|
||||
const CryptoCC26XX_Config CryptoCC26XX_config[] = { //
|
||||
{
|
||||
.object = &cryptoCC26XXObjects[0],
|
||||
.hwAttrs = &cryptoCC26XXHWAttrs[0]
|
||||
//
|
||||
.object = &cryptoCC26XXObjects[0],
|
||||
.hwAttrs = &cryptoCC26XXHWAttrs[0]
|
||||
//
|
||||
},
|
||||
{NULL, NULL}
|
||||
};
|
||||
{NULL, NULL}};
|
||||
/*
|
||||
* ========================== Crypto end ======================================
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* ========================= RF driver begin ==================================
|
||||
*/
|
||||
@@ -294,10 +331,12 @@ const CryptoCC26XX_Config CryptoCC26XX_config[] = {
|
||||
|
||||
/* RF hwi and swi priority */
|
||||
const RFCC26XX_HWAttrs RFCC26XX_hwAttrs = {
|
||||
//
|
||||
.hwiCpe0Priority = ~0,
|
||||
.hwiHwPriority = ~0,
|
||||
.swiCpe0Priority = 5,
|
||||
.swiHwPriority = 5,
|
||||
.swiCpe0Priority = 5,
|
||||
.swiHwPriority = 5,
|
||||
//
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -320,20 +359,21 @@ const RFCC26XX_HWAttrs RFCC26XX_hwAttrs = {
|
||||
TRNGCC26XX_Object trngCC26XXObjects[BOOSTXL_CC2650MA_TRNGCOUNT];
|
||||
|
||||
/* TRNG configuration structure, describing which pins are to be used */
|
||||
const TRNGCC26XX_HWAttrs TRNGCC26XXHWAttrs[BOOSTXL_CC2650MA_TRNGCOUNT] = {
|
||||
{
|
||||
.powerMngrId = PowerCC26XX_PERIPH_TRNG,
|
||||
}
|
||||
};
|
||||
const TRNGCC26XX_HWAttrs TRNGCC26XXHWAttrs[BOOSTXL_CC2650MA_TRNGCOUNT] = {{
|
||||
//
|
||||
.powerMngrId = PowerCC26XX_PERIPH_TRNG,
|
||||
//
|
||||
}};
|
||||
|
||||
/* TRNG configuration structure */
|
||||
const TRNGCC26XX_Config TRNGCC26XX_config[] = {
|
||||
const TRNGCC26XX_Config TRNGCC26XX_config[] = { //
|
||||
{
|
||||
.object = &trngCC26XXObjects[0],
|
||||
.hwAttrs = &TRNGCC26XXHWAttrs[0]
|
||||
//
|
||||
.object = &trngCC26XXObjects[0],
|
||||
.hwAttrs = &TRNGCC26XXHWAttrs[0]
|
||||
//
|
||||
},
|
||||
{NULL, NULL}
|
||||
};
|
||||
{NULL, NULL}};
|
||||
|
||||
/*
|
||||
* ========================= TRNG end ====================================
|
||||
@@ -351,14 +391,62 @@ const TRNGCC26XX_Config TRNGCC26XX_config[] = {
|
||||
|
||||
/* GPTimer hardware attributes, one per timer part (Timer 0A, 0B, 1A, 1B..) */
|
||||
const GPTimerCC26XX_HWAttrs gptimerCC26xxHWAttrs[BOOSTXL_CC2650MA_GPTIMERPARTSCOUNT] = {
|
||||
{ .baseAddr = GPT0_BASE, .intNum = INT_GPT0A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT0, .pinMux = GPT_PIN_0A, },
|
||||
{ .baseAddr = GPT0_BASE, .intNum = INT_GPT0B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT0, .pinMux = GPT_PIN_0B, },
|
||||
{ .baseAddr = GPT1_BASE, .intNum = INT_GPT1A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT1, .pinMux = GPT_PIN_1A, },
|
||||
{ .baseAddr = GPT1_BASE, .intNum = INT_GPT1B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT1, .pinMux = GPT_PIN_1B, },
|
||||
{ .baseAddr = GPT2_BASE, .intNum = INT_GPT2A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT2, .pinMux = GPT_PIN_2A, },
|
||||
{ .baseAddr = GPT2_BASE, .intNum = INT_GPT2B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT2, .pinMux = GPT_PIN_2B, },
|
||||
{ .baseAddr = GPT3_BASE, .intNum = INT_GPT3A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT3, .pinMux = GPT_PIN_3A, },
|
||||
{ .baseAddr = GPT3_BASE, .intNum = INT_GPT3B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT3, .pinMux = GPT_PIN_3B, },
|
||||
{
|
||||
.baseAddr = GPT0_BASE,
|
||||
.intNum = INT_GPT0A,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT0,
|
||||
.pinMux = GPT_PIN_0A,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT0_BASE,
|
||||
.intNum = INT_GPT0B,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT0,
|
||||
.pinMux = GPT_PIN_0B,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT1_BASE,
|
||||
.intNum = INT_GPT1A,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT1,
|
||||
.pinMux = GPT_PIN_1A,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT1_BASE,
|
||||
.intNum = INT_GPT1B,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT1,
|
||||
.pinMux = GPT_PIN_1B,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT2_BASE,
|
||||
.intNum = INT_GPT2A,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT2,
|
||||
.pinMux = GPT_PIN_2A,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT2_BASE,
|
||||
.intNum = INT_GPT2B,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT2,
|
||||
.pinMux = GPT_PIN_2B,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT3_BASE,
|
||||
.intNum = INT_GPT3A,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT3,
|
||||
.pinMux = GPT_PIN_3A,
|
||||
},
|
||||
{
|
||||
.baseAddr = GPT3_BASE,
|
||||
.intNum = INT_GPT3B,
|
||||
.intPriority = (~0),
|
||||
.powerMngrId = PowerCC26XX_PERIPH_GPT3,
|
||||
.pinMux = GPT_PIN_3B,
|
||||
},
|
||||
};
|
||||
|
||||
/* GPTimer objects, one per full-width timer (A+B) (Timer 0, Timer 1..) */
|
||||
@@ -366,14 +454,15 @@ GPTimerCC26XX_Object gptimerCC26XXObjects[BOOSTXL_CC2650MA_GPTIMERCOUNT];
|
||||
|
||||
/* GPTimer configuration (used as GPTimer_Handle by driver and application) */
|
||||
const GPTimerCC26XX_Config GPTimerCC26XX_config[BOOSTXL_CC2650MA_GPTIMERPARTSCOUNT] = {
|
||||
{ &gptimerCC26XXObjects[0], &gptimerCC26xxHWAttrs[0], GPT_A },
|
||||
{ &gptimerCC26XXObjects[0], &gptimerCC26xxHWAttrs[1], GPT_B },
|
||||
{ &gptimerCC26XXObjects[1], &gptimerCC26xxHWAttrs[2], GPT_A },
|
||||
{ &gptimerCC26XXObjects[1], &gptimerCC26xxHWAttrs[3], GPT_B },
|
||||
{ &gptimerCC26XXObjects[2], &gptimerCC26xxHWAttrs[4], GPT_A },
|
||||
{ &gptimerCC26XXObjects[2], &gptimerCC26xxHWAttrs[5], GPT_B },
|
||||
{ &gptimerCC26XXObjects[3], &gptimerCC26xxHWAttrs[6], GPT_A },
|
||||
{ &gptimerCC26XXObjects[3], &gptimerCC26xxHWAttrs[7], GPT_B },
|
||||
//
|
||||
{&gptimerCC26XXObjects[0], &gptimerCC26xxHWAttrs[0], GPT_A},
|
||||
{&gptimerCC26XXObjects[0], &gptimerCC26xxHWAttrs[1], GPT_B},
|
||||
{&gptimerCC26XXObjects[1], &gptimerCC26xxHWAttrs[2], GPT_A},
|
||||
{&gptimerCC26XXObjects[1], &gptimerCC26xxHWAttrs[3], GPT_B},
|
||||
{&gptimerCC26XXObjects[2], &gptimerCC26xxHWAttrs[4], GPT_A},
|
||||
{&gptimerCC26XXObjects[2], &gptimerCC26xxHWAttrs[5], GPT_B},
|
||||
{&gptimerCC26XXObjects[3], &gptimerCC26xxHWAttrs[6], GPT_A},
|
||||
{&gptimerCC26XXObjects[3], &gptimerCC26xxHWAttrs[7], GPT_B},
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -391,14 +480,15 @@ const GPTimerCC26XX_Config GPTimerCC26XX_config[BOOSTXL_CC2650MA_GPTIMERPARTSCOU
|
||||
#endif
|
||||
/* PWM configuration, one per PWM output. */
|
||||
PWMTimerCC26XX_HwAttrs pwmtimerCC26xxHWAttrs[BOOSTXL_CC2650MA_PWMCOUNT] = {
|
||||
{ .pwmPin = Board_PWMPIN0, .gpTimerUnit = Board_GPTIMER0A },
|
||||
{ .pwmPin = Board_PWMPIN1, .gpTimerUnit = Board_GPTIMER0B },
|
||||
{ .pwmPin = Board_PWMPIN2, .gpTimerUnit = Board_GPTIMER1A },
|
||||
{ .pwmPin = Board_PWMPIN3, .gpTimerUnit = Board_GPTIMER1B },
|
||||
{ .pwmPin = Board_PWMPIN4, .gpTimerUnit = Board_GPTIMER2A },
|
||||
{ .pwmPin = Board_PWMPIN5, .gpTimerUnit = Board_GPTIMER2B },
|
||||
{ .pwmPin = Board_PWMPIN6, .gpTimerUnit = Board_GPTIMER3A },
|
||||
{ .pwmPin = Board_PWMPIN7, .gpTimerUnit = Board_GPTIMER3B },
|
||||
//
|
||||
{.pwmPin = Board_PWMPIN0, .gpTimerUnit = Board_GPTIMER0A},
|
||||
{.pwmPin = Board_PWMPIN1, .gpTimerUnit = Board_GPTIMER0B},
|
||||
{.pwmPin = Board_PWMPIN2, .gpTimerUnit = Board_GPTIMER1A},
|
||||
{.pwmPin = Board_PWMPIN3, .gpTimerUnit = Board_GPTIMER1B},
|
||||
{.pwmPin = Board_PWMPIN4, .gpTimerUnit = Board_GPTIMER2A},
|
||||
{.pwmPin = Board_PWMPIN5, .gpTimerUnit = Board_GPTIMER2B},
|
||||
{.pwmPin = Board_PWMPIN6, .gpTimerUnit = Board_GPTIMER3A},
|
||||
{.pwmPin = Board_PWMPIN7, .gpTimerUnit = Board_GPTIMER3B},
|
||||
};
|
||||
|
||||
/* PWM object, one per PWM output */
|
||||
@@ -408,18 +498,170 @@ extern const PWM_FxnTable PWMTimerCC26XX_fxnTable;
|
||||
|
||||
/* PWM configuration (used as PWM_Handle by driver and application) */
|
||||
const PWM_Config PWM_config[BOOSTXL_CC2650MA_PWMCOUNT + 1] = {
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[0], &pwmtimerCC26xxHWAttrs[0] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[1], &pwmtimerCC26xxHWAttrs[1] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[2], &pwmtimerCC26xxHWAttrs[2] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[3], &pwmtimerCC26xxHWAttrs[3] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[4], &pwmtimerCC26xxHWAttrs[4] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[5], &pwmtimerCC26xxHWAttrs[5] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[6], &pwmtimerCC26xxHWAttrs[6] },
|
||||
{ &PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[7], &pwmtimerCC26xxHWAttrs[7] },
|
||||
{ NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
//
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[0], &pwmtimerCC26xxHWAttrs[0]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[1], &pwmtimerCC26xxHWAttrs[1]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[2], &pwmtimerCC26xxHWAttrs[2]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[3], &pwmtimerCC26xxHWAttrs[3]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[4], &pwmtimerCC26xxHWAttrs[4]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[5], &pwmtimerCC26xxHWAttrs[5]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[6], &pwmtimerCC26xxHWAttrs[6]},
|
||||
{&PWMTimerCC26XX_fxnTable, &pwmtimerCC26xxObjects[7], &pwmtimerCC26xxHWAttrs[7]},
|
||||
{NULL, NULL, NULL}};
|
||||
|
||||
/*
|
||||
* ============================= 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 ======================================
|
||||
*/
|
||||
@@ -133,7 +133,6 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_BP_SPI_CS_Other Board_BP_Pin_J2_12
|
||||
#define Board_BP_GPIO_2 Board_BP_Pin_J2_11
|
||||
|
||||
|
||||
/* Mapping of application specific functionality of the BoosterPack to BoosterPack Pins (application dependent)
|
||||
*/
|
||||
|
||||
@@ -151,6 +150,11 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_SPI0_CLK Board_BP_SPI_CLK
|
||||
#define Board_SPI0_CS Board_BP_SPI_CS_Wireless
|
||||
|
||||
#define Board_SPI1_MISO PIN_UNASSIGNED
|
||||
#define Board_SPI1_MOSI PIN_UNASSIGNED
|
||||
#define Board_SPI1_CLK PIN_UNASSIGNED
|
||||
#define Board_SPI1_CS PIN_UNASSIGNED
|
||||
|
||||
/* Power Management Board */
|
||||
#define Board_SRDY Board_BP_Pin_J2_19
|
||||
#define Board_MRDY Board_BP_Pin_J1_2
|
||||
@@ -165,15 +169,24 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_PWMPIN6 PIN_UNASSIGNED
|
||||
#define Board_PWMPIN7 PIN_UNASSIGNED
|
||||
|
||||
|
||||
/** ============================================================================
|
||||
* Instance identifiers
|
||||
* ==========================================================================*/
|
||||
|
||||
/* Generic SPI instance identifiers */
|
||||
#define Board_SPI0 BOOSTXL_CC2650MA_SPI0
|
||||
|
||||
#ifdef HEADSTAGE_MA_USE_SPI2
|
||||
#define Board_SPI1 BOOSTXL_CC2650MA_SPI1
|
||||
#endif
|
||||
|
||||
/* Generic UART instance identifiers */
|
||||
#define Board_UART BOOSTXL_CC2650MA_UART0
|
||||
|
||||
/* Generic TRNG instance identiifer */
|
||||
#define Board_TRNG BOOSTXL_CC2650MA_TRNG0
|
||||
|
||||
/* Generic GPTimer instance identifiers */
|
||||
#define Board_GPTIMER0A BOOSTXL_CC2650MA_GPTIMER0A
|
||||
#define Board_GPTIMER0B BOOSTXL_CC2650MA_GPTIMER0B
|
||||
@@ -183,6 +196,7 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_GPTIMER2B BOOSTXL_CC2650MA_GPTIMER2B
|
||||
#define Board_GPTIMER3A BOOSTXL_CC2650MA_GPTIMER3A
|
||||
#define Board_GPTIMER3B BOOSTXL_CC2650MA_GPTIMER3B
|
||||
|
||||
/* Generic PWM instance identifiers */
|
||||
#define Board_PWM0 BOOSTXL_CC2650MA_PWM0
|
||||
#define Board_PWM1 BOOSTXL_CC2650MA_PWM1
|
||||
@@ -215,6 +229,10 @@ typedef enum BOOSTXL_CC2650MA_CryptoName {
|
||||
typedef enum BOOSTXL_CC2650MA_SPIName {
|
||||
BOOSTXL_CC2650MA_SPI0 = 0,
|
||||
|
||||
#ifdef HEADSTAGE_MA_USE_SPI2
|
||||
BOOSTXL_CC2650MA_SPI1 ,
|
||||
#endif
|
||||
|
||||
BOOSTXL_CC2650MA_SPICOUNT
|
||||
} BOOSTXL_CC2650MA_SPIName;
|
||||
|
||||
@@ -294,6 +312,29 @@ typedef enum BOOSTXL_CC2650MA_PWM
|
||||
BOOSTXL_CC2650MA_PWMCOUNT
|
||||
} BOOSTXL_CC2650MA_PWM;
|
||||
|
||||
#ifdef HEADSTAGE_MA_USE_ADC
|
||||
|
||||
/*!
|
||||
* @def BOOSTXL_CC2650MA_ADCName
|
||||
* @brief Enum of ADCs
|
||||
*/
|
||||
typedef enum BOOSTXL_CC2650MA_ADCName {
|
||||
BOOSTXL_CC2650MA_ADC0 = 0,
|
||||
BOOSTXL_CC2650MA_ADC1,
|
||||
BOOSTXL_CC2650MA_ADC2,
|
||||
BOOSTXL_CC2650MA_ADC3,
|
||||
BOOSTXL_CC2650MA_ADC4,
|
||||
BOOSTXL_CC2650MA_ADC5,
|
||||
BOOSTXL_CC2650MA_ADC6,
|
||||
BOOSTXL_CC2650MA_ADC7,
|
||||
BOOSTXL_CC2650MA_ADCDCOUPL,
|
||||
BOOSTXL_CC2650MA_ADCVSS,
|
||||
BOOSTXL_CC2650MA_ADCVDDS,
|
||||
BOOSTXL_CC2650MA_ADCCOUNT
|
||||
} BOOSTXL_CC2650MA_ADCName;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -130,27 +130,31 @@ 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 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 IOID_11
|
||||
|
||||
/** ============================================================================
|
||||
* Instance identifiers
|
||||
* ==========================================================================*/
|
||||
/* Generic I2C instance identifiers */
|
||||
#define Board_I2C CC2650_LAUNCHXL_I2C0
|
||||
|
||||
/* Generic SPI instance identifiers */
|
||||
#define Board_SPI0 CC2650_LAUNCHXL_SPI0
|
||||
#define Board_SPI1 CC2650_LAUNCHXL_SPI1
|
||||
|
||||
/* Generic UART instance identifiers */
|
||||
#define Board_UART CC2650_LAUNCHXL_UART0
|
||||
|
||||
/* Generic Crypto instance identifiers */
|
||||
#define Board_CRYPTO CC2650_LAUNCHXL_CRYPTO0
|
||||
|
||||
/* Generic GPTimer instance identifiers */
|
||||
#define Board_GPTIMER0A CC2650_LAUNCHXL_GPTIMER0A
|
||||
#define Board_GPTIMER0B CC2650_LAUNCHXL_GPTIMER0B
|
||||
@@ -160,6 +164,7 @@ extern const PIN_Config BoardGpioInitTable[];
|
||||
#define Board_GPTIMER2B CC2650_LAUNCHXL_GPTIMER2B
|
||||
#define Board_GPTIMER3A CC2650_LAUNCHXL_GPTIMER3A
|
||||
#define Board_GPTIMER3B CC2650_LAUNCHXL_GPTIMER3B
|
||||
|
||||
/* Generic PWM instance identifiers */
|
||||
#define Board_PWM0 CC2650_LAUNCHXL_PWM0
|
||||
#define Board_PWM1 CC2650_LAUNCHXL_PWM1
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
Target Device: CC2650, CC2640
|
||||
|
||||
******************************************************************************
|
||||
|
||||
|
||||
Copyright (c) 2013-2018, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
@@ -45,10 +45,11 @@
|
||||
Release Date: 2018-04-02 18:03:35
|
||||
*****************************************************************************/
|
||||
|
||||
/*********************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
/*================
|
||||
==== include ====
|
||||
===============*/
|
||||
|
||||
// clang-format off
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/hal/Hwi.h>
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
@@ -71,7 +72,6 @@
|
||||
#include "icall_apimsg.h"
|
||||
|
||||
#include "util.h"
|
||||
#include <ti/mw/display/Display.h>
|
||||
|
||||
#include "inc/npi_ble.h"
|
||||
#include "inc/npi_task.h"
|
||||
@@ -88,13 +88,20 @@
|
||||
|
||||
#include "host_test_app.h"
|
||||
|
||||
#if defined( USE_FPGA ) || defined( DEBUG_SW_TRACE )
|
||||
#include <driverlib/ioc.h>
|
||||
#endif // USE_FPGA | DEBUG_SW_TRACE
|
||||
#include "master/cc2650_master.h"
|
||||
|
||||
/*********************************************************************
|
||||
* CONSTANTS
|
||||
// clang-format on
|
||||
|
||||
/*=================
|
||||
==== constant ====
|
||||
=================*/
|
||||
|
||||
// clang-format off
|
||||
|
||||
/*
|
||||
* GAP GATT Attributes
|
||||
*/
|
||||
#define DEVICE_NAME "BioProController"
|
||||
|
||||
// LE Event Lengths
|
||||
#define HCI_CMD_COMPLETE_EVENT_LEN 3
|
||||
@@ -106,60 +113,38 @@
|
||||
#define HTA_TASK_PRIORITY 1
|
||||
#define HTA_TASK_STACK_SIZE 644
|
||||
|
||||
/*********************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
// data length extension
|
||||
#define APP_SUGGESTED_PDU_SIZE 251
|
||||
#define APP_SUGGESTED_TX_TIME 2120
|
||||
|
||||
// Display Interface
|
||||
Display_Handle dispHandle = NULL;
|
||||
// clang-format on
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL VARIABLES
|
||||
*/
|
||||
// Entity ID globally used to check for source and/or destination of messages
|
||||
static ICall_EntityID selfEntity;
|
||||
static ICall_EntityID self;
|
||||
|
||||
// Semaphore globally used to post events to the application thread
|
||||
static ICall_Semaphore sem;
|
||||
static ICall_Semaphore semaphore;
|
||||
|
||||
// Task configuration
|
||||
Task_Struct htaTask;
|
||||
Char htaTaskStack[HTA_TASK_STACK_SIZE];
|
||||
Char htaTaskStack[HTA_TASK_STACK_SIZE];
|
||||
|
||||
#if !defined ( GATT_DB_OFF_CHIP )
|
||||
static uint8 deviceName[GAP_DEVICE_NAME_LEN] = { 0 };
|
||||
static uint16 appearance = 17;
|
||||
#endif
|
||||
|
||||
// Stack build revision
|
||||
ICall_BuildRevision buildRev;
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL FUNCTIONS
|
||||
*/
|
||||
/*=========================
|
||||
==== function declare ====
|
||||
========================*/
|
||||
|
||||
static void HostTestApp_init(void);
|
||||
static void HostTestApp_taskFxn(UArg a0, UArg a1);
|
||||
|
||||
static void HostTestApp_processGapEvent(ICall_HciExtEvt *pMsg);
|
||||
static void HostTestApp_processAttEvent(ICall_HciExtEvt *pMsg);
|
||||
static void HostTestApp_processBLEEvent(ICall_HciExtEvt *pMsg);
|
||||
|
||||
static void sendCommandCompleteEvent(uint8 eventCode, uint16 opcode,
|
||||
uint8 numParam, uint8 *param);
|
||||
static void sendCommandStatusEvent(uint8_t eventCode, uint16_t status,
|
||||
uint16_t opcode);
|
||||
static void sendCommandCompleteEvent(uint8 eventCode, uint16 opcode, uint8 numParam, uint8 *param);
|
||||
static void sendCommandStatusEvent(uint8_t eventCode, uint16_t status, uint16_t opcode);
|
||||
static void sendBLECompleteEvent(uint8 eventLen, uint8 *pEvent);
|
||||
|
||||
/*********************************************************************
|
||||
* EXTERN FUNCTIONS
|
||||
*/
|
||||
extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
|
||||
|
||||
/*********************************************************************
|
||||
* PUBLIC FUNCTIONS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
/**
|
||||
* @fn HostTestApp_createTask
|
||||
*
|
||||
* @brief Task creation function for the Host Test App.
|
||||
@@ -168,20 +153,19 @@ extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void HostTestApp_createTask(void)
|
||||
{
|
||||
Task_Params taskParams;
|
||||
void HostTestApp_createTask(void) {
|
||||
Task_Params taskParams;
|
||||
|
||||
// Configure task
|
||||
Task_Params_init(&taskParams);
|
||||
taskParams.stack = htaTaskStack;
|
||||
taskParams.stackSize = HTA_TASK_STACK_SIZE;
|
||||
taskParams.priority = HTA_TASK_PRIORITY;
|
||||
// Configure task
|
||||
Task_Params_init(&taskParams);
|
||||
taskParams.stack = htaTaskStack;
|
||||
taskParams.stackSize = HTA_TASK_STACK_SIZE;
|
||||
taskParams.priority = HTA_TASK_PRIORITY;
|
||||
|
||||
Task_construct(&htaTask, HostTestApp_taskFxn, &taskParams, NULL);
|
||||
Task_construct(&htaTask, HostTestApp_taskFxn, &taskParams, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
/**
|
||||
* @fn HostTestApp_init
|
||||
*
|
||||
* @brief Called during initialization and contains application
|
||||
@@ -193,117 +177,34 @@ void HostTestApp_createTask(void)
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_init(void)
|
||||
{
|
||||
// Register the current thread as an ICall dispatcher application
|
||||
// so that the application can send and receive messages.
|
||||
ICall_registerApp(&selfEntity, &sem);
|
||||
static void HostTestApp_init(void) {
|
||||
// Register the current thread as an ICall dispatcher application
|
||||
// so that the application can send and receive messages.
|
||||
ICall_registerApp(&self, &semaphore);
|
||||
|
||||
#if defined( USE_FPGA )
|
||||
// configure RF Core SMI Data Link
|
||||
IOCPortConfigureSet(IOID_12, IOC_PORT_RFC_GPO0, IOC_STD_OUTPUT);
|
||||
IOCPortConfigureSet(IOID_11, IOC_PORT_RFC_GPI0, IOC_STD_INPUT);
|
||||
// Set device's Sleep Clock Accuracy
|
||||
// HCI_EXT_SetSCACmd(40);
|
||||
|
||||
// configure RF Core SMI Command Link
|
||||
IOCPortConfigureSet(IOID_10, IOC_IOCFG0_PORT_ID_RFC_SMI_CL_OUT, IOC_STD_OUTPUT);
|
||||
IOCPortConfigureSet(IOID_9, IOC_IOCFG0_PORT_ID_RFC_SMI_CL_IN, IOC_STD_INPUT);
|
||||
#if defined(USE_RCOSC)
|
||||
RCOSC_enableCalibration();
|
||||
#endif // USE_RCOSC
|
||||
|
||||
// configure RF Core tracer IO
|
||||
IOCPortConfigureSet(IOID_8, IOC_PORT_RFC_TRC, IOC_STD_OUTPUT);
|
||||
#else // !USE_FPGA
|
||||
#if defined( DEBUG_SW_TRACE )
|
||||
// configure RF Core tracer IO
|
||||
IOCPortConfigureSet(IOID_8, IOC_PORT_RFC_TRC, IOC_STD_OUTPUT | IOC_CURRENT_4MA | IOC_SLEW_ENABLE);
|
||||
#endif // DEBUG_SW_TRACE
|
||||
#endif // USE_FPGA
|
||||
// Initialize GATT Client
|
||||
VOID GATT_InitClient();
|
||||
|
||||
// Set device's Sleep Clock Accuracy
|
||||
//HCI_EXT_SetSCACmd(40);
|
||||
// Register to receive incoming ATT Indications or Notifications of attribute values.
|
||||
GATT_RegisterForInd(self);
|
||||
|
||||
#if defined( USE_RCOSC )
|
||||
RCOSC_enableCalibration();
|
||||
#endif // USE_RCOSC
|
||||
// Register for unprocessed HCI/Host event messages
|
||||
GAP_RegisterForMsgs(self);
|
||||
|
||||
dispHandle = Display_open(Display_Type_LCD, NULL);
|
||||
GGS_SetParameter(GGS_DEVICE_NAME_ATT, strlen(DEVICE_NAME), (void *)DEVICE_NAME);
|
||||
|
||||
// Register for unprocessed HCI/Host event messages
|
||||
GAP_RegisterForMsgs(selfEntity);
|
||||
|
||||
// Initialize GATT Client
|
||||
VOID GATT_InitClient();
|
||||
|
||||
// Get build revision
|
||||
VOID Util_buildRevision(&buildRev);
|
||||
|
||||
#if !defined ( GATT_DB_OFF_CHIP )
|
||||
|
||||
#if defined ( GATT_QUAL )
|
||||
VOID GATTQual_AddService( GATT_ALL_SERVICES ); // Includes GAP and GATT Services
|
||||
#else
|
||||
// Add our services to GATT Server
|
||||
VOID GGS_AddService( GATT_ALL_SERVICES );
|
||||
VOID GATTServApp_AddService( GATT_ALL_SERVICES );
|
||||
#if defined ( GATT_TEST )
|
||||
VOID GATTTest_AddService( GATT_ALL_SERVICES );
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Set device name
|
||||
if ((buildRev.hostInfo & CENTRAL_CFG) && (buildRev.hostInfo & PERIPHERAL_CFG))
|
||||
{
|
||||
memcpy(deviceName, "TI BLE All", 10);
|
||||
}
|
||||
else if (buildRev.hostInfo & CENTRAL_CFG)
|
||||
{
|
||||
memcpy(deviceName, "TI BLE Central", 14);
|
||||
}
|
||||
else if (buildRev.hostInfo & PERIPHERAL_CFG)
|
||||
{
|
||||
memcpy(deviceName, "TI BLE Peripheral", 17);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(deviceName, "TI BLE Unknown", 14);
|
||||
}
|
||||
|
||||
VOID GGS_SetParameter(GGS_DEVICE_NAME_ATT, strlen((char *)deviceName), deviceName);
|
||||
VOID GGS_SetParameter(GGS_APPEARANCE_ATT, sizeof(uint16), (void*)&appearance);
|
||||
|
||||
#endif // GATT_DB_OFF_CHIP
|
||||
|
||||
Display_print0(dispHandle, 0, 0, "TI BLEv2.0");
|
||||
Display_print0(dispHandle, 1, 0, "HostTestApp");
|
||||
|
||||
// Display Host build configuration
|
||||
if ((buildRev.hostInfo & CENTRAL_CFG) && (buildRev.hostInfo & PERIPHERAL_CFG))
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "All");
|
||||
}
|
||||
else if ((buildRev.hostInfo & CENTRAL_CFG) &&
|
||||
(buildRev.hostInfo & BROADCASTER_CFG))
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Cent+Bcast");
|
||||
}
|
||||
else if ((buildRev.hostInfo & PERIPHERAL_CFG) &&
|
||||
(buildRev.hostInfo & OBSERVER_CFG))
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Peri+Observ");
|
||||
}
|
||||
else if (buildRev.hostInfo & CENTRAL_CFG)
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Central");
|
||||
}
|
||||
else if (buildRev.hostInfo & PERIPHERAL_CFG)
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Peripheral");
|
||||
}
|
||||
else
|
||||
{
|
||||
Display_print1(dispHandle, 2, 0, "Unknown build cfg %d", buildRev.hostInfo);
|
||||
}
|
||||
// extend PDU size
|
||||
HCI_LE_WriteSuggestedDefaultDataLenCmd(APP_SUGGESTED_PDU_SIZE, APP_SUGGESTED_TX_TIME);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
/**
|
||||
* @fn HostTestApp_taskFxn
|
||||
*
|
||||
* @brief Application task entry point for the Host Test App.
|
||||
@@ -312,55 +213,54 @@ static void HostTestApp_init(void)
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_taskFxn(UArg a0, UArg a1)
|
||||
{
|
||||
// Initialize application
|
||||
HostTestApp_init();
|
||||
static void HostTestApp_taskFxn(UArg a0, UArg a1) {
|
||||
// Initialize application
|
||||
HostTestApp_init();
|
||||
master_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);
|
||||
// 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 (errno == ICALL_ERRNO_SUCCESS) {
|
||||
ICall_EntityID dest;
|
||||
ICall_ServiceEnum src;
|
||||
ICall_HciExtEvt * message = NULL;
|
||||
|
||||
if (ICall_fetchServiceMsg(&src, &dest,
|
||||
(void **)&pMsg) == ICALL_ERRNO_SUCCESS)
|
||||
{
|
||||
bool dealloc = true;
|
||||
if (ICall_fetchServiceMsg(&src, &dest, (void **)&message) == ICALL_ERRNO_SUCCESS) {
|
||||
if ((src == ICALL_SERVICE_CLASS_BLE) && (dest == self)) {
|
||||
// Process incoming messages
|
||||
switch (message->hdr.event) {
|
||||
case HCI_GAP_EVENT_EVENT:
|
||||
HostTestApp_processGapEvent(message);
|
||||
break;
|
||||
|
||||
if ((src == ICALL_SERVICE_CLASS_BLE) && (dest == selfEntity))
|
||||
{
|
||||
// Process incoming messages
|
||||
switch (pMsg->hdr.event)
|
||||
{
|
||||
case HCI_GAP_EVENT_EVENT:
|
||||
HostTestApp_processGapEvent(pMsg);
|
||||
break;
|
||||
case GATT_MSG_EVENT:
|
||||
HostTestApp_processAttEvent((gattMsgEvent_t *)message);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (message) {
|
||||
ICall_freeMsg(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dealloc == true)
|
||||
{
|
||||
ICall_freeMsg(pMsg);
|
||||
if (EVENT_MASK > 0) {
|
||||
master_event_handle();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
/**
|
||||
* @fn HostTestApp_processGapEvent
|
||||
*
|
||||
* @brief Process an incoming GAP Event.
|
||||
@@ -369,96 +269,102 @@ static void HostTestApp_taskFxn(UArg a0, UArg a1)
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_processGapEvent(ICall_HciExtEvt *pMsg)
|
||||
{
|
||||
switch(pMsg->hdr.status)
|
||||
{
|
||||
case HCI_COMMAND_COMPLETE_EVENT_CODE:
|
||||
{
|
||||
hciEvt_CmdComplete_t *pkt = (hciEvt_CmdComplete_t *)pMsg;
|
||||
static void HostTestApp_processGapEvent(ICall_HciExtEvt *message) {
|
||||
switch (message->hdr.status) {
|
||||
case HCI_COMMAND_COMPLETE_EVENT_CODE: {
|
||||
hciEvt_CmdComplete_t *pkt = (hciEvt_CmdComplete_t *)message;
|
||||
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode)
|
||||
{
|
||||
// app processes this as it was embedded msg to stack
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode) {
|
||||
// app processes this as it was embedded message to stack
|
||||
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
} else {
|
||||
osal_msg_hdr_t *msgHdr;
|
||||
uint8 len;
|
||||
|
||||
msgHdr = (osal_msg_hdr_t *)message;
|
||||
msgHdr--; // Backup to the message header
|
||||
|
||||
len = (uint8)(msgHdr->len - sizeof(hciEvt_CmdComplete_t));
|
||||
|
||||
sendCommandCompleteEvent(HCI_COMMAND_COMPLETE_EVENT_CODE, pkt->cmdOpcode, len, pkt->pReturnParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
osal_msg_hdr_t *msgHdr;
|
||||
uint8 len;
|
||||
|
||||
msgHdr = (osal_msg_hdr_t *)pMsg;
|
||||
msgHdr--; // Backup to the msg header
|
||||
|
||||
len = (uint8)(msgHdr->len - sizeof ( hciEvt_CmdComplete_t ));
|
||||
|
||||
sendCommandCompleteEvent(HCI_COMMAND_COMPLETE_EVENT_CODE,
|
||||
pkt->cmdOpcode, len, pkt->pReturnParam);
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
case HCI_DISCONNECTION_COMPLETE_EVENT_CODE:
|
||||
break;
|
||||
break;
|
||||
|
||||
case HCI_COMMAND_STATUS_EVENT_CODE:
|
||||
{
|
||||
hciEvt_CommandStatus_t *pkt = (hciEvt_CommandStatus_t *)pMsg;
|
||||
case HCI_COMMAND_STATUS_EVENT_CODE: {
|
||||
hciEvt_CommandStatus_t *pkt = (hciEvt_CommandStatus_t *)message;
|
||||
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode)
|
||||
{
|
||||
// app processes this as it was embedded msg to stack
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode) {
|
||||
// app processes this as it was embedded msg to stack
|
||||
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
|
||||
} else if (pkt->cmdOpcode == HCI_LE_SET_PHY) {
|
||||
sendCommandStatusEvent(HCI_COMMAND_STATUS_EVENT_CODE, pkt->cmdStatus, pkt->cmdOpcode);
|
||||
}
|
||||
else if (pkt->cmdOpcode == HCI_LE_SET_PHY)
|
||||
{
|
||||
sendCommandStatusEvent(HCI_COMMAND_STATUS_EVENT_CODE, pkt->cmdStatus,
|
||||
pkt->cmdOpcode);
|
||||
}
|
||||
}
|
||||
break;
|
||||
} break;
|
||||
|
||||
case HCI_LE_EVENT_CODE:
|
||||
{
|
||||
HostTestApp_processBLEEvent(pMsg);
|
||||
}
|
||||
break;
|
||||
HostTestApp_processBLEEvent(message);
|
||||
break;
|
||||
|
||||
case HCI_BLE_HARDWARE_ERROR_EVENT_CODE:
|
||||
{
|
||||
AssertHandler(HAL_ASSERT_CAUSE_HARDWARE_ERROR,0);
|
||||
}
|
||||
break;
|
||||
AssertHandler(HAL_ASSERT_CAUSE_HARDWARE_ERROR, 0);
|
||||
break;
|
||||
|
||||
case HCI_VE_EVENT_CODE:
|
||||
{
|
||||
hciEvt_VSCmdComplete_t *pkt = (hciEvt_VSCmdComplete_t *)pMsg;
|
||||
case HCI_VE_EVENT_CODE: {
|
||||
hciEvt_VSCmdComplete_t *pkt = (hciEvt_VSCmdComplete_t *)message;
|
||||
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode)
|
||||
{
|
||||
// app processes this as it was embedded msg to stack
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode) {
|
||||
// app processes this as it was embedded msg to stack
|
||||
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
} else {
|
||||
sendCommandCompleteEvent(HCI_VE_EVENT_CODE, pkt->cmdOpcode, pkt->length, pkt->pEventParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
sendCommandCompleteEvent(HCI_VE_EVENT_CODE, pkt->cmdOpcode,
|
||||
pkt->length, pkt->pEventParam);
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
/**
|
||||
* @fn HostTestApp_processAttEvent
|
||||
*
|
||||
* @brief Process an incoming ATT Event.
|
||||
|
||||
* @param pMsg - message to process
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
static void HostTestApp_processAttEvent(gattMsgEvent_t *message) {
|
||||
uint8_t method = message->method;
|
||||
|
||||
if (message->hdr.status == blePending) {
|
||||
// pass
|
||||
} else if ((method == ATT_READ_RSP) || (method == ATT_ERROR_RSP && message->msg.errorRsp.reqOpcode == ATT_READ_REQ)) {
|
||||
// pass
|
||||
} else if ((method == ATT_WRITE_RSP) || (method == ATT_ERROR_RSP && message->msg.errorRsp.reqOpcode == ATT_WRITE_REQ)) {
|
||||
// pass
|
||||
} else if (method == ATT_HANDLE_VALUE_NOTI) {
|
||||
attHandleValueNoti_t *att_notify = (attHandleValueNoti_t *)(&message->msg);
|
||||
master_handle_notify(att_notify->len, att_notify->pValue);
|
||||
}
|
||||
|
||||
// Free message. Needed only for ATT Protocol messages
|
||||
GATT_bm_free(&message->msg, message->method);
|
||||
}
|
||||
|
||||
/**
|
||||
* @fn HostTestApp_processBLEEvent
|
||||
*
|
||||
* @brief Process an incoming BLE Event.
|
||||
@@ -467,210 +373,177 @@ static void HostTestApp_processGapEvent(ICall_HciExtEvt *pMsg)
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
static void HostTestApp_processBLEEvent(ICall_HciExtEvt *pMsg)
|
||||
{
|
||||
hciEvt_BLEPhyUpdateComplete_t *pEvt = (hciEvt_BLEPhyUpdateComplete_t *)pMsg;
|
||||
uint8 event[HCI_PHY_UPDATE_COMPLETE_EVENT_LEN];
|
||||
uint8 eventLen;
|
||||
static void HostTestApp_processBLEEvent(ICall_HciExtEvt *message) {
|
||||
hciEvt_BLEPhyUpdateComplete_t *pEvt = (hciEvt_BLEPhyUpdateComplete_t *)message;
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
eventLen = HCI_PHY_UPDATE_COMPLETE_EVENT_LEN;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
eventLen = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (eventLen > 0)
|
||||
{
|
||||
// Send BLE Complete Event
|
||||
sendBLECompleteEvent(eventLen, event);
|
||||
}
|
||||
if (eventLen > 0) {
|
||||
// Send BLE Complete Event
|
||||
sendBLECompleteEvent(eventLen, event);
|
||||
}
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
// the function prototypes
|
||||
|
||||
/*******************************************************************************
|
||||
/**
|
||||
* This generic function sends a Command Complete or a Vendor Specific Command
|
||||
* Complete Event to the Host.
|
||||
*
|
||||
*/
|
||||
static void sendCommandCompleteEvent(uint8_t eventCode, uint16_t opcode,
|
||||
uint8_t numParam, uint8_t *param)
|
||||
{
|
||||
npiPkt_t *msg;
|
||||
uint8_t totalLength;
|
||||
uint8_t txLen = 0; // Length to transmit
|
||||
static void sendCommandCompleteEvent(uint8_t eventCode, uint16_t opcode, uint8_t numParam, uint8_t *param) {
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Return Parameters (0..N)
|
||||
uint8_t totalLength = sizeof(npiPkt_t) + HCI_EVENT_MIN_LENGTH + numParam;
|
||||
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Return Parameters (0..N)
|
||||
totalLength = sizeof(npiPkt_t) + HCI_EVENT_MIN_LENGTH + numParam;
|
||||
// adjust the size of the event packet based on event code
|
||||
// Note: If not a vendor specific event, then the event includes:
|
||||
// Command Complete Data: Number of HCI Commands Allowed(1) + Command Opcode(2)
|
||||
// Note: If a vendor specific event, then the event includes:
|
||||
// Vendor Specific Command Complete Data: Vendor Specific Event Opcode(2)
|
||||
totalLength += ((eventCode != HCI_VE_EVENT_CODE) ? HCI_CMD_COMPLETE_EVENT_LEN : HCI_CMD_VS_COMPLETE_EVENT_LEN);
|
||||
|
||||
// adjust the size of the event packet based on event code
|
||||
// Note: If not a vendor specific event, then the event includes:
|
||||
// Command Complete Data: Number of HCI Commands Allowed(1) + Command Opcode(2)
|
||||
// Note: If a vendor specific event, then the event includes:
|
||||
// Vendor Specific Command Complete Data: Vendor Specific Event Opcode(2)
|
||||
totalLength += ( (eventCode != HCI_VE_EVENT_CODE) ?
|
||||
HCI_CMD_COMPLETE_EVENT_LEN :
|
||||
HCI_CMD_VS_COMPLETE_EVENT_LEN );
|
||||
// allocate memory for OSAL hdr + packet
|
||||
npiPkt_t *message = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
|
||||
// allocate memory for OSAL hdr + packet
|
||||
msg = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (msg)
|
||||
{
|
||||
// OSAL message event, status, and pointer to packet
|
||||
msg->hdr.event = HCI_EVENT_PACKET;
|
||||
msg->hdr.status = 0xFF;
|
||||
msg->pData = (uint8*)(msg+1);
|
||||
uint8_t txLen = 0; // Length to transmit
|
||||
|
||||
// fill in Command Complete Event data
|
||||
msg->pData[0] = HCI_EVENT_PACKET;
|
||||
msg->pData[1] = eventCode;
|
||||
if (message) {
|
||||
// OSAL message event, status, and pointer to packet
|
||||
message->hdr.event = HCI_EVENT_PACKET;
|
||||
message->hdr.status = 0xFF;
|
||||
message->pData = (uint8 *)(message + 1);
|
||||
|
||||
txLen += 2;
|
||||
// fill in Command Complete Event data
|
||||
message->pData[0] = HCI_EVENT_PACKET;
|
||||
message->pData[1] = eventCode;
|
||||
|
||||
// check if this isn't a vendor specific event
|
||||
if ( eventCode != HCI_VE_EVENT_CODE )
|
||||
{
|
||||
msg->pData[2] = numParam + HCI_CMD_COMPLETE_EVENT_LEN;
|
||||
msg->pData[3] = 1;// hciCtrlCmdToken; // event parameter 1
|
||||
msg->pData[4] = LO_UINT16( opcode ); // event parameter 2
|
||||
msg->pData[5] = HI_UINT16( opcode ); // event parameter 2
|
||||
txLen += 2;
|
||||
|
||||
txLen += 4;
|
||||
// check if this isn't a vendor specific event
|
||||
if (eventCode != HCI_VE_EVENT_CODE) {
|
||||
message->pData[2] = numParam + HCI_CMD_COMPLETE_EVENT_LEN;
|
||||
message->pData[3] = 1; // hciCtrlCmdToken; // event parameter 1
|
||||
message->pData[4] = LO_UINT16(opcode); // event parameter 2
|
||||
message->pData[5] = HI_UINT16(opcode); // event parameter 2
|
||||
|
||||
// remaining event parameters
|
||||
(void)memcpy(&msg->pData[6], param, numParam);
|
||||
txLen += 4;
|
||||
|
||||
txLen += numParam;
|
||||
// remaining event parameters
|
||||
(void)memcpy(&message->pData[6], param, numParam);
|
||||
|
||||
txLen += numParam;
|
||||
} else {
|
||||
// it is a vendor specific event
|
||||
|
||||
// less one byte as number of complete packets not used in vendor specific event
|
||||
message->pData[2] = numParam + HCI_CMD_VS_COMPLETE_EVENT_LEN;
|
||||
message->pData[3] = param[0]; // event parameter 0: event opcode LSB
|
||||
message->pData[4] = param[1]; // event parameter 1: event opcode MSB
|
||||
message->pData[5] = param[2]; // event parameter 2: status
|
||||
message->pData[6] = LO_UINT16(opcode); // event parameter 3: command opcode LSB
|
||||
message->pData[7] = HI_UINT16(opcode); // event parameter 3: command opcode MSB
|
||||
|
||||
txLen += 6;
|
||||
|
||||
// remaining event parameters
|
||||
// Note: The event opcode and status were already placed in the msg packet.
|
||||
(void)memcpy(&message->pData[8], ¶m[3], numParam - HCI_EVENT_MIN_LENGTH);
|
||||
|
||||
txLen += (numParam - HCI_EVENT_MIN_LENGTH);
|
||||
}
|
||||
|
||||
message->pktLen = txLen;
|
||||
|
||||
NPITask_sendToHost((uint8_t *)message);
|
||||
}
|
||||
else // it is a vendor specific event
|
||||
{
|
||||
// less one byte as number of complete packets not used in vendor specific event
|
||||
msg->pData[2] = numParam + HCI_CMD_VS_COMPLETE_EVENT_LEN;
|
||||
msg->pData[3] = param[0]; // event parameter 0: event opcode LSB
|
||||
msg->pData[4] = param[1]; // event parameter 1: event opcode MSB
|
||||
msg->pData[5] = param[2]; // event parameter 2: status
|
||||
msg->pData[6] = LO_UINT16( opcode ); // event parameter 3: command opcode LSB
|
||||
msg->pData[7] = HI_UINT16( opcode ); // event parameter 3: command opcode MSB
|
||||
|
||||
txLen += 6;
|
||||
|
||||
// remaining event parameters
|
||||
// Note: The event opcode and status were already placed in the msg packet.
|
||||
(void)memcpy(&msg->pData[8], ¶m[3], numParam-HCI_EVENT_MIN_LENGTH);
|
||||
|
||||
txLen += (numParam-HCI_EVENT_MIN_LENGTH);
|
||||
}
|
||||
|
||||
msg->pktLen = txLen;
|
||||
|
||||
NPITask_sendToHost((uint8_t *)msg);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
/**
|
||||
* This generic function sends a Command Complete or a Vendor Specific Command
|
||||
* Complete Event to the Host.
|
||||
*
|
||||
*/
|
||||
static void sendCommandStatusEvent(uint8_t eventCode, uint16_t status,
|
||||
uint16_t opcode)
|
||||
{
|
||||
npiPkt_t *msg;
|
||||
uint8_t totalLength;
|
||||
static void sendCommandStatusEvent(uint8_t eventCode, uint16_t status, uint16_t opcode) {
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Command Status Event Data: Status (1) + Num HCI Cmd Pkt (1) + Cmd Opcode (2)
|
||||
uint8_t totalLength = sizeof(npiPkt_t) + HCI_EVENT_MIN_LENGTH + HCI_CMD_STATUS_EVENT_LEN;
|
||||
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Command Status Event Data: Status (1) + Num HCI Cmd Pkt (1) + Cmd Opcode (2)
|
||||
totalLength = sizeof(npiPkt_t) +
|
||||
HCI_EVENT_MIN_LENGTH +
|
||||
HCI_CMD_STATUS_EVENT_LEN;
|
||||
// allocate memory for OSAL hdr + packet
|
||||
npiPkt_t *message = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (message) {
|
||||
// OSAL message event, status, and pointer to packet
|
||||
message->hdr.event = HCI_EVENT_PACKET;
|
||||
message->hdr.status = 0xFF;
|
||||
|
||||
// allocate memory for OSAL hdr + packet
|
||||
msg = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (msg)
|
||||
{
|
||||
// OSAL message event, status, and pointer to packet
|
||||
msg->hdr.event = HCI_EVENT_PACKET;
|
||||
msg->hdr.status = 0xFF;
|
||||
// fill in length and data pointer
|
||||
message->pktLen = HCI_EVENT_MIN_LENGTH + HCI_CMD_STATUS_EVENT_LEN;
|
||||
message->pData = (uint8 *)(message + 1);
|
||||
|
||||
// fill in length and data pointer
|
||||
msg->pktLen = HCI_EVENT_MIN_LENGTH + HCI_CMD_STATUS_EVENT_LEN;
|
||||
msg->pData = (uint8*)(msg+1);
|
||||
// fill in Command Complete Event data
|
||||
message->pData[0] = HCI_EVENT_PACKET;
|
||||
message->pData[1] = eventCode;
|
||||
message->pData[2] = HCI_CMD_STATUS_EVENT_LEN;
|
||||
message->pData[3] = status;
|
||||
message->pData[4] = 1; // number of HCI command packets
|
||||
message->pData[5] = LO_UINT16(opcode); // opcode (LSB)
|
||||
message->pData[6] = HI_UINT16(opcode); // opcode (MSB)
|
||||
|
||||
// fill in Command Complete Event data
|
||||
msg->pData[0] = HCI_EVENT_PACKET;
|
||||
msg->pData[1] = eventCode;
|
||||
msg->pData[2] = HCI_CMD_STATUS_EVENT_LEN;
|
||||
msg->pData[3] = status;
|
||||
msg->pData[4] = 1; // number of HCI command packets
|
||||
msg->pData[5] = LO_UINT16(opcode); // opcode (LSB)
|
||||
msg->pData[6] = HI_UINT16(opcode); // opcode (MSB)
|
||||
|
||||
NPITask_sendToHost((uint8_t *)msg);
|
||||
}
|
||||
NPITask_sendToHost((uint8_t *)message);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
/**
|
||||
* This is a generic function used to send BLE Complete Event to the
|
||||
* Host processor.
|
||||
*
|
||||
*/
|
||||
static void sendBLECompleteEvent(uint8 eventLen, uint8 *pEvent)
|
||||
{
|
||||
npiPkt_t *msg;
|
||||
uint8_t totalLength;
|
||||
static void sendBLECompleteEvent(uint8 eventLen, uint8 *pEvent) {
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Event Data: eventLen
|
||||
uint8_t totalLength = sizeof(npiPkt_t) + HCI_EVENT_MIN_LENGTH + eventLen;
|
||||
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Event Data: eventLen
|
||||
totalLength = sizeof(npiPkt_t) + HCI_EVENT_MIN_LENGTH + eventLen;
|
||||
// allocate memory for OSAL hdr + packet
|
||||
npiPkt_t *message = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (message) {
|
||||
// OSAL message event, status, and pointer to packet
|
||||
message->hdr.event = HCI_EVENT_PACKET;
|
||||
message->hdr.status = 0xFF;
|
||||
|
||||
// allocate memory for OSAL hdr + packet
|
||||
msg = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (msg)
|
||||
{
|
||||
// OSAL message event, status, and pointer to packet
|
||||
msg->hdr.event = HCI_EVENT_PACKET;
|
||||
msg->hdr.status = 0xFF;
|
||||
// fill in length and data pointer
|
||||
message->pktLen = HCI_EVENT_MIN_LENGTH + eventLen;
|
||||
message->pData = (uint8 *)(message + 1);
|
||||
|
||||
// fill in length and data pointer
|
||||
msg->pktLen = HCI_EVENT_MIN_LENGTH + eventLen;
|
||||
msg->pData = (uint8*)(msg+1);
|
||||
// fill in BLE Complete Event data
|
||||
message->pData[0] = HCI_EVENT_PACKET;
|
||||
message->pData[1] = HCI_LE_EVENT_CODE;
|
||||
message->pData[2] = eventLen;
|
||||
|
||||
// fill in BLE Complete Event data
|
||||
msg->pData[0] = HCI_EVENT_PACKET;
|
||||
msg->pData[1] = HCI_LE_EVENT_CODE;
|
||||
msg->pData[2] = eventLen;
|
||||
// populate event data
|
||||
if (eventLen > 0) {
|
||||
memcpy(&message->pData[3], pEvent, eventLen);
|
||||
}
|
||||
|
||||
// populate event data
|
||||
if (eventLen > 0)
|
||||
{
|
||||
memcpy(&msg->pData[3], pEvent, eventLen);
|
||||
NPITask_sendToHost((uint8_t *)message);
|
||||
}
|
||||
|
||||
NPITask_sendToHost((uint8_t *)msg);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*********************************************************************/
|
||||
|
||||
@@ -1,707 +0,0 @@
|
||||
/******************************************************************************
|
||||
|
||||
@file host_test_app_pm.c
|
||||
|
||||
@brief This file contains the HostTest sample application for use with the
|
||||
CC2650 Bluetooth Low Energy Protocol Stack.
|
||||
|
||||
Group: WCS, BTS
|
||||
Target Device: CC2650, CC2640
|
||||
|
||||
******************************************************************************
|
||||
|
||||
Copyright (c) 2013-2018, 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_02_25
|
||||
Release Date: 2018-04-02 18:03:35
|
||||
*****************************************************************************/
|
||||
|
||||
/*********************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
#include <xdc/std.h>
|
||||
|
||||
#include <xdc/runtime/Error.h>
|
||||
#include <xdc/runtime/System.h>
|
||||
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
#include <ti/sysbios/knl/Task.h>
|
||||
#include <ti/sysbios/hal/Hwi.h>
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include <ti/sysbios/knl/Queue.h>
|
||||
#include <ti/drivers/UART.h> //For UART application
|
||||
|
||||
#include <icall.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "hal_types.h"
|
||||
#include "hci_tl.h"
|
||||
#include "gatt.h"
|
||||
#include "hci.h"
|
||||
|
||||
#include "gapgattserver.h"
|
||||
#include "gattservapp.h"
|
||||
|
||||
#include "gapbondmgr.h"
|
||||
#include "osal_snv.h"
|
||||
#include "icall_apimsg.h"
|
||||
|
||||
#include "util.h"
|
||||
#include <ti/mw/display/Display.h>
|
||||
|
||||
#include "npi_pm.h"
|
||||
#include <inc/hw_types.h>
|
||||
#include "hal_defs.h"
|
||||
|
||||
#if defined ( GATT_TEST ) || defined ( GATT_QUAL )
|
||||
#include "gatttest.h"
|
||||
#endif
|
||||
|
||||
#include "host_test_app.h"
|
||||
|
||||
/*********************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
// LE Event Lengths
|
||||
#define HCI_CMD_COMPLETE_EVENT_LEN 3
|
||||
#define HCI_CMD_VS_COMPLETE_EVENT_LEN 2
|
||||
#define HCI_CMD_STATUS_EVENT_LEN 4
|
||||
|
||||
// Task configuration
|
||||
#define HTA_TASK_PRIORITY 1
|
||||
#define HTA_TASK_STACK_SIZE 644
|
||||
|
||||
// NPI Events
|
||||
#define NPI_WRITECALLBACK_EVENT 0x0002
|
||||
#define NPI_READ_EVENT 0x0004
|
||||
#define NPI_MRDY_EVENT 0x0008
|
||||
|
||||
/*********************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
|
||||
// Display Interface
|
||||
Display_Handle dispHandle = NULL;
|
||||
|
||||
/*********************************************************************
|
||||
* 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 UART TX messages
|
||||
static Queue_Struct uartTx;
|
||||
static Queue_Handle uartTxQueue;
|
||||
|
||||
// Task configuration
|
||||
Task_Struct htaTask;
|
||||
Char htaTaskStack[HTA_TASK_STACK_SIZE];
|
||||
|
||||
#if !defined ( GATT_DB_OFF_CHIP )
|
||||
static uint8 deviceName[GAP_DEVICE_NAME_LEN] = { 0 };
|
||||
static uint16 appearance = 17;
|
||||
#endif
|
||||
|
||||
// Pointer to last transmitted message
|
||||
npiPkt_t *pMsgLastBuf = NULL;
|
||||
|
||||
// events for application
|
||||
static uint16_t events = NPI_WRITECALLBACK_EVENT;
|
||||
|
||||
// Stack build revision
|
||||
buildRevision_t buildRev;
|
||||
|
||||
/*********************************************************************
|
||||
* LOCAL FUNCTIONS
|
||||
*/
|
||||
|
||||
static void HostTestApp_init(void);
|
||||
static void HostTestApp_taskFxn(UArg a0, UArg a1);
|
||||
|
||||
static void HostTestApp_processGapEvent(ICall_HciExtEvt *pMsg);
|
||||
|
||||
//RTOS queue functions
|
||||
static void HostTestApp_sendMsg(npiPkt_t *pMsgBuf);
|
||||
|
||||
//UART callback
|
||||
Void HostTestApp_writeCallBack(int size);
|
||||
Void HostTestApp_readCallBack(int size);
|
||||
|
||||
static void sendCommandCompleteEvent(uint8 eventCode, uint16 opcode,
|
||||
uint8 numParam, uint8 *param);
|
||||
|
||||
/*********************************************************************
|
||||
* EXTERN FUNCTIONS
|
||||
*/
|
||||
extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
|
||||
|
||||
/*********************************************************************
|
||||
* PUBLIC FUNCTIONS
|
||||
*/
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_createTask
|
||||
*
|
||||
* @brief Task creation function for the Host Test App.
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
void HostTestApp_createTask(void)
|
||||
{
|
||||
Task_Params taskParams;
|
||||
|
||||
// Configure task
|
||||
Task_Params_init(&taskParams);
|
||||
taskParams.stack = htaTaskStack;
|
||||
taskParams.stackSize = HTA_TASK_STACK_SIZE;
|
||||
taskParams.priority = HTA_TASK_PRIORITY;
|
||||
|
||||
Task_construct(&htaTask, HostTestApp_taskFxn, &taskParams, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_init
|
||||
*
|
||||
* @brief Called during initialization and contains application
|
||||
* specific initialization (ie. hardware initialization/setup,
|
||||
* table initialization, power up notification, etc), and
|
||||
* profile initialization/setup.
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_init(void)
|
||||
{
|
||||
// Register the current thread as an ICall dispatcher application
|
||||
// so that the application can send and receive messages.
|
||||
ICall_registerApp(&selfEntity, &sem);
|
||||
|
||||
// Set device's Sleep Clock Accuracy
|
||||
//HCI_EXT_SetSCACmd(40);
|
||||
|
||||
// Create an RTOS queue for messages from stack to be sent to UART
|
||||
uartTxQueue = Util_constructQueue(&uartTx);
|
||||
|
||||
dispHandle = Display_open(Display_Type_LCD, NULL);
|
||||
|
||||
// Register for unwanted HCI messages
|
||||
GAP_RegisterForMsgs(selfEntity);
|
||||
|
||||
// Initialize GATT Client
|
||||
VOID GATT_InitClient();
|
||||
|
||||
// Get build revision
|
||||
VOID Util_buildRevision(&buildRev);
|
||||
|
||||
#if !defined ( GATT_DB_OFF_CHIP )
|
||||
|
||||
#if defined ( GATT_QUAL )
|
||||
VOID GATTQual_AddService( GATT_ALL_SERVICES ); // Includes GAP and GATT Services
|
||||
#else
|
||||
// Add our services to GATT Server
|
||||
VOID GGS_AddService( GATT_ALL_SERVICES );
|
||||
VOID GATTServApp_AddService( GATT_ALL_SERVICES );
|
||||
#if defined ( GATT_TEST )
|
||||
VOID GATTTest_AddService( GATT_ALL_SERVICES );
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Set device name
|
||||
if ((buildRev.hostInfo & CENTRAL_CFG) && (buildRev.hostInfo & PERIPHERAL_CFG))
|
||||
{
|
||||
memcpy(deviceName, "TI BLE All", 10);
|
||||
}
|
||||
else if (buildRev.hostInfo & CENTRAL_CFG)
|
||||
{
|
||||
memcpy(deviceName, "TI BLE Central", 14);
|
||||
}
|
||||
else if (buildRev.hostInfo & PERIPHERAL_CFG)
|
||||
{
|
||||
memcpy(deviceName, "TI BLE Peripheral", 17);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(deviceName, "TI BLE Unknown", 14);
|
||||
}
|
||||
|
||||
VOID GGS_SetParameter(GGS_DEVICE_NAME_ATT, strlen((char *)deviceName), deviceName);
|
||||
VOID GGS_SetParameter(GGS_APPEARANCE_ATT, sizeof(uint16), (void*)&appearance);
|
||||
|
||||
#endif // GATT_DB_OFF_CHIP
|
||||
|
||||
#ifdef TI_DRIVERS_UART_INCLUDED
|
||||
//Initialize the NPI layer
|
||||
NPI_InitInterface(UART_INTERFACE, &HostTestApp_writeCallBack,
|
||||
&HostTestApp_readCallBack);
|
||||
#elif TI_DRIVERS_SPI_DMA_INCLUDED
|
||||
//Initialize the NPI layer
|
||||
NPI_InitInterface(SPI_INTERFACE, &HostTestApp_writeCallBack,
|
||||
&HostTestApp_readCallBack);
|
||||
#endif
|
||||
|
||||
//Register application with NPI for stack messages to be sent to UART
|
||||
NPI_RegisterTask(selfEntity);
|
||||
|
||||
Display_print0(dispHandle, 0, 0, "TI BLEv2.0");
|
||||
Display_print0(dispHandle, 1, 0, "HostTestApp");
|
||||
|
||||
// Display Host build configuration
|
||||
if ((buildRev.hostInfo & CENTRAL_CFG) && (buildRev.hostInfo & PERIPHERAL_CFG))
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "All");
|
||||
}
|
||||
else if ((buildRev.hostInfo & CENTRAL_CFG) &&
|
||||
(buildRev.hostInfo & BROADCASTER_CFG))
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Cent+Bcast");
|
||||
}
|
||||
else if ((buildRev.hostInfo & PERIPHERAL_CFG) &&
|
||||
(buildRev.hostInfo & OBSERVER_CFG))
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Peri+Observ");
|
||||
}
|
||||
else if (buildRev.hostInfo & CENTRAL_CFG)
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Central");
|
||||
}
|
||||
else if (buildRev.hostInfo & PERIPHERAL_CFG)
|
||||
{
|
||||
Display_print0(dispHandle, 2, 0, "Peripheral");
|
||||
}
|
||||
else
|
||||
{
|
||||
Display_print1(dispHandle, 2, 0, "Unknown build cfg %d", buildRev.hostInfo);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_taskFxn
|
||||
*
|
||||
* @brief Application task entry point for the Host Test App.
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_taskFxn(UArg a0, UArg a1)
|
||||
{
|
||||
// Initialize application
|
||||
HostTestApp_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)
|
||||
{
|
||||
bool dealloc = true;
|
||||
|
||||
if ((src == ICALL_SERVICE_CLASS_BLE) && (dest == selfEntity))
|
||||
{
|
||||
// Process incoming messages
|
||||
switch (pMsg->hdr.event)
|
||||
{
|
||||
case HCI_GAP_EVENT_EVENT:
|
||||
HostTestApp_processGapEvent(pMsg);
|
||||
break;
|
||||
|
||||
case HCI_ACL_DATA_PACKET:
|
||||
case HCI_SCO_DATA_PACKET:
|
||||
case HCI_EVENT_PACKET:
|
||||
{
|
||||
HostTestApp_sendMsg((npiPkt_t *)pMsg);
|
||||
dealloc = false;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dealloc == true)
|
||||
{
|
||||
ICall_freeMsg(pMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (events & NPI_READ_EVENT )
|
||||
{
|
||||
events &= ~NPI_READ_EVENT;
|
||||
NPI_serialPacketParser(); //Call the parser..
|
||||
}
|
||||
|
||||
if (events & NPI_MRDY_EVENT )
|
||||
{
|
||||
// This read is initiated to read again and again till you run out of
|
||||
// bytes. This read was initiated in the callback but is actually done in
|
||||
// this application thread
|
||||
events &= ~NPI_MRDY_EVENT;
|
||||
#ifdef POWER_SAVING
|
||||
NPI_MrdyEvent();
|
||||
#endif
|
||||
}
|
||||
|
||||
// Check if write is complete and free the last written buffer
|
||||
if(events & NPI_WRITECALLBACK_EVENT)
|
||||
{
|
||||
if (pMsgLastBuf)
|
||||
{
|
||||
ICall_freeMsg(pMsgLastBuf); //Free the NPI/OSAL buffer which was sent
|
||||
pMsgLastBuf = NULL; //Need to have this to avoid memory leak
|
||||
}
|
||||
|
||||
// If queue is not empty, we did add some frames to it
|
||||
if (!Queue_empty(uartTxQueue))
|
||||
{
|
||||
pMsgLastBuf = (npiPkt_t *)Util_dequeueMsg(uartTxQueue);
|
||||
if (pMsgLastBuf)
|
||||
{
|
||||
// send dequeued element to UART
|
||||
events &= ~NPI_WRITECALLBACK_EVENT;
|
||||
NPI_WriteTransport(pMsgLastBuf->pData, pMsgLastBuf->pktLen);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_processGapEvent
|
||||
*
|
||||
* @brief Process an incoming GAP Event.
|
||||
*
|
||||
* @param pMsg - message to process
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_processGapEvent(ICall_HciExtEvt *pMsg)
|
||||
{
|
||||
switch(pMsg->hdr.status)
|
||||
{
|
||||
case HCI_COMMAND_COMPLETE_EVENT_CODE:
|
||||
{
|
||||
hciEvt_CmdComplete_t *pkt = (hciEvt_CmdComplete_t *)pMsg;
|
||||
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode)
|
||||
{
|
||||
// app processes this as it was embedded msg to stack
|
||||
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
osal_msg_hdr_t *msgHdr;
|
||||
uint8 len;
|
||||
|
||||
msgHdr = (osal_msg_hdr_t *)pMsg;
|
||||
msgHdr--; // Backup to the msg header
|
||||
|
||||
len = (uint8)(msgHdr->len - sizeof ( hciEvt_CmdComplete_t ));
|
||||
|
||||
sendCommandCompleteEvent(HCI_COMMAND_COMPLETE_EVENT_CODE,
|
||||
pkt->cmdOpcode, len, pkt->pReturnParam);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case HCI_DISCONNECTION_COMPLETE_EVENT_CODE:
|
||||
break;
|
||||
|
||||
case HCI_COMMAND_STATUS_EVENT_CODE:
|
||||
{
|
||||
hciEvt_CommandStatus_t *pkt = (hciEvt_CommandStatus_t *)pMsg;
|
||||
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode)
|
||||
{
|
||||
// app processes this as it was embedded msg to stack
|
||||
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
}
|
||||
// else - drop it for now
|
||||
}
|
||||
break;
|
||||
|
||||
case HCI_BLE_HARDWARE_ERROR_EVENT_CODE:
|
||||
{
|
||||
AssertHandler(HAL_ASSERT_CAUSE_HARDWARE_ERROR,0);
|
||||
}
|
||||
break;
|
||||
|
||||
case HCI_LE_EVENT_CODE:
|
||||
break;
|
||||
|
||||
case HCI_VE_EVENT_CODE:
|
||||
{
|
||||
hciEvt_VSCmdComplete_t *pkt = (hciEvt_VSCmdComplete_t *)pMsg;
|
||||
|
||||
if (lastAppOpcodeSent == pkt->cmdOpcode)
|
||||
{
|
||||
// app processes this as it was embedded msg to stack
|
||||
|
||||
// Reset last opcode sent
|
||||
lastAppOpcodeSent = 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
sendCommandCompleteEvent(HCI_VE_EVENT_CODE, pkt->cmdOpcode,
|
||||
pkt->length, pkt->pEventParam);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_writeCallBack
|
||||
*
|
||||
* @brief Callback for TX ISR
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
Void HostTestApp_writeCallBack(int size)
|
||||
{
|
||||
events |= NPI_WRITECALLBACK_EVENT;
|
||||
Semaphore_post(sem);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_readCallBack
|
||||
*
|
||||
* @brief Callback for RX ISR
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
Void HostTestApp_readCallBack(int size)
|
||||
{
|
||||
if ( size == 0xFF )
|
||||
{
|
||||
events |= NPI_MRDY_EVENT;
|
||||
}
|
||||
else
|
||||
{
|
||||
events |= NPI_READ_EVENT;
|
||||
}
|
||||
|
||||
Semaphore_post(sem);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn HostTestApp_sendMsg
|
||||
*
|
||||
* @brief Sends packet to UART else queues it if not able to do so
|
||||
*
|
||||
* @param none
|
||||
*
|
||||
* @return none
|
||||
*/
|
||||
static void HostTestApp_sendMsg(npiPkt_t *pMsgBuf)
|
||||
{
|
||||
if ((events & NPI_WRITECALLBACK_EVENT) && (Queue_empty(uartTxQueue)))
|
||||
{
|
||||
events &= ~NPI_WRITECALLBACK_EVENT;
|
||||
|
||||
if (pMsgLastBuf)
|
||||
{
|
||||
ICall_freeMsg(pMsgLastBuf); //Free the NPI/OSAL buffer which was sent
|
||||
pMsgLastBuf = NULL; //Need to have this to avoid memory leak
|
||||
}
|
||||
|
||||
pMsgLastBuf = pMsgBuf;
|
||||
NPI_WriteTransport(pMsgBuf->pData, pMsgBuf->pktLen);
|
||||
return;
|
||||
}
|
||||
|
||||
// Enqueue the message
|
||||
Util_enqueueMsg(uartTxQueue, sem, (uint8*)pMsgBuf);
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
// the function prototypes
|
||||
|
||||
/*******************************************************************************
|
||||
* This generic function sends a Command Complete or a Vendor Specific Command
|
||||
* Complete Event to the Host.
|
||||
*
|
||||
*/
|
||||
static void sendCommandCompleteEvent(uint8_t eventCode, uint16_t opcode,
|
||||
uint8_t numParam, uint8_t *param)
|
||||
{
|
||||
npiPkt_t *msg;
|
||||
uint8_t totalLength;
|
||||
uint8_t txLen = 0; // Length to transmit
|
||||
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Return Parameters (0..N)
|
||||
totalLength = sizeof(npiPkt_t) + HCI_EVENT_MIN_LENGTH + numParam;
|
||||
|
||||
// adjust the size of the event packet based on event code
|
||||
// Note: If not a vendor specific event, then the event includes:
|
||||
// Command Complete Data: Number of HCI Commands Allowed(1) + Command Opcode(2)
|
||||
// Note: If a vendor specific event, then the event includes:
|
||||
// Vendor Specific Command Complete Data: Vendor Specific Event Opcode(2)
|
||||
totalLength += ( (eventCode != HCI_VE_EVENT_CODE) ?
|
||||
HCI_CMD_COMPLETE_EVENT_LEN :
|
||||
HCI_CMD_VS_COMPLETE_EVENT_LEN );
|
||||
|
||||
// allocate memory for OSAL hdr + packet
|
||||
msg = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (msg)
|
||||
{
|
||||
// OSAL message event, status, and pointer to packet
|
||||
msg->hdr.event = HCI_EVENT_PACKET;
|
||||
msg->hdr.status = 0xFF;
|
||||
msg->pData = (uint8*)(msg+1);
|
||||
|
||||
// fill in Command Complete Event data
|
||||
msg->pData[0] = HCI_EVENT_PACKET;
|
||||
msg->pData[1] = eventCode;
|
||||
|
||||
txLen += 2;
|
||||
|
||||
// check if this isn't a vendor specific event
|
||||
if ( eventCode != HCI_VE_EVENT_CODE )
|
||||
{
|
||||
msg->pData[2] = numParam + HCI_CMD_COMPLETE_EVENT_LEN;
|
||||
msg->pData[3] = 1;// hciCtrlCmdToken; // event parameter 1
|
||||
msg->pData[4] = LO_UINT16( opcode ); // event parameter 2
|
||||
msg->pData[5] = HI_UINT16( opcode ); // event parameter 2
|
||||
|
||||
txLen += 4;
|
||||
|
||||
// remaining event parameters
|
||||
(void)memcpy(&msg->pData[6], param, numParam);
|
||||
|
||||
txLen += numParam;
|
||||
}
|
||||
else // it is a vendor specific event
|
||||
{
|
||||
// less one byte as number of complete packets not used in vendor specific event
|
||||
msg->pData[2] = numParam + HCI_CMD_VS_COMPLETE_EVENT_LEN;
|
||||
msg->pData[3] = param[0]; // event parameter 0: event opcode LSB
|
||||
msg->pData[4] = param[1]; // event parameter 1: event opcode MSB
|
||||
msg->pData[5] = param[2]; // event parameter 2: status
|
||||
msg->pData[6] = LO_UINT16( opcode ); // event parameter 3: command opcode LSB
|
||||
msg->pData[7] = HI_UINT16( opcode ); // event parameter 3: command opcode MSB
|
||||
|
||||
txLen += 6;
|
||||
|
||||
// remaining event parameters
|
||||
// Note: The event opcode and status were already placed in the msg packet.
|
||||
(void)memcpy(&msg->pData[8], ¶m[3], numParam-HCI_EVENT_MIN_LENGTH);
|
||||
|
||||
txLen += (numParam-HCI_EVENT_MIN_LENGTH);
|
||||
}
|
||||
|
||||
msg->pktLen = txLen;
|
||||
|
||||
HostTestApp_sendMsg((npiPkt_t *)msg);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* This generic function sends a Command Complete or a Vendor Specific Command
|
||||
* Complete Event to the Host.
|
||||
*
|
||||
*/
|
||||
void sendCommandStatusEvent(uint8_t eventCode, uint16_t status, uint16_t opcode)
|
||||
{
|
||||
npiPkt_t *msg;
|
||||
uint8_t totalLength;
|
||||
|
||||
// The initial length will be:
|
||||
// OSAL message header(4) - not part of packet sent to HCI Host!
|
||||
// Minimum Event Data: Packet Type(1) + Event Code(1) + Length(1)
|
||||
// Command Status Event Data: Status (1) + Num HCI Cmd Pkt (1) + Cmd Opcode (2)
|
||||
totalLength = sizeof(npiPkt_t) +
|
||||
HCI_EVENT_MIN_LENGTH +
|
||||
HCI_CMD_STATUS_EVENT_LEN;
|
||||
|
||||
// allocate memory for OSAL hdr + packet
|
||||
msg = (npiPkt_t *)ICall_allocMsg(totalLength);
|
||||
if (msg)
|
||||
{
|
||||
// OSAL message event, status, and pointer to packet
|
||||
msg->hdr.event = HCI_EVENT_PACKET;
|
||||
msg->hdr.status = 0xFF;
|
||||
|
||||
// fill in length and data pointer
|
||||
msg->pktLen = HCI_EVENT_MIN_LENGTH + HCI_CMD_STATUS_EVENT_LEN;
|
||||
msg->pData = (uint8*)(msg+1);
|
||||
|
||||
// fill in Command Complete Event data
|
||||
msg->pData[0] = HCI_EVENT_PACKET;
|
||||
msg->pData[1] = eventCode;
|
||||
msg->pData[2] = HCI_CMD_STATUS_EVENT_LEN;
|
||||
msg->pData[3] = status;
|
||||
msg->pData[4] = 1; // number of HCI command packets
|
||||
msg->pData[5] = LO_UINT16(opcode); // opcode (LSB)
|
||||
msg->pData[6] = HI_UINT16(opcode); // opcode (MSB)
|
||||
|
||||
HostTestApp_sendMsg((npiPkt_t *)msg);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
*********************************************************************/
|
||||
@@ -8,7 +8,7 @@
|
||||
Target Device: CC2650, CC2640
|
||||
|
||||
******************************************************************************
|
||||
|
||||
|
||||
Copyright (c) 2013-2018, Texas Instruments Incorporated
|
||||
All rights reserved.
|
||||
|
||||
@@ -44,17 +44,17 @@
|
||||
Release Date: 2018-04-02 18:03:35
|
||||
*****************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* INCLUDES
|
||||
*/
|
||||
/*================
|
||||
==== include ====
|
||||
===============*/
|
||||
|
||||
// clang-format off
|
||||
#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 "board.h"
|
||||
#include "inc/npi_task.h"
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
/* Header files required to enable instruction fetch cache */
|
||||
#include <inc/hw_memmap.h>
|
||||
#include <driverlib/vims.h>
|
||||
// clang-format on
|
||||
|
||||
#ifndef USE_DEFAULT_USER_CFG
|
||||
|
||||
@@ -71,70 +72,9 @@
|
||||
// BLE user defined configuration
|
||||
bleUserCfg_t user0Cfg = BLE_USER_CFG;
|
||||
|
||||
#endif // USE_DEFAULT_USER_CFG
|
||||
#endif // USE_DEFAULT_USER_CFG
|
||||
|
||||
#include <ti/mw/display/Display.h>
|
||||
|
||||
#ifdef USE_FPGA
|
||||
#include <inc/hw_prcm.h>
|
||||
#endif // USE_FPGA
|
||||
|
||||
/*******************************************************************************
|
||||
* MACROS
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* CONSTANTS
|
||||
*/
|
||||
|
||||
#if defined( USE_FPGA )
|
||||
#define RFC_MODE_BLE PRCM_RFCMODESEL_CURR_MODE1
|
||||
#define RFC_MODE_ANT PRCM_RFCMODESEL_CURR_MODE4
|
||||
#define RFC_MODE_EVERYTHING_BUT_ANT PRCM_RFCMODESEL_CURR_MODE5
|
||||
#define RFC_MODE_EVERYTHING PRCM_RFCMODESEL_CURR_MODE6
|
||||
//
|
||||
#define SET_RFC_BLE_MODE(mode) HWREG( PRCM_BASE + PRCM_O_RFCMODESEL ) = (mode)
|
||||
#endif // USE_FPGA
|
||||
|
||||
/*******************************************************************************
|
||||
* TYPEDEFS
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* LOCAL VARIABLES
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
* GLOBAL VARIABLES
|
||||
*/
|
||||
|
||||
#ifdef CC1350_LAUNCHXL
|
||||
#ifdef POWER_SAVING
|
||||
// Power Notify Object for wake-up callbacks
|
||||
Power_NotifyObj rFSwitchPowerNotifyObj;
|
||||
static uint8_t rFSwitchNotifyCb(uint8_t eventType, uint32_t *eventArg,
|
||||
uint32_t *clientArg);
|
||||
#endif //POWER_SAVING
|
||||
|
||||
PIN_State radCtrlState;
|
||||
PIN_Config radCtrlCfg[] =
|
||||
{
|
||||
Board_DIO1_RFSW | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* RF SW Switch defaults to 2.4GHz path*/
|
||||
Board_DIO30_SWPWR | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* Power to the RF Switch */
|
||||
PIN_TERMINATE
|
||||
};
|
||||
PIN_Handle radCtrlHandle;
|
||||
#endif //CC1350_LAUNCHXL
|
||||
|
||||
/*******************************************************************************
|
||||
* EXTERNS
|
||||
*/
|
||||
|
||||
extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
|
||||
|
||||
extern Display_Handle dispHandle;
|
||||
|
||||
/*******************************************************************************
|
||||
/**
|
||||
* @fn Main
|
||||
*
|
||||
* @brief Application Main
|
||||
@@ -149,228 +89,29 @@ extern Display_Handle dispHandle;
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
int main()
|
||||
{
|
||||
#if defined( USE_FPGA )
|
||||
HWREG(PRCM_BASE + PRCM_O_PDCTL0) &= ~PRCM_PDCTL0_RFC_ON;
|
||||
HWREG(PRCM_BASE + PRCM_O_PDCTL1) &= ~PRCM_PDCTL1_RFC_ON;
|
||||
#endif // USE_FPGA
|
||||
int main() {
|
||||
PIN_init(BoardGpioInitTable);
|
||||
|
||||
/* Register Application callback to trap asserts raised in the Stack */
|
||||
RegisterAssertCback(AssertHandler);
|
||||
// Enable iCache prefetching
|
||||
VIMSConfigure(VIMS_BASE, TRUE, TRUE);
|
||||
|
||||
PIN_init(BoardGpioInitTable);
|
||||
// Enable cache
|
||||
VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
|
||||
|
||||
#ifdef CC1350_LAUNCHXL
|
||||
// Enable 2.4GHz Radio
|
||||
radCtrlHandle = PIN_open(&radCtrlState, radCtrlCfg);
|
||||
/* Initialize ICall module */
|
||||
ICall_init();
|
||||
|
||||
#ifdef POWER_SAVING
|
||||
Power_registerNotify(&rFSwitchPowerNotifyObj,
|
||||
PowerCC26XX_ENTERING_STANDBY | PowerCC26XX_AWAKE_STANDBY,
|
||||
(Power_NotifyFxn) rFSwitchNotifyCb, NULL);
|
||||
#endif //POWER_SAVING
|
||||
#endif //CC1350_LAUNCHXL
|
||||
/* Start tasks of external images */
|
||||
ICall_createRemoteTasks();
|
||||
|
||||
#if defined( USE_FPGA )
|
||||
// set RFC mode to support BLE
|
||||
// Note: This must be done before the RF Core is released from reset!
|
||||
SET_RFC_BLE_MODE(RFC_MODE_BLE);
|
||||
#endif // USE_FPGA
|
||||
/* Kick off application */
|
||||
HostTestApp_createTask();
|
||||
|
||||
// Enable iCache prefetching
|
||||
VIMSConfigure(VIMS_BASE, TRUE, TRUE);
|
||||
/* Kick off NPI */
|
||||
NPITask_createTask(ICALL_SERVICE_CLASS_BLE);
|
||||
|
||||
// Enable cache
|
||||
VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
|
||||
/* enable interrupts and start SYS/BIOS */
|
||||
BIOS_start();
|
||||
|
||||
#if !defined( POWER_SAVING ) || defined( USE_FPGA )
|
||||
/* Set constraints for Standby, powerdown and idle mode */
|
||||
// PowerCC26XX_SB_DISALLOW may be redundant
|
||||
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
|
||||
Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
|
||||
#endif // POWER_SAVING | USE_FPGA
|
||||
|
||||
/* Initialize ICall module */
|
||||
ICall_init();
|
||||
|
||||
/* Start tasks of external images */
|
||||
ICall_createRemoteTasks();
|
||||
|
||||
/* Kick off application */
|
||||
HostTestApp_createTask();
|
||||
|
||||
/* Kick off NPI */
|
||||
NPITask_createTask(ICALL_SERVICE_CLASS_BLE);
|
||||
|
||||
/* enable interrupts and start SYS/BIOS */
|
||||
BIOS_start();
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* @fn AssertHandler
|
||||
*
|
||||
* @brief This is the Application's callback handler for asserts raised
|
||||
* in the stack. When EXT_HAL_ASSERT is defined in the Stack
|
||||
* project this function will be called when an assert is raised,
|
||||
* and can be used to observe or trap a violation from expected
|
||||
* behavior.
|
||||
*
|
||||
* As an example, for Heap allocation failures the Stack will raise
|
||||
* HAL_ASSERT_CAUSE_OUT_OF_MEMORY as the assertCause and
|
||||
* HAL_ASSERT_SUBCAUSE_NONE as the assertSubcause. An application
|
||||
* developer could trap any malloc failure on the stack by calling
|
||||
* HAL_ASSERT_SPINLOCK under the matching case.
|
||||
*
|
||||
* An application developer is encouraged to extend this function
|
||||
* for use by their own application. To do this, add hal_assert.c
|
||||
* to your project workspace, the path to hal_assert.h (this can
|
||||
* be found on the stack side). Asserts are raised by including
|
||||
* hal_assert.h and using macro HAL_ASSERT(cause) to raise an
|
||||
* assert with argument assertCause. the assertSubcause may be
|
||||
* optionally set by macro HAL_ASSERT_SET_SUBCAUSE(subCause) prior
|
||||
* to asserting the cause it describes. More information is
|
||||
* available in hal_assert.h.
|
||||
*
|
||||
* 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)
|
||||
{
|
||||
// This assert is raised from the BLE Stack when a malloc failure occurs.
|
||||
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;
|
||||
|
||||
// An assert originating from an ICall failure.
|
||||
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 exceptionHandler
|
||||
*
|
||||
* @brief Generic spinlock to trap RTOS raised errors.
|
||||
*
|
||||
* input parameters
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* output parameters
|
||||
*
|
||||
* @param None.
|
||||
*
|
||||
* @return None.
|
||||
*/
|
||||
void exceptionHandler( void )
|
||||
{
|
||||
volatile uint8 i = 1;
|
||||
while(i);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* @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 (;;);
|
||||
}
|
||||
|
||||
#if defined (CC1350_LAUNCHXL) && defined (POWER_SAVING)
|
||||
/*******************************************************************************
|
||||
* @fn rFSwitchNotifyCb
|
||||
*
|
||||
* @brief Power driver callback to toggle RF switch on Power state
|
||||
* transitions.
|
||||
*
|
||||
* input parameters
|
||||
*
|
||||
* @param eventType - The state change.
|
||||
* @param eventArg - Not used.
|
||||
* @param clientArg - Not used.
|
||||
*
|
||||
* @return Power_NOTIFYDONE to indicate success.
|
||||
*/
|
||||
static uint8_t rFSwitchNotifyCb(uint8_t eventType, uint32_t *eventArg,
|
||||
uint32_t *clientArg)
|
||||
{
|
||||
if (eventType == PowerCC26XX_ENTERING_STANDBY)
|
||||
{
|
||||
// Power down RF Switch
|
||||
PIN_setOutputValue(radCtrlHandle, Board_DIO30_SWPWR, 0);
|
||||
}
|
||||
else if (eventType == PowerCC26XX_AWAKE_STANDBY)
|
||||
{
|
||||
// Power up RF Switch
|
||||
PIN_setOutputValue(radCtrlHandle, Board_DIO30_SWPWR, 1);
|
||||
}
|
||||
|
||||
// Notification handled successfully
|
||||
return Power_NOTIFYDONE;
|
||||
}
|
||||
#endif //CC1350_LAUNCHXL || POWER_SAVING
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*/
|
||||
|
||||
+185
@@ -0,0 +1,185 @@
|
||||
#ifndef CC2650_MASTER_H
|
||||
#define CC2650_MASTER_H
|
||||
|
||||
/*================
|
||||
==== include ====
|
||||
================*/
|
||||
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
|
||||
#define MASTER_PIN_USE_CC26XX
|
||||
|
||||
#include "master_mem.h"
|
||||
#include "master_pin.h"
|
||||
#include "master_spi.h"
|
||||
|
||||
/*======================
|
||||
==== event control ====
|
||||
=====================*/
|
||||
|
||||
uint16_t EVENT_MASK = 0;
|
||||
extern ICall_Semaphore semaphore;
|
||||
|
||||
#define EVT_PIN_RESET 0x0010
|
||||
#define EVT_PIN_REQST 0x0020
|
||||
|
||||
/**
|
||||
* test event [flag] has been enabled.
|
||||
*/
|
||||
#define flag_mask(flag) ((EVENT_MASK & (flag)) != 0)
|
||||
|
||||
/**
|
||||
* enable event [flag].
|
||||
*/
|
||||
#define flag_enable(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EVENT_MASK |= (uint16_t)(flag); \
|
||||
Hwi_restore(__key); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* disable event [flag].
|
||||
*/
|
||||
#define flag_disable(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EVENT_MASK &= ~((uint16_t)(flag)); \
|
||||
Hwi_restore(__key); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* fire a event with [flag].
|
||||
*/
|
||||
#define flag_notify(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EVENT_MASK |= (uint16_t)(flag); \
|
||||
Hwi_restore(__key); \
|
||||
Semaphore_post(semaphore); \
|
||||
} while (0)
|
||||
|
||||
/*======================
|
||||
==== utility macro ====
|
||||
=====================*/
|
||||
|
||||
#define unsafe_memcpy(p, src, len) \
|
||||
do { \
|
||||
memcpy(p, src, len); \
|
||||
p += len; \
|
||||
} while (0)
|
||||
|
||||
/*=========================
|
||||
==== function declare ====
|
||||
========================*/
|
||||
|
||||
static void master_init();
|
||||
static void master_event_handle();
|
||||
struct void master_handle_notify(uint16 length, uint8 *value);
|
||||
struct void master_switch_memory();
|
||||
|
||||
/*========================
|
||||
==== notify variable ====
|
||||
=======================*/
|
||||
|
||||
#define MEM_META_LENGTH 4
|
||||
|
||||
static uint8 mem_sel = 0;
|
||||
static uint16_t not_counter = 0; // writing counter, increase when notify
|
||||
static uint16_t not_offset = 0; // writing pointer, current not writing index
|
||||
|
||||
/*===========================
|
||||
==== function implement ====
|
||||
==========================*/
|
||||
|
||||
#define master_reset() \
|
||||
do { \
|
||||
not_counter = 0; \
|
||||
not_offset = MEM_META_LENGTH; \
|
||||
mem_sel = 0; \
|
||||
master_mem_select(mem_sel); \
|
||||
} while (0)
|
||||
|
||||
static void master_init() {
|
||||
master_pin_open();
|
||||
master_spi_open();
|
||||
master_mem_init();
|
||||
master_reset();
|
||||
}
|
||||
|
||||
static void master_event_handle() {}
|
||||
|
||||
static void master_pin_callback(PIN_Handle handle, PIN_Id pin) {
|
||||
switch (pin) {
|
||||
case PIN_MEM_RST:
|
||||
// memory reset
|
||||
flag_enable(EVT_PIN_RESET);
|
||||
break;
|
||||
|
||||
case PIN_MEM_REQ:
|
||||
// memory switch request
|
||||
flag_enable(EVT_PIN_REQST);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
struct void master_handle_notify(uint16 length, uint8 *value) {
|
||||
if (!master_pin_input(PIN_MEM_RST) || flag_mask(EVT_PIN_RESET)) {
|
||||
// ignore all incoming notify;
|
||||
flag_disable(EVT_PIN_RESET);
|
||||
master_reset();
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t counter = not_counter++;
|
||||
|
||||
// localize current buffer
|
||||
uint8_t *p = master_mem_buffer;
|
||||
|
||||
// update offset
|
||||
uint32_t cnt_offset = not_offset;
|
||||
not_offset = cnt_offset + 3 + length;
|
||||
|
||||
*p++ = MEM_INS_WRITE; // instruction
|
||||
*p++ = (uint8_t)((cnt_offset >> 8) & 0xFF); // address
|
||||
*p++ = (uint8_t)(cnt_offset & 0xFF); // address
|
||||
*p++ = 0xFF; // data header
|
||||
*p++ = counter; // data counter
|
||||
*p++ = length; // data content length
|
||||
unsafe_memcpy(p, value, length); // data content
|
||||
|
||||
master_mem_submit(p - master_mem_buffer);
|
||||
|
||||
if (master_pin_input(PIN_MEM_BZY) && //
|
||||
(not_offset >= MEM_SWITCH_THRESHOLD || flag_mask(EVT_PIN_REQST))) {
|
||||
flag_disable(EVT_PIN_REQST);
|
||||
master_switch_memory();
|
||||
}
|
||||
|
||||
master_pin_output(PIN_LED_GRN, not_counter & 0x10);
|
||||
}
|
||||
|
||||
struct void master_switch_memory() {
|
||||
uint16_t cnt_offset = not_offset;
|
||||
not_offset = MEM_META_LENGTH;
|
||||
|
||||
// localize current buffer
|
||||
uint8_t *p = spi_tx_buffer;
|
||||
|
||||
*p++ = MEM_INS_WRITE; // instruction
|
||||
*p++ = 0; // address
|
||||
*p++ = 0; // address
|
||||
*p++ = (uint8_t)((cnt_offset >> 8) & 0xFF); // data: notify data length
|
||||
*p++ = (uint8_t)(cnt_offset & 0xFF); // data: notify data length
|
||||
*p++ = 0;
|
||||
*p++ = 0;
|
||||
|
||||
master_mem_submit(p - master_mem_buffer);
|
||||
|
||||
// switch memory
|
||||
master_mem_select((mem_sel++) & 0x01);
|
||||
|
||||
master_pin_output(PIN_LED_RED, mem_sel & 0x10);
|
||||
}
|
||||
|
||||
#endif // CC2650_MASTER_H
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#ifndef MASTER_PIN_LP_H
|
||||
#define MASTER_PIN_LP_H
|
||||
|
||||
#ifndef CC2650_LAUNCHXL
|
||||
#error "CC2650_LAUNCHXL not defined"
|
||||
#endif
|
||||
|
||||
#define PIN_LED_RED IOID_6
|
||||
#define PIN_LED_GRN IOID_6
|
||||
|
||||
#define PIN_MEM_RST IOID_10
|
||||
#define PIN_MEM_BZY IOID_11
|
||||
#define PIN_MEM_REQ IOID_12
|
||||
#define PIN_MEM_SEL IOID_15
|
||||
|
||||
#define PIN_SPI_CS IOID_14
|
||||
#define PIN_SPI_CK Board_SPI0_CLK
|
||||
#define PIN_SPI_DI Board_SPI0_MISO
|
||||
#define PIN_SPI_DO Board_SPI0_MOSI
|
||||
|
||||
#define PIN_DEBUG_1 IOID_4
|
||||
#define PIN_DEBUG_2 IOID_5
|
||||
#define PIN_DEBUG_3 IOID_21
|
||||
#define PIN_DEBUG_4 IOID_22
|
||||
|
||||
#endif MASTER_PIN_LP_H
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
#ifndef MASTER_PIN_MA_H
|
||||
#define MASTER_PIN_MA_H
|
||||
|
||||
#ifndef BOOSTXL_CC2650MA
|
||||
#error "BOOSTXL_CC2650MA not defined"
|
||||
#endif
|
||||
|
||||
#define PIN_LED_RED IOID_UNUSED
|
||||
#define PIN_LED_GRN IOID_UNUSED
|
||||
|
||||
#define PIN_MEM_RST DIO4
|
||||
#define PIN_MEM_SEL DIO8
|
||||
#define PIN_MEM_BZY DIO13
|
||||
#define PIN_MEM_REQ DIO14
|
||||
|
||||
#define PIN_SPI_CS DIO9
|
||||
#define PIN_SPI_CK Board_SPI0_CLK // DIO10
|
||||
#define PIN_SPI_DI Board_SPI0_MISO // DIO12
|
||||
#define PIN_SPI_DO Board_SPI0_MOSI // DIO11
|
||||
|
||||
#define PIN_DEBUG_1 IOID_UNUSED
|
||||
#define PIN_DEBUG_2 IOID_UNUSED
|
||||
#define PIN_DEBUG_3 IOID_UNUSED
|
||||
#define PIN_DEBUG_4 IOID_UNUSED
|
||||
|
||||
#endif MASTER_PIN_MA_H
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef MASTER_MEM_H
|
||||
#define MASTER_MEM_H
|
||||
|
||||
#include "master_pin.h"
|
||||
#include "master_spi.h"
|
||||
|
||||
// clang-format off
|
||||
#define MEM_BUFFER_SIZE SPI_TX_BUFFER_SIZE
|
||||
#define MEM_SWITCH_THRESHOLD 0x1000
|
||||
|
||||
#define MSM_REG_WRITE 0x01
|
||||
#define MEM_INS_WRITE 0x02
|
||||
#define MEM_INS_READ 0x03
|
||||
#define MEM_REG_READ 0x05
|
||||
// clang-format on
|
||||
|
||||
#define master_mem_buffer master_tx_buffer
|
||||
|
||||
#define master_mem_select(value) master_pin_output(PIN_MEM_SEL, (value) ? 1 : 0)
|
||||
|
||||
#define master_mem_submit(len) master_spi_transaction(len)
|
||||
|
||||
#define master_mem_init() \
|
||||
do { \
|
||||
master_mem_buffer[0] = MSM_REG_WRITE; \
|
||||
master_mem_buffer[1] = 0b01000011; \
|
||||
master_mem_select(1); \
|
||||
master_mem_submit(2); \
|
||||
master_mem_select(0); \
|
||||
master_mem_submit(2); \
|
||||
} while (0)
|
||||
|
||||
#endif // MASTER_MEM_H
|
||||
@@ -0,0 +1,73 @@
|
||||
#ifndef MASTER_PIN_H
|
||||
#define MASTER_PIN_H
|
||||
|
||||
#include <Board.h>
|
||||
#include <ti/drivers/PIN.h>
|
||||
|
||||
#if defined(CC2650_LAUNCHXL)
|
||||
#include "lp/master_pin.h"
|
||||
#elif defined(BOOSTXL_CC2650MA)
|
||||
#include "ma/master_pin.h"
|
||||
#endif
|
||||
|
||||
static PIN_Handle master_pins_handle;
|
||||
|
||||
static PIN_Config master_pin_config_table[] = { //
|
||||
|
||||
// memory select
|
||||
PIN_MEM_SEL | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL,
|
||||
|
||||
// master side is reading buffer.
|
||||
PIN_MEM_BZY | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS,
|
||||
|
||||
// master side request to switch buffer
|
||||
PIN_MEM_REQ | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS,
|
||||
|
||||
// memory reset reset
|
||||
PIN_MEM_RST | PIN_INPUT_EN | PIN_PULLUP | PIN_HYSTERESIS,
|
||||
|
||||
// spi chip select, deprecate native CS pin
|
||||
PIN_SPI_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
|
||||
|
||||
// debug pin
|
||||
PIN_DEBUG_1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
|
||||
PIN_DEBUG_2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
|
||||
PIN_DEBUG_3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
|
||||
PIN_DEBUG_4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL,
|
||||
|
||||
// LED
|
||||
PIN_LED_RED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
PIN_LED_GRN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
|
||||
|
||||
//
|
||||
PIN_TERMINATE};
|
||||
|
||||
static void master_pin_callback(PIN_Handle handle, PIN_Id pin);
|
||||
|
||||
#define master_pin_open() \
|
||||
do { \
|
||||
PIN_State state; \
|
||||
master_pins_handle = PIN_open(&state, master_pin_config_table); \
|
||||
PIN_registerIntCb(master_pins_handle, master_pin_callback); \
|
||||
PIN_setInterrupt(master_pins_handle, HTA_MEM_RST | PIN_IRQ_NEGEDGE); \
|
||||
PIN_setInterrupt(master_pins_handle, HTA_MEM_REQ | PIN_IRQ_NEGEDGE); \
|
||||
} while (0)
|
||||
|
||||
#define master_pin_add(configuration) PIN_add(master_pins_handle, configuration)
|
||||
#define master_pin_remove(pin) PIN_remove(master_pins_handle, pin)
|
||||
#define master_pin_close() PIN_close(master_pins_handle)
|
||||
|
||||
#ifdef MASTER_PIN_USE_CC26XX
|
||||
|
||||
#include <ti/drivers/pin/PINCC26xx.h>
|
||||
#define headstage_pin_output(pin, value) PINCC26XX_setOutputValue(headstage_pins_handle, PIN_ID(pin), (value))
|
||||
#define headstage_pin_input(pin) PINCC26XX_getInputValue(PIN_ID(pin))
|
||||
|
||||
#else
|
||||
|
||||
#define master_pin_output(pin, value) PIN_setOutputValue(master_pins_handle, PIN_ID(pin), (value))
|
||||
#define master_pin_input(pin) PIN_getInputValue(PIN_ID(pin))
|
||||
|
||||
#endif
|
||||
|
||||
#endif MASTER_PIN_H
|
||||
@@ -0,0 +1,43 @@
|
||||
#ifndef MASTER_SPI_H
|
||||
#define MASTER_SPI_H
|
||||
|
||||
// clang-format off
|
||||
#include <ti/drivers/SPI.h>
|
||||
#include <ti/drivers/dma/UDMACC26XX.h>
|
||||
#include <ti/drivers/spi/SPICC26XXDMA.h>
|
||||
// clang-format on
|
||||
|
||||
#include "master_pin.h"
|
||||
|
||||
#define SPI_TX_BUFFER_SIZE 50
|
||||
|
||||
static uint8_t master_tx_buffer[SPI_TX_BUFFER_SIZE] = {0};
|
||||
|
||||
static SPI_Handle master_spi_handle;
|
||||
static SPI_Transaction master_spi_transaction;
|
||||
|
||||
#define master_spi_open() \
|
||||
do { \
|
||||
SPI_init(); \
|
||||
SPI_Params spi_parameter; \
|
||||
SPI_Params_init(&spi_parameter); \
|
||||
spi_parameter.transferMode = SPI_MODE_BLOCKING; \
|
||||
spi_parameter.mode = SPI_MASTER; \
|
||||
spi_parameter.bitRate = 12000000; \
|
||||
spi_parameter.transferTimeout = 1000; \
|
||||
spi_parameter.dataSize = 8; \
|
||||
spi_parameter.frameFormat = SPI_POL0_PHA0; \
|
||||
master_spi_handle = SPI_open(Board_SPI0, &spi_parameter); \
|
||||
} while (0)
|
||||
|
||||
#define master_spi_transaction(len) \
|
||||
do { \
|
||||
master_spi_transaction.txBuf = master_tx_buffer; \
|
||||
master_spi_transaction.rxBuf = NULL; \
|
||||
master_spi_transaction.count = (len); \
|
||||
master_pin_output(PIN_SPI_CS, 0); \
|
||||
SPI_transfer(master_spi_handle, &master_spi_transaction); \
|
||||
master_pin_output(PIN_SPI_CS, 1); \
|
||||
} while (0)
|
||||
|
||||
#endif // MASTER_SPI_H
|
||||
+444
@@ -0,0 +1,444 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Characteristic
|
||||
==============
|
||||
|
||||
file defined:
|
||||
|
||||
`simplelink/ble_sdk_2_02_02_25/src/profiles/simple_profile/cc26xx/simple_gatt_profile.c`
|
||||
|
||||
| char | UUID | handle | property | description |
|
||||
| ==== | ==== | ====== | ======== | =========================== |
|
||||
| 1 | FFF1 | 0x001E | ------r- | feature list |
|
||||
| 2 | FFF2 | 0x0021 | ------r- | command return channel |
|
||||
| 3 | FFF3 | 0x0024 | ----w--- | instruction input channel |
|
||||
| 4 | FFF4 | 0x0027 | ---n---- | data notify channel |
|
||||
| 5 | FFF5 | 0x002B | ----w-r- | debug use channel |
|
||||
|
||||
Instruction Specification
|
||||
=========================
|
||||
|
||||
file defined:
|
||||
|
||||
Bio_Pro_Sci / �� / Pi3/DataServer / CC2650 / CC2650���誘銵�
|
||||
|
||||
```
|
||||
struct instruction {
|
||||
unsigned int ins_type :4; // instruction type
|
||||
unsigned int device_id :4; // device ID
|
||||
unsigned int ins_oper :4; // instruction operator
|
||||
unsigned int ins_len :4; // data length
|
||||
char ins_data[ins_len]; // data content
|
||||
};
|
||||
```
|
||||
|
||||
instruction type
|
||||
|
||||
| ins_type | value | description |
|
||||
| ============ | ===== | ========================== |
|
||||
| INS_TYPE_RIS | 0x30 | real device instruction |
|
||||
| INS_TYPE_VIS | 0xC0 | virtual device instruction |
|
||||
| INS_TYPE_CIS | 0x70 | command instruction |
|
||||
|
||||
instruction operator
|
||||
|
||||
| ins_oper | value | description |
|
||||
| ======== | ===== | ======================== |
|
||||
| | 0x00 | not used |
|
||||
| | 0x10 | not used |
|
||||
| | 0x20 | not used |
|
||||
| VIS_ASK | 0x30 | not used |
|
||||
| | 0x40 | not used |
|
||||
| | 0x50 | not used |
|
||||
| VIS_INT | 0x60 | interrupt device |
|
||||
| | 0x70 | not used |
|
||||
| | 0x80 | not used |
|
||||
| VIS_FUH | 0x90 | not used |
|
||||
| VIS_CAL | 0xA0 | not used |
|
||||
| | 0xB0 | not used |
|
||||
| VIS_STI | 0xC0 | device start working |
|
||||
| | 0xD0 | not used |
|
||||
| | 0xE0 | not used |
|
||||
| VIS_RST | 0xF0 | device reset |
|
||||
| CIS_NOP | 0x00 | nothing (clean char2) |
|
||||
| CIS_VOLT | 0x10 | report battery voltage |
|
||||
| CIS_LED | 0x20 | control device LED |
|
||||
| | 0x30 | not defined |
|
||||
| | 0x40 | not defined |
|
||||
| | 0x50 | not defined |
|
||||
| | 0x60 | not defined |
|
||||
| | 0x70 | not defined |
|
||||
| | 0x80 | not defined |
|
||||
| | 0x90 | not defined |
|
||||
| | 0xA0 | not defined |
|
||||
| | 0xB0 | not defined |
|
||||
| | 0xC0 | not defined |
|
||||
| | 0xD0 | not defined |
|
||||
| | 0xE0 | not defined |
|
||||
| | 0xF0 | not defined |
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#ifndef HEADSTAGE_H
|
||||
#define HEADSTAGE_H
|
||||
|
||||
/*================
|
||||
==== include ====
|
||||
================*/
|
||||
|
||||
#include <ti/sysbios/knl/Semaphore.h>
|
||||
#include "simple_gatt_profile.h"
|
||||
|
||||
/*======================
|
||||
==== event control ====
|
||||
=====================*/
|
||||
|
||||
uint16_t EVENT_MASK = 0;
|
||||
static ICall_Semaphore semaphore;
|
||||
|
||||
// clang-format off
|
||||
#define EVT_ALL 0xFFFF // all event mask
|
||||
#define EVT_CONNECTED 0x4000 // event when device be connected
|
||||
#define EVT_DISCONNECTED 0x8000 // event when device disconnected
|
||||
#define EVT_PERIODIC_0 0x0100
|
||||
#define EVT_PERIODIC_1 0x0200
|
||||
#define EVT_PERIODIC_2 0x0400
|
||||
#define EVT_PERIODIC_3 0x0800
|
||||
// clang-format on
|
||||
|
||||
/**
|
||||
* test event [flag] has been enabled.
|
||||
*/
|
||||
#define flag_mask(flag) ((EVENT_MASK & (flag)) != 0)
|
||||
|
||||
/**
|
||||
* enable event [flag].
|
||||
*/
|
||||
#define flag_enable(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EVENT_MASK |= (uint16_t)(flag); \
|
||||
Hwi_restore(__key); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* disable event [flag].
|
||||
*/
|
||||
#define flag_disable(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EVENT_MASK &= ~((uint16_t)(flag)); \
|
||||
Hwi_restore(__key); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* fire a event with [flag].
|
||||
*/
|
||||
#define flag_notify(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EVENT_MASK |= (uint16_t)(flag); \
|
||||
Hwi_restore(__key); \
|
||||
Semaphore_post(semaphore); \
|
||||
} while (0)
|
||||
|
||||
/*=======================
|
||||
==== characteristic ====
|
||||
=======================*/
|
||||
|
||||
// feature list characteristic
|
||||
#define BLE_FLS_BUFF_CHAR SIMPLEPROFILE_CHAR1
|
||||
#define BLE_FLS_BUFF_SIZE SIMPLEPROFILE_CHAR1_LEN
|
||||
|
||||
// command return characteristic
|
||||
#define BLE_CDR_BUFF_CHAR SIMPLEPROFILE_CHAR2
|
||||
#define BLE_CDR_BUFF_SIZE SIMPLEPROFILE_CHAR2_LEN
|
||||
|
||||
// instruction input characteristic
|
||||
#define BLE_INS_BUFF_CHAR SIMPLEPROFILE_CHAR3
|
||||
#define BLE_INS_BUFF_SIZE SIMPLEPROFILE_CHAR3_LEN
|
||||
|
||||
// data notify characteristic
|
||||
#define BLE_NOT_BUFF_CHAR SIMPLEPROFILE_CHAR4
|
||||
#define BLE_NOT_BUFF_SIZE SIMPLEPROFILE_CHAR4_LEN
|
||||
|
||||
// debug use characteristic
|
||||
#define BLE_DEBUG_BUFF_CHAR SIMPLEPROFILE_CHAR5
|
||||
#define BLE_DEBUG_BUFF_SIZE SIMPLEPROFILE_CHAR5_LEN
|
||||
|
||||
/*================================
|
||||
==== command/operation macro ====
|
||||
===============================*/
|
||||
|
||||
// clang-format off
|
||||
|
||||
// instruction type
|
||||
#define INS_TYPE_RIS 0x30
|
||||
#define INS_TYPE_VIS 0xC0
|
||||
#define INS_TYPE_CIS 0x70
|
||||
|
||||
// VIS operator
|
||||
#define VIS_ASK 0x30
|
||||
#define VIS_INT 0x60
|
||||
#define VIS_FUH 0x90
|
||||
#define VIS_CAL 0xA0
|
||||
#define VIS_STI 0xC0
|
||||
#define VIS_RST 0xF0
|
||||
|
||||
// CIS operator
|
||||
#define CIS_NOP 0x00
|
||||
#define CIS_VOLT 0x10
|
||||
#define CIS_LED 0x20
|
||||
|
||||
// CIS return status code
|
||||
#define CDR_SUCCESS 0x0
|
||||
#define CDR_FAILURE 0x1
|
||||
#define CDR_INV_PAR 0x2
|
||||
#define CDR_EOD 0xF
|
||||
|
||||
// clang-format on
|
||||
|
||||
/*======================
|
||||
==== utility macro ====
|
||||
=====================*/
|
||||
|
||||
#define _B_4b4b(a, b) ((((a) << 4) & 0xF0) | ((b)&0x0F))
|
||||
|
||||
#define _B_flip2(a) \
|
||||
({ \
|
||||
uint8_t _a = (a)&0x03; \
|
||||
((_a & 0x02) >> 1) | ((_a & 0x01) << 1); \
|
||||
})
|
||||
|
||||
#define _B_flip3(a) \
|
||||
({ \
|
||||
uint8_t _a = (a)&0x07; \
|
||||
((_a & 0x04) >> 2) | (_a & 0x02) | ((_a & 0x01) << 2); \
|
||||
})
|
||||
|
||||
#define _B_flip4(a) \
|
||||
({ \
|
||||
uint8_t _a = (a)&0x0F; \
|
||||
((_a & 0x08) >> 3) | ((_a & 0x04) >> 1) | ((_a & 0x02) << 1) | ((_a & 0x01) << 3); \
|
||||
})
|
||||
|
||||
#define _B_flip5(a) \
|
||||
({ \
|
||||
uint8_t _a = (a)&0x1F; \
|
||||
((_a & 0x10) >> 4) | ((_a & 0x08) >> 2) | (_a & 0x04) | ((_a & 0x02) << 2) | ((_a & 0x01) << 4); \
|
||||
})
|
||||
|
||||
#define unsafe_memcpy(p, src, len) \
|
||||
do { \
|
||||
memcpy(p, src, len); \
|
||||
p += len; \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* make task sleep in certain [ms].
|
||||
* count with cpu tick.
|
||||
*/
|
||||
#define headstage_cpu_delay_ms(ms) CPUdelay((ms) * 16000)
|
||||
|
||||
/**
|
||||
* make task sleep in certain [us].
|
||||
* count with cpu tick.
|
||||
*/
|
||||
#define headstage_cpu_delay_us(us) CPUdelay((us) * 16)
|
||||
|
||||
/*======================================
|
||||
==== abstract function declaration ====
|
||||
=====================================*/
|
||||
|
||||
/**
|
||||
* initialize.
|
||||
*/
|
||||
static void headstage_init();
|
||||
|
||||
/**
|
||||
* decoding RIS.
|
||||
*
|
||||
* @param ins_len: instruction length
|
||||
* @param instruction: instruction content
|
||||
*/
|
||||
static void headstage_update_ris_instruction(uint8_t ins_len, uint8_t *instruction);
|
||||
|
||||
/**
|
||||
* decoding VIS.
|
||||
*
|
||||
* @param vis_oper: VIS operator.
|
||||
*/
|
||||
static void headstage_update_vis_instruction(uint8_t vis_oper);
|
||||
|
||||
/*========================
|
||||
==== global property ====
|
||||
========================*/
|
||||
|
||||
/**
|
||||
* device/chip ID. updated by system.
|
||||
*/
|
||||
static uint8_t CHIP_ID = 0;
|
||||
|
||||
#define CONNECT_HANDLE_UNCONNECTED 0xFFFF
|
||||
|
||||
/**
|
||||
* connection handle. updated by system.
|
||||
*/
|
||||
static uint16_t CONNECT_HANDLE = CONNECT_HANDLE_UNCONNECTED;
|
||||
|
||||
/*====================
|
||||
==== event table ====
|
||||
====================*/
|
||||
|
||||
/**
|
||||
* event table entry.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* event mask.
|
||||
*/
|
||||
uint16_t event_mask;
|
||||
|
||||
/**
|
||||
* event callback. invoked by system when system [EVENT_MASK] set with
|
||||
* [event_mask] bits.
|
||||
*/
|
||||
void (*event_callback)();
|
||||
} EventTableEntry;
|
||||
|
||||
/*==========================================
|
||||
==== device implement implement header ====
|
||||
=========================================*/
|
||||
|
||||
#include "headstage_sti.h"
|
||||
|
||||
/*======================
|
||||
==== main function ====
|
||||
======================*/
|
||||
|
||||
static EventTableEntry EVENT_TABLE[] = { //
|
||||
#ifdef HEADSTAGE_TNI_H
|
||||
{EVT_ALL, &headstage_tni_event},
|
||||
#endif
|
||||
#ifdef HEADSTAGE_UNI_H
|
||||
{EVT_ALL, &headstage_uni_event},
|
||||
#endif
|
||||
#ifdef HEADSTAGE_ZM_H
|
||||
{EVT_ALL, &headstage_zm_event},
|
||||
#endif
|
||||
#ifdef HEADSTAGE_STI_H
|
||||
{EVT_ALL, &headstage_sti_event},
|
||||
#endif
|
||||
// terminated
|
||||
{0, NULL}};
|
||||
|
||||
/**
|
||||
* system event handle. It go through [EVENT_TABLE] and invoke event callback
|
||||
* if event_mask bits set.
|
||||
*/
|
||||
static void headstage_event_handle() {
|
||||
for (EventTableEntry *entry = EVENT_TABLE; EVENT_MASK && entry->event_mask; entry++) {
|
||||
if (entry->event_callback && flag_mask(entry->event_mask)) {
|
||||
entry->event_callback();
|
||||
}
|
||||
}
|
||||
|
||||
// remove system one-shot flag
|
||||
flag_disable(0xF0000000);
|
||||
}
|
||||
|
||||
/**
|
||||
* system handle for instruction input.
|
||||
*/
|
||||
static void headstage_update_instruction(uint8_t *instruction) {
|
||||
static uint8_t cdr_buf[BLE_CDR_BUFF_SIZE] = {0};
|
||||
|
||||
uint8_t ins_type = instruction[0] & 0xF0;
|
||||
CHIP_ID = instruction[0] & 0x0F;
|
||||
uint8_t ins_oper = instruction[1] & 0xF0;
|
||||
uint8_t ins_len = instruction[1] & 0x0F;
|
||||
|
||||
switch (ins_type) {
|
||||
case INS_TYPE_RIS: {
|
||||
headstage_update_ris_instruction(ins_len, instruction + 2);
|
||||
break;
|
||||
}
|
||||
case INS_TYPE_VIS: {
|
||||
headstage_update_vis_instruction(ins_oper);
|
||||
break;
|
||||
}
|
||||
case INS_TYPE_CIS: {
|
||||
switch (ins_oper) {
|
||||
case CIS_NOP: {
|
||||
// nothing
|
||||
cdr_buf[0] = _B_4b4b(CIS_NOP, CHIP_ID);
|
||||
cdr_buf[1] = _B_4b4b(CDR_SUCCESS, 0);
|
||||
|
||||
SimpleProfile_SetParameter(BLE_CDR_BUFF_CHAR, 2, cdr_buf);
|
||||
break;
|
||||
}
|
||||
#ifdef HEADSTAGE_CIS_VOLT_H
|
||||
case CIS_VOLT: {
|
||||
uint8_t status = headstage_update_vis_volt(ins_len, instruction + 2, cdr_buf + 2);
|
||||
|
||||
cdr_buf[0] = _B_4b4b(CIS_VOLT, CHIP_ID);
|
||||
cdr_buf[1] = status;
|
||||
|
||||
SimpleProfile_SetParameter(BLE_CDR_BUFF_CHAR, BLE_CDR_BUFF_SIZE, cdr_buf);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#ifdef HEADSTAGE_CIS_LED_H
|
||||
case CIS_LED: {
|
||||
uint8_t status = headstage_update_vis_led(ins_len, instruction + 2, cdr_buf + 2);
|
||||
|
||||
cdr_buf[0] = _B_4b4b(CIS_LED, CHIP_ID);
|
||||
cdr_buf[1] = status;
|
||||
|
||||
SimpleProfile_SetParameter(BLE_CDR_BUFF_CHAR, BLE_CDR_BUFF_SIZE, cdr_buf);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
default: {
|
||||
cdr_buf[0] = _B_4b4b(ins_oper, CHIP_ID);
|
||||
cdr_buf[1] = _B_4b4b(CDR_FAILURE, 0);
|
||||
|
||||
SimpleProfile_SetParameter(BLE_CDR_BUFF_CHAR, BLE_CDR_BUFF_SIZE, cdr_buf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* system handle for characteristic updated.
|
||||
*/
|
||||
static void headstage_characteristic_updated(uint8_t characteristic) {
|
||||
static uint8_t ins_buf[BLE_INS_BUFF_SIZE] = {0};
|
||||
|
||||
switch (characteristic) {
|
||||
case BLE_INS_BUFF_CHAR:
|
||||
SimpleProfile_GetParameter(BLE_INS_BUFF_CHAR, ins_buf);
|
||||
headstage_update_instruction(ins_buf);
|
||||
break;
|
||||
|
||||
#ifdef HEADSTAGE_DEBUG_H
|
||||
case BLE_DEBUG_BUFF_CHAR: {
|
||||
SimpleProfile_GetParameter(BLE_DEBUG_BUFF_CHAR, headstage_debug_buffer);
|
||||
|
||||
uint8_t data_length = headstage_debug_instruction(headstage_debug_buffer);
|
||||
if (data_length) {
|
||||
SimpleProfile_SetParameter(BLE_DEBUG_BUFF_CHAR, data_length, headstage_debug_buffer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif // HEADSTAGE_H
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_ARM_H
|
||||
#define HEADSTAGE_ARM_H
|
||||
|
||||
|
||||
static void headstage_arm_append_ramp_data(uint8_t *buff) {
|
||||
static uint16_t headstage_ramp_data_counter = 0;
|
||||
|
||||
uint16_t v = headstage_ramp_data_counter++;
|
||||
|
||||
buff[0] = 0xB0 | (0x0F & (uint8_t)(v >> 6));
|
||||
buff[1] = (uint8_t)(v << 2);
|
||||
}
|
||||
|
||||
|
||||
#endif // HEADSTAGE_ARM_H
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
|
||||
#ifndef HEADSTAGE_CIS_LED_H
|
||||
#define HEADSTAGE_CIS_LED_H
|
||||
|
||||
#include "headstage_led.h"
|
||||
|
||||
// clang-format off
|
||||
#define CIS_LED_DISABLE 0x00
|
||||
#define CIS_LED_ENABLE 0x01
|
||||
#define CIS_LED_PATTERN 0x10
|
||||
#define CIS_LED_SET 0x20
|
||||
// clang-format on
|
||||
|
||||
#define LED_PATTERN_SIZE 0
|
||||
// static LEDParameter LED_PATTERN_TABLE[] = {};
|
||||
|
||||
static void headstage_cis_led_enable(uint8_t enable);
|
||||
|
||||
/**
|
||||
* @return: CDR_SUCCESS
|
||||
*/
|
||||
static uint8_t headstage_cis_led_set_pattern(uint8_t pattern);
|
||||
|
||||
/**
|
||||
* @para pattern: pattern number
|
||||
* @para parameter: led parameter, NULL to unset
|
||||
* @return: CDR_SUCCESS
|
||||
*/
|
||||
static uint8_t headstage_cis_led_set_value(uint8_t pattern, //
|
||||
LEDParameter *parameter);
|
||||
|
||||
/*
|
||||
* @return: _B_4b4b(CDR_SUCCESS, length), or others,
|
||||
*/
|
||||
static uint8_t headstage_update_vis_led(uint8_t ins_len, //
|
||||
uint8_t *instruction,
|
||||
uint8_t *cdr_buf) {
|
||||
uint8_t led_oper = instruction[0];
|
||||
|
||||
switch (led_oper) {
|
||||
case CIS_LED_DISABLE:
|
||||
case CIS_LED_ENABLE:
|
||||
if (ins_len == 1) {
|
||||
headstage_cis_led_enable(led_oper);
|
||||
|
||||
return _B_4b4b(CDR_SUCCESS, 0);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
case CIS_LED_PATTERN:
|
||||
if (ins_len == 1) {
|
||||
cdr_buf[0] = LED_PATTERN_SIZE;
|
||||
return _B_4b4b(CDR_SUCCESS, 1);
|
||||
} else if (ins_len == 2) {
|
||||
uint8_t pattern = instruction[1];
|
||||
uint8_t status = headstage_cis_led_set_pattern(pattern);
|
||||
return _B_4b4b(status, 0);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
case CIS_LED_SET:
|
||||
if (ins_len == 2) {
|
||||
uint8_t pattern = instruction[1];
|
||||
uint8_t status = headstage_cis_led_set_value(pattern, NULL);
|
||||
return _B_4b4b(status, 0);
|
||||
|
||||
} else if (ins_len == 7) {
|
||||
uint8_t pattern = instruction[1];
|
||||
|
||||
LEDParameter parameter = {
|
||||
// clang-format off
|
||||
.luminance = instruction[2],
|
||||
.red = instruction[3],
|
||||
.green = instruction[4],
|
||||
.blue = instruction[5],
|
||||
.duration = (instruction[6] >> 4) & 0xF,
|
||||
.duty_cycle = instruction[6] & 0xF
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
uint8_t status = headstage_cis_led_set_value(pattern, ¶meter);
|
||||
return _B_4b4b(status, 0);
|
||||
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return _B_4b4b(CDR_INV_PAR, 0);
|
||||
}
|
||||
|
||||
/*===========================
|
||||
==== function implement ====
|
||||
==========================*/
|
||||
|
||||
#endif // HEADSTAGE_CIS_LED_H
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_CIS_VOLT_H
|
||||
#define HEADSTAGE_CIS_VOLT_H
|
||||
|
||||
static void headstage_cis_volt(uint8_t second);
|
||||
|
||||
/*
|
||||
* @return: _B_4b4b(CDR_SUCCESS, length), or others,
|
||||
*/
|
||||
static uint8_t headstage_update_vis_volt(uint8_t ins_len, //
|
||||
uint8_t *instruction,
|
||||
uint8_t *cdr_buf) {
|
||||
if (ins_len == 0) {
|
||||
uint16_t volt_value = headstage_cis_volt(0);
|
||||
|
||||
cdr_buf[0] = (volt_value)&0xFF;
|
||||
cdr_buf[1] = (volt_value >> 8)&0xFF;
|
||||
|
||||
return _B_4b4b(CDR_SUCCESS, 2);
|
||||
|
||||
} else if (ins_len == 1) {
|
||||
headstage_cis_volt(instruction[0]);
|
||||
|
||||
return _B_4b4b(CDR_SUCCESS, 0);
|
||||
|
||||
} else {
|
||||
return _B_4b4b(CDR_INV_PAR, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/*===========================
|
||||
==== function implement ====
|
||||
==========================*/
|
||||
|
||||
|
||||
#endif // HEADSTAGE_CIS_VOLT_H
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
|
||||
/**
|
||||
* ref: http://dev.ti.com/tirex/content/tirtos_cc13xx_cc26xx_2_21_00_06/products/bios_6_46_01_37/docs/cdoc/ti/sysbios/knl/Clock.html
|
||||
*/
|
||||
|
||||
#ifndef HRADSTAGE_CLOCK_H
|
||||
#define HRADSTAGE_CLOCK_H
|
||||
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
#include "headstage_LED.h"
|
||||
|
||||
|
||||
#define EVT_PERIODIC_CLOCK EVT_PERIODIC_0
|
||||
|
||||
static Clock_Handle clock_handle = NULL;
|
||||
static Clock_Handle LED_clock_handle = NULL;
|
||||
|
||||
|
||||
static void headstage_clock_callback(UArg arg) {
|
||||
flag_notify(EVT_PERIODIC_CLOCK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define headstage_clock_start(_clock_handle) Clock_start(_clock_handle)
|
||||
#define headstage_clock_stop(_clock_handle) Clock_stop(_clock_handle)
|
||||
#define headstage_clock_active(_clock_handle) (_clock_handle && Clock_isActive(_clock_handle))
|
||||
static void LED_off();
|
||||
|
||||
#define headstage_clock_close(_clock_handle) \
|
||||
do { \
|
||||
Clock_delete(_clock_handle); \
|
||||
_clock_handle = NULL; \
|
||||
} while (0)
|
||||
|
||||
// XXX function not tested
|
||||
// period in millisecond
|
||||
#define headstage_clock_open(p) \
|
||||
do { \
|
||||
Clock_Params param; \
|
||||
Clock_Params_init(¶m); \
|
||||
param.period = 0; \
|
||||
param.startFlag = false; \
|
||||
clock_handle = Clock_create(headstage_clock_callback, 0, ¶m, NULL); \
|
||||
uint32_t _period = (p)*1000 / Clock_tickPeriod; \
|
||||
Clock_setPeriod(clock_handle, _period); \
|
||||
} while (0)
|
||||
|
||||
#define headstage_LED_clock_open(p) \
|
||||
do { \
|
||||
Clock_Params param; \
|
||||
Clock_Params_init(¶m); \
|
||||
param.period = 0; \
|
||||
param.startFlag = false; \
|
||||
LED_clock_handle = Clock_create(headstage_LED_clock_callback, 0, ¶m, NULL); \
|
||||
uint32_t _period = (p)*1000 / Clock_tickPeriod; \
|
||||
Clock_setPeriod(LED_clock_handle, _period); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define headstage_clock_set_frequency(frequency) \
|
||||
do { \
|
||||
uint32_t _frequency = (uint32_t)(frequency); \
|
||||
Types_FreqHz _cpu_freq; \
|
||||
BIOS_getCpuFreq(&_cpu_freq); \
|
||||
uint32_t _load = _cpu_freq.lo / _frequency; \
|
||||
bool is_active = Clock_isActive(clock_handle); \
|
||||
if (is_active) Clock_stop(clock_handle); \
|
||||
Clock_setPeriod(clock_handle, _load); \
|
||||
if (is_active) Clock_start(clock_handle); \
|
||||
} while (0)
|
||||
|
||||
#endif // HRADSTAGE_CLOCK_H
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
#ifndef HEADSTAGE_DEBUG_H
|
||||
#define HEADSTAGE_DEBUG_H
|
||||
|
||||
static uint8_t headstage_debug_buffer[BLE_DEBUG_BUFF_SIZE] = {0};
|
||||
|
||||
/**
|
||||
* declare debug instruction handle.
|
||||
*
|
||||
* @param ins_buf: debug instruction buffer
|
||||
* @return: size of data length.
|
||||
* non-zero position value for write [ins_buf] back to debug characteristic.
|
||||
*/
|
||||
static uint8_t headstage_debug_instruction(uint8_t* ins_buf);
|
||||
|
||||
#define headstage_set_debug_information() SimpleProfile_SetParameter(BLE_DEBUG_BUFF_CHAR, BLE_DEBUG_BUFF_SIZE, headstage_debug_buffer)
|
||||
|
||||
#endif // HEADSTAGE_DEBUG_H
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
device implement header template
|
||||
================================
|
||||
|
||||
How to create a device header
|
||||
-----------------------------
|
||||
|
||||
1. copy this and rename
|
||||
2. update device information.
|
||||
|
||||
1. DEVICE_NAME
|
||||
2. MAJOR/MINOR_PRODUCT/VERSION_NUMBER
|
||||
|
||||
3. replace @REPLACE@ with device nick name.
|
||||
4. write your code
|
||||
5. do not remember update the device document below.
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Device Document
|
||||
===============
|
||||
|
||||
Real instruction format
|
||||
-----------------------
|
||||
|
||||
TODO
|
||||
|
||||
*/
|
||||
|
||||
#ifndef HEADSTAGE_H
|
||||
#error "headstage.h not include"
|
||||
#endif
|
||||
|
||||
#ifndef HEADSTAGE_@REPLACE@_H
|
||||
#define HEADSTAGE_@REPLACE@_H
|
||||
|
||||
/*============================
|
||||
==== product information ====
|
||||
===========================*/
|
||||
|
||||
#define DEVICE_NAME "Device Name"
|
||||
#define MAJOR_PRODUCT_NUMBER 0
|
||||
#define MINOR_PRODUCT_NUMBER 0
|
||||
#define MAJOR_VERSION_NUMBER 0
|
||||
#define MINOR_VERSION_NUMBER 0
|
||||
|
||||
/*=================
|
||||
==== constant ====
|
||||
=================*/
|
||||
|
||||
// TODO define constant macro
|
||||
|
||||
/*================
|
||||
==== include ====
|
||||
================*/
|
||||
|
||||
// TODO include other headstage header
|
||||
|
||||
/*=================================
|
||||
==== constant parameter table ====
|
||||
================================*/
|
||||
|
||||
// TODO define device relative parameter table
|
||||
|
||||
/*========================
|
||||
==== parameter table ====
|
||||
========================*/
|
||||
|
||||
struct HEADSTAGE_PARAMETER_TABLE {
|
||||
} INSTRUCTION = {0};
|
||||
|
||||
#define reset_parameter_table() memset(&INSTRUCTION, 0, sizeof(struct HEADSTAGE_PARAMETER_TABLE));
|
||||
|
||||
/*=============================
|
||||
==== function declaration ====
|
||||
============================*/
|
||||
|
||||
static void headstage_@REPLACE@_init();
|
||||
|
||||
/*=======================
|
||||
==== event dispatch ====
|
||||
=======================*/
|
||||
|
||||
static void headstage_@REPLACE@_event() {
|
||||
if (flag_mask(EVT_DISCONNECTED)) {
|
||||
headstage_update_vis_instruction(VIS_INT);
|
||||
}
|
||||
}
|
||||
|
||||
/*===========================
|
||||
==== function implement ====
|
||||
==========================*/
|
||||
|
||||
static void headstage_init() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
static void headstage_update_ris_instruction(uint8_t ins_len, uint8_t *instruction) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
static void headstage_update_vis_instruction(uint8_t vis_oper) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
/*========================
|
||||
==== device function ====
|
||||
=======================*/
|
||||
|
||||
#endif // HEADSTAGE_@REPLACE@_H
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_GPTIMER_H
|
||||
#define HEADSTAGE_GPTIMER_H
|
||||
|
||||
#include <Board.h>
|
||||
#include <ti/drivers/timer/GPTimerCC26XX.h>
|
||||
#include <ti/sysbios/BIOS.h>
|
||||
#include <xdc/runtime/Types.h>
|
||||
|
||||
#define EVT_PERIODIC_GPTIMER EVT_PERIODIC_0
|
||||
|
||||
static GPTimerCC26XX_Handle gptimer_handle;
|
||||
|
||||
static void headstage_gptimer_callback(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask) {
|
||||
flag_notify(EVT_PERIODIC_GPTIMER);
|
||||
}
|
||||
|
||||
#define headstage_gptimer_start() GPTimerCC26XX_start(gptimer_handle)
|
||||
#define headstage_gptimer_stop() GPTimerCC26XX_stop(gptimer_handle)
|
||||
#define headstage_gptimer_close() GPTimerCC26XX_close(gptimer_handle)
|
||||
|
||||
#define headstage_gptimer_open() \
|
||||
do { \
|
||||
GPTimerCC26XX_Params params; \
|
||||
GPTimerCC26XX_Params_init(¶ms); \
|
||||
params.width = GPT_CONFIG_16BIT; \
|
||||
params.mode = GPT_MODE_PERIODIC_DOWN; \
|
||||
params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF; \
|
||||
gptimer_handle = GPTimerCC26XX_open(Board_GPTIMER0A, ¶ms); \
|
||||
GPTimerCC26XX_setLoadValue(gptimer_handle, 0xFFFFFF); \
|
||||
GPTimerCC26XX_registerInterrupt(gptimer_handle, headstage_gptimer_callback, GPT_INT_TIMEOUT); \
|
||||
} while (0)
|
||||
|
||||
#define headstage_gptimer_set_frequency(frequency) \
|
||||
do { \
|
||||
uint32_t _frequency = (uint32_t)(frequency); \
|
||||
Types_FreqHz _cpu_freq; \
|
||||
BIOS_getCpuFreq(&_cpu_freq); \
|
||||
GPTimerCC26XX_Value _load = _cpu_freq.lo / _frequency - 1; \
|
||||
_load = (_load < 0xFFFF) ? _load : ((0xFA0000 | (_load / 250)) - 1); \
|
||||
GPTimerCC26XX_setLoadValue(gptimer_handle, _load); \
|
||||
} while (0)
|
||||
|
||||
#endif // HEADSTAGE_GPTIMER_H
|
||||
+198
@@ -0,0 +1,198 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_LED_H
|
||||
#define HEADSTAGE_LED_H
|
||||
|
||||
typedef struct {
|
||||
uint8_t luminance;
|
||||
uint8_t red;
|
||||
uint8_t green;
|
||||
uint8_t blue;
|
||||
uint8_t duration;
|
||||
uint8_t duty_cycle;
|
||||
} LEDParameter;
|
||||
|
||||
static void headstage_led_open();
|
||||
static void headstage_led_close();
|
||||
static void headstage_led_send(LEDParameter *led);
|
||||
static void headstage_led_color(uint8_t color);
|
||||
|
||||
static uint16_t headstage_led_set_dark(uint16_t *ins_buf, uint8_t repeat) {
|
||||
uint16_t *p = ins_buf;
|
||||
|
||||
*p++ = 0;
|
||||
*p++ = 0;
|
||||
|
||||
for (uint8_t j = 0; j < repeat; j++) {
|
||||
*p++ = 0xE000;
|
||||
*p++ = 0x0000;
|
||||
}
|
||||
|
||||
*p++ = 0xFFFF;
|
||||
*p++ = 0xFFFF;
|
||||
|
||||
return p - ins_buf;
|
||||
}
|
||||
|
||||
static uint16_t headstage_led_set_bright(uint16_t *ins_buf, uint8_t repeat) {
|
||||
uint16_t *p = ins_buf;
|
||||
|
||||
*p++ = 0;
|
||||
*p++ = 0;
|
||||
|
||||
for (uint8_t j = 0; j < repeat; j++) {
|
||||
*p++ = 0xFEFF;
|
||||
*p++ = 0xFFFF;
|
||||
}
|
||||
|
||||
*p++ = 0xFFFF;
|
||||
*p++ = 0xFFFF;
|
||||
|
||||
return p - ins_buf;
|
||||
}
|
||||
|
||||
static uint16_t headstage_led_set_buffer(uint16_t *ins_buf, uint8_t repeat, LEDParameter *parameter) {
|
||||
uint16_t *p = ins_buf;
|
||||
|
||||
*p++ = 0;
|
||||
*p++ = 0;
|
||||
|
||||
if (parameter && repeat > 0) {
|
||||
uint16_t a = 0xE000 | ((uint16_t)(parameter->luminance & 0x1F) << 8) | (uint16_t)(parameter->blue & 0xFF);
|
||||
uint16_t b = ((uint16_t)(parameter->green & 0xFF) << 8) | (uint16_t)(parameter->red & 0xFF);
|
||||
|
||||
for (uint8_t j = 0; j < repeat; j++) {
|
||||
*p++ = a;
|
||||
*p++ = b;
|
||||
}
|
||||
}
|
||||
|
||||
*p++ = 0xFFFF;
|
||||
*p++ = 0xFFFF;
|
||||
|
||||
return p - ins_buf;
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
#define COLOR_BLACK 0
|
||||
#define COLOR_RED 1
|
||||
#define COLOR_ORANGE 2
|
||||
#define COLOR_YELLOW 3
|
||||
#define COLOR_GREEN 4
|
||||
#define COLOR_BLUE 5
|
||||
#define COLOR_CYAN 6
|
||||
#define COLOR_MAGENTA 7
|
||||
#define COLOR_WHITE 9
|
||||
// clang-format on
|
||||
|
||||
static uint8_t headstage_led_set_color(uint16_t *ins_buf, uint8_t repeat, uint8_t color) {
|
||||
LEDParameter parameter;
|
||||
|
||||
switch (color) {
|
||||
case COLOR_RED:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0xFF, .green = 0x00, .blue = 0x00};
|
||||
break;
|
||||
case COLOR_ORANGE:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0xFF, .green = 0x03, .blue = 0x00};
|
||||
break;
|
||||
case COLOR_YELLOW:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0x0F, .green = 0x0F, .blue = 0x00};
|
||||
break;
|
||||
case COLOR_GREEN:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0x00, .green = 0xFF, .blue = 0x00};
|
||||
break;
|
||||
case COLOR_BLUE:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0x00, .green = 0x00, .blue = 0xFF};
|
||||
break;
|
||||
case COLOR_CYAN:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0x00, .green = 0xFF, .blue = 0xFF};
|
||||
break;
|
||||
case COLOR_MAGENTA:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0xFF, .green = 0x00, .blue = 0xFF};
|
||||
break;
|
||||
case COLOR_WHITE:
|
||||
parameter = (LEDParameter){.luminance = 0xFF, .red = 0x0F, .green = 0x7F, .blue = 0x1F};
|
||||
break;
|
||||
default:
|
||||
case COLOR_BLACK:
|
||||
parameter = (LEDParameter){.luminance = 0x00, .red = 0x00, .green = 0x00, .blue = 0x00};
|
||||
break;
|
||||
}
|
||||
|
||||
return headstage_led_set_buffer(ins_buf, repeat, ¶meter);
|
||||
}
|
||||
|
||||
/*============================
|
||||
==== LED implement (SPI) ====
|
||||
===========================*/
|
||||
|
||||
#ifdef HEADSTAGE_LED_USE_SPI
|
||||
|
||||
#include <Board.h>
|
||||
#include <ti/drivers/SPI.h>
|
||||
#include <ti/drivers/dma/UDMACC26XX.h>
|
||||
#include <ti/drivers/spi/SPICC26XXDMA.h>
|
||||
|
||||
#if defined(BOOSTXL_CC2650MA) && !defined(HEADSTAGE_MA_USE_SPI2)
|
||||
#error "HEADSTAGE_MA_USE_SPI2 not predefine if use SPI1"
|
||||
#endif
|
||||
|
||||
#define HEADSTAGE_LED_USE_SPI_BOARD Board_SPI1
|
||||
|
||||
#define SPI_LED_BUFF_SIZE 20
|
||||
#define SPI_LED_REPEAT 8
|
||||
|
||||
static uint16_t headstage_spi_led_txbuf[SPI_LED_BUFF_SIZE];
|
||||
|
||||
static SPI_Handle led_handle;
|
||||
static SPI_Transaction led_transaction;
|
||||
|
||||
static void headstage_led_open() {
|
||||
// SPI parameters initialize
|
||||
SPI_init();
|
||||
SPI_Params spi_parameter;
|
||||
SPI_Params_init(&spi_parameter);
|
||||
spi_parameter.transferMode = SPI_MODE_BLOCKING;
|
||||
spi_parameter.mode = SPI_MASTER;
|
||||
spi_parameter.bitRate = 2500;
|
||||
spi_parameter.dataSize = 16;
|
||||
spi_parameter.frameFormat = SPI_POL0_PHA1;
|
||||
|
||||
led_handle = SPI_open(HEADSTAGE_LED_USE_SPI_BOARD, &spi_parameter);
|
||||
}
|
||||
|
||||
static void headstage_led_close() {
|
||||
SPI_close(led_handle);
|
||||
}
|
||||
|
||||
static void headstage_led_send(LEDParameter *led) {
|
||||
headstage_led_set_buffer(headstage_spi_led_txbuf, SPI_LED_REPEAT, led);
|
||||
|
||||
led_transaction.txBuf = headstage_spi_led_txbuf;
|
||||
led_transaction.rxBuf = NULL;
|
||||
led_transaction.count = SPI_LED_BUFF_SIZE;
|
||||
|
||||
SPI_transfer(led_handle, &led_transaction);
|
||||
}
|
||||
|
||||
static void headstage_led_color(uint8_t color) {
|
||||
headstage_led_set_color(headstage_spi_led_txbuf, SPI_LED_REPEAT, color);
|
||||
|
||||
led_transaction.txBuf = headstage_spi_led_txbuf;
|
||||
led_transaction.rxBuf = NULL;
|
||||
led_transaction.count = SPI_LED_BUFF_SIZE;
|
||||
|
||||
SPI_transfer(led_handle, &led_transaction);
|
||||
}
|
||||
|
||||
#endif // HEADSTAGE_LED_USE_SPI
|
||||
|
||||
/*=============================
|
||||
==== LED implement (GPIO) ====
|
||||
============================*/
|
||||
|
||||
#ifdef HEADSTAGE_LED_USE_GPIO
|
||||
// XXX not implement
|
||||
#endif // HEADSTAGE_LED_USE_GPIO
|
||||
|
||||
#endif // HEADSTAGE_LED_H
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
Headstage notify utility
|
||||
========================
|
||||
|
||||
optional predefined
|
||||
-------------------
|
||||
|
||||
* `HEADSTAGE_NOTIFY_USE_ATT`
|
||||
|
||||
send notify through ATT instead characteristic.
|
||||
|
||||
[reference](https://github.com/ti-simplelink/ble_examples/blob/ble_examples-2.2/src/examples/throughput_example_peripheral/cc26xx/app/throughput_example_peripheral.c)
|
||||
|
||||
optional implement
|
||||
|
||||
* `tni/headstage_notify.h`
|
||||
|
||||
implement `TDC4VAF2` format
|
||||
|
||||
*. `sti/headstage_notify.h`
|
||||
|
||||
implement `TDC4VC3` format.
|
||||
|
||||
*/
|
||||
#ifndef HEADSTAGE_NOTIFY_H
|
||||
#define HEADSTAGE_NOTIFY_H
|
||||
|
||||
#include <xdc/runtime/Timestamp.h>
|
||||
|
||||
#define headstage_time_stamp_us() (32 * Timestamp_get32())
|
||||
#define headstage_time_stamp_ms() (Timestamp_get32() / 32)
|
||||
|
||||
/*========================
|
||||
==== notify function ====
|
||||
=======================*/
|
||||
|
||||
static uint8_t headstage_notify_buffer[BLE_NOT_BUFF_SIZE] = {0};
|
||||
|
||||
/**
|
||||
* send notify.
|
||||
*
|
||||
*/
|
||||
static void headstage_notify_send() {
|
||||
#ifdef HEADSTAGE_NOTIFY_USE_ATT
|
||||
uint16_t buffer_size = BLE_NOT_BUFF_SIZE;
|
||||
uint8_t *value = (uint8 *)GATT_bm_alloc(CONNECT_HANDLE, ATT_HANDLE_VALUE_NOTI, GATT_MAX_MTU, &buffer_size);
|
||||
|
||||
if (value != NULL) {
|
||||
memcpy(value, headstage_notify_buffer, buffer_size);
|
||||
|
||||
attHandleValueNoti_t notify = {
|
||||
// clang-format off
|
||||
.handle = 0x1E,
|
||||
.len = buffer_size,
|
||||
.pValue = value
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
if (GATT_Notification(CONNECT_HANDLE, ¬ify, GATT_NO_AUTHENTICATION) != SUCCESS) {
|
||||
// notify not send
|
||||
GATT_bm_free((gattMsg_t *)¬ify, ATT_HANDLE_VALUE_NOTI);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
SimpleProfile_SetParameter(BLE_NOT_BUFF_CHAR, BLE_NOT_BUFF_SIZE, headstage_notify_buffer);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(HEADSTAGE_TNI_H)
|
||||
#include "tni/headstage_notify.h"
|
||||
#elif defined(HEADSTAGE_UNI_H)
|
||||
#include "tni/headstage_notify.h"
|
||||
#elif defined(HEADSTAGE_ZM_H)
|
||||
#include "zm/headstage_notify.h"
|
||||
#elif defined(HEADSTAGE_STI_H)
|
||||
#include "sti/headstage_notify.h"
|
||||
#else
|
||||
|
||||
#error "headstage_notify"
|
||||
|
||||
#endif
|
||||
|
||||
#endif // HEADSTAGE_NOTIFY_H
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
|
||||
#ifndef HEADSTAGE_NOTIFY_GENERAL_H
|
||||
#define HEADSTAGE_NOTIFY_GENERAL_H
|
||||
|
||||
#ifndef HEADSTAGE_NOTIFY_H
|
||||
#error "headstage/headstage_notify.h not included"
|
||||
#endif
|
||||
|
||||
static uint32_t not_buf_offset = 0;
|
||||
static uint32_t not_time_stamp = 0;
|
||||
|
||||
static void headstage_notify_set_timestamp() {
|
||||
|
||||
#ifdef HEADSTAGE_NOTIFY_TIMESTAMP_USE_US
|
||||
not_time_stamp = headstage_time_stamp_us();
|
||||
#else
|
||||
not_time_stamp = headstage_time_stamp_ms();
|
||||
#endif
|
||||
|
||||
headstage_notify_buffer[2] = not_time_stamp & 0xFF;
|
||||
headstage_notify_buffer[3] = (not_time_stamp >> 8) & 0xFF;
|
||||
headstage_notify_buffer[4] = (not_time_stamp >> 16) & 0xFF;
|
||||
headstage_notify_buffer[5] = (not_time_stamp >> 24) & 0xFF;
|
||||
}
|
||||
|
||||
static void _headstage_notify_flip_buffer(uint8_t data_length) {
|
||||
headstage_notify_buffer[0] = CHIP_ID;
|
||||
headstage_notify_buffer[1] = data_length;
|
||||
|
||||
not_buf_offset = 0;
|
||||
}
|
||||
|
||||
#endif // HEADSTAGE_NOTIFY_GENERAL_H
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_PIN_H
|
||||
#define HEADSTAGE_PIN_H
|
||||
|
||||
#include <Board.h>
|
||||
#include <ti/drivers/PIN.h>
|
||||
|
||||
#if defined(HEADSTAGE_TNI_H)
|
||||
#include "tni/headstage_pin.h"
|
||||
#elif defined(HEADSTAGE_UNI_H)
|
||||
#include "uni/headstage_pin.h"
|
||||
#elif defined(HEADSTAGE_ZM_H)
|
||||
#include "zm/headstage_pin.h"
|
||||
#elif defined(HEADSTAGE_STI_H)
|
||||
#include "sti/headstage_pin.h"
|
||||
#else
|
||||
|
||||
#error "headstage_pin headstage_pin_configuration not defined"
|
||||
|
||||
#endif
|
||||
|
||||
static PIN_State headstage_pins_state;
|
||||
static PIN_Handle headstage_pins_handle;
|
||||
|
||||
#define headstage_pin_add(configuration) PIN_add(headstage_pins_handle, configuration)
|
||||
#define headstage_pin_remove(pin) PIN_remove(headstage_pins_handle, pin)
|
||||
#define headstage_pin_close() PIN_close(headstage_pins_handle)
|
||||
|
||||
#define headstage_pin_open() \
|
||||
do { \
|
||||
headstage_pins_handle = PIN_open(&headstage_pins_state, headstage_pin_configuration); \
|
||||
} while (0)
|
||||
|
||||
#ifdef HEADSTAGE_PIN_USE_CC26XX
|
||||
|
||||
#include <ti/drivers/pin/PINCC26xx.h>
|
||||
#define headstage_pin_output(pin, value) PINCC26XX_setOutputValue(PIN_ID(pin), (value))
|
||||
#define headstage_pin_input(pin) PINCC26XX_getInputValue(PIN_ID(pin))
|
||||
|
||||
#else
|
||||
|
||||
#define headstage_pin_output(pin, value) PIN_setOutputValue(headstage_pins_handle, PIN_ID(pin), (value))
|
||||
#define headstage_pin_input(pin) PIN_getInputValue(PIN_ID(pin))
|
||||
|
||||
#endif
|
||||
|
||||
#endif // HEADSTAGE_PIN_H
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
#ifndef HEADSTAGE_POWER_H
|
||||
#define HEADSTAGE_POWER_H
|
||||
|
||||
#include <ti/drivers/Power.h>
|
||||
#include <ti/drivers/power/PowerCC26XX.h>
|
||||
|
||||
#define headstage_power_shutdown() Power_shutdown(0, 0)
|
||||
|
||||
#endif // HEADSTAGE_POWER_H
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_PWM_H
|
||||
#define HEADSTAGE_PWM_H
|
||||
|
||||
#include <Board.h>
|
||||
#include <ti/drivers/PWM.h>
|
||||
|
||||
static PWM_Handle headstage_pwm_handle;
|
||||
|
||||
#define headstage_pwm_open() \
|
||||
do { \
|
||||
PWM_init(); \
|
||||
PWM_Params params; \
|
||||
PWM_Params_init(¶ms); \
|
||||
params.idleLevel = PWM_IDLE_LOW; \
|
||||
params.periodUnits = PWM_PERIOD_HZ; \
|
||||
params.periodValue = UMC_SYS_CLK; \
|
||||
params.dutyUnits = PWM_DUTY_FRACTION; \
|
||||
params.dutyValue = PWM_DUTY_FRACTION_MAX / 2; \
|
||||
headstage_pwm_handle = PWM_open(Board_PWM0, ¶ms); \
|
||||
} while (0);
|
||||
|
||||
#define headstage_pwm_start() PWM_start(headstage_pwm_handle)
|
||||
#define headstage_pwm_stop() PWM_stop(headstage_pwm_handle)
|
||||
#define headstage_pwm_close() PWM_close(headstage_pwm_handle)
|
||||
|
||||
#endif // HEADSTAGE_PWM_H
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
/* Copyright (c) 2019. BioPro. Scientific.
|
||||
*/
|
||||
#ifndef HEADSTAGE_SPI_H
|
||||
#define HEADSTAGE_SPI_H
|
||||
|
||||
#include <Board.h>
|
||||
#include <ti/drivers/SPI.h>
|
||||
#include <ti/drivers/dma/UDMACC26XX.h>
|
||||
#include <ti/drivers/spi/SPICC26XXDMA.h>
|
||||
|
||||
/*
|
||||
* SPI parameter and function declaration
|
||||
*/
|
||||
static SPI_Handle spi_handle = NULL;
|
||||
static SPI_Transaction spi_transaction;
|
||||
|
||||
#define headstage_spi_close() SPI_close(spi_handle)
|
||||
#define headstage_spi_transaction_cancel() SPI_transferCancel(spi_handle)
|
||||
|
||||
// SPI parameters initialize
|
||||
#define headstage_spi_open() \
|
||||
do { \
|
||||
SPI_init(); \
|
||||
SPI_Params spi_parameter; \
|
||||
SPI_Params_init(&spi_parameter); \
|
||||
spi_parameter.transferMode = SPI_MODE_BLOCKING; \
|
||||
spi_parameter.mode = SPI_MASTER; \
|
||||
spi_parameter.bitRate = 12000000; \
|
||||
spi_parameter.transferTimeout = 1000; \
|
||||
spi_parameter.dataSize = 8; \
|
||||
spi_parameter.frameFormat = SPI_POL0_PHA0; \
|
||||
spi_handle = SPI_open(Board_SPI0, &spi_parameter); \
|
||||
} while (0)
|
||||
|
||||
#define headstage_spi_transaction(len, tx, rx) \
|
||||
({ \
|
||||
spi_transaction.txBuf = (tx); \
|
||||
spi_transaction.rxBuf = (rx); \
|
||||
spi_transaction.count = (len); \
|
||||
SPI_transfer(spi_handle, &spi_transaction); \
|
||||
})
|
||||
|
||||
#endif // HEADSTAGE_SPI_H
|
||||
+1565
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user