Added CC1352 / CC2652 AP Firmware Code

This commit is contained in:
atc1441
2023-07-26 21:00:40 +02:00
parent 475c40e7e6
commit 22cf435db7
41 changed files with 28192 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<?ccsproject version="1.0"?>
<projectOptions>
<ccsVersion value="12.2.0"/>
<deviceVariant value="Cortex M.CC2652P1F"/>
<deviceFamily value="TMS470"/>
<deviceEndianness value="little"/>
<codegenToolVersion value="GNU_9.2.1:Linaro"/>
<isElfFormat value="true"/>
<connection value="common/targetdb/connections/TIXDS110_Connection.xml"/>
<rts value=""/>
<createSlaveProjects value=""/>
<ignoreDefaultDeviceSettings value="true"/>
<ignoreDefaultCCSSettings value="true"/>
<templateProperties value="id=rfPacketRx_LP_CC2652PSIP_tirtos7_gcc.projectspec.rfPacketRx_LP_CC2652PSIP_tirtos7_gcc,buildProfile=release,isHybrid=true"/>
<origin value="C:\ti\simplelink_cc13xx_cc26xx_sdk_6_40_00_13\examples\rtos\LP_CC2652PSIP\prop_rf\rfPacketRx\tirtos7\gcc\rfPacketRx_LP_CC2652PSIP_tirtos7_gcc.projectspec"/>
<filesToOpen value=""/>
<isTargetManual value="false"/>
</projectOptions>

View File

@@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.172602252">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.172602252" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings/>
<extensions>
<extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="com.ti.ccstudio.errorparser.SysConfigErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.172602252" name="Debug" parent="com.ti.ccstudio.buildDefinitions.TMS470.Debug">
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.172602252." name="/" resourcePath="">
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.DebugToolchain.1551216966" name="TI Build Tools" secondaryOutputs="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.outputType__BIN.1731608633" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.linkerDebug.1359832196">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1342551114" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.CC2652P1F"/>
<listOptionValue builtIn="false" value="DEVICE_CORE_ID="/>
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=6.1.3"/>
<listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY="/>
<listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
<listOptionValue builtIn="false" value="PRODUCTS=com.ti.SIMPLELINK_CC13XX_CC26XX_SDK:6.40.0.13;sysconfig:1.15.0;"/>
<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={&quot;com.ti.SIMPLELINK_CC13XX_CC26XX_SDK&quot;:[&quot;${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INCLUDE_PATH}&quot;,&quot;${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_LIBRARY_PATH}&quot;,&quot;${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_LIBRARIES}&quot;,&quot;${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_SYMBOLS}&quot;,&quot;${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_SYSCONFIG_MANIFEST}&quot;],&quot;sysconfig&quot;:[&quot;${SYSCONFIG_TOOL_INCLUDE_PATH}&quot;,&quot;${SYSCONFIG_TOOL_LIBRARY_PATH}&quot;,&quot;${SYSCONFIG_TOOL_LIBRARIES}&quot;,&quot;${SYSCONFIG_TOOL_SYMBOLS}&quot;,&quot;${SYSCONFIG_TOOL_SYSCONFIG_MANIFEST}&quot;]}"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1348330356" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="GNU_9.2.1:Linaro" valueType="string"/>
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.targetPlatformDebug.1521743196" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.targetPlatformDebug"/>
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.builderDebug.1659284329" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.builderDebug"/>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.compilerDebug.1119239987" name="GNU Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.compilerDebug">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DEBUG.1608765639" name="Generate debug information (-g)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DEBUG" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STRICT_DWARF.1597125803" name="Do not emit DWARF additions beyond selected version (-gstrict-dwarf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STRICT_DWARF" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DWARF_VERSION.1095676348" name="Generate debug information in DWARF version (-gdwarf-)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DWARF_VERSION" useByScannerDiscovery="false" value="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DWARF_VERSION.3" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.INCLUDE_PATH.1099181020" name="Include paths (-I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.INCLUDE_PATH" valueType="includePath">
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INCLUDE_PATH}"/>
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_INCLUDE_PATH}"/>
<listOptionValue builtIn="false" value="${PROJECT_ROOT}/syscfg"/>
<listOptionValue builtIn="false" value="${PROJECT_ROOT}"/>
<listOptionValue builtIn="false" value="${PROJECT_ROOT}/${ConfigName}"/>
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/source"/>
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/kernel/tirtos7/packages"/>
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/source/ti/posix/gcc"/>
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/arm-none-eabi/include/newlib-nano"/>
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/arm-none-eabi/include"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DEFINE.1237677942" name="Define symbols (-D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DEFINE" valueType="definedSymbols">
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_SYMBOLS}"/>
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_SYMBOLS}"/>
<listOptionValue builtIn="false" value="DeviceFamily_CC26X2"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MCPU.1007182304" name="Target CPU (-mcpu)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MCPU" useByScannerDiscovery="false" value="cortex-m4" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MARCH.1339441526" name="Target architecture (-march)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MARCH" useByScannerDiscovery="false" value="armv7e-m" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.CODE_STATE.311085596" name="Code state" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.CODE_STATE" useByScannerDiscovery="false" value="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.CODE_STATE.THUMB" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STD_C.2120104112" name="C Language standard (-std)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STD_C" useByScannerDiscovery="false" value="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STD_C.C99" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STD_CPP.1434143847" name="C++ Language standard (-std)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STD_CPP" useByScannerDiscovery="false" value="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.STD_CPP.CPP11" valueType="enumerated"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MFLOAT_ABI.1794788989" name="Use floating point hardware (-mfloat-abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MFLOAT_ABI" useByScannerDiscovery="false" value="hard" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MFPU.2022782957" name="Target floating point hardware/format (-mfpu)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.MFPU" useByScannerDiscovery="false" value="fpv4-sp-d16" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.FUNCTION_SECTIONS.258783988" name="Place each function into its own section (-ffunction-sections)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.FUNCTION_SECTIONS" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DATA_SECTIONS.986026123" name="Place data items into their own section (-fdata-sections)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compilerID.DATA_SECTIONS" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__C_SRCS.323527308" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__C_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__CPP_SRCS.1978144367" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__CPP_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__ASM_SRCS.1812978064" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__ASM_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__ASM2_SRCS.1437120431" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.compiler.inputType__ASM2_SRCS"/>
</tool>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.linkerDebug.1359832196" name="GNU Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exe.linkerDebug">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.OUTPUT_FILE.1986989595" name="Output file (-o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.OUTPUT_FILE" useByScannerDiscovery="false" value="${ProjName}.out" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.MAP_FILE.310978699" name="Write a map file (-Map)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.MAP_FILE" useByScannerDiscovery="false" value="${ProjName}.map" valueType="string"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.GROUP_LIBS.1538648357" name="Group libraries to resolve backward references (--start-group ... --end-group)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.GROUP_LIBS" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.SEARCH_PATH.169601147" name="Library search path (-L, --library-path)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.SEARCH_PATH" valueType="libPaths">
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_LIBRARY_PATH}"/>
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_LIBRARY_PATH}"/>
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/source"/>
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR}/kernel/tirtos7/packages"/>
<listOptionValue builtIn="false" value="${PROJECT_ROOT}/syscfg"/>
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/arm-none-eabi/lib/thumb/v7e-m/hard"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.LIBRARY.318485230" name="Libraries (-l, --library)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.LIBRARY" useByScannerDiscovery="false" valueType="libs">
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_LIBRARIES}"/>
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_LIBRARIES}"/>
<listOptionValue builtIn="false" value="ti_utils_build_linker.cmd.genlibs"/>
<listOptionValue builtIn="false" value="ti/devices/cc13x2_cc26x2/driverlib/bin/gcc/driverlib.lib"/>
<listOptionValue builtIn="false" value="gcc"/>
<listOptionValue builtIn="false" value="c"/>
<listOptionValue builtIn="false" value="m"/>
<listOptionValue builtIn="false" value="nosys"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.OTHER_FLAGS.858542552" name="Miscellaneous flags" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.OTHER_FLAGS" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="-march=armv7e-m"/>
<listOptionValue builtIn="false" value="-mthumb"/>
<listOptionValue builtIn="false" value="-mfloat-abi=hard"/>
<listOptionValue builtIn="false" value="-mfpu=fpv4-sp-d16"/>
<listOptionValue builtIn="false" value="--specs=nano.specs"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.NOSTARTFILES.1153133877" name="Do not use the standard system startup files when linking (-nostartfiles)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.NOSTARTFILES" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.STATIC.85455905" name="Do not link with the shared libraries (-static)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.STATIC" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.GC_SECTIONS.1738026422" name="Remove unused sections (--gc-sections)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.linkerID.GC_SECTIONS" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exeLinker.inputType__CMD_SRCS.1517176799" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exeLinker.inputType__CMD_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exeLinker.inputType__CMD2_SRCS.849067236" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exeLinker.inputType__CMD2_SRCS"/>
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exeLinker.inputType__GEN_CMDS.875132511" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.exeLinker.inputType__GEN_CMDS"/>
</tool>
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.1065248656" name="GNU Objcopy Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex">
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.OUTPUT_TARGET.2005492331" name="Create an output file in format &lt;bfdname&gt; (-O, --output-target)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.OUTPUT_TARGET" useByScannerDiscovery="false" value="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.OUTPUT_TARGET.IHEX" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.REMOVE_SECTION.149397434" name="Remove section &lt;name&gt; from the output (-R, --remove-section)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.REMOVE_SECTION" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value=".vtable"/>
<listOptionValue builtIn="false" value=".dmaSpi0RxControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi0TxControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi1RxControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi1TxControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi0RxAltControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi0TxAltControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi1RxAltControlTableEntry"/>
<listOptionValue builtIn="false" value=".dmaSpi1TxAltControlTableEntry"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.OTHER_FLAGS.1039720180" name="Miscellaneous flags" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.OTHER_FLAGS" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="--gap-fill 0xff"/>
</option>
<option id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.TOOL_ENABLE.711175264" name="Enable tool" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.TOOL_ENABLE" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<outputType id="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.outputType__BIN.1731608633" name="Binary File" superClass="com.ti.ccstudio.buildDefinitions.TMS470_GNU_9.0.hex.outputType__BIN"/>
</tool>
<tool id="com.ti.ccstudio.buildDefinitions.sysConfig.871665166" name="SysConfig" superClass="com.ti.ccstudio.buildDefinitions.sysConfig">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.sysConfig.PRODUCTS.874951340" name="Root system config meta data file in a product or SDK (-s, --product)" superClass="com.ti.ccstudio.buildDefinitions.sysConfig.PRODUCTS" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_SYSCONFIG_MANIFEST}"/>
<listOptionValue builtIn="false" value="${SYSCONFIG_TOOL_SYSCONFIG_MANIFEST}"/>
</option>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="rfPacketRx_LP_CC2652PSIP_tirtos7_gcc.com.ti.ccstudio.buildDefinitions.TMS470.ProjectType.321685011" name="TMS470" projectType="com.ti.ccstudio.buildDefinitions.TMS470.ProjectType"/>
</storageModule>
<storageModule moduleId="scannerConfiguration"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
</cproject>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>EPaperStation_cc13x2_cc26x2_Driver</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.ti.ccstudio.core.ccsNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,16 @@
# CC1352 / CC2652 802.15.4 Firmware for E-Paper Station
<a href="CC2652P_USB_Dongle.jpg"><img width="600" alt="Example CC2652P_USB_Dongle" src="CC2652P_USB_Dongle.jpg"></a>
This firmware is meant to be compiled with the [Ti CCS IDE](https://www.ti.com/tool/CCSTUDIO)
The Precompiled .out or .hex files can be flashed via UART [FLASH-PROGRAMMER-2](https://www.ti.com/tool/download/FLASH-PROGRAMMER-2/1.8.2) or JTAG/cJTAG (With a compatible flasher like Segger)
This firmware will emulate the TiMAC UART Protocol and allows to send and receive RAW 802.15.4(ZigBee) Packets
the UART protocol is just as much implementet so that the E-Paper Station will work without problems.
See a demo of it running on an Sonoff CC2652P USB Stick:
https://www.youtube.com/watch?v=FDRU17OAT4w
[![YoutubeVideo](https://img.youtube.com/vi/FDRU17OAT4w/0.jpg)](https://www.youtube.com/watch?v=FDRU17OAT4w)

View File

@@ -0,0 +1,133 @@
/******************************************************************************
* Filename: rf_queue.c
* Revised: $ $
* Revision: $ $
*
* Description: Help functions for handling queues
*
* Copyright (C) 2015-2017 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************/
/* Standard C Libraries */
#include <stdint.h>
#include <stdlib.h>
/* Application Header files */
#include "RFQueue.h"
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(driverlib/rf_data_entry.h)
/* Receive entry pointer to keep track of read items */
rfc_dataEntryGeneral_t* readEntry;
//*****************************************************************************
//
//! Get the current dataEntry
//!
//! \return rfc_dataEntry*
//
//*****************************************************************************
rfc_dataEntryGeneral_t*
RFQueue_getDataEntry()
{
return (readEntry);
}
//*****************************************************************************
//
//! Move to next dataEntry
//!
//! \return None
//
//*****************************************************************************
uint8_t
RFQueue_nextEntry()
{
/* Set status to pending */
readEntry->status = DATA_ENTRY_PENDING;
/* Move read entry pointer to next entry */
readEntry = (rfc_dataEntryGeneral_t*)readEntry->pNextEntry;
return (readEntry->status);
}
//*****************************************************************************
//
//! Define a queue
//!
//! \param dataQueue is a pointer to the queue to use
//! \param buf is the prealocated byte buffer to use
//! \param buf_len is the number of preallocated bytes
//! \param numEntries are the number of dataEntries to split the buffer into
//! \param length is the length of data in every dataEntry
//!
//! \return uint8_t
//
//*****************************************************************************
uint8_t
RFQueue_defineQueue(dataQueue_t *dataQueue, uint8_t *buf, uint16_t buf_len, uint8_t numEntries, uint16_t length)
{
if (buf_len < (numEntries * (length + RF_QUEUE_DATA_ENTRY_HEADER_SIZE + RF_QUEUE_QUEUE_ALIGN_PADDING(length))))
{
/* queue does not fit into buffer */
return (1);
}
/* Padding needed for 4-byte alignment? */
uint8_t pad = 4-((length + RF_QUEUE_DATA_ENTRY_HEADER_SIZE)%4);
/* Set the Data Entries common configuration */
uint8_t *first_entry = buf;
int i;
for (i = 0; i < numEntries; i++)
{
buf = first_entry + i * (RF_QUEUE_DATA_ENTRY_HEADER_SIZE + length + pad);
((rfc_dataEntry_t*)buf)->status = DATA_ENTRY_PENDING; // Pending - starting state
((rfc_dataEntry_t*)buf)->config.type = DATA_ENTRY_TYPE_GEN; // General Data Entry
((rfc_dataEntry_t*)buf)->config.lenSz = 0; // No length indicator byte in data
((rfc_dataEntry_t*)buf)->length = length; // Total length of data field
((rfc_dataEntryGeneral_t*)buf)->pNextEntry = &(((rfc_dataEntryGeneral_t*)buf)->data)+length+pad;
}
/* Make circular Last.Next -> First */
((rfc_dataEntry_t*)buf)->pNextEntry = first_entry;
/* Create Data Entry Queue and configure for circular buffer Data Entries */
dataQueue->pCurrEntry = first_entry;
dataQueue->pLastEntry = NULL;
/* Set read pointer to first entry */
readEntry = (rfc_dataEntryGeneral_t*)first_entry;
return (0);
}

View File

@@ -0,0 +1,71 @@
/******************************************************************************
* Filename: rf_queue.h
* Revised: $ $
* Revision: $ $
*
* Description: Help functions for handling queues
*
* Copyright (C) 2015-2017 Texas Instruments Incorporated - http://www.ti.com/
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************/
//*****************************************************************************
//
//! \addtogroup rfqueue_api
//! @{
//
//*****************************************************************************
#ifndef RF_QUEUE_H
#define RF_QUEUE_H
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(driverlib/rf_data_entry.h)
#define RF_QUEUE_DATA_ENTRY_HEADER_SIZE 8 // Contant header size of a Generic Data Entry
#define RF_QUEUE_QUEUE_ALIGN_PADDING(length) (4-((length + RF_QUEUE_DATA_ENTRY_HEADER_SIZE)%4)) // Padding offset
#define RF_QUEUE_DATA_ENTRY_BUFFER_SIZE(numEntries, dataSize, appendedBytes) \
(numEntries*(RF_QUEUE_DATA_ENTRY_HEADER_SIZE + dataSize + appendedBytes + RF_QUEUE_QUEUE_ALIGN_PADDING(dataSize + appendedBytes)))
extern uint8_t RFQueue_nextEntry();
extern rfc_dataEntryGeneral_t* RFQueue_getDataEntry();
extern uint8_t RFQueue_defineQueue(dataQueue_t *queue ,uint8_t *buf, uint16_t buf_len, uint8_t numEntries, uint16_t length);
#endif
//*****************************************************************************
//
//! Close the Doxygen group.
//! @}
//
//*****************************************************************************

View File

@@ -0,0 +1,283 @@
/*
* Copyright (c) 2017-2022, 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.
*/
__TI_STACK_SIZE = 0x600;
HEAPSIZE = 0x4000; /* Size of heap buffer used by HeapMem */
ENTRY(_c_int00)
MEMORY
{
FLASH (RX) : ORIGIN = 0x00000000, LENGTH = 0x00057fa8
/*
* Customer Configuration Area and Bootloader Backdoor configuration in
* flash, 40 bytes
*/
FLASH_CCFG (RX) : ORIGIN = 0x00057fa8, LENGTH = 0x00000058
SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00014000
GPRAM (RWX) : ORIGIN = 0x11000000, LENGTH = 0x00002000
/* Explicitly placed off target for the storage of logging data.
* The data placed here is NOT loaded onto the target device.
* This is part of 1 GB of external memory from 0x60000000 - 0x9FFFFFFF.
* ARM memory map can be found here:
* https://developer.arm.com/documentation/ddi0337/e/memory-map/about-the-memory-map
*/
LOG_DATA (R) : ORIGIN = 0x90000000, LENGTH = 0x40000
}
REGION_ALIAS("REGION_TEXT", FLASH);
REGION_ALIAS("REGION_BSS", SRAM);
REGION_ALIAS("REGION_DATA", SRAM);
REGION_ALIAS("REGION_STACK", SRAM);
REGION_ALIAS("REGION_HEAP", SRAM);
REGION_ALIAS("REGION_LOG", LOG_DATA);
REGION_ALIAS("REGION_ARM_EXIDX", FLASH);
REGION_ALIAS("REGION_ARM_EXTAB", FLASH);
SECTIONS {
PROVIDE (_intvecs_base_address =
DEFINED(_intvecs_base_address) ? _intvecs_base_address : 0x0);
.intvecs (_intvecs_base_address) : AT (_intvecs_base_address) {
KEEP (*(.intvecs))
} > REGION_TEXT
PROVIDE (_vtable_base_address =
DEFINED(_vtable_base_address) ? _vtable_base_address : 0x20000000);
.vtable (_vtable_base_address) (NOLOAD) : {
KEEP (*(.vtable))
} > REGION_DATA
/* if a ROM-only symbol is present, then ROM is being used.
* Reserve memory for surgically placed module states.
*/
_rom_data_start = 0x20000100;
_rom_data_size = DEFINED(ROM_DATA_SIZE) ? 12 : DEFINED(ROM_DATA_SIZE_NO_OAD) ? 0x108 : 0;
.rom_data_reserve (_rom_data_start): {
. += _rom_data_size;
} > REGION_DATA
/*
* UDMACC26XX_CONFIG_BASE below must match UDMACC26XX_CONFIG_BASE defined
* by ti/drivers/dma/UDMACC26XX.h
* The user is allowed to change UDMACC26XX_CONFIG_BASE to move it away from
* the default address 0x2000_1800, but remember it must be 1024 bytes aligned.
*/
UDMACC26XX_CONFIG_BASE = 0x20001800;
/*
* Define absolute addresses for the DMA channels.
* DMA channels must always be allocated at a fixed offset from the DMA base address.
* --------- DO NOT MODIFY -----------
*/
DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x10);
DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x20);
DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x30);
DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x40);
DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x50);
DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x60);
DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x70);
DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x90);
DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x100);
DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x110);
DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x210);
DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x220);
DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x230);
DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x240);
DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x250);
DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x260);
DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x270);
DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x290);
DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x300);
DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS = (UDMACC26XX_CONFIG_BASE + 0x310);
/*
* Allocate UART0, UART1, SPI0, SPI1, ADC, and GPTimer0 DMA descriptors at absolute addresses.
* --------- DO NOT MODIFY -----------
*/
UDMACC26XX_uart0RxControlTableEntry_is_placed = 0;
.dmaUart0RxControlTableEntry DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0RxControlTableEntry)} > REGION_DATA
UDMACC26XX_uart0TxControlTableEntry_is_placed = 0;
.dmaUart0TxControlTableEntry DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0TxControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi0RxControlTableEntry_is_placed = 0;
.dmaSpi0RxControlTableEntry DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0RxControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi0TxControlTableEntry_is_placed = 0;
.dmaSpi0TxControlTableEntry DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0TxControlTableEntry)} > REGION_DATA
UDMACC26XX_uart1RxControlTableEntry_is_placed = 0;
.dmaUart1RxControlTableEntry DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1RxControlTableEntry)} > REGION_DATA
UDMACC26XX_uart1TxControlTableEntry_is_placed = 0;
.dmaUart1TxControlTableEntry DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1TxControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaADCPriControlTableEntry_is_placed = 0;
.dmaADCPriControlTableEntry DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_ADC_PRI_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaADCPriControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaGPT0APriControlTableEntry_is_placed = 0;
.dmaGPT0APriControlTableEntry DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_GPT0A_PRI_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaGPT0APriControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi1RxControlTableEntry_is_placed = 0;
.dmaSpi1RxControlTableEntry DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_RX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1RxControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi1TxControlTableEntry_is_placed = 0;
.dmaSpi1TxControlTableEntry DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_TX_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1TxControlTableEntry)} > REGION_DATA
UDMACC26XX_uart0RxAltControlTableEntry_is_placed = 0;
.dmaUart0RxAltControlTableEntry DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0RxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_uart0TxAltControlTableEntry_is_placed = 0;
.dmaUart0TxAltControlTableEntry DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart0TxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi0RxAltControlTableEntry_is_placed = 0;
.dmaSpi0RxAltControlTableEntry DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0RxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi0TxAltControlTableEntry_is_placed = 0;
.dmaSpi0TxAltControlTableEntry DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI0_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi0TxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_uart1RxAltControlTableEntry_is_placed = 0;
.dmaUart1RxAltControlTableEntry DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1RxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_uart1TxAltControlTableEntry_is_placed = 0;
.dmaUart1TxAltControlTableEntry DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_UART1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaUart1TxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaADCAltControlTableEntry_is_placed = 0;
.dmaADCAltControlTableEntry DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_ADC_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaADCAltControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaGPT0AAltControlTableEntry_is_placed = 0;
.dmaGPT0AAltControlTableEntry DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_GPT0A_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaGPT0AAltControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi1RxAltControlTableEntry_is_placed = 0;
.dmaSpi1RxAltControlTableEntry DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_RX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1RxAltControlTableEntry)} > REGION_DATA
UDMACC26XX_dmaSpi1TxAltControlTableEntry_is_placed = 0;
.dmaSpi1TxAltControlTableEntry DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS (NOLOAD) : AT (DMA_SPI1_TX_ALT_CONTROL_TABLE_ENTRY_ADDRESS) {*(.dmaSpi1TxAltControlTableEntry)} > REGION_DATA
/* if a ROM-only symbol is present, then ROM is being used.
* Reserve memory for surgically placed config constants.
*/
_rom_rodata_start = 0x2000;
_rom_rodata_size = DEFINED(ROM_RODATA_SIZE) ? 0 : DEFINED(ROM_RODATA_SIZE_NO_OAD) ? 0x330 : 0;
.rom_rodata_reserve (_rom_rodata_start): {
. += _rom_rodata_size;
} > REGION_TEXT AT> REGION_TEXT
.text : {
CREATE_OBJECT_SYMBOLS
*(.text)
*(.text.*)
. = ALIGN(0x4);
KEEP (*(.ctors))
. = ALIGN(0x4);
KEEP (*(.dtors))
. = ALIGN(0x4);
__init_array_start = .;
KEEP (*(.init_array*))
__init_array_end = .;
*(.init)
*(.fini*)
} > REGION_TEXT AT> REGION_TEXT
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : {
*(.rodata)
*(.rodata.*)
*(.rodata_*)
} > REGION_TEXT AT> REGION_TEXT
.data : ALIGN(4) {
__data_load__ = LOADADDR (.data);
__data_start__ = .;
*(.data)
*(.data.*)
. = ALIGN (4);
__data_end__ = .;
} > REGION_DATA AT> REGION_TEXT
.ARM.exidx : {
__exidx_start = .;
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
__exidx_end = .;
} > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX
.ARM.extab : {
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB
.nvs (NOLOAD) : ALIGN(0x2000) {
*(.nvs)
} > REGION_TEXT
.ccfg : {
KEEP (*(.ccfg))
} > FLASH_CCFG AT> FLASH_CCFG
.bss : {
__bss_start__ = .;
*(.shbss)
*(.bss)
*(.bss.*)
*(COMMON)
. = ALIGN (4);
__bss_end__ = .;
} > REGION_BSS AT> REGION_BSS
/* Heap buffer used by HeapMem */
.priheap : {
. = ALIGN (8);
__primary_heap_start__ = .;
. += HEAPSIZE;
__primary_heap_end__ = .;
} > REGION_HEAP AT> REGION_HEAP
.stack (NOLOAD) : ALIGN(0x8) {
__TI_STACK_BASE = .;
KEEP(*(.stack))
. += __TI_STACK_SIZE;
} > REGION_STACK AT> REGION_STACK
.log_data (COPY) : {
KEEP (*(.log_data))
} > REGION_LOG
}

View File

@@ -0,0 +1,298 @@
#include "ieee_rf_config.h"
#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_ieee_802_15_4.h)
// *********************************************************************************
// RF Frontend configuration
// *********************************************************************************
// RF design based on: LAUNCHXL-CC26X2R1 (CC2642EM-7ID)
// TX Power tables
// The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h.
// The following arguments are required:
// RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient)
// RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldoTrim)
// See the Technical Reference Manual for further details about the "txPower" Command field.
// The PA settings require the CCFG_FORCE_VDDR_HH = 0 unless stated otherwise.
// 2400 MHz, 5 dBm
RF_TxPowerTable_Entry txPowerTable_2400_pa5_in[TXPOWERTABLE_2400_PA5_SIZE] =
{
{-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) },
{-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) },
{-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) },
{-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) },
{-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) },
{-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) },
{-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) },
{-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) },
{-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) },
{0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) },
{1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) },
{2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) },
{3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) },
{4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) },
{5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) },
RF_TxPowerTable_TERMINATION_ENTRY
};
// 2400 MHz, 5 + 20 dBm
RF_TxPowerTable_Entry txPowerTable_2400_pa5_20[TXPOWERTABLE_2400_PA5_20_SIZE] =
{
{-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) },
{-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) },
{-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) },
{-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) },
{-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) },
{-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) },
{-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) },
{-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) },
{-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) },
{0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) },
{1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) },
{2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) },
{3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) },
{4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) },
{5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) },
{6, RF_TxPowerTable_HIGH_PA_ENTRY(42, 0, 1, 39, 20) },
{7, RF_TxPowerTable_HIGH_PA_ENTRY(31, 1, 0, 20, 20) },
{8, RF_TxPowerTable_HIGH_PA_ENTRY(26, 1, 1, 25, 16) },
{9, RF_TxPowerTable_HIGH_PA_ENTRY(31, 1, 1, 31, 16) },
{10, RF_TxPowerTable_HIGH_PA_ENTRY(38, 1, 1, 39, 16) },
{14, RF_TxPowerTable_HIGH_PA_ENTRY(22, 3, 1, 19, 27) },
{15, RF_TxPowerTable_HIGH_PA_ENTRY(26, 3, 1, 23, 27) },
{16, RF_TxPowerTable_HIGH_PA_ENTRY(30, 3, 1, 28, 27) },
{17, RF_TxPowerTable_HIGH_PA_ENTRY(37, 3, 1, 39, 27) },
{18, RF_TxPowerTable_HIGH_PA_ENTRY(32, 3, 1, 35, 48) },
{19, RF_TxPowerTable_HIGH_PA_ENTRY(34, 3, 1, 48, 63) },
{20, RF_TxPowerTable_HIGH_PA_ENTRY(53, 3, 1, 58, 63) },
RF_TxPowerTable_TERMINATION_ENTRY
};
//*********************************************************************************
// RF Setting: IEEE 802.15.4-2006, 250 kbps, OQPSK, DSSS = 1:8
//
// PHY: ieee154
// Setting file: setting_ieee_802_15_4.json
//*********************************************************************************
// PARAMETER SUMMARY
// Channel - Frequency (MHz): 2405
// TX Power (dBm): 0
// TI-RTOS RF Mode Object
RF_Mode RF_prop_ieee154 =
{
.rfMode = RF_MODE_AUTO,
.cpePatchFxn = &rf_patch_cpe_ieee_802_15_4,
.mcePatchFxn = 0,
.rfePatchFxn = 0
};
// Overrides for CMD_RADIO_SETUP
uint32_t pOverrides_ieee154[] =
{
// override_ieee_802_15_4.json
// DC/DC regulator: In Tx, use DCDCCTL5[3:0]=0x3 (DITHER_EN=0 and IPEAK=3).
(uint32_t)0x00F388D3,
// Rx: Set LNA bias current offset to +15 to saturate trim to max (default: 0)
(uint32_t)0x000F8883,
(uint32_t)0xFFFFFFFF
};
// CMD_RADIO_SETUP
// Radio Setup Command for Pre-Defined Schemes
rfc_CMD_RADIO_SETUP_t RF_cmdRadioSetup =
{
.commandNo = 0x0802,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.mode = 0x01,
.loDivider = 0x00,
.config.frontEndMode = 0x0,
.config.biasMode = 0x0,
.config.analogCfgMode = 0x0,
.config.bNoFsPowerUp = 0x0,
.config.bSynthNarrowBand = 0x0,
.txPower = 0x2853,
.pRegOverride = pOverrides_ieee154
};
// CMD_FS
// Frequency Synthesizer Programming Command
rfc_CMD_FS_t RF_cmdFs_ieee154 =
{
.commandNo = 0x0803,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.frequency = 0x0965,
.fractFreq = 0x0000,
.synthConf.bTxMode = 0x0,
.synthConf.refFreq = 0x0,
.__dummy0 = 0x00,
.__dummy1 = 0x00,
.__dummy2 = 0x00,
.__dummy3 = 0x0000
};
// CMD_IEEE_TX
// IEEE 802.15.4 Transmit Command
rfc_CMD_IEEE_TX_t RF_cmdIeeeTx_ieee154 =
{
.commandNo = 0x2C01,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.txOpt.bIncludePhyHdr = 0x0,
.txOpt.bIncludeCrc = 0x0,
.txOpt.payloadLenMsb = 0x0,
.payloadLen = 0x1E,
.pPayload = 0,
.timeStamp = 0x00000000
};
// CMD_IEEE_RX
// IEEE 802.15.4 Receive Command
rfc_CMD_IEEE_RX_t RF_cmdIEEERx =
{
.commandNo = 0x2801,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.channel = 0x00,
.rxConfig.bAutoFlushCrc = 0x1,
.rxConfig.bAutoFlushIgn = 0x1,
.rxConfig.bIncludePhyHdr = 0x1,
.rxConfig.bIncludeCrc = 0x0,
.rxConfig.bAppendRssi = 0x1,
.rxConfig.bAppendCorrCrc = 0x1,
.rxConfig.bAppendSrcInd = 0x0,
.rxConfig.bAppendTimestamp = 0x0,
.pRxQ = 0,
.pOutput = 0,
.frameFiltOpt.frameFiltEn = 0x0,
.frameFiltOpt.frameFiltStop = 0x0,
.frameFiltOpt.autoAckEn = 0x0,
.frameFiltOpt.slottedAckEn = 0x0,
.frameFiltOpt.autoPendEn = 0x0,
.frameFiltOpt.defaultPend = 0x0,
.frameFiltOpt.bPendDataReqOnly = 0x0,
.frameFiltOpt.bPanCoord = 0x0,
.frameFiltOpt.maxFrameVersion = 0x3,
.frameFiltOpt.fcfReservedMask = 0x0,
.frameFiltOpt.modifyFtFilter = 0x0,
.frameFiltOpt.bStrictLenFilter = 0x0,
.frameTypes.bAcceptFt0Beacon = 0x1,
.frameTypes.bAcceptFt1Data = 0x1,
.frameTypes.bAcceptFt2Ack = 0x1,
.frameTypes.bAcceptFt3MacCmd = 0x1,
.frameTypes.bAcceptFt4Reserved = 0x1,
.frameTypes.bAcceptFt5Reserved = 0x1,
.frameTypes.bAcceptFt6Reserved = 0x1,
.frameTypes.bAcceptFt7Reserved = 0x1,
.ccaOpt.ccaEnEnergy = 0x0,
.ccaOpt.ccaEnCorr = 0x0,
.ccaOpt.ccaEnSync = 0x0,
.ccaOpt.ccaCorrOp = 0x1,
.ccaOpt.ccaSyncOp = 0x1,
.ccaOpt.ccaCorrThr = 0x0,
.ccaRssiThr = 0x64,
.__dummy0 = 0x00,
.numExtEntries = 0x00,
.numShortEntries = 0x00,
.pExtEntryList = 0,
.pShortEntryList = 0,
.localExtAddr = 0x12345678,
.localShortAddr = 0xABBA,
.localPanID = 0x0000,
.__dummy1 = 0x000000,
.endTrigger.triggerType = 0x1,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.endTime = 0x00000000
};
// CMD_IEEE_CSMA
// IEEE 802.15.4 CSMA-CA Command
rfc_CMD_IEEE_CSMA_t RF_cmdIeeeCsma_ieee154 =
{
.commandNo = 0x2C02,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x0,
.condition.nSkip = 0x0,
.randomState = 0x0000,
.macMaxBE = 0x00,
.macMaxCSMABackoffs = 0x00,
.csmaConfig.initCW = 0x0,
.csmaConfig.bSlotted = 0x0,
.csmaConfig.rxOffMode = 0x0,
.NB = 0x00,
.BE = 0x00,
.remainingPeriods = 0x00,
.lastRssi = 0x00,
.endTrigger.triggerType = 0x0,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.lastTimeStamp = 0x00000000,
.endTime = 0x00000000
};
// CMD_IEEE_RX_ACK
// IEEE 802.15.4 Receive Acknowledgement Command
rfc_CMD_IEEE_RX_ACK_t RF_cmdIeeeRxAck_ieee154 =
{
.commandNo = 0x2C03,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x0,
.condition.nSkip = 0x0,
.seqNo = 0x00,
.endTrigger.triggerType = 0x0,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.endTime = 0x00000000
};

View File

@@ -0,0 +1,72 @@
/*
* ======== ti_radio_config.h ========
* Configured RadioConfig module definitions
*
* DO NOT EDIT - This file is generated for the CC2652P1FSIP
* by the SysConfig tool.
*
* Radio Config module version : 1.16
* SmartRF Studio data version : 2.28.0
*/
#ifndef _TI_RADIO_CONFIGin_H_
#define _TI_RADIO_CONFIGin_H_
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
#include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
#include DeviceFamily_constructPath(driverlib/rf_ieee_cmd.h)
#include <ti/drivers/rf/RF.h>
/* SmartRF Studio version that the RF data is fetched from */
#define SMARTRF_STUDIO_VERSION "2.22.0"
// *********************************************************************************
// RF Frontend configuration
// *********************************************************************************
// RF design based on: LAUNCHXL-CC26X2R1 (CC2642EM-7ID)
#define LAUNCHXL_CC26X2R1
// RF frontend configuration
#define FRONTEND_24G_DIFF_RF
#define FRONTEND_24G_INT_BIAS
// Supported frequency bands
#define SUPPORT_FREQBAND_2400
// TX power table size definitions
#define TXPOWERTABLE_2400_PA5_SIZE 16 // 2400 MHz, 5 dBm
#define TXPOWERTABLE_2400_PA5_20_SIZE 28 // 2400 MHz, 5 + 20 dBm
// TX power tables
extern RF_TxPowerTable_Entry txPowerTable_2400_pa5_in[]; // 2400 MHz, 5 dBm
extern RF_TxPowerTable_Entry txPowerTable_2400_pa5_20[]; // 2400 MHz, 5 + 10 dBm
//*********************************************************************************
// RF Setting: IEEE 802.15.4-2006, 250 kbps, OQPSK, DSSS = 1:8
//
// PHY: ieee154
// Setting file: setting_ieee_802_15_4.json
//*********************************************************************************
// PA table usage
#define TX_POWER_TABLE_SIZE_ieee154 TXPOWERTABLE_2400_PA5_SIZE
#define txPowerTable_ieee154 txPowerTable_2400_pa5_in
// TI-RTOS RF Mode object
extern RF_Mode RF_prop_ieee154;
// RF Core API commands
extern rfc_CMD_RADIO_SETUP_t RF_cmdRadioSetup;
extern rfc_CMD_FS_t RF_cmdFs_ieee154;
extern rfc_CMD_IEEE_TX_t RF_cmdIeeeTx_ieee154;
extern rfc_CMD_IEEE_RX_t RF_cmdIEEERx;
extern rfc_CMD_IEEE_CSMA_t RF_cmdIeeeCsma_ieee154;
extern rfc_CMD_IEEE_RX_ACK_t RF_cmdIeeeRxAck_ieee154;
// RF Core API overrides
extern uint32_t pOverrides_ieee154[];
#endif // _TI_RADIO_CONFIGin_H_

View File

@@ -0,0 +1,45 @@
#include <stdint.h>
#include <pthread.h>
#include <ti/sysbios/BIOS.h>
#include <ti/drivers/GPIO.h>
#include "ti_drivers_config.h"
extern void *mainThread(void *arg0);
#define THREADSTACKSIZE 2096
int main(void)
{
pthread_t thread;
pthread_attr_t attrs;
struct sched_param priParam;
int retc;
int detachState;
Board_initGeneral();
GPIO_init();
pthread_attr_init(&attrs);
priParam.sched_priority = 1;
detachState = PTHREAD_CREATE_DETACHED;
retc = pthread_attr_setdetachstate(&attrs, detachState);
if (retc != 0) {
while (1);
}
pthread_attr_setschedparam(&attrs, &priParam);
retc |= pthread_attr_setstacksize(&attrs, THREADSTACKSIZE);
if (retc != 0) {
while (1);
}
retc = pthread_create(&thread, &attrs, mainThread, NULL);
if (retc != 0) {
while (1);
}
BIOS_start();
return (0);
}

View File

@@ -0,0 +1,36 @@
#include "millis.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <ti/drivers/Timer.h>
#include "ti_drivers_config.h"
Timer_Handle timer0;
Timer_Params params;
volatile uint64_t timeOverflows = 0;
void timerCallback(Timer_Handle myHandle, int_fast16_t status)
{
timeOverflows++;
}
uint32_t getMillis()
{
uint64_t ticks = ((uint64_t)((uint64_t)timeOverflows << (uint64_t)32) | (uint64_t)Timer_getCount(timer0));
return (uint64_t)((uint64_t)ticks/(uint64_t)48000);
}
void millisInit()
{
Timer_init();
Timer_Params_init(&params);
params.period = 0xffffffff;
params.periodUnits = Timer_PERIOD_COUNTS;
params.timerMode = Timer_CONTINUOUS_CALLBACK;
params.timerCallback = timerCallback;
timer0 = Timer_open(CONFIG_TIMER_0, &params);
if (timer0 != NULL)
{
Timer_start(timer0);
}
}

View File

@@ -0,0 +1,7 @@
#pragma once
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
uint32_t getMillis();
void millisInit();

View File

@@ -0,0 +1,220 @@
[
{
"comment": "This is a dashboard file for the Runtime Object View (ROV) tool",
"id": "rovModuleView_0",
"moduleName": "ti.sysbios.knl.Task",
"viewName": "Detailed",
"viewsData": {
"ti.sysbios.knl.Task.Detailed": {
"columnStates": [
{
"name": "address",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "label",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "priority",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "mode",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "fxn",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "arg0",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "arg1",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "stackPeak",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "stackSize",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "stackBase",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "curCoreId",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "affinity",
"checked": false,
"hasFormat": false,
"format": null
},
{
"name": "blockedOn",
"checked": false,
"hasFormat": false,
"format": null
}
],
"hasFormats": true
}
},
"left": 1,
"top": -5,
"width": 847,
"height": 95,
"zIndex": "72",
"dashboardVersion": "1.0"
},
{
"id": "rovModuleView_1",
"moduleName": "ti.sysbios.family.arm.m3.Hwi",
"viewName": "Detailed",
"viewsData": {
"ti.sysbios.family.arm.m3.Hwi.Detailed": {
"columnStates": [
{
"name": "address",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "halHwiHandle",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "label",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "type",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "intNum",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "priority",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "group",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "subPriority",
"checked": true,
"hasFormat": true,
"format": "Decimal"
},
{
"name": "fxn",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "arg",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "irp",
"checked": true,
"hasFormat": true,
"format": "Hex"
},
{
"name": "status",
"checked": true,
"hasFormat": false,
"format": null
},
{
"name": "coreId",
"checked": true,
"hasFormat": true,
"format": "Decimal"
}
],
"hasFormats": true
}
},
"left": 1,
"top": 91,
"width": 1020,
"height": 95,
"zIndex": "78",
"dashboardVersion": "1.0"
},
{
"elemName": "xdc-rov-polymerUI-examples-graph_heap",
"elemPath": "addons/graph_heap",
"id": "rovView_1",
"viewName": "Heap Graph",
"left": 1,
"top": 187,
"width": "",
"height": "",
"zIndex": "87",
"dashboardVersion": "1.0"
},
{
"elemName": "xdc-rov-polymerUI-examples-graph_stacks",
"elemPath": "addons/graph_stacks",
"id": "rovView_2",
"viewName": "Stacks Graph",
"left": 412,
"top": 187,
"width": "",
"height": "",
"zIndex": "88",
"dashboardVersion": "1.0"
},
"overview"
]

View File

@@ -0,0 +1,179 @@
#ifndef _PROTO_H_
#define _PROTO_H_
#include <stdint.h>
#ifndef __packed
#define __packed __attribute__((packed))
#endif
#define PROTO_PAN_ID (0x4447) // PAN ID compression shall be used
#define RADIO_MAX_PACKET_LEN (125) // useful payload, not including the crc
#define ADDR_MODE_NONE (0)
#define ADDR_MODE_SHORT (2)
#define ADDR_MODE_LONG (3)
#define FRAME_TYPE_BEACON (0)
#define FRAME_TYPE_DATA (1)
#define FRAME_TYPE_ACK (2)
#define FRAME_TYPE_MAC_CMD (3)
#define SHORT_MAC_UNUSED (0x10000000UL) // for radioRxFilterCfg's myShortMac
#pragma pack(1)
struct MacFcs {
uint8_t frameType : 3;
uint8_t secure : 1;
uint8_t framePending : 1;
uint8_t ackReqd : 1;
uint8_t panIdCompressed : 1;
uint8_t rfu1 : 1;
uint8_t rfu2 : 2;
uint8_t destAddrType : 2;
uint8_t frameVer : 2;
uint8_t srcAddrType : 2;
} __packed;
struct MacFrameFromMaster {
struct MacFcs fcs;
uint8_t seq;
uint16_t pan;
uint8_t dst[8];
uint16_t from;
} __packed;
struct MacFrameNormal {
struct MacFcs fcs;
uint8_t seq;
uint16_t pan;
uint8_t dst[8];
uint8_t src[8];
} __packed;
struct MacFrameBcast {
struct MacFcs fcs;
uint8_t seq;
uint16_t dstPan;
uint16_t dstAddr;
uint16_t srcPan;
uint8_t src[8];
} __packed;
#define PKT_AVAIL_DATA_SHORTREQ 0xE3
#define PKT_AVAIL_DATA_REQ 0xE5
#define PKT_AVAIL_DATA_INFO 0xE6
#define PKT_BLOCK_PARTIAL_REQUEST 0xE7
#define PKT_BLOCK_REQUEST_ACK 0xE9
#define PKT_BLOCK_REQUEST 0xE4
#define PKT_BLOCK_PART 0xE8
#define PKT_XFER_COMPLETE 0xEA
#define PKT_XFER_COMPLETE_ACK 0xEB
#define PKT_CANCEL_XFER 0xEC
#define PKT_PING 0xED
#define PKT_PONG 0xEE
struct AvailDataReq {
uint8_t checksum;
uint8_t lastPacketLQI;
int8_t lastPacketRSSI;
int8_t temperature;
uint16_t batteryMv;
uint8_t hwType;
uint8_t wakeupReason;
uint8_t capabilities;
uint16_t tagSoftwareVersion;
uint8_t currentChannel;
uint8_t customMode;
uint8_t reserved[8];
} __packed;
struct oldAvailDataReq {
uint8_t checksum;
uint8_t lastPacketLQI;
int8_t lastPacketRSSI;
int8_t temperature;
uint16_t batteryMv;
uint8_t hwType;
uint8_t wakeupReason;
uint8_t capabilities;
} __packed;
struct AvailDataInfo {
uint8_t checksum;
uint64_t dataVer; // MD5 of potential traffic
uint32_t dataSize;
uint8_t dataType;
uint8_t dataTypeArgument; // extra specification or instruction for the tag (LUT to be used for drawing image)
uint16_t nextCheckIn; // when should the tag check-in again? Measured in minutes
} __packed;
struct pendingData {
struct AvailDataInfo availdatainfo;
uint16_t attemptsLeft;
uint8_t targetMac[8];
} __packed;
struct blockPart {
uint8_t checksum;
uint8_t blockId;
uint8_t blockPart;
uint8_t data[];
} __packed;
struct blockData {
uint16_t size;
uint16_t checksum;
uint8_t data[];
} __packed;
struct burstMacData {
uint16_t offset;
uint8_t targetMac[8];
} __packed;
#define BLOCK_PART_DATA_SIZE 99
#define BLOCK_MAX_PARTS 42
#define BLOCK_DATA_SIZE 4096UL
#define BLOCK_XFER_BUFFER_SIZE BLOCK_DATA_SIZE + sizeof(struct blockData)
#define BLOCK_REQ_PARTS_BYTES 6
struct blockRequest {
uint8_t checksum;
uint64_t ver;
uint8_t blockId;
uint8_t type;
uint8_t requestedParts[BLOCK_REQ_PARTS_BYTES];
} __packed;
struct blockRequestAck {
uint8_t checksum;
uint16_t pleaseWaitMs;
} __packed;
struct espBlockRequest {
uint8_t checksum;
uint64_t ver;
uint8_t blockId;
uint8_t src[8];
} __packed;
struct espXferComplete {
uint8_t checksum;
uint8_t src[8];
} __packed;
struct espAvailDataReq {
uint8_t checksum;
uint8_t src[8];
struct AvailDataReq adr;
} __packed;
struct espSetChannelPower {
uint8_t checksum;
uint8_t channel;
uint8_t power;
} __packed;
#pragma pack(0)
#endif

View File

@@ -0,0 +1,160 @@
#include "radio.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include "RFQueue.h"
#include "ieee_rf_config.h"
#include <ti/drivers/rf/RF.h>
#include "ti_drivers_config.h"
#include DeviceFamily_constructPath(driverlib/rf_prop_mailbox.h)
char the_msg[1000];
#define max_rf_rx_buffer 20
volatile uint8_t got_rx = 0;
volatile uint8_t worked_got_rx = 0;
volatile uint8_t packetDataPointer[max_rf_rx_buffer+1][1000];
#define CMD_CLEAR_RX 0x0008
/* Packet RX Configuration */
#define DATA_ENTRY_HEADER_SIZE 8 /* Constant header size of a Generic Data Entry */
#define MAX_LENGTH 256 /* Max length byte the radio will accept */
#define NUM_DATA_ENTRIES 2 /* NOTE: Only two data entries supported at the moment */
#define MAC_PHY_PHR_IEEE_LEN 1
#define MAC_RSSI_LEN 1
#define MAC_TS_LEN 4
#define MAC_FCS2_FIELD_LEN 2 /* 2-byte FCS field */
#define NUM_APPENDED_BYTES MAC_PHY_PHR_IEEE_LEN + MAC_RSSI_LEN + MAC_TS_LEN + MAC_FCS2_FIELD_LEN
/***** Variable declarations *****/
static RF_Object rfObject;
static RF_Handle rfHandle;
static RF_ScheduleCmdParams scheduleParams;
static RF_ScheduleCmdParams rxParam;
static RF_CmdHandle cmd;
static RF_Params rfParams;
static uint8_t rxRadioBufferPtr[RF_QUEUE_DATA_ENTRY_BUFFER_SIZE(NUM_DATA_ENTRIES, MAX_LENGTH, NUM_APPENDED_BYTES)] __attribute__((aligned(4)));
static rfc_ieeeRxOutput_t macRxOutputIeee;
static dataQueue_t macRxDataEntryQueue;
static rfc_dataEntryGeneral_t* currentDataEntry;
rfc_CMD_CLEAR_RX_t clearCMD =
{
.commandNo = CMD_CLEAR_RX,
.pQueue = 0 //!< Pointer to the queue structure to be cleared
};
static void radioRxCallback(RF_Handle h, RF_CmdHandle ch, RF_EventMask e)
{
currentDataEntry = RFQueue_getDataEntry();
RFQueue_nextEntry();
if (e & RF_EventRxOk)
{
if(*(uint8_t*)(&currentDataEntry->data) > 0){
memcpy((uint8_t *)packetDataPointer[got_rx], &currentDataEntry->data, *(uint8_t*)(&currentDataEntry->data));
got_rx++;
got_rx %= max_rf_rx_buffer;
}
}
}
void initRadio(uint8_t channel)
{
static RF_Mode RF_prop_ieee154_inner;
static rfc_CMD_RADIO_SETUP_t RF_cmdRadioSetup_inner;
static rfc_CMD_FS_t RF_cmdFs_ieee154_inner;
static rfc_CMD_IEEE_RX_t RF_cmdIEEERx_inner;
RF_cancelCmd(rfHandle, cmd, 0);
RF_pendCmd(rfHandle, cmd, RF_EventLastCmdDone);
if (rfHandle != NULL)
{
RF_yield(rfHandle);
RF_close(rfHandle);
rfHandle = NULL;
}
uint16_t frequency = 2405 + (5 * (channel - 11));
memcpy(&RF_prop_ieee154_inner,&RF_prop_ieee154,sizeof(RF_Mode));
memset(&rfObject,0x00,sizeof(RF_Object));
memcpy(&RF_cmdRadioSetup_inner,&RF_cmdRadioSetup,sizeof(RF_RadioSetup));
memset(&rfParams,0x00,sizeof(RF_Params));
RF_Params_init(&rfParams);
rfParams.nID = RF_STACK_ID_154;
clearCMD.pQueue = (dataQueue_t *) &macRxDataEntryQueue;
RF_cmdRadioSetup_inner.status = IDLE;
RF_cmdRadioSetup_inner.pNextOp = NULL;
RF_cmdRadioSetup_inner.condition.rule = COND_NEVER;
RF_cmdRadioSetup_inner.startTrigger.pastTrig = 1;
rfHandle = RF_open((RF_Object *)&rfObject, &RF_prop_ieee154_inner, (RF_RadioSetup*) &RF_cmdRadioSetup_inner, &rfParams);
RF_TxPowerTable_Value power_val = RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57);
RF_setTxPower(rfHandle, power_val);
memcpy(&RF_cmdFs_ieee154_inner,&RF_cmdFs_ieee154,sizeof(rfc_CMD_FS_t));
RF_cmdFs_ieee154_inner.frequency = frequency;
RF_postCmd(rfHandle, (RF_Op*)&RF_cmdFs_ieee154_inner, RF_PriorityNormal, NULL, 0);
if(RFQueue_defineQueue(&macRxDataEntryQueue, rxRadioBufferPtr, sizeof(rxRadioBufferPtr), NUM_DATA_ENTRIES, MAX_LENGTH + NUM_APPENDED_BYTES))
{
printf("QUEUE ERROR\r\n");
while(1);
}
memset(&rxParam,0x00,sizeof(RF_ScheduleCmdParams));
RF_ScheduleCmdParams_init(&rxParam);
rxParam.duration = 0;
rxParam.startTime = 0;
rxParam.startType = RF_StartNotSpecified;
rxParam.endTime = 0;
rxParam.endType = RF_EndInfinit;
memcpy(&RF_cmdIEEERx_inner,&RF_cmdIEEERx,sizeof(rfc_CMD_IEEE_RX_t));
RF_cmdIEEERx_inner.status = IDLE;
RF_cmdIEEERx_inner.pRxQ = (dataQueue_t*)&macRxDataEntryQueue;
RF_cmdIEEERx_inner.pOutput = (rfc_ieeeRxOutput_t *)&macRxOutputIeee;
RF_cmdIEEERx_inner.rxConfig.bAutoFlushCrc = 0x1;
RF_cmdIEEERx_inner.rxConfig.bAutoFlushIgn = 0x1;
RF_cmdIEEERx_inner.rxConfig.bIncludePhyHdr = 0x1;
RF_cmdIEEERx_inner.rxConfig.bIncludeCrc = 0x0;
RF_cmdIEEERx_inner.rxConfig.bAppendRssi = 0x1;
RF_cmdIEEERx_inner.rxConfig.bAppendCorrCrc = 0x0;
RF_cmdIEEERx_inner.rxConfig.bAppendSrcInd = 0x1;
RF_cmdIEEERx_inner.rxConfig.bAppendTimestamp = 0x0;
RF_cmdIEEERx_inner.startTime = 0;
RF_cmdIEEERx_inner.startTrigger.triggerType = TRIG_NOW;
RF_cmdIEEERx_inner.startTrigger.pastTrig = 1;
RF_cmdIEEERx_inner.ccaOpt.ccaEnEnergy = 0;
RF_cmdIEEERx_inner.ccaOpt.ccaEnCorr = 0;
RF_cmdIEEERx_inner.ccaOpt.ccaEnSync = 0;
RF_cmdIEEERx_inner.ccaOpt.ccaCorrOp = 0;
RF_cmdIEEERx_inner.ccaOpt.ccaSyncOp = 0;
RF_cmdIEEERx_inner.ccaOpt.ccaCorrThr = 3;
RF_cmdIEEERx_inner.ccaRssiThr = 0x64;
RF_cmdIEEERx_inner.channel = channel;
cmd = RF_scheduleCmd(rfHandle, (RF_Op*)&RF_cmdIEEERx_inner, &rxParam, radioRxCallback, RF_EventRxOk | RF_EventRxNOk | RF_EventRxBufFull | RF_EventTXAck | RF_EventCmdPreempted);
}
void radioSendData(uint8_t *out_buff, int len)
{
RF_ScheduleCmdParams_init(&scheduleParams);
scheduleParams.startTime = 0;
scheduleParams.startType = RF_StartNotSpecified;
scheduleParams.allowDelay = RF_AllowDelayAny;
scheduleParams.duration = ~(0);
scheduleParams.endTime = ~(0);
scheduleParams.endType = RF_EndNotSpecified;
RF_cmdIeeeTx_ieee154.startTrigger.triggerType = TRIG_NOW;
RF_cmdIeeeTx_ieee154.payloadLen = len;
RF_cmdIeeeTx_ieee154.pPayload = out_buff;
RF_runScheduleCmd(rfHandle, (RF_Op*)&RF_cmdIeeeTx_ieee154,&scheduleParams, NULL, 0);
RF_yield(rfHandle);
}

View File

@@ -0,0 +1,7 @@
#pragma once
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
void initRadio(uint8_t channel);
void radioSendData(uint8_t *out_buff, int len);

View File

@@ -0,0 +1,835 @@
#include <stdlib.h>
#include <unistd.h>
#include "RFQueue.h"
#include <stdio.h>
#include "ti_drivers_config.h"
#include <ti/drivers/GPIO.h>
#include "millis.h"
#include "uart.h"
#include "proto.h"
#include "radio.h"
// UART VARIABLES from uart.c
extern char input[];
extern size_t bytesReadCount;
// END UART VARIABLES from uart.c
// RADIO VARIABLES from radio.c
#define max_rf_rx_buffer 20
extern uint8_t got_rx;
extern uint8_t worked_got_rx;
extern uint8_t packetDataPointer[max_rf_rx_buffer+1][1000];
uint8_t mSelfMac[8] = {0x12,0x22,0x44,0x55,0x12,0x22,0x44,0x55};
#define LED1 10
#define LED2 11
// END RADIO VARIABLES from radio.c
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
const uint8_t channelList[6] = {11, 15, 20, 25, 26, 27};
bool radioTx(uint8_t* packet)
{
timerDelay(2);
radioSendData((uint8_t *)&packet[1], packet[0] - 2);
return true;
}
void radioSetChannel(uint8_t ch)
{
initRadio(ch);
}
void radioSetTxPower(uint8_t ch)
{
}
int8_t commsRxUnencrypted(uint8_t *data)
{
if(got_rx != worked_got_rx)
{
uint8_t curr_len = packetDataPointer[worked_got_rx][0];
GPIO_write(LED1,0);
memcpy(data, (uint8_t*)&packetDataPointer[worked_got_rx][1], curr_len);
worked_got_rx++;
worked_got_rx %= max_rf_rx_buffer;
GPIO_write(LED1,1);
// Here we filter for our MAC Address to make sure nothing wrong gets trough
struct MacFcs * fcs = (struct MacFcs *)data;
if ((fcs->frameType == 1) && (fcs->destAddrType == 2) && (fcs->srcAddrType == 3) && (fcs->panIdCompressed == 0)) {
// broadcast frame
struct MacFrameBcast *rxframe = (struct MacFrameBcast *)data;
if(rxframe->dstPan != PROTO_PAN_ID)
return 0;
} else if ((fcs->frameType == 1) && (fcs->destAddrType == 3) && (fcs->srcAddrType == 3) && (fcs->panIdCompressed == 1)) {
// normal frame
struct MacFrameNormal *txHeader = (struct MacFrameNormal *)data;
if(memcmp(txHeader->dst,mSelfMac,8))
return 0;
}
return curr_len - 2; // Remove appended RSSI and LQI, maybe its used later again
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
void uartTx(uint8_t data)
{
uartWrite((uint8_t *)&data, 1);
}
void timerDelay(uint32_t ms)
{
uint32_t nowTime = getMillis();
while(getMillis()-nowTime<ms)
{
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define DATATYPE_NOUPDATE 0
#define HW_TYPE 0xFF
#define MAX_PENDING_MACS 50
#define HOUSEKEEPING_INTERVAL 60UL
uint8_t tempBuffer[320];
struct pendingData pendingDataArr[MAX_PENDING_MACS];
// VERSION GOES HERE!
uint16_t version = 0x0017;
#define RAW_PKT_PADDING 2
uint8_t radiotxbuffer[128];
uint8_t radiorxbuffer[128];
static uint32_t housekeepingTimer;
struct blockRequest requestedData = {0}; // holds which data was requested by the tag
uint8_t dstMac[8]; // target for the block transfer
uint16_t dstPan; //
static uint32_t blockStartTimer = 0; // reference that holds when the AP sends the next block
uint32_t nextBlockAttempt = 0; // reference time for when the AP can request a new block from the ESP32
uint8_t seq = 0; // holds current sequence number for transmission
uint8_t blockbuffer[BLOCK_XFER_BUFFER_SIZE + 5]; // block transfer buffer
uint8_t lastAckMac[8] = {0};
// these variables hold the current mac were talking to
#define CONCURRENT_REQUEST_DELAY 1200UL
uint32_t lastBlockRequest = 0;
uint8_t lastBlockMac[8];
uint8_t curChannel = 11;
uint8_t curPower = 10;
uint8_t curPendingData = 0;
uint8_t curNoUpdate = 0;
void sendXferCompleteAck(uint8_t *dst);
void sendCancelXfer(uint8_t *dst);
void espNotifyAPInfo();
// tools
void addCRC(void *p, uint8_t len) {
uint8_t total = 0;
for (uint8_t c = 1; c < len; c++) {
total += ((uint8_t *)p)[c];
}
((uint8_t *)p)[0] = total;
// printf("%d",total);
}
bool checkCRC(void *p, uint8_t len) {
uint8_t total = 0;
for (uint8_t c = 1; c < len; c++) {
total += ((uint8_t *)p)[c];
}
return ((uint8_t *)p)[0] == total;
}
void dump(uint8_t * a, uint16_t l) {
printf(" ");
#define ROWS 16
for (uint8_t c = 0; c < ROWS; c++) {
printf(" %02X", c);
}
printf("\n--------");
for (uint8_t c = 0; c < ROWS; c++) {
printf("---");
}
for (uint16_t c = 0; c < l; c++) {
if ((c % ROWS) == 0) {
printf("\n0x%04X | ", c);
}
printf("%02X ", a[c]);
}
printf("\n--------");
for (uint8_t c = 0; c < ROWS; c++) {
printf("---");
}
printf("\n");
}
uint8_t getPacketType(void * buffer) {
struct MacFcs * fcs = buffer;
if ((fcs->frameType == 1) && (fcs->destAddrType == 2) && (fcs->srcAddrType == 3) && (fcs->panIdCompressed == 0)) {
// broadcast frame
uint8_t type = ((uint8_t *)buffer)[sizeof(struct MacFrameBcast)];
return type;
} else if ((fcs->frameType == 1) && (fcs->destAddrType == 3) && (fcs->srcAddrType == 3) && (fcs->panIdCompressed == 1)) {
// normal frame
uint8_t type = ((uint8_t *)buffer)[sizeof(struct MacFrameNormal)];
return type;
}
return 0;
}
uint8_t getBlockDataLength() {
uint8_t partNo = 0;
for (uint8_t c = 0; c < BLOCK_MAX_PARTS; c++) {
if (requestedData.requestedParts[c / 8] & (1 << (c % 8))) {
partNo++;
}
}
return partNo;
}
// pendingdata slot stuff
int8_t findSlotForMac(const uint8_t *mac) {
for (uint8_t c = 0; c < MAX_PENDING_MACS; c++) {
// if (u64_isEq((uint64_t *)mac, (uint64_t *)&(pendingDataArr[c].targetMac))) { // this costs 1 sloc :(
if (memcmp(mac, ((uint8_t *)&(pendingDataArr[c].targetMac)), 8) == 0) {
if (pendingDataArr[c].attemptsLeft != 0) {
return c;
}
}
}
return -1;
}
int8_t findFreeSlot() {
for (uint8_t c = 0; c < MAX_PENDING_MACS; c++) {
if (pendingDataArr[c].attemptsLeft == 0) {
return c;
}
}
return -1;
}
int8_t findSlotForVer(const uint8_t *ver) {
for (uint8_t c = 0; c < MAX_PENDING_MACS; c++) {
// if (u64_isEq((uint64_t *)ver, (uint64_t *)&(pendingDataArr[c].availdatainfo.dataVer))) {
if (memcmp(ver, ((uint8_t *)&(pendingDataArr[c].availdatainfo.dataVer)), 8) == 0) {
if (pendingDataArr[c].attemptsLeft != 0) return c;
}
}
return -1;
}
void deleteAllPendingDataForVer(const uint8_t *ver) {
int8_t slot = -1;
do {
slot = findSlotForVer(ver);
if (slot != -1) pendingDataArr[slot].attemptsLeft = 0;
} while (slot != -1);
}
void deleteAllPendingDataForMac(const uint8_t *mac) {
int8_t slot = -1;
do {
slot = findSlotForMac(mac);
if (slot != -1) pendingDataArr[slot].attemptsLeft = 0;
} while (slot != -1);
}
void countSlots() {
curPendingData = 0;
curNoUpdate = 0;
for (uint8_t c = 0; c < MAX_PENDING_MACS; c++) {
if (pendingDataArr[c].attemptsLeft != 0) {
if (pendingDataArr[c].availdatainfo.dataType != 0) {
curPendingData++;
} else {
curNoUpdate++;
}
}
}
}
// processing serial data
#define ZBS_RX_WAIT_HEADER 0
#define ZBS_RX_WAIT_SDA 1 // send data avail
#define ZBS_RX_WAIT_CANCEL 2 // cancel traffic for mac
#define ZBS_RX_WAIT_SCP 3 // set channel power
#define ZBS_RX_WAIT_BLOCKDATA 4
int blockPosition = 0;
void processSerial(uint8_t lastchar) {
static uint8_t cmdbuffer[4];
static uint8_t RXState = 0;
static uint8_t serialbuffer[48];
static uint8_t * serialbufferp;
static uint8_t bytesRemain = 0;
static uint32_t lastSerial = 0;
if ((getMillis() - lastSerial) > 25) {
RXState = ZBS_RX_WAIT_HEADER;
lastSerial = getMillis();
} else {
lastSerial = getMillis();
}
// uartTx(lastchar); echo
switch (RXState) {
case ZBS_RX_WAIT_HEADER:
// shift characters in
for (uint8_t c = 0; c < 3; c++) {
cmdbuffer[c] = cmdbuffer[c + 1];
}
cmdbuffer[3] = lastchar;
if (strncmp(cmdbuffer + 1, ">D>", 3) == 0) {
printf("ACK>\n");
blockPosition = 0;
RXState = ZBS_RX_WAIT_BLOCKDATA;
}
if (strncmp(cmdbuffer, "SDA>", 4) == 0) {
RXState = ZBS_RX_WAIT_SDA;
bytesRemain = sizeof(struct pendingData);
serialbufferp = serialbuffer;
break;
}
if (strncmp(cmdbuffer, "CXD>", 4) == 0) {
RXState = ZBS_RX_WAIT_CANCEL;
bytesRemain = sizeof(struct pendingData);
serialbufferp = serialbuffer;
break;
}
if (strncmp(cmdbuffer, "SCP>", 4) == 0) {
RXState = ZBS_RX_WAIT_SCP;
bytesRemain = sizeof(struct espSetChannelPower);
serialbufferp = serialbuffer;
break;
}
if (strncmp(cmdbuffer, "NFO?", 4) == 0) {
printf("ACK>");
espNotifyAPInfo();
}
if (strncmp(cmdbuffer, "RDY?", 4) == 0) {
printf("ACK>");
}
if (strncmp(cmdbuffer, "RSET", 4) == 0) {
printf("ACK>");
timerDelay(100);
// TODO RESET US HERE
RXState = ZBS_RX_WAIT_HEADER;
}
break;
case ZBS_RX_WAIT_BLOCKDATA:
blockbuffer[blockPosition++] = 0xAA ^ lastchar;
if(blockPosition >= 4100){
RXState = ZBS_RX_WAIT_HEADER;
}
break;
case ZBS_RX_WAIT_SDA:
*serialbufferp = lastchar;
serialbufferp++;
bytesRemain--;
if (bytesRemain == 0) {
if (checkCRC(serialbuffer, sizeof(struct pendingData))) {
struct pendingData *pd = (struct pendingData *)serialbuffer;
int8_t slot = findSlotForMac(pd->targetMac);
if (slot == -1) slot = findFreeSlot();
if (slot != -1) {
memcpy(&(pendingDataArr[slot]), serialbuffer, sizeof(struct pendingData));
printf("ACK>\n");
} else {
printf("NOQ>\n");
}
} else {
printf("NOK>\n");
}
RXState = ZBS_RX_WAIT_HEADER;
}
break;
case ZBS_RX_WAIT_CANCEL:
*serialbufferp = lastchar;
serialbufferp++;
bytesRemain--;
if (bytesRemain == 0) {
if (checkCRC(serialbuffer, sizeof(struct pendingData))) {
struct pendingData *pd = (struct pendingData *)serialbuffer;
// deleteAllPendingDataForVer((uint8_t *)&pd->availdatainfo.dataVer);
deleteAllPendingDataForMac((uint8_t *)&pd->targetMac);
printf("ACK>\n");
} else {
printf("NOK>\n");
}
RXState = ZBS_RX_WAIT_HEADER;
}
break;
case ZBS_RX_WAIT_SCP:
*serialbufferp = lastchar;
serialbufferp++;
bytesRemain--;
if (bytesRemain == 0) {
if (checkCRC(serialbuffer, sizeof(struct espSetChannelPower))) {
struct espSetChannelPower *scp = (struct espSetChannelPower *)serialbuffer;
for (uint8_t c = 0; c < sizeof(channelList); c++) {
if (channelList[c] == scp->channel) goto SCPchannelFound;
}
goto SCPfailed;
SCPchannelFound:
curChannel = scp->channel;
curPower = scp->power;
radioSetChannel(scp->channel);
radioSetTxPower(scp->power);
printf("ACK>\n");
} else {
SCPfailed:
printf("NOK>\n");
}
RXState = ZBS_RX_WAIT_HEADER;
}
break;
}
}
// sending data to the ESP
void espBlockRequest(const struct blockRequest *br, uint8_t *src) {
struct espBlockRequest * ebr = (struct espBlockRequest *)blockbuffer;
uartTx('R');
uartTx('Q');
uartTx('B');
uartTx('>');
// u64_copy(ebr->ver, br->ver);
memcpy(&(ebr->ver), &(br->ver),8);
memcpy(&(ebr->src), src,8);
ebr->blockId = br->blockId;
addCRC(ebr, sizeof(struct espBlockRequest));
for (uint8_t c = 0; c < sizeof(struct espBlockRequest); c++) {
uartTx(((uint8_t *)ebr)[c]);
}
// printf("req ebr ver: %02X%02X%02X%02X%02X%02X%02X%02X\n", ((uint8_t *)&(ebr->ver))[0], ((uint8_t *)&(ebr->ver))[1], ((uint8_t *)&(ebr->ver))[2], ((uint8_t *)&(ebr->ver))[3], ((uint8_t *)&(ebr->ver))[4], ((uint8_t *)&(ebr->ver))[5], ((uint8_t *)&(ebr->ver))[6], ((uint8_t *)&(ebr->ver))[7]);
// printf("req br ver: %02X%02X%02X%02X%02X%02X%02X%02X\n", ((uint8_t *)&(br->ver))[0], ((uint8_t *)&(br->ver))[1], ((uint8_t *)&(br->ver))[2], ((uint8_t *)&(br->ver))[3], ((uint8_t *)&(br->ver))[4], ((uint8_t *)&(br->ver))[5], ((uint8_t *)&(br->ver))[6], ((uint8_t *)&(br->ver))[7]);
}
void espNotifyAvailDataReq(const struct AvailDataReq *adr, const uint8_t *src) {
uartTx('A');
uartTx('D');
uartTx('R');
uartTx('>');
struct espAvailDataReq eadr = {0};
memcpy((void *)eadr.src, (void *)src, 8);
memcpy((void *) & eadr.adr, (void *)adr, sizeof(struct AvailDataReq));
addCRC(&eadr, sizeof(struct espAvailDataReq));
for (uint8_t c = 0; c < sizeof(struct espAvailDataReq); c++) {
uartTx(((uint8_t *)&eadr)[c]);
}
}
void espNotifyXferComplete(const uint8_t *src) {
struct espXferComplete exfc;
memcpy(&exfc.src, src,8);
uartTx('X');
uartTx('F');
uartTx('C');
uartTx('>');
addCRC(&exfc, sizeof(exfc));
for (uint8_t c = 0; c < sizeof(exfc); c++) {
uartTx(((uint8_t *)&exfc)[c]);
}
}
void espNotifyTimeOut(const uint8_t *src) {
struct espXferComplete exfc;
memcpy(&exfc.src, src,8);
uartTx('X');
uartTx('T');
uartTx('O');
uartTx('>');
addCRC(&exfc, sizeof(exfc));
for (uint8_t c = 0; c < sizeof(exfc); c++) {
uartTx(((uint8_t *)&exfc)[c]);
}
}
void espNotifyAPInfo() {
printf("TYP>%02X\n", HW_TYPE);
printf("VER>%04X\n", version);
printf("MAC>%02X%02X", mSelfMac[0], mSelfMac[1]);
printf("%02X%02X", mSelfMac[2], mSelfMac[3]);
printf("%02X%02X", mSelfMac[4], mSelfMac[5]);
printf("%02X%02X\n", mSelfMac[6], mSelfMac[7]);
printf("ZCH>%02X\n", curChannel);
printf("ZPW>%02X\n", curPower);
countSlots();
printf("PEN>%02X\n", curPendingData);
printf("NOP>%02X\n", curNoUpdate);
}
// process data from tag
void processBlockRequest(const uint8_t *buffer, uint8_t forceBlockDownload) {
struct MacFrameNormal * rxHeader = (struct MacFrameNormal *)buffer;
struct blockRequest * blockReq = (struct blockRequest *)(buffer + sizeof(struct MacFrameNormal) + 1);
if (!checkCRC(blockReq, sizeof(struct blockRequest))) return;
// check if we're already talking to this mac
if (memcmp(rxHeader->src, lastBlockMac, 8) == 0) {
lastBlockRequest = getMillis();
} else {
// we weren't talking to this mac, see if there was a transfer in progress from another mac, recently
if ((getMillis() - lastBlockRequest) > CONCURRENT_REQUEST_DELAY) {
// mark this mac as the new current mac we're talking to
memcpy((void *)lastBlockMac, (void *)rxHeader->src, 8);
lastBlockRequest = getMillis();
} else {
// we're talking to another mac, let this mac know we can't accomodate another request right now
printf("BUSY!\n");
sendCancelXfer(rxHeader->src);
return;
}
}
// check if we have data for this mac
if (findSlotForMac(rxHeader->src) == -1) {
// no data for this mac, politely tell it to fuck off
sendCancelXfer(rxHeader->src);
return;
}
bool requestDataDownload = false;
if ((blockReq->blockId != requestedData.blockId) || (blockReq->ver != requestedData.ver)) {
// requested block isn't already in the buffer
requestDataDownload = true;
} else {
// requested block is already in the buffer
if (forceBlockDownload) {
if ((getMillis() - nextBlockAttempt) > 380) {
requestDataDownload = true;
printf("FORCED\n");
} else {
printf("IGNORED\n");
}
}
}
// copy blockrequest into requested data
memcpy(&requestedData, blockReq, sizeof(struct blockRequest));
struct MacFrameNormal *txHeader = (struct MacFrameNormal *)(radiotxbuffer + 1);
struct blockRequestAck *blockRequestAck = (struct blockRequestAck *)(radiotxbuffer + sizeof(struct MacFrameNormal) + 2);
radiotxbuffer[0] = sizeof(struct MacFrameNormal) + 1 + sizeof(struct blockRequestAck) + RAW_PKT_PADDING;
radiotxbuffer[sizeof(struct MacFrameNormal) + 1] = PKT_BLOCK_REQUEST_ACK;
if (blockStartTimer == 0) {
if (requestDataDownload) {
// check if we need to download the first block; we need to give the ESP32 some additional time to cache the file
if (blockReq->blockId == 0) {
blockRequestAck->pleaseWaitMs = 400;
} else {
blockRequestAck->pleaseWaitMs = 400;
}
} else {
// block is already in buffer
blockRequestAck->pleaseWaitMs = 50;
}
} else {
blockRequestAck->pleaseWaitMs = 50;
}
blockStartTimer = getMillis() + blockRequestAck->pleaseWaitMs;
memcpy(txHeader->src, mSelfMac, 8);
memcpy(txHeader->dst, rxHeader->src, 8);
txHeader->pan = rxHeader->pan;
txHeader->fcs.frameType = 1;
txHeader->fcs.panIdCompressed = 1;
txHeader->fcs.destAddrType = 3;
txHeader->fcs.srcAddrType = 3;
txHeader->seq = seq++;
addCRC((void *)blockRequestAck, sizeof(struct blockRequestAck));
radioTx(radiotxbuffer);
// save the target for the blockdata
memcpy(dstMac, rxHeader->src, 8);
dstPan = rxHeader->pan;
if (requestDataDownload) {
blockPosition = 0;
espBlockRequest(&requestedData, rxHeader->src);
nextBlockAttempt = getMillis();
}
/*
printf("Req: %d [", blockReq->blockId);
for (uint8_t c = 0; c < BLOCK_MAX_PARTS; c++) {
if ((c != 0) && (c % 8 == 0)) printf("][");
if (blockReq->requestedParts[c / 8] & (1 << (c % 8))) {
printf("R");
} else {
printf(".");
}
}
printf("]\n");
*/
}
void processAvailDataReq(uint8_t *buffer) {
struct MacFrameBcast *rxHeader = (struct MacFrameBcast *)buffer;
struct AvailDataReq *availDataReq = (struct AvailDataReq *)(buffer + sizeof(struct MacFrameBcast) + 1);
if (!checkCRC(availDataReq, sizeof(struct AvailDataReq)))
return;
// prepare tx buffer to send a response
memset(radiotxbuffer, 0, sizeof(struct MacFrameNormal) + sizeof(struct AvailDataInfo) + 2); // 120);
struct MacFrameNormal *txHeader = (struct MacFrameNormal *)(radiotxbuffer + 1);
struct AvailDataInfo *availDataInfo = (struct AvailDataInfo *)(radiotxbuffer + sizeof(struct MacFrameNormal) + 2);
radiotxbuffer[0] = sizeof(struct MacFrameNormal) + 1 + sizeof(struct AvailDataInfo) + RAW_PKT_PADDING;
radiotxbuffer[sizeof(struct MacFrameNormal) + 1] = PKT_AVAIL_DATA_INFO;
// check to see if we have data available for this mac
bool haveData = false;
for (uint8_t c = 0; c < MAX_PENDING_MACS; c++) {
if (pendingDataArr[c].attemptsLeft) {
if (memcmp(pendingDataArr[c].targetMac, rxHeader->src, 8) == 0) {
haveData = true;
memcpy((void *)availDataInfo, &(pendingDataArr[c].availdatainfo), sizeof(struct AvailDataInfo));
break;
}
}
}
// couldn't find data for this mac
if (!haveData) availDataInfo->dataType = DATATYPE_NOUPDATE;
memcpy(txHeader->src, mSelfMac,8);
memcpy(txHeader->dst, rxHeader->src,8);
txHeader->pan = rxHeader->dstPan;
txHeader->fcs.frameType = 1;
txHeader->fcs.panIdCompressed = 1;
txHeader->fcs.destAddrType = 3;
txHeader->fcs.srcAddrType = 3;
txHeader->seq = seq++;
addCRC(availDataInfo, sizeof(struct AvailDataInfo));
radioTx(radiotxbuffer);
memset(lastAckMac, 0, 8); // reset lastAckMac, so we can record if we've received exactly one ack packet
espNotifyAvailDataReq(availDataReq, rxHeader->src);
}
void processXferComplete(uint8_t *buffer) {
struct MacFrameNormal *rxHeader = (struct MacFrameNormal *)buffer;
sendXferCompleteAck(rxHeader->src);
if (memcmp(lastAckMac, rxHeader->src, 8) != 0) {
memcpy((void *)lastAckMac, (void *)rxHeader->src, 8);
espNotifyXferComplete(rxHeader->src);
int8_t slot = findSlotForMac(rxHeader->src);
if (slot != -1) pendingDataArr[slot].attemptsLeft = 0;
}
}
// send block data to the tag
void sendPart(uint8_t partNo) {
struct MacFrameNormal *frameHeader = (struct MacFrameNormal *)(radiotxbuffer + 1);
struct blockPart *blockPart = (struct blockPart *)(radiotxbuffer + sizeof(struct MacFrameNormal) + 2);
memset(radiotxbuffer + 1, 0, sizeof(struct blockPart) + sizeof(struct MacFrameNormal));
radiotxbuffer[sizeof(struct MacFrameNormal) + 1] = PKT_BLOCK_PART;
radiotxbuffer[0] = sizeof(struct MacFrameNormal) + sizeof(struct blockPart) + BLOCK_PART_DATA_SIZE + 1 + RAW_PKT_PADDING;
memcpy(frameHeader->src, mSelfMac, 8);
memcpy(frameHeader->dst, dstMac, 8);
blockPart->blockId = requestedData.blockId;
blockPart->blockPart = partNo;
memcpy(&(blockPart->data), blockbuffer + (partNo * BLOCK_PART_DATA_SIZE), BLOCK_PART_DATA_SIZE);
addCRC(blockPart, sizeof(struct blockPart) + BLOCK_PART_DATA_SIZE);
frameHeader->fcs.frameType = 1;
frameHeader->fcs.panIdCompressed = 1;
frameHeader->fcs.destAddrType = 3;
frameHeader->fcs.srcAddrType = 3;
frameHeader->seq = seq++;
frameHeader->pan = dstPan;
radioTx(radiotxbuffer);
}
void sendBlockData() {
if (getBlockDataLength() == 0) {
printf("Invalid block request received, 0 parts..\n");
requestedData.requestedParts[0] |= 0x01;
}
uint8_t partNo = 0;
while (partNo < BLOCK_MAX_PARTS) {
for (uint8_t c = 0; (c < BLOCK_MAX_PARTS) && (partNo < BLOCK_MAX_PARTS); c++) {
if (requestedData.requestedParts[c / 8] & (1 << (c % 8))) {
sendPart(c);
partNo++;
}
}
}
}
void sendXferCompleteAck(uint8_t *dst) {
struct MacFrameNormal *frameHeader = (struct MacFrameNormal *)(radiotxbuffer + 1);
memset(radiotxbuffer + 1, 0, sizeof(struct blockPart) + sizeof(struct MacFrameNormal));
radiotxbuffer[sizeof(struct MacFrameNormal) + 1] = PKT_XFER_COMPLETE_ACK;
radiotxbuffer[0] = sizeof(struct MacFrameNormal) + 1 + RAW_PKT_PADDING;
memcpy(frameHeader->src, mSelfMac, 8);
memcpy(frameHeader->dst, dst, 8);
frameHeader->fcs.frameType = 1;
frameHeader->fcs.panIdCompressed = 1;
frameHeader->fcs.destAddrType = 3;
frameHeader->fcs.srcAddrType = 3;
frameHeader->seq = seq++;
frameHeader->pan = dstPan;
radioTx(radiotxbuffer);
}
void sendCancelXfer(uint8_t *dst) {
struct MacFrameNormal *frameHeader = (struct MacFrameNormal *)(radiotxbuffer + 1);
memset(radiotxbuffer + 1, 0, sizeof(struct blockPart) + sizeof(struct MacFrameNormal));
radiotxbuffer[sizeof(struct MacFrameNormal) + 1] = PKT_CANCEL_XFER;
radiotxbuffer[0] = sizeof(struct MacFrameNormal) + 1 + RAW_PKT_PADDING;
memcpy(frameHeader->src, mSelfMac, 8);
memcpy(frameHeader->dst, dst, 8);
frameHeader->fcs.frameType = 1;
frameHeader->fcs.panIdCompressed = 1;
frameHeader->fcs.destAddrType = 3;
frameHeader->fcs.srcAddrType = 3;
frameHeader->seq = seq++;
frameHeader->pan = dstPan;
radioTx(radiotxbuffer);
}
void sendPong(void * buf) {
struct MacFrameBcast *rxframe = (struct MacFrameBcast *)buf;
struct MacFrameNormal *frameHeader = (struct MacFrameNormal *)(radiotxbuffer + 1);
radiotxbuffer[sizeof(struct MacFrameNormal) + 1] = PKT_PONG;
radiotxbuffer[sizeof(struct MacFrameNormal) + 2] = curChannel;
radiotxbuffer[0] = sizeof(struct MacFrameNormal) + 1 + 1 + RAW_PKT_PADDING;
memcpy(frameHeader->src, mSelfMac, 8);
memcpy(frameHeader->dst, rxframe->src, 8);
radiotxbuffer[1] = 0x41; // fast way to set the appropriate bits
radiotxbuffer[2] = 0xCC; // normal frame
frameHeader->seq = seq++;
frameHeader->pan = rxframe->srcPan;
radioTx(radiotxbuffer);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
void *mainThread(void *arg0)
{
GPIO_setConfig(LED1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
GPIO_write(LED1,1);
GPIO_setConfig(LED2, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
GPIO_write(LED2,1);
millisInit();
initUart();
requestedData.blockId = 0xFF;
/*for (uint8_t c = 0; c < 8; c++) {
mSelfMac[c] = c;
}*/
// clear the array with pending information
memset(pendingDataArr, 0, sizeof(pendingDataArr));
radioSetChannel(curChannel);
radioSetTxPower(10);
timerDelay(100);
printf("RES>\n");
printf("RDY>\n");
housekeepingTimer = getMillis();
uint16_t loopCount = 1;
while (1) {
while ((getMillis() - housekeepingTimer) < ((1000 * HOUSEKEEPING_INTERVAL) - 100)) {
int8_t ret = commsRxUnencrypted(radiorxbuffer);
if (ret > 1) {
// received a packet, lets see what it is
switch (getPacketType(radiorxbuffer)) {
case PKT_AVAIL_DATA_REQ:
if (ret == 28) {
// old version of the AvailDataReq struct, set all the new fields to zero, so it will pass the CRC
processAvailDataReq(radiorxbuffer);
memset(radiorxbuffer + 1 + sizeof(struct MacFrameBcast) + sizeof(struct oldAvailDataReq), 0, sizeof(struct AvailDataReq) - sizeof(struct oldAvailDataReq) + 2);
} else if (ret == 40) {
// new version of the AvailDataReq struct
processAvailDataReq(radiorxbuffer);
}
break;
case PKT_BLOCK_REQUEST:
processBlockRequest(radiorxbuffer, 1);
break;
case PKT_BLOCK_PARTIAL_REQUEST:
processBlockRequest(radiorxbuffer, 0);
break;
case PKT_XFER_COMPLETE:
processXferComplete(radiorxbuffer);
break;
case PKT_PING:
sendPong(radiorxbuffer);
break;
case PKT_AVAIL_DATA_SHORTREQ:
// a short AvailDataReq is basically a very short (1 byte payload) packet that requires little preparation on the tx side, for optimal battery use
// bytes of the struct are set 0, so it passes the checksum test, and the ESP32 can detect that no interesting payload is sent
if (ret == 18) {
memset(radiorxbuffer + 1 + sizeof(struct MacFrameBcast), 0, sizeof(struct AvailDataReq) + 2);
processAvailDataReq(radiorxbuffer);
}
break;
default:
printf("t=%02X\n", getPacketType(radiorxbuffer));
break;
}
loopCount = 10000;
}
while(bytesReadCount){
for(int i=0;i<bytesReadCount;i++)
{
processSerial(input[i]);
}
bytesReadCount = 0;
uartEnableInt();
}
if (blockStartTimer) {
// BUG: uint32 overflowing; this will break every once in a while. Don't know how to fix this other than ugly global variables
if (getMillis() > blockStartTimer) {
sendBlockData();
blockStartTimer = 0;
}
}
loopCount--;
if (loopCount == 0) {
loopCount = 10000;
// every once in a while, especially when handling a lot of traffic, the radio will hang. Calling this every once in while
// alleviates this problem. The radio is set back to 'receive' whenever loopCount overflows
//RADIO_command = RADIO_CMD_RECEIVE;
// TODO Check if we also need to RX from time to time
}
}
for (uint8_t cCount = 0; cCount < MAX_PENDING_MACS; cCount++) {
if (pendingDataArr[cCount].attemptsLeft == 1) {
if (pendingDataArr[cCount].availdatainfo.dataType != DATATYPE_NOUPDATE) {
espNotifyTimeOut(pendingDataArr[cCount].targetMac);
}
pendingDataArr[cCount].attemptsLeft = 0;
} else if (pendingDataArr[cCount].attemptsLeft > 1) {
pendingDataArr[cCount].attemptsLeft--;
if (pendingDataArr[cCount].availdatainfo.nextCheckIn) pendingDataArr[cCount].availdatainfo.nextCheckIn--;
}
}
housekeepingTimer = getMillis();
}
}

View File

@@ -0,0 +1,98 @@
/**
* These arguments were used when this file was generated. They will be automatically applied on subsequent loads
* via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
* @cliArgs --board "/ti/boards/LP_CC2652PSIP" --rtos "tirtos7" --product "simplelink_cc13xx_cc26xx_sdk@6.40.00.13"
* @versions {"tool":"1.15.0+2826"}
*/
/**
* Import the modules used in this configuration.
*/
const CCFG = scripting.addModule("/ti/devices/CCFG");
const custom = scripting.addModule("/ti/devices/radioconfig/custom");
const rfdesign = scripting.addModule("/ti/devices/radioconfig/rfdesign");
const GPIO = scripting.addModule("/ti/drivers/GPIO");
const RF = scripting.addModule("/ti/drivers/RF");
const Timer = scripting.addModule("/ti/drivers/Timer", {}, false);
const Timer1 = Timer.addInstance();
const UART2 = scripting.addModule("/ti/drivers/UART2", {}, false);
const UART21 = UART2.addInstance();
const Settings = scripting.addModule("/ti/posix/tirtos/Settings");
const BIOS = scripting.addModule("/ti/sysbios/BIOS");
const Event = scripting.addModule("/ti/sysbios/knl/Event");
const Idle = scripting.addModule("/ti/sysbios/knl/Idle", {}, false);
const Idle2 = Idle.addInstance();
const Mailbox = scripting.addModule("/ti/sysbios/knl/Mailbox");
const Error = scripting.addModule("/ti/sysbios/runtime/Error");
const SysCallback = scripting.addModule("/ti/sysbios/runtime/SysCallback");
const Timestamp = scripting.addModule("/ti/sysbios/runtime/Timestamp");
/**
* Write custom configuration values to the imported modules.
*/
CCFG.enableBootloader = true;
CCFG.dioBootloaderBackdoor = 15;
CCFG.levelBootloaderBackdoor = "Active low";
CCFG.enableBootloaderBackdoor = true;
CCFG.ccfgTemplate.$name = "ti_devices_CCFG_CCFGCC26XXTemplate0";
custom.ieee = ["ieee154p10"];
custom.radioConfigieee154p10.$name = "ti_devices_radioconfig_settings_ieee_15_40";
custom.radioConfigieee154p10.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param1";
Timer1.$name = "CONFIG_TIMER_0";
Timer1.timerType = "32 Bits";
Timer1.timerInstance.$name = "CONFIG_GPTIMER_0";
UART21.$name = "CONFIG_UART2_0";
UART21.$hardware = system.deviceData.board.components.XDS110UART;
BIOS.assertsEnabled = false;
BIOS.heapBaseAddr = "__primary_heap_start__";
BIOS.heapEndAddr = "__primary_heap_end__";
const Hwi = scripting.addModule("/ti/sysbios/family/arm/m3/Hwi", {}, false);
Hwi.enableException = false;
const Clock = scripting.addModule("/ti/sysbios/knl/Clock", {}, false);
Clock.tickPeriod = 10;
const Timer_1 = scripting.addModule("/ti/sysbios/family/arm/cc26xx/Timer", {}, false);
Idle2.$name = "powerIdle";
Idle2.idleFxn = "Power_idleFunc";
const Semaphore = scripting.addModule("/ti/sysbios/knl/Semaphore", {}, false);
Semaphore.supportsPriority = false;
const Swi = scripting.addModule("/ti/sysbios/knl/Swi", {}, false);
Swi.numPriorities = 6;
const Task = scripting.addModule("/ti/sysbios/knl/Task", {}, false);
Task.checkStackFlag = false;
Task.defaultStackSize = 512;
Task.idleTaskStackSize = 512;
Task.numPriorities = 6;
Error.policy = "Error_SPIN";
Error.printDetails = false;
const System = scripting.addModule("/ti/sysbios/runtime/System", {}, false);
System.abortFxn = "System_abortSpin";
System.exitFxn = "System_exitSpin";
System.extendedFormats = "%f";
System.supportModule = "SysCallback";
/**
* Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
* version of the tool will not impact the pinmux you originally saw. These lines can be completely deleted in order to
* re-solve from scratch.
*/
RF.rfAntennaPin0.$suggestSolution = "boosterpack.11";
RF.rfAntennaPin1.$suggestSolution = "boosterpack.17";
Timer1.timerInstance.timer.$suggestSolution = "GPTM0";
UART21.uart.$suggestSolution = "UART0";
UART21.uart.txPin.$suggestSolution = "boosterpack.4";
UART21.uart.rxPin.$suggestSolution = "boosterpack.3";
Timer_1.rtc.$suggestSolution = "RTC0";

View File

@@ -0,0 +1,15 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL = cmd.exe
# Each subdirectory must supply rules for building sources it contributes
syscfg/%.o: ../syscfg/%.c $(GEN_OPTS) | $(GEN_FILES) $(GEN_MISC_FILES)
@echo 'Building file: "$<"'
@echo 'Invoking: GNU Compiler'
"C:/ti/gcc_arm_none_eabi_9_2_1/bin/arm-none-eabi-gcc-9.2.1.exe" -c -mcpu=cortex-m4 -march=armv7e-m -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -DDeviceFamily_CC26X2 -I"C:/Users/pc/workspace_v12/rfPacketRx_LP_CC2652PSIP_tirtos7_gcc/syscfg" -I"C:/Users/pc/workspace_v12/rfPacketRx_LP_CC2652PSIP_tirtos7_gcc" -I"C:/Users/pc/workspace_v12/rfPacketRx_LP_CC2652PSIP_tirtos7_gcc/Debug" -I"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source" -I"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages" -I"C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc" -I"C:/ti/gcc_arm_none_eabi_9_2_1/arm-none-eabi/include/newlib-nano" -I"C:/ti/gcc_arm_none_eabi_9_2_1/arm-none-eabi/include" -ffunction-sections -fdata-sections -g -gdwarf-3 -gstrict-dwarf -Wall -MMD -MP -MF"syscfg/$(basename $(<F)).d_raw" -MT"$(@)" -I"C:/Users/pc/workspace_v12/rfPacketRx_LP_CC2652PSIP_tirtos7_gcc/Debug/syscfg" -std=c99 $(GEN_OPTS__FLAG) -o"$@" "$<"
@echo 'Finished building: "$<"'
@echo ' '

View File

@@ -0,0 +1,32 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL = cmd.exe
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../syscfg/ti_devices_config.c \
../syscfg/ti_drivers_config.c \
../syscfg/ti_radio_config.c \
../syscfg/ti_sysbios_config.c
C_DEPS += \
./syscfg/ti_devices_config.d \
./syscfg/ti_drivers_config.d \
./syscfg/ti_radio_config.d \
./syscfg/ti_sysbios_config.d
C_DEPS__QUOTED += \
"syscfg\ti_devices_config.d" \
"syscfg\ti_drivers_config.d" \
"syscfg\ti_radio_config.d" \
"syscfg\ti_sysbios_config.d"
C_SRCS__QUOTED += \
"../syscfg/ti_devices_config.c" \
"../syscfg/ti_drivers_config.c" \
"../syscfg/ti_radio_config.c" \
"../syscfg/ti_sysbios_config.c"

View File

@@ -0,0 +1,28 @@
/*
* ======== syscfg_c.rov.xs ========
* This file contains the information needed by the Runtime Object
* View (ROV) tool.
*
* Specifically, this file names the C-ROV implementation files declared
* by the modules that are part of the app's configuration. In the
* future this file will also contain a serialization of corresponding
* module configuration parameters which can be used by the ROV provided
* views.
*
* DO NOT EDIT - This file is generated by the SysConfig tool.
*/
var crovFiles = [
"ti/sysbios/BIOS.rov.js", /* /ti/sysbios/BIOS ROV support */
"ti/sysbios/family/arm/cc26xx/ClockSupport.rov.js", /* /ti/sysbios/family/arm/cc26xx/ClockSupport ROV support */
"ti/sysbios/family/arm/cc26xx/Timer.rov.js", /* /ti/sysbios/family/arm/cc26xx/Timer ROV support */
"ti/sysbios/family/arm/m3/Hwi.rov.js", /* /ti/sysbios/family/arm/m3/Hwi ROV support */
"ti/sysbios/gates/GateMutex.rov.js", /* /ti/sysbios/gates/GateMutex ROV support */
"ti/sysbios/heaps/HeapMem.rov.js", /* /ti/sysbios/heaps/HeapMem ROV support */
"ti/sysbios/knl/Clock.rov.js", /* /ti/sysbios/knl/Clock ROV support */
"ti/sysbios/knl/Event.rov.js", /* /ti/sysbios/knl/Event ROV support */
"ti/sysbios/knl/Idle.rov.js", /* /ti/sysbios/knl/Idle ROV support */
"ti/sysbios/knl/Mailbox.rov.js", /* /ti/sysbios/knl/Mailbox ROV support */
"ti/sysbios/knl/Semaphore.rov.js", /* /ti/sysbios/knl/Semaphore ROV support */
"ti/sysbios/knl/Swi.rov.js", /* /ti/sysbios/knl/Swi ROV support */
"ti/sysbios/knl/Task.rov.js", /* /ti/sysbios/knl/Task ROV support */
];

View File

@@ -0,0 +1,106 @@
/*
* ======== ti_devices_config.c ========
* Customer Configuration for CC26XX and CC13XX devices.
*
* DO NOT EDIT - This file is generated by the SysConfig tool.
*
*/
//#####################################
// Force VDDR high setting (Higher output power but also higher power consumption)
// This is also called "boost mode"
//#####################################
// Use default VDDR trim
#define CCFG_FORCE_VDDR_HH 0x0
//#####################################
// Power settings
//#####################################
// Use the DC/DC during recharge in powerdown
#define SET_CCFG_MODE_CONF_DCDC_RECHARGE 0x0
// Use the DC/DC during active mode
#define SET_CCFG_MODE_CONF_DCDC_ACTIVE 0x0
//#####################################
// Clock settings
//#####################################
// LF XOSC
#define SET_CCFG_MODE_CONF_SCLK_LF_OPTION 0x2
// Don't apply cap-array delta
#define SET_CCFG_MODE_CONF_XOSC_CAP_MOD 0x1
//#####################################
// Special HF clock source setting
//#####################################
// HF source is a 48 MHz xtal
#define SET_CCFG_MODE_CONF_XOSC_FREQ 0x2
//#####################################
// Bootloader settings
//#####################################
// Enable ROM boot loader
#define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5
// Enabled boot loader backdoor
#define SET_CCFG_BL_CONFIG_BL_ENABLE 0xC5
// DIO number for boot loader backdoor
#define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER 0xf
// Active low to open boot loader backdoor
#define SET_CCFG_BL_CONFIG_BL_LEVEL 0x0
// Default address in IMAGE_VALID_CONF register
#define SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID 0x00000000
//#####################################
// Debug access settings
//#####################################
// Disable unlocking of TI Failure Analysis option
#define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE 0x00
// Disable customer key CKEY0-3 to be XOR'ed with TI FA option unlock key
#define SET_CCFG_CCFG_TI_OPTIONS_C_FA_DIS 0xC5
// Access enabled if also enabled in FCFG
#define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE 0xC5
// Access enabled if also enabled in FCFG
#define SET_CCFG_CCFG_TAP_DAP_0_PWRPROF_TAP_ENABLE 0xC5
// Access disabled
#define SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE 0x00
// Access disabled
#define SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE 0x00
// Access disabled
#define SET_CCFG_CCFG_TAP_DAP_1_PBIST1_TAP_ENABLE 0x00
// Access disabled
#define SET_CCFG_CCFG_TAP_DAP_1_AON_TAP_ENABLE 0x00
//#####################################
// Select between cache or GPRAM
//#####################################
// Cache is enabled and GPRAM is disabled (unavailable)
#define SET_CCFG_SIZE_AND_DIS_FLAGS_DIS_GPRAM 0x1
/*
* ======== Include Base Settings for device ========
*/
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(startup_files/ccfg.c)

View File

@@ -0,0 +1,21 @@
# FIXED
syscfg/ti_devices_config.o: syscfg/ti_devices_config.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/startup_files/ccfg.c \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg_simple_struct.h
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/startup_files/ccfg.c:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg_simple_struct.h:

View File

@@ -0,0 +1,566 @@
/*
* ======== ti_drivers_config.c ========
* Configured TI-Drivers module definitions
*
* DO NOT EDIT - This file is generated for the LP_CC2652PSIP
* by the SysConfig tool.
*/
#include <stddef.h>
#include <stdint.h>
#ifndef DeviceFamily_CC26X2
#define DeviceFamily_CC26X2
#endif
#include <ti/devices/DeviceFamily.h>
#include "ti_drivers_config.h"
/*
* =============================== DMA ===============================
*/
#include <ti/drivers/dma/UDMACC26XX.h>
#include <ti/devices/cc13x2_cc26x2/driverlib/udma.h>
#include <ti/devices/cc13x2_cc26x2/inc/hw_memmap.h>
UDMACC26XX_Object udmaCC26XXObject;
const UDMACC26XX_HWAttrs udmaCC26XXHWAttrs = {
.baseAddr = UDMA0_BASE,
.powerMngrId = PowerCC26XX_PERIPH_UDMA,
.intNum = INT_DMA_ERR,
.intPriority = (~0)
};
const UDMACC26XX_Config UDMACC26XX_config[1] = {
{
.object = &udmaCC26XXObject,
.hwAttrs = &udmaCC26XXHWAttrs,
},
};
/*
* =============================== GPIO ===============================
*/
#include <ti/drivers/GPIO.h>
#include <ti/drivers/gpio/GPIOCC26XX.h>
/* The range of pins available on this device */
const uint_least8_t GPIO_pinLowerBound = 0;
const uint_least8_t GPIO_pinUpperBound = 31;
/*
* ======== gpioPinConfigs ========
* Array of Pin configurations
*/
GPIO_PinConfig gpioPinConfigs[32] = {
/* Owned by /ti/drivers/RF as RF Antenna Pin 0 */
GPIO_CFG_OUTPUT_INTERNAL | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW, /* CONFIG_RF_STANDARD_PA */
GPIO_CFG_NO_DIR, /* DIO_1 */
GPIO_CFG_NO_DIR, /* DIO_2 */
GPIO_CFG_NO_DIR, /* DIO_3 */
GPIO_CFG_NO_DIR, /* DIO_4 */
GPIO_CFG_NO_DIR, /* DIO_5 */
GPIO_CFG_NO_DIR, /* DIO_6 */
GPIO_CFG_NO_DIR, /* DIO_7 */
GPIO_CFG_NO_DIR, /* DIO_8 */
GPIO_CFG_NO_DIR, /* DIO_9 */
GPIO_CFG_NO_DIR, /* DIO_10 */
GPIO_CFG_NO_DIR, /* DIO_11 */
/* Owned by CONFIG_UART2_0 as RX */
GPIO_CFG_INPUT_INTERNAL | GPIO_CFG_IN_INT_NONE | GPIO_CFG_PULL_DOWN_INTERNAL, /* CONFIG_GPIO_UART2_0_RX */
/* Owned by CONFIG_UART2_0 as TX */
GPIO_CFG_OUTPUT_INTERNAL | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_HIGH, /* CONFIG_GPIO_UART2_0_TX */
GPIO_CFG_NO_DIR, /* DIO_14 */
GPIO_CFG_NO_DIR, /* DIO_15 */
GPIO_CFG_NO_DIR, /* DIO_16 */
GPIO_CFG_NO_DIR, /* DIO_17 */
GPIO_CFG_NO_DIR, /* DIO_18 */
GPIO_CFG_NO_DIR, /* DIO_19 */
GPIO_CFG_NO_DIR, /* DIO_20 */
GPIO_CFG_NO_DIR, /* DIO_21 */
GPIO_CFG_NO_DIR, /* DIO_22 */
GPIO_CFG_NO_DIR, /* DIO_23 */
GPIO_CFG_NO_DIR, /* DIO_24 */
GPIO_CFG_NO_DIR, /* DIO_25 */
GPIO_CFG_NO_DIR, /* DIO_26 */
GPIO_CFG_NO_DIR, /* DIO_27 */
GPIO_CFG_NO_DIR, /* DIO_28 */
/* Owned by /ti/drivers/RF as RF Antenna Pin 1 */
GPIO_CFG_OUTPUT_INTERNAL | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_LOW, /* CONFIG_RF_HIGH_PA */
GPIO_CFG_NO_DIR, /* DIO_30 */
GPIO_CFG_NO_DIR, /* DIO_31 */
};
/*
* ======== gpioCallbackFunctions ========
* Array of callback function pointers
* Change at runtime with GPIO_setCallback()
*/
GPIO_CallbackFxn gpioCallbackFunctions[32];
/*
* ======== gpioUserArgs ========
* Array of user argument pointers
* Change at runtime with GPIO_setUserArg()
* Get values with GPIO_getUserArg()
*/
void* gpioUserArgs[32];
const uint_least8_t CONFIG_RF_STANDARD_PA_CONST = CONFIG_RF_STANDARD_PA;
const uint_least8_t CONFIG_RF_HIGH_PA_CONST = CONFIG_RF_HIGH_PA;
const uint_least8_t CONFIG_GPIO_UART2_0_TX_CONST = CONFIG_GPIO_UART2_0_TX;
const uint_least8_t CONFIG_GPIO_UART2_0_RX_CONST = CONFIG_GPIO_UART2_0_RX;
/*
* ======== GPIO_config ========
*/
const GPIO_Config GPIO_config = {
.configs = (GPIO_PinConfig *)gpioPinConfigs,
.callbacks = (GPIO_CallbackFxn *)gpioCallbackFunctions,
.userArgs = gpioUserArgs,
.intPriority = (~0)
};
/*
* =============================== Power ===============================
*/
#include <ti/drivers/Power.h>
#include <ti/drivers/power/PowerCC26X2.h>
#include "ti_drivers_config.h"
extern void PowerCC26XX_standbyPolicy(void);
extern bool PowerCC26XX_calibrate(unsigned int);
const PowerCC26X2_Config PowerCC26X2_config = {
.enablePolicy = true,
.policyInitFxn = NULL,
.policyFxn = PowerCC26XX_standbyPolicy,
.calibrateFxn = PowerCC26XX_calibrate,
.calibrateRCOSC_LF = true,
.calibrateRCOSC_HF = true,
.enableTCXOFxn = NULL
};
/*
* =============================== RF Driver ===============================
*/
#include <ti/drivers/GPIO.h>
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(driverlib/ioc.h)
#include <ti/drivers/rf/RF.h>
/*
* RF driver callback function, called by the driver on global driver events.
*/
static void RF_globalCallbackFunction (RF_Handle client, RF_GlobalEvent events, void* arg);
/*
* Callback function to handle custom / application specific behavior
*/
extern void __attribute__((weak)) rfDriverCallback (RF_Handle client, RF_GlobalEvent events, void *arg);
/*
* Callback function to handle antenna switching
*/
extern void __attribute__((weak)) rfDriverCallbackAntennaSwitching (RF_Handle client, RF_GlobalEvent events, void *arg);
/*
* Platform-specific driver configuration
*/
const RFCC26XX_HWAttrsV2 RFCC26XX_hwAttrs = {
.hwiPriority = (~0),
.swiPriority = (uint8_t)0,
.xoscHfAlwaysNeeded = true,
.globalCallback = &RF_globalCallbackFunction,
.globalEventMask = RF_GlobalEventInit | RF_GlobalEventRadioPowerDown | RF_GlobalEventRadioSetup
};
/*
* ======== RF_globalCallbackFunction ========
* This function is called by the driver on global driver events.
* It will call specific callback functions to further handle the triggering events.
*/
static void RF_globalCallbackFunction(RF_Handle client, RF_GlobalEvent events, void *arg)
{
rfDriverCallback(client, events, arg);
rfDriverCallbackAntennaSwitching(client, events, arg);
}
/*
* ======== rfDriverCallback ========
* Handle events triggered by the RF driver for custom / application specific behavior.
*/
void __attribute__((weak)) rfDriverCallback(RF_Handle client, RF_GlobalEvent events, void *arg)
{
/* ======== PLEASE READ THIS ========
*
* This function is declared weak for the application to override it.
* A new definition of 'rfDriverCallback' is required if you want to
* handle the events listed in '.globalEventMask'.
*
* Please copy this function definition to create your own, but make
* sure to remove '__attribute__((weak))' for your definition.
*
* According to '.globalEventMask', this function will be triggered by:
* - RF_GlobalEventInit
* - RF_GlobalEventRadioPowerDown
* - RF_GlobalEventRadioSetup
*
* An example of how to handle these events would be:
*
* --- Code snippet begin ---
*
* if(events & RF_GlobalEventInit) {
* // Perform action for this event
* }
* else if (events & RF_GlobalEventRadioPowerDown) {
* // Perform action for this event
* }
* else if (events & RF_GlobalEventRadioSetup) {
* // Perform action for this event
* }
*
* --- Code snippet end ---
*/
}
/*
* ======== Antenna switching ========
*/
/*
* ======== rfDriverCallbackAntennaSwitching ========
* Sets up the antenna switch according to the TX power table PA type.
*
* Truth table:
*
* Path DIO0 DIO29
* ========== ===== =====
* Off 0 0
* STANDARD PA 1 0
* HIGH PA 0 1
*/
void __attribute__((weak)) rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg)
{
if (events & RF_GlobalEventRadioSetup) {
/* Switch off all paths. */
GPIO_write(CONFIG_RF_STANDARD_PA, 0);
GPIO_write(CONFIG_RF_HIGH_PA, 0);
/* Decode the current PA configuration. */
RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType;
if (paType == RF_TxPowerTable_HighPA) {
/*
* Mux GPIOs to RF Core signals:
* - High PA --> HIGH_PA
* - LNA enable --> STANDARD_PA
*/
GPIO_setMux(CONFIG_RF_STANDARD_PA, IOC_PORT_RFC_GPO0);
GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_RFC_GPO3);
} else {
/* RF Core active --> 5_DBM */
GPIO_write(CONFIG_RF_STANDARD_PA, 1);
}
}
else if (events & RF_GlobalEventRadioPowerDown) {
/* Switch off all paths. */
GPIO_write(CONFIG_RF_STANDARD_PA, 0);
GPIO_write(CONFIG_RF_HIGH_PA, 0);
/* Reset the IO multiplexer to GPIO functionality */
GPIO_setMux(CONFIG_RF_STANDARD_PA, IOC_PORT_GPIO);
GPIO_setMux(CONFIG_RF_HIGH_PA, IOC_PORT_GPIO);
}
}
/*
* =============================== Timer ===============================
*/
#include <ti/drivers/Timer.h>
#include <ti/drivers/timer/TimerCC26XX.h>
#define CONFIG_TIMER_COUNT 1
/*
* ======== timerCC26XXObjects ========
*/
TimerCC26XX_Object timerCC26XXObjects[CONFIG_TIMER_COUNT];
/*
* ======== timerCC26XXHWAttrs ========
*/
const TimerCC26XX_HWAttrs timerCC26XXHWAttrs[CONFIG_TIMER_COUNT] = {
{
.gpTimerUnit = CONFIG_GPTIMER_0,
.subTimer = TimerCC26XX_timer32
},
};
/*
* ======== Timer_config ========
*/
const Timer_Config Timer_config[CONFIG_TIMER_COUNT] = {
/* CONFIG_TIMER_0 */
{
.object = &timerCC26XXObjects[CONFIG_TIMER_0],
.hwAttrs = &timerCC26XXHWAttrs[CONFIG_TIMER_0]
},
};
const uint_least8_t CONFIG_TIMER_0_CONST = CONFIG_TIMER_0;
const uint_least8_t Timer_count = CONFIG_TIMER_COUNT;
/*
* =============================== UART2 ===============================
*/
#include <ti/drivers/UART2.h>
#include <ti/drivers/uart2/UART2CC26X2.h>
#include <ti/drivers/GPIO.h>
#include <ti/drivers/Power.h>
#include <ti/drivers/dma/UDMACC26XX.h>
#include <ti/drivers/power/PowerCC26X2.h>
#include <ti/devices/cc13x2_cc26x2/driverlib/ioc.h>
#include <ti/devices/cc13x2_cc26x2/inc/hw_memmap.h>
#include <ti/devices/cc13x2_cc26x2/inc/hw_ints.h>
#define CONFIG_UART2_COUNT 1
UART2CC26X2_Object uart2CC26X2Objects[CONFIG_UART2_COUNT];
static unsigned char uart2RxRingBuffer0[32];
/* TX ring buffer allocated to be used for nonblocking mode */
static unsigned char uart2TxRingBuffer0[32];
ALLOCATE_CONTROL_TABLE_ENTRY(dmaUart0RxControlTableEntry, UDMA_CHAN_UART0_RX);
ALLOCATE_CONTROL_TABLE_ENTRY(dmaUart0TxControlTableEntry, UDMA_CHAN_UART0_TX);
static const UART2CC26X2_HWAttrs uart2CC26X2HWAttrs[CONFIG_UART2_COUNT] = {
{
.baseAddr = UART0_BASE,
.intNum = INT_UART0_COMB,
.intPriority = (~0),
.rxPin = CONFIG_GPIO_UART2_0_RX,
.txPin = CONFIG_GPIO_UART2_0_TX,
.ctsPin = GPIO_INVALID_INDEX,
.rtsPin = GPIO_INVALID_INDEX,
.flowControl = UART2_FLOWCTRL_NONE,
.powerId = PowerCC26XX_PERIPH_UART0,
.rxBufPtr = uart2RxRingBuffer0,
.rxBufSize = sizeof(uart2RxRingBuffer0),
.txBufPtr = uart2TxRingBuffer0,
.txBufSize = sizeof(uart2TxRingBuffer0),
.txPinMux = IOC_PORT_MCU_UART0_TX,
.rxPinMux = IOC_PORT_MCU_UART0_RX,
.ctsPinMux = IOC_PORT_MCU_UART0_CTS,
.rtsPinMux = IOC_PORT_MCU_UART0_RTS,
.dmaTxTableEntryPri = &dmaUart0TxControlTableEntry,
.dmaRxTableEntryPri = &dmaUart0RxControlTableEntry,
.rxChannelMask = 1 << UDMA_CHAN_UART0_RX,
.txChannelMask = 1 << UDMA_CHAN_UART0_TX,
.txIntFifoThr = UART2CC26X2_FIFO_THRESHOLD_1_8,
.rxIntFifoThr = UART2CC26X2_FIFO_THRESHOLD_4_8
},
};
const UART2_Config UART2_config[CONFIG_UART2_COUNT] = {
{ /* CONFIG_UART2_0 */
.object = &uart2CC26X2Objects[CONFIG_UART2_0],
.hwAttrs = &uart2CC26X2HWAttrs[CONFIG_UART2_0]
},
};
const uint_least8_t CONFIG_UART2_0_CONST = CONFIG_UART2_0;
const uint_least8_t UART2_count = CONFIG_UART2_COUNT;
/*
* =============================== GPTimer ===============================
*/
#include <ti/drivers/timer/GPTimerCC26XX.h>
#include <ti/drivers/power/PowerCC26XX.h>
#include <ti/devices/cc13x2_cc26x2/inc/hw_memmap.h>
#include <ti/devices/cc13x2_cc26x2/inc/hw_ints.h>
#define CONFIG_GPTIMER_COUNT 1
/*
* ======== gptimerCC26XXObjects ========
*/
GPTimerCC26XX_Object gptimerCC26XXObjects[CONFIG_GPTIMER_COUNT];
/*
* ======== gptimerCC26XXHWAttrs ========
*/
const GPTimerCC26XX_HWAttrs gptimerCC26XXHWAttrs[CONFIG_GPTIMER_COUNT] = {
/* CONFIG_GPTIMER_0, used by CONFIG_TIMER_0 */
{
.baseAddr = GPT0_BASE,
.intNum = INT_GPT0A,
.intPriority = (~0),
.powerMngrId = PowerCC26XX_PERIPH_GPT0,
.pinMux = GPT_PIN_0A
},
};
/*
* ======== GPTimer_config ========
*/
const GPTimerCC26XX_Config GPTimerCC26XX_config[CONFIG_GPTIMER_COUNT] = {
/* CONFIG_GPTIMER_0 */
{
.object = &gptimerCC26XXObjects[CONFIG_GPTIMER_0],
.hwAttrs = &gptimerCC26XXHWAttrs[CONFIG_GPTIMER_0],
.timerPart = GPT_A
},
};
const uint_least8_t CONFIG_GPTIMER_0_CONST = CONFIG_GPTIMER_0;
const uint_least8_t GPTimer_count = CONFIG_GPTIMER_COUNT;
#include <stdbool.h>
#include <ti/devices/cc13x2_cc26x2/driverlib/ioc.h>
#include <ti/devices/cc13x2_cc26x2/driverlib/cpu.h>
#include <ti/drivers/GPIO.h>
/* Board GPIO defines */
#define BOARD_EXT_FLASH_SPI_CS 20
#define BOARD_EXT_FLASH_SPI_CLK 10
#define BOARD_EXT_FLASH_SPI_MOSI 9
#define BOARD_EXT_FLASH_SPI_MISO 8
/*
* ======== Board_sendExtFlashByte ========
*/
void Board_sendExtFlashByte(uint8_t byte)
{
uint8_t i;
/* SPI Flash CS */
GPIO_write(BOARD_EXT_FLASH_SPI_CS, 0);
for (i = 0; i < 8; i++) {
GPIO_write(BOARD_EXT_FLASH_SPI_CLK, 0); /* SPI Flash CLK */
/* SPI Flash MOSI */
GPIO_write(BOARD_EXT_FLASH_SPI_MOSI, (byte >> (7 - i)) & 0x01);
GPIO_write(BOARD_EXT_FLASH_SPI_CLK, 1); /* SPI Flash CLK */
/*
* Waste a few cycles to keep the CLK high for at
* least 45% of the period.
* 3 cycles per loop: 8 loops @ 48 Mhz = 0.5 us.
*/
CPUdelay(8);
}
GPIO_write(BOARD_EXT_FLASH_SPI_CLK, 0); /* CLK */
GPIO_write(BOARD_EXT_FLASH_SPI_CS, 1); /* CS */
/*
* Keep CS high at least 40 us
* 3 cycles per loop: 700 loops @ 48 Mhz ~= 44 us
*/
CPUdelay(700);
}
/*
* ======== Board_wakeUpExtFlash ========
*/
void Board_wakeUpExtFlash(void)
{
/* SPI Flash CS*/
GPIO_setConfig(BOARD_EXT_FLASH_SPI_CS, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH | GPIO_CFG_OUT_STR_MED);
/*
* To wake up we need to toggle the chip select at
* least 20 ns and ten wait at least 35 us.
*/
/* Toggle chip select for ~20ns to wake ext. flash */
GPIO_write(BOARD_EXT_FLASH_SPI_CS, 0);
/* 3 cycles per loop: 1 loop @ 48 Mhz ~= 62 ns */
CPUdelay(1);
GPIO_write(BOARD_EXT_FLASH_SPI_CS, 1);
/* 3 cycles per loop: 560 loops @ 48 Mhz ~= 35 us */
CPUdelay(560);
}
/*
* ======== Board_shutDownExtFlash ========
*/
void Board_shutDownExtFlash(void)
{
/*
* To be sure we are putting the flash into sleep and not waking it,
* we first have to make a wake up call
*/
Board_wakeUpExtFlash();
/* SPI Flash CS*/
GPIO_setConfig(BOARD_EXT_FLASH_SPI_CS, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH | GPIO_CFG_OUT_STR_MED);
/* SPI Flash CLK */
GPIO_setConfig(BOARD_EXT_FLASH_SPI_CLK, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW | GPIO_CFG_OUT_STR_MED);
/* SPI Flash MOSI */
GPIO_setConfig(BOARD_EXT_FLASH_SPI_MOSI, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_LOW | GPIO_CFG_OUT_STR_MED);
/* SPI Flash MISO */
GPIO_setConfig(BOARD_EXT_FLASH_SPI_MISO, GPIO_CFG_IN_PD);
uint8_t extFlashShutdown = 0xB9;
Board_sendExtFlashByte(extFlashShutdown);
GPIO_resetConfig(BOARD_EXT_FLASH_SPI_CS);
GPIO_resetConfig(BOARD_EXT_FLASH_SPI_CLK);
GPIO_resetConfig(BOARD_EXT_FLASH_SPI_MOSI);
GPIO_resetConfig(BOARD_EXT_FLASH_SPI_MISO);
}
#include <ti/drivers/Board.h>
/*
* ======== Board_initHook ========
* Perform any board-specific initialization needed at startup. This
* function is declared weak to allow applications to override it if needed.
*/
void __attribute__((weak)) Board_initHook(void)
{
}
/*
* ======== Board_init ========
* Perform any initialization needed before using any board APIs
*/
void Board_init(void)
{
/* ==== /ti/drivers/Power initialization ==== */
Power_init();
/* ==== /ti/devices/CCFG initialization ==== */
/* ==== /ti/drivers/GPIO initialization ==== */
/* Setup GPIO module and default-initialise pins */
GPIO_init();
/* ==== /ti/drivers/RF initialization ==== */
Board_shutDownExtFlash();
Board_initHook();
}

View File

@@ -0,0 +1,246 @@
# FIXED
syscfg/ti_drivers_config.o: syscfg/ti_drivers_config.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h \
syscfg/ti_drivers_config.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dma/UDMACC26XX.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Power.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/List.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26XX.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/HwiP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/ClockP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/udma.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_udma.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/debug.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/interrupt.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_nvic.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_cpu_scs.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/GPIO.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/gpio/GPIOCC26XX.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ioc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/ioc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ioc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/gpio.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_gpio.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26X2.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Temperature.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/sys_ctrl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_sysctl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_prcm.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_ioc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi_0_osc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_rfc_pwr.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_3_refsys.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_pmctl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_rtc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_fcfg1.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/pwr_ctrl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_2_refsys.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/osc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/ddi.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aux_smph.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/prcm.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap_common.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_ioc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/adi.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_uart.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/vims.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_vims.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RF.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RFCC26X2.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SemaphoreP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_mailbox.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_prop_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_ble_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Timer.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/timer/TimerCC26XX.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/timer/GPTimerCC26XX.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_gpt.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/event.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_event.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/timer.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_gpt.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/UART2.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/RingBuf.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/uart2/UART2CC26X2.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Board.h
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h:
syscfg/ti_drivers_config.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dma/UDMACC26XX.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Power.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/List.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26XX.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/HwiP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/ClockP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/udma.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_udma.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/debug.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/interrupt.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_nvic.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_cpu_scs.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/GPIO.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/gpio/GPIOCC26XX.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ioc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/ioc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ioc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/gpio.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_gpio.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26X2.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Temperature.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/sys_ctrl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_sysctl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_prcm.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_ioc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi_0_osc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_rfc_pwr.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_3_refsys.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_pmctl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_rtc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_fcfg1.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/pwr_ctrl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_2_refsys.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/osc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/ddi.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aux_smph.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/prcm.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap_common.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_ioc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/adi.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_uart.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/vims.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_vims.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RF.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RFCC26X2.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SemaphoreP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_mailbox.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_prop_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_ble_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Timer.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/timer/TimerCC26XX.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/timer/GPTimerCC26XX.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_gpt.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/event.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_event.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/timer.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_gpt.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/UART2.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/RingBuf.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/uart2/UART2CC26X2.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Board.h:

View File

@@ -0,0 +1,132 @@
/*
* ======== ti_drivers_config.h ========
* Configured TI-Drivers module declarations
*
* The macros defines herein are intended for use by applications which
* directly include this header. These macros should NOT be hard coded or
* copied into library source code.
*
* Symbols declared as const are intended for use with libraries.
* Library source code must extern the correct symbol--which is resolved
* when the application is linked.
*
* DO NOT EDIT - This file is generated for the LP_CC2652PSIP
* by the SysConfig tool.
*/
#ifndef ti_drivers_config_h
#define ti_drivers_config_h
#define CONFIG_SYSCONFIG_PREVIEW
#define CONFIG_LP_CC2652PSIP
#ifndef DeviceFamily_CC26X2
#define DeviceFamily_CC26X2
#endif
#include <ti/devices/DeviceFamily.h>
#include <stdint.h>
/* support C++ sources */
#ifdef __cplusplus
extern "C" {
#endif
/*
* ======== CCFG ========
*/
/*
* ======== GPIO ========
*/
/* Owned by /ti/drivers/RF as */
extern const uint_least8_t CONFIG_RF_STANDARD_PA_CONST;
#define CONFIG_RF_STANDARD_PA 0
/* Owned by /ti/drivers/RF as */
extern const uint_least8_t CONFIG_RF_HIGH_PA_CONST;
#define CONFIG_RF_HIGH_PA 29
/* Owned by CONFIG_UART2_0 as */
extern const uint_least8_t CONFIG_GPIO_UART2_0_TX_CONST;
#define CONFIG_GPIO_UART2_0_TX 13
/* Owned by CONFIG_UART2_0 as */
extern const uint_least8_t CONFIG_GPIO_UART2_0_RX_CONST;
#define CONFIG_GPIO_UART2_0_RX 12
/* The range of pins available on this device */
extern const uint_least8_t GPIO_pinLowerBound;
extern const uint_least8_t GPIO_pinUpperBound;
/* LEDs are active high */
#define CONFIG_GPIO_LED_ON (1)
#define CONFIG_GPIO_LED_OFF (0)
#define CONFIG_LED_ON (CONFIG_GPIO_LED_ON)
#define CONFIG_LED_OFF (CONFIG_GPIO_LED_OFF)
/*
* ======== Timer ========
*/
extern const uint_least8_t CONFIG_TIMER_0_CONST;
#define CONFIG_TIMER_0 0
#define CONFIG_TI_DRIVERS_TIMER_COUNT 1
/*
* ======== UART2 ========
*/
/*
* TX: DIO13
* RX: DIO12
* XDS110 UART
*/
extern const uint_least8_t CONFIG_UART2_0_CONST;
#define CONFIG_UART2_0 0
#define CONFIG_TI_DRIVERS_UART2_COUNT 1
/*
* ======== GPTimer ========
*/
extern const uint_least8_t CONFIG_GPTIMER_0_CONST;
#define CONFIG_GPTIMER_0 0
#define CONFIG_TI_DRIVERS_GPTIMER_COUNT 1
/*
* ======== Board_init ========
* Perform all required TI-Drivers initialization
*
* This function should be called once at a point before any use of
* TI-Drivers.
*/
extern void Board_init(void);
/*
* ======== Board_initGeneral ========
* (deprecated)
*
* Board_initGeneral() is defined purely for backward compatibility.
*
* All new code should use Board_init() to do any required TI-Drivers
* initialization _and_ use <Driver>_init() for only where specific drivers
* are explicitly referenced by the application. <Driver>_init() functions
* are idempotent.
*/
#define Board_initGeneral Board_init
#ifdef __cplusplus
}
#endif
#endif /* include guard */

View File

@@ -0,0 +1,237 @@
/*
* ======== ti_radio_config.c ========
* Configured RadioConfig module definitions
*
* DO NOT EDIT - This file is generated for the CC2652P1FSIP
* by the SysConfig tool.
*
* Radio Config module version : 1.16
* SmartRF Studio data version : 2.28.0
*/
#include "ti_radio_config.h"
#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_ieee_802_15_4.h)
// *********************************************************************************
// RF Frontend configuration
// *********************************************************************************
// RF design based on: LP_CC2652PSIP
// TX Power tables
// The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h.
// The following arguments are required:
// RF_TxPowerTable_DEFAULT_PA_ENTRY(bias, gain, boost, coefficient)
// RF_TxPowerTable_HIGH_PA_ENTRY(bias, ibboost, boost, coefficient, ldoTrim)
// See the Technical Reference Manual for further details about the "txPower" Command field.
// The PA settings require the CCFG_FORCE_VDDR_HH = 0 unless stated otherwise.
// 2400 MHz, 5 dBm
RF_TxPowerTable_Entry txPowerTable_2400_pa5[TXPOWERTABLE_2400_PA5_SIZE] =
{
{-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 4) }, // 0x08C6
{-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(7, 3, 0, 4) }, // 0x08C7
{-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 0) }, // 0x00C9
{-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 0) }, // 0x00CC
{-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 4) }, // 0x08CF
{-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 4) }, // 0x08D0
{-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(21, 3, 0, 4) }, // 0x08D5
{-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 7) }, // 0x0ED8
{-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(32, 3, 0, 19) }, // 0x26E0
{0, RF_TxPowerTable_DEFAULT_PA_ENTRY(30, 2, 0, 19) }, // 0x269E
{1, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 2, 0, 19) }, // 0x26A3
{2, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 28) }, // 0x3863
{3, RF_TxPowerTable_DEFAULT_PA_ENTRY(27, 0, 0, 44) }, // 0x581B
{4, RF_TxPowerTable_DEFAULT_PA_ENTRY(42, 0, 0, 69) }, // 0x8A2A
{5, RF_TxPowerTable_DEFAULT_PA_ENTRY(62, 0, 0, 54) }, // 0x6C3E
RF_TxPowerTable_TERMINATION_ENTRY
};
// 2400 MHz, 10 dBm
RF_TxPowerTable_Entry txPowerTable_2400_pa10[TXPOWERTABLE_2400_PA10_SIZE] =
{
{6, RF_TxPowerTable_HIGH_PA_ENTRY(32, 0, 1, 32, 16) }, // 0x104120
{7, RF_TxPowerTable_HIGH_PA_ENTRY(35, 0, 1, 35, 20) }, // 0x144723
{8, RF_TxPowerTable_HIGH_PA_ENTRY(42, 0, 1, 44, 20) }, // 0x14592A
{9, RF_TxPowerTable_HIGH_PA_ENTRY(23, 1, 1, 28, 20) }, // 0x143957
{10, RF_TxPowerTable_HIGH_PA_ENTRY(30, 1, 1, 35, 20) }, // 0x14475E
RF_TxPowerTable_TERMINATION_ENTRY
};
//*********************************************************************************
// RF Setting: IEEE 802.15.4-2006, 250 kbps, OQPSK, DSSS = 1:8
//
// PHY: ieee154p10
// Setting file: setting_ieee_802_15_4_10_dbm.json
//*********************************************************************************
// PARAMETER SUMMARY
// Channel - Frequency (MHz): 2405
// TX Power (dBm): 5
// TI-RTOS RF Mode Object
RF_Mode RF_prop_ieee154p10_1 =
{
.rfMode = RF_MODE_AUTO,
.cpePatchFxn = &rf_patch_cpe_ieee_802_15_4,
.mcePatchFxn = 0,
.rfePatchFxn = 0
};
// Overrides for CMD_RADIO_SETUP_PA
uint32_t pOverrides_ieee154p10_1[] =
{
// override_ieee_802_15_4_10_dbm.json
// IEEE 15.4: Set IPEAK = 3 and DCDC dither off for TX
(uint32_t)0x00F388D3,
// Rx: Set LNA bias current offset to +15 to saturate trim to max (default: 0)
(uint32_t)0x000F8883,
(uint32_t)0xFFFFFFFF
};
// CMD_RADIO_SETUP_PA
// Radio Setup Command for Pre-Defined Schemes
rfc_CMD_RADIO_SETUP_PA_t RF_cmdRadioSetup_ieee154p10_1 =
{
.commandNo = 0x0802,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.mode = 0x01,
.loDivider = 0x00,
.config.frontEndMode = 0x0,
.config.biasMode = 0x0,
.config.analogCfgMode = 0x0,
.config.bNoFsPowerUp = 0x0,
.config.bSynthNarrowBand = 0x0,
.txPower = 0x6C3E,
.pRegOverride = pOverrides_ieee154p10_1,
.pRegOverrideTxStd = 0,
.pRegOverrideTx20 = 0
};
// CMD_FS
// Frequency Synthesizer Programming Command
rfc_CMD_FS_t RF_cmdFs_ieee154p10_1 =
{
.commandNo = 0x0803,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.frequency = 0x0965,
.fractFreq = 0x0000,
.synthConf.bTxMode = 0x0,
.synthConf.refFreq = 0x0,
.__dummy0 = 0x00,
.__dummy1 = 0x00,
.__dummy2 = 0x00,
.__dummy3 = 0x0000
};
// CMD_IEEE_TX
// IEEE 802.15.4 Transmit Command
rfc_CMD_IEEE_TX_t RF_cmdIeeeTx_ieee154p10_1 =
{
.commandNo = 0x2C01,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.txOpt.bIncludePhyHdr = 0x0,
.txOpt.bIncludeCrc = 0x0,
.txOpt.payloadLenMsb = 0x0,
.payloadLen = 0x1E,
.pPayload = 0,
.timeStamp = 0x00000000
};
// CMD_IEEE_RX
// IEEE 802.15.4 Receive Command
rfc_CMD_IEEE_RX_t RF_cmdIeeeRx_ieee154p10_1 =
{
.commandNo = 0x2801,
.status = 0x0000,
.pNextOp = 0,
.startTime = 0x00000000,
.startTrigger.triggerType = 0x0,
.startTrigger.bEnaCmd = 0x0,
.startTrigger.triggerNo = 0x0,
.startTrigger.pastTrig = 0x0,
.condition.rule = 0x1,
.condition.nSkip = 0x0,
.channel = 0x00,
.rxConfig.bAutoFlushCrc = 0x0,
.rxConfig.bAutoFlushIgn = 0x0,
.rxConfig.bIncludePhyHdr = 0x0,
.rxConfig.bIncludeCrc = 0x0,
.rxConfig.bAppendRssi = 0x1,
.rxConfig.bAppendCorrCrc = 0x1,
.rxConfig.bAppendSrcInd = 0x0,
.rxConfig.bAppendTimestamp = 0x0,
.pRxQ = 0,
.pOutput = 0,
.frameFiltOpt.frameFiltEn = 0x0,
.frameFiltOpt.frameFiltStop = 0x0,
.frameFiltOpt.autoAckEn = 0x0,
.frameFiltOpt.slottedAckEn = 0x0,
.frameFiltOpt.autoPendEn = 0x0,
.frameFiltOpt.defaultPend = 0x0,
.frameFiltOpt.bPendDataReqOnly = 0x0,
.frameFiltOpt.bPanCoord = 0x0,
.frameFiltOpt.maxFrameVersion = 0x3,
.frameFiltOpt.fcfReservedMask = 0x0,
.frameFiltOpt.modifyFtFilter = 0x0,
.frameFiltOpt.bStrictLenFilter = 0x0,
.frameTypes.bAcceptFt0Beacon = 0x1,
.frameTypes.bAcceptFt1Data = 0x1,
.frameTypes.bAcceptFt2Ack = 0x1,
.frameTypes.bAcceptFt3MacCmd = 0x1,
.frameTypes.bAcceptFt4Reserved = 0x1,
.frameTypes.bAcceptFt5Reserved = 0x1,
.frameTypes.bAcceptFt6Reserved = 0x1,
.frameTypes.bAcceptFt7Reserved = 0x1,
.ccaOpt.ccaEnEnergy = 0x0,
.ccaOpt.ccaEnCorr = 0x0,
.ccaOpt.ccaEnSync = 0x0,
.ccaOpt.ccaCorrOp = 0x1,
.ccaOpt.ccaSyncOp = 0x1,
.ccaOpt.ccaCorrThr = 0x0,
.ccaRssiThr = 0x64,
.__dummy0 = 0x00,
.numExtEntries = 0x00,
.numShortEntries = 0x00,
.pExtEntryList = 0,
.pShortEntryList = 0,
.localExtAddr = 0x12345678,
.localShortAddr = 0xABBA,
.localPanID = 0x0000,
.__dummy1 = 0x000000,
.endTrigger.triggerType = 0x1,
.endTrigger.bEnaCmd = 0x0,
.endTrigger.triggerNo = 0x0,
.endTrigger.pastTrig = 0x0,
.endTime = 0x00000000
};

View File

@@ -0,0 +1,48 @@
# FIXED
syscfg/ti_radio_config.o: syscfg/ti_radio_config.c \
syscfg/ti_radio_config.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_mailbox.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_mailbox.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_ieee_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RF.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RFCC26X2.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/ClockP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SemaphoreP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/List.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_prop_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_ble_cmd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/rf_patches/rf_patch_cpe_ieee_802_15_4.h
syscfg/ti_radio_config.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_mailbox.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_mailbox.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_ieee_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_common_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RF.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/rf/RFCC26X2.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/ClockP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SemaphoreP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/List.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_prop_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rf_ble_cmd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/rf_patches/rf_patch_cpe_ieee_802_15_4.h:

View File

@@ -0,0 +1,73 @@
/*
* ======== ti_radio_config.h ========
* Configured RadioConfig module definitions
*
* DO NOT EDIT - This file is generated for the CC2652P1FSIP
* by the SysConfig tool.
*
* Radio Config module version : 1.16
* SmartRF Studio data version : 2.28.0
*/
#ifndef _TI_RADIO_CONFIG_H_
#define _TI_RADIO_CONFIG_H_
#include <ti/devices/DeviceFamily.h>
#include DeviceFamily_constructPath(driverlib/rf_mailbox.h)
#include DeviceFamily_constructPath(driverlib/rf_common_cmd.h)
#include DeviceFamily_constructPath(driverlib/rf_ieee_cmd.h)
#include <ti/drivers/rf/RF.h>
/* SmartRF Studio version that the RF data is fetched from */
#define SMARTRF_STUDIO_VERSION "2.28.0"
// *********************************************************************************
// RF Frontend configuration
// *********************************************************************************
// RF design based on: LP_CC2652PSIP
#define LP_CC2652PSIP
// High-Power Amplifier supported
#define SUPPORT_HIGH_PA
// RF frontend configuration
#define FRONTEND_24G_DIFF_RF
#define FRONTEND_24G_INT_BIAS
// Supported frequency bands
#define SUPPORT_FREQBAND_2400
// TX power table size definitions
#define TXPOWERTABLE_2400_PA5_SIZE 16 // 2400 MHz, 5 dBm
#define TXPOWERTABLE_2400_PA10_SIZE 6 // 2400 MHz, 10 dBm
// TX power tables
extern RF_TxPowerTable_Entry txPowerTable_2400_pa5[]; // 2400 MHz, 5 dBm
extern RF_TxPowerTable_Entry txPowerTable_2400_pa10[]; // 2400 MHz, 10 dBm
//*********************************************************************************
// RF Setting: IEEE 802.15.4-2006, 250 kbps, OQPSK, DSSS = 1:8
//
// PHY: ieee154p10
// Setting file: setting_ieee_802_15_4_10_dbm.json
//*********************************************************************************
// PA table usage
#define TX_POWER_TABLE_SIZE_ieee154p10_0 TXPOWERTABLE_2400_PA5_SIZE
#define txPowerTable_ieee154p10_0 txPowerTable_2400_pa5
// TI-RTOS RF Mode object
extern RF_Mode RF_prop_ieee154p10_1;
// RF Core API commands
extern rfc_CMD_RADIO_SETUP_PA_t RF_cmdRadioSetup_ieee154p10_1;
extern rfc_CMD_FS_t RF_cmdFs_ieee154p10_1;
extern rfc_CMD_IEEE_TX_t RF_cmdIeeeTx_ieee154p10_1;
extern rfc_CMD_IEEE_RX_t RF_cmdIeeeRx_ieee154p10_1;
// RF Core API overrides
extern uint32_t pOverrides_ieee154p10_1[];
#endif // _TI_RADIO_CONFIG_H_

View File

@@ -0,0 +1,159 @@
/*
* ======== ti_sysbios_config.c ========
* Configured BIOS module definitions
*
* DO NOT EDIT - This file is generated
* by the SysConfig tool.
*/
#include <stddef.h>
#include <stdint.h>
#include "ti_sysbios_config.h"
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/family/arm/cc26xx/Boot.h>
#include <ti/sysbios/family/arm/cc26xx/Timer.h>
#include <ti/sysbios/family/arm/m3/Hwi.h>
#include <ti/sysbios/gates/GateMutex.h>
#include <ti/sysbios/heaps/HeapMem.h>
#include <ti/sysbios/knl/Clock.h>
#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/knl/Idle.h>
#include <ti/sysbios/knl/Mailbox.h>
#include <ti/sysbios/knl/Queue.h>
#include <ti/sysbios/knl/Semaphore.h>
#include <ti/sysbios/knl/Swi.h>
#include <ti/sysbios/knl/Task.h>
#include <ti/sysbios/runtime/Error.h>
#include <ti/sysbios/runtime/Memory.h>
#include <ti/sysbios/runtime/Startup.h>
#include <ti/sysbios/runtime/System.h>
#include <ti/sysbios/runtime/Timestamp.h>
/* Idle module definitions */
/* Idle functions */
extern void _pthread_cleanupFxn(void);
extern void Power_idleFunc(void);
/* Idle function list */
volatile const Idle_FuncPtr Idle_funcList[2] = {
_pthread_cleanupFxn,
Power_idleFunc,
};
/* Startup module definitions */
/* Startup reset functions */
void Startup_reset()
{
Boot_trimDevice();
}
/*
* Startup first functions
* Module init functions
* Startup last functions
*/
void Startup_exec()
{
/* Startup first functions */
Hwi_initNVIC();
Hwi_initStack();
BIOS_init();
ti_sysbios_family_arm_cc26xx_TimestampProvider_init();
/* Module init functions */
System_init();
Clock_init();
Swi_init();
Task_init();
Idle_init();
Hwi_init();
Startup_done = true;
}
/* BIOS module definitions */
extern char __primary_heap_start__;
extern char __primary_heap_end__;
HeapMem_Object BIOS_heapMemObject;
/*
* ======== BIOS_init ========
* Perform any initialization needed before using any BIOS APIs
*/
void BIOS_init(void)
{
if (BIOS_module->initDone) {
return;
}
BIOS_module->initDone = true;
char *buf = &__primary_heap_start__;
size_t size = &__primary_heap_end__ - &__primary_heap_start__;
HeapMem_Params heapMemParams;
HeapMem_init();
HeapMem_Params_init(&heapMemParams);
heapMemParams.buf = buf;
heapMemParams.size = size;
Memory_defaultHeapInstance = (IHeap_Handle)HeapMem_construct(
&BIOS_heapMemObject, &heapMemParams);
}
#include <ti/dpl/ClockP_tirtos.c>
#include <ti/dpl/DebugP_tirtos.c>
#include <ti/dpl/HwiP_tirtos.c>
#include <ti/dpl/MutexP_tirtos.c>
#include <ti/dpl/SemaphoreP_tirtos.c>
#include <ti/dpl/SwiP_tirtos.c>
#include <ti/dpl/SystemP_tirtos.c>
#include <ti/dpl/PowerCC26X2_tirtos.c>
#include <ti/posix/tirtos/clock.c>
#include <ti/posix/tirtos/mqueue.c>
#include <ti/posix/tirtos/pthread_barrier.c>
#include <ti/posix/tirtos/pthread.c>
#include <ti/posix/tirtos/pthread_cond.c>
#include <ti/posix/tirtos/pthread_key.c>
#include <ti/posix/tirtos/pthread_mutex.c>
#include <ti/posix/tirtos/pthread_rwlock.c>
#include <ti/posix/tirtos/pthread_util.c>
#include <ti/posix/tirtos/sched.c>
#include <ti/posix/tirtos/semaphore.c>
#include <ti/posix/tirtos/sleep.c>
#include <ti/posix/tirtos/timer.c>
#include <ti/sysbios/BIOS.c>
#include <ti/sysbios/family/arm/cc26xx/Boot.c>
#include <ti/sysbios/family/arm/cc26xx/ClockSupport.c>
#include <ti/sysbios/family/arm/cc26xx/Seconds.c>
#include <ti/sysbios/hal/time.c>
#include <ti/sysbios/family/arm/cc26xx/Timer.c>
#include <ti/sysbios/family/arm/cc26xx/TimestampProvider.c>
#include <ti/sysbios/family/arm/m3/Hwi.c>
#include <ti/sysbios/family/arm/m3/TaskSupport.c>
#include <ti/sysbios/gates/GateMutex.c>
#include <ti/sysbios/heaps/HeapMem.c>
#include <ti/sysbios/knl/Clock.c>
#include <ti/sysbios/knl/Event.c>
#include <ti/sysbios/knl/Idle.c>
#include <ti/sysbios/knl/Mailbox.c>
#include <ti/sysbios/knl/Queue.c>
#include <ti/sysbios/knl/Semaphore.c>
#include <ti/sysbios/knl/Swi.c>
#include <ti/sysbios/knl/Task.c>
#include <ti/sysbios/rts/MemAlloc.c>
#include <ti/sysbios/runtime/Error.c>
#include <ti/sysbios/runtime/Memory.c>
#include <ti/sysbios/runtime/System.c>
#include <ti/sysbios/runtime/SysCallback.c>
#include <ti/sysbios/runtime/Timestamp.c>
#include <ti/sysbios/runtime/Startup.c>

View File

@@ -0,0 +1,582 @@
# FIXED
syscfg/ti_sysbios_config.o: syscfg/ti_sysbios_config.c \
syscfg/ti_sysbios_config.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Error.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/std.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Error_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/BIOS.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Types.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Types_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/Hwi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Swi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Queue.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Queue_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Swi_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Task.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Clock.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Clock_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/IHeap.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Memory.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Memory_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Task_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Boot.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Timer.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Timer_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/ITimer.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/gates/GateMutex.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Semaphore.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Event.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Event_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Semaphore_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/gates/GateMutex_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/heaps/HeapMem.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/heaps/HeapMem_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Idle.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Idle_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Mailbox.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Mailbox_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Startup.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Startup_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/System.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/System_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Timestamp.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Timestamp_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/ClockP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/ClockP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Error.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Types.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/DebugP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Assert.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Assert.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Assert_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Diags.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Log.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Log.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/HwiP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/HwiP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/MutexP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/MutexP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/SemaphoreP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SemaphoreP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/SwiP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SwiP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/SystemP_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SystemP.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/System.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/PowerCC26X2_tirtos.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/ITM.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Power.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/List.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26X2.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26XX.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Temperature.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/sys_ctrl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_sysctl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_prcm.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_nvic.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_ioc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi_0_osc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_rfc_pwr.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_3_refsys.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_pmctl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_rtc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_fcfg1.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/interrupt.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/debug.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_cpu_scs.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/pwr_ctrl.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_2_refsys.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/osc.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/ddi.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aux_smph.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/prcm.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap_common.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_ioc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/adi.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_uart.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/vims.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_vims.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26X2_helpers.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/prcm.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/osc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/vims.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/clock.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/Seconds.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/Seconds_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/time.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/signal.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sys/types.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/errno.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_util.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/mqueue.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/IHeap.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Memory.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/pthread.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/time.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sched.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/mqueue.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_barrier.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/_pthread.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_cond.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_key.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_mutex.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_rwlock.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_util.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/sched.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sched.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/semaphore.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/semaphore.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sys/_internal.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/sleep.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/unistd.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/timer.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/BIOS.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Boot.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/setup.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/ClockSupport.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/ClockSupport.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/ClockSupport_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Seconds.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_rtc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_rtc.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_event.h \
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_event.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/interrupt.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/time.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Timer.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/TimestampProvider.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/TimestampProvider.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/TimestampProvider_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/TaskSupport.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/TaskSupport.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/TaskSupport_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/gates/GateMutex.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/heaps/HeapMem.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Clock.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Event.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Idle.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Mailbox.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Queue.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Semaphore.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Swi.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Intrinsics.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Intrinsics_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Task.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/rts/MemAlloc.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Error.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Memory.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/System.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SystemSupport.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SystemSupport_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SysCallback.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SysCallback.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SysCallback_defs.h \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Timestamp.c \
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Startup.c
syscfg/ti_sysbios_config.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Error.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/std.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Error_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/BIOS.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Types.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Types_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/Hwi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Swi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Queue.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Queue_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Swi_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Task.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Clock.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Clock_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/IHeap.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Memory.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Memory_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Task_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Boot.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Timer.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Timer_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/ITimer.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/gates/GateMutex.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Semaphore.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Event.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Event_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Semaphore_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/gates/GateMutex_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/heaps/HeapMem.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/heaps/HeapMem_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Idle.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Idle_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Mailbox.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Mailbox_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Startup.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Startup_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/System.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/System_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Timestamp.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Timestamp_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/ClockP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/ClockP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Error.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Types.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/DebugP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Assert.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Assert.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Assert_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Diags.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Log.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Log.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/HwiP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/HwiP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/DeviceFamily.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/MutexP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/MutexP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/SemaphoreP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SemaphoreP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/SwiP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SwiP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/SystemP_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/dpl/SystemP.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/System.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/dpl/PowerCC26X2_tirtos.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/ITM.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Power.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/utils/List.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26X2.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26XX.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/Temperature.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/sys_ctrl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_chip_def.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_sysctl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_prcm.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_nvic.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_ioc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi_0_osc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_rfc_pwr.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_3_refsys.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_pmctl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_rtc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_fcfg1.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/interrupt.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/debug.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_cpu_scs.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/pwr_ctrl.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi_2_refsys.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/osc.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ccfg.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ddi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/rom.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/ddi.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aux_smph.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/prcm.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap_common.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_ioc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/adi.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_uart.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_adi.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/vims.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_vims.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/drivers/power/PowerCC26X2_helpers.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_types.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/prcm.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/osc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/cpu.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/vims.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/clock.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/Seconds.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/Seconds_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/time.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/signal.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sys/types.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/errno.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_util.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/mqueue.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/IHeap.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/xdc/runtime/Memory.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/pthread.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/time.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sched.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/mqueue.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_barrier.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/_pthread.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_cond.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_key.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_mutex.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_rwlock.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/pthread_util.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/sched.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sched.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/semaphore.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/semaphore.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/sys/_internal.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/sleep.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/gcc/unistd.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/posix/tirtos/timer.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/BIOS.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Boot.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/setup.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/ClockSupport.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/ClockSupport.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/ClockSupport_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Seconds.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_memmap.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_rtc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_ints.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_rtc.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/aon_event.h:
c:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/inc/hw_aon_event.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/source/ti/devices/cc13x2_cc26x2/driverlib/interrupt.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/hal/time.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/Timer.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/TimestampProvider.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/TimestampProvider.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/cc26xx/TimestampProvider_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/TaskSupport.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/TaskSupport.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/TaskSupport_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/gates/GateMutex.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/heaps/HeapMem.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Clock.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Event.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Idle.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Mailbox.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Queue.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Semaphore.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Swi.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Intrinsics.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Intrinsics_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/knl/Task.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/rts/MemAlloc.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Error.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Memory.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/System.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SystemSupport.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SystemSupport_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SysCallback.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SysCallback.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/SysCallback_defs.h:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Timestamp.c:
C:/ti/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/kernel/tirtos7/packages/ti/sysbios/runtime/Startup.c:

View File

@@ -0,0 +1,215 @@
/*
* ======== ti_sysbios_config.h ========
* Configured BIOS module declarations
*
* The macros defined herein are intended for use by applications which
* directly include this header. These macros should NOT be hard coded or
* copied into library source code.
*
* Symbols declared as const are intended for use with libraries.
* Library source code must extern the correct symbol--which is resolved
* when the application is linked.
*
* DO NOT EDIT - This file is generated
* by the SysConfig tool.
*/
#ifndef ti_sysbios_config_h
#define ti_sysbios_config_h
#include <stdint.h>
/* support C++ sources */
#ifdef __cplusplus
extern "C" {
#endif
/* BIOS module definitions */
#define xdc_runtime_Log_DISABLE_ALL 1
#define BIOS_assertsEnabled_D false
#define BIOS_cpuFrequency_D 48000000
#define BIOS_runtimeCreatesEnabled_D true
#define BIOS_taskEnabled_D true
#define BIOS_swiEnabled_D true
#define BIOS_clockEnabled_D true
#define BIOS_psaEnabled_D false
#define BIOS_heapSize_D 0x1000
#define BIOS_rtsLockType_D BIOS_GateMutex
#define BIOS_numStartUserFuncs_D 0
#define BIOS_RTS_GATE_STRUCT GateMutex_Struct
#define BIOS_RTS_GATE_HANDLE(x) GateMutex_handle(x)
#define BIOS_RTS_GATE_ENTER(x) GateMutex_enter(x)
#define BIOS_RTS_GATE_LEAVE(x,y) GateMutex_leave(x,y)
#define BIOS_RTS_GATE_CONSTRUCT(x,y) GateMutex_construct(x,y)
/* ensure Error and Assert defines come before dependent modules */
/* ti_sysbios_runtime_Error module definitions */
#define Error_policy_D Error_SPIN
#define Error_raiseHook_D 1
#define Error_printDetails_D 0
#define Error_addFileLine_D 1
#define Error_retainStrings_D 1
/* This header defines macros that rely on the above defines, do not reorder */
#include <ti/sysbios/runtime/Error.h>
#define Error_raiseHookFxn(x)
/* Settings module definitions */
/* Seconds module definitions */
#define Seconds_generateTimeFunction_D true
/* Timer module definitions */
/* Function hook for RTC channel 1 and 2 */
#define Timer_funcHookCH1_D NULL;
#define Timer_funcHookCH2_D NULL;
/* ti/sysbios/family/arm/cc26xx/TimestampProvider module definitions */
#define ti_sysbios_family_arm_cc26xx_TimestampProvider_useClockTimer_D true
/* Hwi module definitions */
#include <ti/sysbios/family/arm/m3/Hwi.h>
#define Hwi_NUM_INTERRUPTS_D 54
#define Hwi_numSparseInterrupts_D 0
#define Hwi_disablePriority_D 0x20
#define Hwi_priGroup_D 0x0
#define Hwi_nvicCCR_D 0x200
#define Hwi_dispatcherAutoNestingSupport_D true
#define Hwi_dispatcherSwiSupport_D true
#define Hwi_dispatcherTaskSupport_D true
#define Hwi_excHandlerFunc_D Hwi_excHandlerMin
#define Hwi_resetVectorAddress_D 0x0
#define Hwi_vectorTableAddress_D 0x20000000
#define Hwi_initStackFlag_D true
#define Hwi_resetFunc_D _c_int00
#define Hwi_nmiFunc_D Hwi_excHandlerAsm
#define Hwi_hardFaultFunc_D Hwi_excHandlerAsm
#define Hwi_memFaultFunc_D Hwi_excHandlerAsm
#define Hwi_busFaultFunc_D Hwi_excHandlerAsm
#define Hwi_usageFaultFunc_D Hwi_excHandlerAsm
#define Hwi_svCallFunc_D Hwi_excHandlerAsm
#define Hwi_debugMonFunc_D Hwi_excHandlerAsm
#define Hwi_reservedFunc_D Hwi_excHandlerAsm
#define Hwi_swiDisable_D Swi_disable
#define Hwi_swiRestore_D Swi_restore
#define Hwi_swiRestoreHwi_D Swi_restoreHwi
#define Hwi_taskDisable_D Task_disable
#define Hwi_taskRestoreHwi_D Task_restoreHwi
#define Hwi_nvic (*(volatile Hwi_NVIC *)0xe000e000)
/* HwiHooks module definitions */
#define HwiHooks_numHooks_D 0
#define HwiHooks_array NULL
/* HeapMem module definitions */
#define HeapMem_GateStruct GateMutex_Struct
#define HeapMem_gateConstruct(params) GateMutex_construct(&HeapMem_gate, params)
#define HeapMem_gateEnter() GateMutex_enter(&HeapMem_gate)
#define HeapMem_gateLeave(key) GateMutex_leave(&HeapMem_gate, key)
#define HeapMem_gateCanBlock() GateMutex_canBlock()
/* Clock module definitions */
#define Clock_swiPriority_D 5
#define Clock_tickSource_D Clock_TickSource_TIMER
#define Clock_tickMode_D Clock_TickMode_DYNAMIC
#define Clock_tickPeriod_D 10
/* Idle module definitions */
#define Idle_numFuncs_D 2
/* Semaphore module definitions */
#define Semaphore_supportsPriority_D false
#define Semaphore_supportsEvents_D false
#define Semaphore_eventPost_D NULL
#define Semaphore_eventSync_D NULL
/* Swi module definitions */
#define Swi_taskDisable Task_disable
#define Swi_taskRestore Task_restore
#define Swi_numPriorities_D 6
/* SwiHooks module definitions */
#include <ti/sysbios/knl/Swi.h>
#define SwiHooks_numHooks_D 0
#define SwiHooks_array NULL
/* Task module definitions */
#define Task_allBlockedFunc_D NULL
#define Task_numPriorities_D 6
#define Task_defaultStackSize_D 512
#define Task_idleTaskStackSize_D 512
#define Task_idleTaskVitalTaskFlag_D true
#define Task_initStackFlag_D true
#define Task_checkStackFlag_D false
#define Task_deleteTerminatedTasks_D false
#define Task_numVitalTasks_D 0
#define Task_minimizeLatency_D false
#define Task_enableIdleTask_D true
/* TaskHooks module definitions */
#include <ti/sysbios/knl/Task.h>
#define TaskHooks_numHooks_D 0
#define TaskHooks_array NULL
/* MemAlloc module definitions */
#define MemAlloc_generateFunctions_D true
/* Startup module definitions */
/* Startup functions */
extern void ti_sysbios_family_arm_cc26xx_TimestampProvider_init(void);
/* SysCallback module definitions */
#define SysCallback_abortFxn_D SysCallback_defaultAbort
#define SysCallback_exitFxn_D SysCallback_defaultExit
#define SysCallback_flushFxn_D SysCallback_defaultFlush
#define SysCallback_initFxn_D SysCallback_defaultInit
#define SysCallback_putchFxn_D SysCallback_defaultPutch
#define SysCallback_readyFxn_D SysCallback_defaultReady
/* System module definitions */
#define System_maxAtexitHandlers_D 8
#define System_abortFxn_D System_abortSpin
#define System_exitFxn_D System_exitSpin
#define System_supportPercentF_D 1
extern void System_exitSpin(int);
/* ti_sysbios_runtime_Timestamp module definitions */
#define TimestampProvider_get32_D ti_sysbios_family_arm_cc26xx_TimestampProvider_get32
#define TimestampProvider_get64_D ti_sysbios_family_arm_cc26xx_TimestampProvider_get64
#define TimestampProvider_getFreq_D ti_sysbios_family_arm_cc26xx_TimestampProvider_getFreq
#define TimestampProvider_init_D ti_sysbios_family_arm_cc26xx_TimestampProvider_init
#ifdef __cplusplus
}
#endif
#endif /* include guard */

View File

@@ -0,0 +1,32 @@
/*
* ======== ti_utils_build_linker.cmd.genlibs ========
* Libraries needed to link this application's configuration
*
* NOTE, this feature requires software components configured in your
* system to correctly indicate their dependencies and report the
* libraries needed for your specific configuration. If you find
* errors, please report them on TI's E2E forums
* (https://e2e.ti.com/) so they can be addressed in a future
* release.
*
* This file allows one to portably link applications that use SysConfig
* _without_ having to make changes to build rules when moving to a new
* device OR when upgrading to a new version of a SysConfig enabled
* product.
*
* DO NOT EDIT - This file is generated by the SysConfig tool for the
* GCC C/C++ toolchain
*/
INPUT (
/* libraries required for /ti/drivers/RF */
"ti/drivers/rf/lib/gcc/m4f/rf_multiMode_cc26x2.a"
/* libraries required for /ti/drivers */
"ti/drivers/lib/gcc/m4f/drivers_cc26x2.a"
"ti/grlib/lib/gcc/m4f/grlib.a"
/* libraries required for /ti/sysbios */
"ti/sysbios/lib/gcc/m4f/sysbios.a"
)

View File

@@ -0,0 +1,44 @@
#
# ======== ti_utils_runtime_Makefile ========
#
# DO NOT EDIT - This file is generated by the SysConfig tool.
#
# This makefile is used to generate an SVG file from the given
# DOT file to generate a graphical view of the configuration
# model. Add a Post-build step to integrate this makefile into
# the CCS build flow.
#
# To generate the SVG file, you must install Graphviz into the SDK
# third_party folder. Download the zip file from the Graphviz website
# and unzip into the following folder (create the destination folder
# first):
#
# https://graphviz.gitlab.io/
# unzip graphviz-2.38.zip -d <SDK>/source/third-party/graphviz
#
# Use the following steps to add a post-build command
#
# Project > Properties
# CCS Build > Steps (tab)
#
# Add the following command to invoke this makefile. Substitute the SDK
# variable name for your installed product. Enter this command in the
# Post-build steps text box (all on one line):
#
# ${CCS_UTILS_DIR}/bin/gmake -f syscfg/ti_utils_runtime_Makefile
# SDK_INSTALL_DIR=${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INSTALL_DIR} all
#
DOT = $(SDK_INSTALL_DIR)/source/third_party/graphviz/release/bin/dot
ifneq (,$(wildcard $(dir $(DOT))))
all: graphviz
endif
all:
@echo "#"
@echo "ti-utils build complete"
graphviz:
@echo "#"
@echo "Generating Graphviz files"
$(DOT) -Tsvg -O syscfg/ti_utils_runtime_model.gv

View File

@@ -0,0 +1,169 @@
digraph Model
{
graph[rankdir=LR]
// mod.$name=/ti/common/multi_stack_validate
// mod.$name=/ti/devices/CCFG
ti_devices_CCFG -> ti_devices_CCFG_CCFGCC26XXTemplate0
// mod.$name=/ti/devices/CCFG/CCFGCC26XXTemplate
// mod.$name=/ti/devices/DriverLib
// mod.$name=/ti/devices/radioconfig/code_export_param
// mod.$name=/ti/devices/radioconfig/custom
ti_devices_radioconfig_custom -> ti_common_multi_stack_validate
ti_devices_radioconfig_custom -> ti_devices_radioconfig_settings_ieee_15_40
// mod.$name=/ti/devices/radioconfig/rfdesign
// mod.$name=/ti/devices/radioconfig/settings/ieee_15_4
ti_devices_radioconfig_settings_ieee_15_40 -> ti_drivers_RF
ti_devices_radioconfig_settings_ieee_15_40 -> ti_devices_radioconfig_rfdesign
ti_devices_radioconfig_settings_ieee_15_40 -> ti_devices_radioconfig_code_export_param1
// mod.$name=/ti/dpl/Settings
// mod.$name=/ti/drivers/Board
ti_drivers_Board -> ti_drivers_GPIO
ti_drivers_Board -> ti_devices_DriverLib
ti_drivers_Board -> ti_dpl_Settings
// mod.$name=/ti/drivers/DMA
ti_drivers_DMA -> ti_drivers_Board
// mod.$name=/ti/drivers/GPIO
// mod.$name=/ti/drivers/Power
ti_drivers_Power -> ti_devices_CCFG
ti_drivers_Power -> ti_drivers_Board
// mod.$name=/ti/drivers/RF
ti_drivers_RF -> ti_drivers_Power
ti_drivers_RF -> ti_drivers_Board
ti_drivers_RF -> CONFIG_RF_STANDARD_PA
ti_drivers_RF -> CONFIG_RF_HIGH_PA
// mod.$name=/ti/drivers/Timer
CONFIG_TIMER_0 -> ti_drivers_Power
CONFIG_TIMER_0 -> ti_drivers_Board
CONFIG_TIMER_0 -> CONFIG_GPTIMER_0
// mod.$name=/ti/drivers/UART2
CONFIG_UART2_0 -> ti_drivers_DMA
CONFIG_UART2_0 -> ti_drivers_Power
CONFIG_UART2_0 -> ti_drivers_Board
CONFIG_UART2_0 -> CONFIG_GPIO_UART2_0_TX
CONFIG_UART2_0 -> CONFIG_GPIO_UART2_0_RX
// mod.$name=/ti/drivers/timer/GPTimerCC26XX
CONFIG_GPTIMER_0 -> ti_drivers_Power
CONFIG_GPTIMER_0 -> ti_drivers_Board
// mod.$name=/ti/posix/tirtos/Settings
ti_posix_tirtos_Settings -> ti_sysbios_knl_Mailbox
ti_posix_tirtos_Settings -> ti_sysbios_knl_Task
ti_posix_tirtos_Settings -> ti_sysbios_knl_Semaphore
ti_posix_tirtos_Settings -> ti_sysbios_knl_Idle
ti_posix_tirtos_Settings -> _pthread_cleanupFxn
// mod.$name=/ti/sysbios/BIOS
ti_sysbios_BIOS -> ti_sysbios_knl_Idle
ti_sysbios_BIOS -> ti_sysbios_runtime_Error
ti_sysbios_BIOS -> ti_sysbios_runtime_Memory
ti_sysbios_BIOS -> ti_sysbios_rts_MemAlloc
ti_sysbios_BIOS -> ti_sysbios_runtime_System
ti_sysbios_BIOS -> ti_sysbios_runtime_Startup
ti_sysbios_BIOS -> ti_sysbios_BIOSStartUserFuncs
ti_sysbios_BIOS -> ti_sysbios_knl_Clock
ti_sysbios_BIOS -> ti_sysbios_knl_Task
ti_sysbios_BIOS -> ti_sysbios_knl_Swi
ti_sysbios_BIOS -> ti_sysbios_heaps_HeapMem
ti_sysbios_BIOS -> ti_sysbios_gates_GateMutex
ti_sysbios_BIOS -> ti_sysbios_family_arm_cc26xx_Seconds
ti_sysbios_BIOS -> ti_sysbios_family_arm_cc26xx_Boot
ti_sysbios_BIOS -> ti_sysbios_family_arm_m3_Hwi
ti_sysbios_BIOS -> BIOS_init
// mod.$name=/ti/sysbios/BIOSStartUserFuncs
// mod.$name=/ti/sysbios/family/arm/cc26xx/Boot
ti_sysbios_family_arm_cc26xx_Boot -> Boot_trimDevice
// mod.$name=/ti/sysbios/family/arm/cc26xx/ClockSupport
ti_sysbios_family_arm_cc26xx_ClockSupport -> ti_sysbios_family_arm_cc26xx_Timer
// mod.$name=/ti/sysbios/family/arm/cc26xx/Seconds
// mod.$name=/ti/sysbios/family/arm/cc26xx/Timer
// mod.$name=/ti/sysbios/family/arm/cc26xx/TimestampProvider
ti_sysbios_family_arm_cc26xx_TimestampProvider -> ti_sysbios_family_arm_cc26xx_Timer
ti_sysbios_family_arm_cc26xx_TimestampProvider -> ti_sysbios_family_arm_cc26xx_TimestampProvider_init
// mod.$name=/ti/sysbios/family/arm/m3/Hwi
ti_sysbios_family_arm_m3_Hwi -> ti_sysbios_hal_HwiHooks
ti_sysbios_family_arm_m3_Hwi -> Hwi_init
ti_sysbios_family_arm_m3_Hwi -> Hwi_initNVIC
ti_sysbios_family_arm_m3_Hwi -> Hwi_initStack
// mod.$name=/ti/sysbios/family/arm/m3/TaskSupport
// mod.$name=/ti/sysbios/gates/GateMutex
ti_sysbios_gates_GateMutex -> ti_sysbios_knl_Semaphore
// mod.$name=/ti/sysbios/hal/HwiHooks
// mod.$name=/ti/sysbios/heaps/HeapMem
ti_sysbios_heaps_HeapMem -> ti_sysbios_gates_GateMutex
// mod.$name=/ti/sysbios/knl/Clock
ti_sysbios_knl_Clock -> ti_sysbios_family_arm_cc26xx_ClockSupport
ti_sysbios_knl_Clock -> ti_sysbios_knl_Queue
ti_sysbios_knl_Clock -> Clock_init
// mod.$name=/ti/sysbios/knl/Event
// mod.$name=/ti/sysbios/knl/Idle
ti_sysbios_knl_Idle -> Idle_init
// mod.$name=/ti/sysbios/knl/Mailbox
// mod.$name=/ti/sysbios/knl/Queue
// mod.$name=/ti/sysbios/knl/Semaphore
// mod.$name=/ti/sysbios/knl/Swi
ti_sysbios_knl_Swi -> ti_sysbios_knl_SwiHooks
ti_sysbios_knl_Swi -> Swi_init
// mod.$name=/ti/sysbios/knl/SwiHooks
// mod.$name=/ti/sysbios/knl/Task
ti_sysbios_knl_Task -> ti_sysbios_knl_Idle
ti_sysbios_knl_Task -> ti_sysbios_family_arm_m3_TaskSupport
ti_sysbios_knl_Task -> ti_sysbios_knl_TaskHooks
ti_sysbios_knl_Task -> ti_sysbios_knl_Queue
ti_sysbios_knl_Task -> Task_init
// mod.$name=/ti/sysbios/knl/TaskHooks
// mod.$name=/ti/sysbios/rts/MemAlloc
// mod.$name=/ti/sysbios/runtime/Error
// mod.$name=/ti/sysbios/runtime/Memory
// mod.$name=/ti/sysbios/runtime/Startup
// mod.$name=/ti/sysbios/runtime/SysCallback
// mod.$name=/ti/sysbios/runtime/System
ti_sysbios_runtime_System -> ti_sysbios_runtime_SysCallback
ti_sysbios_runtime_System -> System_init
// mod.$name=/ti/sysbios/runtime/Timestamp
ti_sysbios_runtime_Timestamp -> ti_sysbios_family_arm_cc26xx_TimestampProvider
}

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configurations XML_version="1.2" id="configurations_0">
<configuration XML_version="1.2" id="SEGGER J-Link Emulator_0">
<instance XML_version="1.2" desc="SEGGER J-Link Emulator_0" href="connections/segger_j-link_connection.xml" id="SEGGER J-Link Emulator_0" xml="segger_j-link_connection.xml" xmlpath="connections"/>
<connection XML_version="1.2" id="SEGGER J-Link Emulator_0">
<instance XML_version="1.2" href="drivers/JLINKicepick_c.xml" id="drivers" xml="JLINKicepick_c.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/jlinkcs_dap.xml" id="drivers" xml="jlinkcs_dap.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/jlinkcortexm4.xml" id="drivers" xml="jlinkcortexm4.xml" xmlpath="drivers"/>
<platform XML_version="1.2" id="platform_0">
<instance XML_version="1.2" desc="CC2652R1F_0" href="devices/cc2652r1f.xml" id="CC2652R1F_0" xml="cc2652r1f.xml" xmlpath="devices"/>
<device HW_revision="1" XML_version="1.2" description="SimpleLink(TM) multi-protocol CC2652R wireless MCU" id="CC2652R1F_0" partnum="CC2652R1F">
<router HW_revision="1.0" XML_version="1.2" description="ICEPick_C Router" id="IcePick_C_0" isa="ICEPICK_C">
<subpath id="subpath_0">
<router HW_revision="1.0" XML_version="1.2" description="CS_DAP Router" id="CS_DAP_0" isa="CS_DAP">
<subpath id="subpath_1">
<cpu HW_revision="1.0" XML_version="1.2" description="Cortex_M4 CPU" id="Cortex_M4_0" isa="Cortex_M4">
<property Type="choicelist" Value="2" id="Target Interface Type"/>
</cpu>
</subpath>
</router>
</subpath>
</router>
</device>
</platform>
</connection>
</configuration>
</configurations>

View File

@@ -0,0 +1,9 @@
The 'targetConfigs' folder contains target-configuration (.ccxml) files, automatically generated based
on the device and connection settings specified in your project on the Properties > General page.
Please note that in automatic target-configuration management, changes to the project's device and/or
connection settings will either modify an existing or generate a new target-configuration file. Thus,
if you manually edit these auto-generated files, you may need to re-apply your changes. Alternatively,
you may create your own target-configuration file for this project and manage it manually. You can
always switch back to automatic target-configuration management by checking the "Manage the project's
target-configuration automatically" checkbox on the project's Properties > General page.

View File

@@ -0,0 +1,228 @@
#include "uart.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <ti/drivers/UART2.h>
#include "ti_drivers_config.h"
#include <stdarg.h>
#define MAX_LENGTH1 256
char input[MAX_LENGTH1];
size_t bytesToRead = MAX_LENGTH1;
volatile size_t bytesReadCount;
UART2_Handle uart;
static void printchar(char **str, int c) {
if (str) {
**str = c;
++(*str);
} else
{
uartWrite((uint8_t *)&c, 1);
}
}
#define PAD_RIGHT 1
#define PAD_ZERO 2
static int prints(char **out, const char *string, int width, int pad) {
register int pc = 0, padchar = ' ';
if (width > 0) {
register int len = 0;
register const char *ptr;
for (ptr = string; *ptr; ++ptr)
++len;
if (len >= width)
width = 0;
else
width -= len;
if (pad & PAD_ZERO)
padchar = '0';
}
if (!(pad & PAD_RIGHT)) {
for (; width > 0; --width) {
printchar(out, padchar);
++pc;
}
}
for (; *string; ++string) {
printchar(out, *string);
++pc;
}
for (; width > 0; --width) {
printchar(out, padchar);
++pc;
}
return pc;
}
/* the following should be enough for 32 bit int */
#define PRINT_BUF_LEN 12
static int printi(char **out, int i, int b, int sg, int width, int pad,
int letbase) {
char print_buf[PRINT_BUF_LEN];
register char *s;
register int t, neg = 0, pc = 0;
register unsigned int u = i;
if (i == 0) {
print_buf[0] = '0';
print_buf[1] = '\0';
return prints(out, print_buf, width, pad);
}
if (sg && b == 10 && i < 0) {
neg = 1;
u = -i;
}
s = print_buf + PRINT_BUF_LEN - 1;
*s = '\0';
while (u) {
t = u % b;
if (t >= 10)
t += letbase - '0' - 10;
*--s = t + '0';
u /= b;
}
if (neg) {
if (width && (pad & PAD_ZERO)) {
printchar(out, '-');
++pc;
--width;
} else {
*--s = '-';
}
}
return pc + prints(out, s, width, pad);
}
static int print(char **out, const char *format, va_list args) {
register int width, pad;
register int pc = 0;
char scr[2];
for (; *format != 0; ++format) {
if (*format == '%') {
++format;
width = pad = 0;
if (*format == '\0')
break;
if (*format == '%')
goto out;
if (*format == '-') {
++format;
pad = PAD_RIGHT;
}
while (*format == '0') {
++format;
pad |= PAD_ZERO;
}
for (; *format >= '0' && *format <= '9'; ++format) {
width *= 10;
width += *format - '0';
}
if (*format == 's') {
register char *s = (char *) va_arg( args, int );
pc += prints(out, s ? s : "(null)", width, pad);
continue;
}
if (*format == 'd') {
pc += printi(out, va_arg( args, int ), 10, 1, width, pad, 'a');
continue;
}
if (*format == 'x') {
pc += printi(out, va_arg( args, int ), 16, 0, width, pad, 'a');
continue;
}
if (*format == 'X') {
pc += printi(out, va_arg( args, int ), 16, 0, width, pad, 'A');
continue;
}
if (*format == 'u') {
pc += printi(out, va_arg( args, int ), 10, 0, width, pad, 'a');
continue;
}
if (*format == 'c') {
/* char are converted to int then pushed on the stack */
scr[0] = (char) va_arg( args, int );
scr[1] = '\0';
pc += prints(out, scr, width, pad);
continue;
}
} else {
out: printchar(out, *format);
++pc;
}
}
if (out)
**out = '\0';
va_end( args );
return pc;
}
int u_printf(const char *format, ...) {
va_list args;
va_start(args, format );
print(0, format, args);
return 0;
}
int u_sprintf(char *out, const char *format, ...) {
va_list args;
va_start( args, format );
return print(&out, format, args);
}
void u_array_printf(unsigned char*data, unsigned int len) {
u_printf("{");
for(int i = 0; i < len; ++i){
u_printf("%X%s", data[i], i<(len)-1? ":":" ");
}
u_printf("}\n");
}
void ReceiveonUARTcallback(UART2_Handle handle, void *buffer, size_t count, void *userArg, int_fast16_t status)
{
if (status == UART2_STATUS_SUCCESS)
{
bytesReadCount = count;
}else{
UART2_read(uart, &input, bytesToRead, NULL);
}
}
void initUart()
{
UART2_Params uartParams;
UART2_Params_init(&uartParams);
uartParams.baudRate = 115200;
uartParams.readMode = UART2_Mode_CALLBACK;
uartParams.readCallback = ReceiveonUARTcallback;
uartParams.readReturnMode = UART2_ReadReturnMode_PARTIAL;
while(uart == NULL)
{
uart = UART2_open(CONFIG_UART2_0, &uartParams);
}
UART2_read(uart, &input, bytesToRead, NULL);
}
void uartEnableInt()
{
UART2_read(uart, &input, bytesToRead, NULL);// Start UART interrupt again
}
void uartWrite(uint8_t *buffer, size_t len)
{
size_t bytesWritten = 0;
UART2_write(uart, buffer, len, &bytesWritten);
}

View File

@@ -0,0 +1,16 @@
#pragma once
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
void initUart();
void uartEnableInt();
void uartWrite(uint8_t *buffer, size_t len);
int u_printf(const char *fmt, ...);
int u_sprintf(char* s, const char *fmt, ...);
void u_array_printf(unsigned char*data, unsigned int len);
#define printf u_printf
#define sprintf u_sprintf
#define array_printf u_array_printf