mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 23:06:40 +01:00
Added CC1352 / CC2652 AP Firmware Code
This commit is contained in:
@@ -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>
|
||||
143
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/.cproject
Normal file
143
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/.cproject
Normal 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={"com.ti.SIMPLELINK_CC13XX_CC26XX_SDK":["${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_INCLUDE_PATH}","${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_LIBRARY_PATH}","${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_LIBRARIES}","${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_SYMBOLS}","${COM_TI_SIMPLELINK_CC13XX_CC26XX_SDK_SYSCONFIG_MANIFEST}"],"sysconfig":["${SYSCONFIG_TOOL_INCLUDE_PATH}","${SYSCONFIG_TOOL_LIBRARY_PATH}","${SYSCONFIG_TOOL_LIBRARIES}","${SYSCONFIG_TOOL_SYMBOLS}","${SYSCONFIG_TOOL_SYSCONFIG_MANIFEST}"]}"/>
|
||||
</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 <bfdname> (-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 <name> 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>
|
||||
@@ -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>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
[](https://www.youtube.com/watch?v=FDRU17OAT4w)
|
||||
133
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/RFQueue.c
Normal file
133
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/RFQueue.c
Normal 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);
|
||||
}
|
||||
@@ -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.
|
||||
//! @}
|
||||
//
|
||||
//*****************************************************************************
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
};
|
||||
@@ -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_
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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(¶ms);
|
||||
params.period = 0xffffffff;
|
||||
params.periodUnits = Timer_PERIOD_COUNTS;
|
||||
params.timerMode = Timer_CONTINUOUS_CALLBACK;
|
||||
params.timerCallback = timerCallback;
|
||||
|
||||
timer0 = Timer_open(CONFIG_TIMER_0, ¶ms);
|
||||
if (timer0 != NULL)
|
||||
{
|
||||
Timer_start(timer0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
uint32_t getMillis();
|
||||
void millisInit();
|
||||
@@ -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"
|
||||
]
|
||||
179
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/proto.h
Normal file
179
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/proto.h
Normal 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
|
||||
160
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/radio.c
Normal file
160
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/radio.c
Normal 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*)(¤tDataEntry->data) > 0){
|
||||
memcpy((uint8_t *)packetDataPointer[got_rx], ¤tDataEntry->data, *(uint8_t*)(¤tDataEntry->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);
|
||||
}
|
||||
@@ -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);
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
@@ -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 ' '
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 */
|
||||
];
|
||||
@@ -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)
|
||||
@@ -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:
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
@@ -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 */
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
@@ -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:
|
||||
@@ -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_
|
||||
@@ -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>
|
||||
@@ -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:
|
||||
@@ -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 */
|
||||
@@ -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"
|
||||
|
||||
)
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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.
|
||||
228
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/uart.c
Normal file
228
ARM_Tag_FW/OpenEPaperLink_Station_cc13x2_cc26x2_Driver/uart.c
Normal 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);
|
||||
}
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user