Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0db0572e7e | |||
| a0c7fac713 | |||
| aae3a9bdb2 | |||
| 9aba294e78 | |||
| d9de0a8021 | |||
| 94ff9ef4f2 | |||
| 77a9fdb8c9 | |||
| 776e5544b3 | |||
| 1012c76e8a | |||
| c9e7f63579 | |||
| 8731dc1437 | |||
| 650580657d | |||
| e9661c4fde | |||
| 663efc35ab | |||
| c8ef957ba8 | |||
| c93f9e8f1b | |||
| 0783981abd | |||
| edf7afa30f | |||
| 20614206db | |||
| 1eb77672bd | |||
| 86fdd30adb | |||
| 87930d1328 |
+13
@@ -4,6 +4,19 @@
|
||||
xdctools_*/
|
||||
ccsv8/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_peripheral/ccs/app/.config/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_peripheral/ccs/app/.ccsproject
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_peripheral/ccs/app/.cproject
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/app/.launches/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/app/.settings/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/config/lib_linker.cmd
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/config/src/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/stack/.launches/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/stack/.settings/
|
||||
simplelink/ble_sdk_2_02_02_25/examples/cc2650em/simple_central/ccs/stack/targetConfigs/
|
||||
.vscode/
|
||||
ccs/
|
||||
|
||||
|
||||
|
||||
# CSS build files
|
||||
FlashROM/
|
||||
Generated
-7
@@ -1,7 +0,0 @@
|
||||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="keyword" value="Copyright .*" />
|
||||
<option name="notice" value="Copyright (c) &#36;today.year. BioPro. Scientific." />
|
||||
<option name="myName" value="BioProSci" />
|
||||
</copyright>
|
||||
</component>
|
||||
Generated
-7
@@ -1,7 +0,0 @@
|
||||
<component name="CopyrightManager">
|
||||
<settings default="BioProSci">
|
||||
<module2copyright>
|
||||
<element module="SimplePeripheral" copyright="BioProSci" />
|
||||
</module2copyright>
|
||||
</settings>
|
||||
</component>
|
||||
Generated
-3
@@ -1,3 +0,0 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="HostTest" pattern="file[BioProCC2650]:simplelink/ble_sdk_2_02_02_25/src/examples/host_test/cc26xx/app/master//*" />
|
||||
</component>
|
||||
Generated
-3
@@ -1,3 +0,0 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="SimplePeripheral" pattern="file[BioProCC2650]:simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage//*" />
|
||||
</component>
|
||||
@@ -9,6 +9,6 @@
|
||||
<linkerCommandFile value="cc26x0f128.cmd"/>
|
||||
<rts value="libc.a"/>
|
||||
<createSlaveProjects value=""/>
|
||||
<connection value="common/targetdb/connections/TIXDS110_Connection.xml"/>
|
||||
<isTargetManual value="false"/>
|
||||
<connection value="common/targetdb/connections/TIXDS100v3_Dot7_Connection.xml"/>
|
||||
<isTargetManual value="true"/>
|
||||
</projectOptions>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" errorParsers="org.eclipse.rtsc.xdctools.parsers.ErrorParser;com.ti.rtsc.XDCtools.parsers.ErrorParser;com.ti.ccstudio.errorparser.CoffErrorParser;com.ti.ccstudio.errorparser.LinkErrorParser;com.ti.ccstudio.errorparser.AsmErrorParser;org.eclipse.cdt.core.GmakeErrorParser" id="com.ti.ccstudio.buildDefinitions.TMS470.Default.1291753115" name="FlashROM" parent="com.ti.ccstudio.buildDefinitions.TMS470.Default" postbuildStep="${CG_TOOL_HEX} -order MS --memwidth=8 --romwidth=8 --intel -o ${ProjName}.hex ${ProjName}.out" prebuildStep="">
|
||||
<folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Default.1291753115." name="/" resourcePath="">
|
||||
<toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain.576520359" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.436431825">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.633535552" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.633535552" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.CC2650F128"/>
|
||||
<listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
|
||||
@@ -26,24 +26,25 @@
|
||||
<listOptionValue builtIn="false" value="XDC_VERSION=3.32.2.25_core"/>
|
||||
<listOptionValue builtIn="false" value="INACTIVE_REPOS="/>
|
||||
<listOptionValue builtIn="false" value="EXPANDED_REPOS="/>
|
||||
<listOptionValue builtIn="false" value="RTSC_PRODUCTS=com.ti.rtsc.TIRTOSCC13XX_CC26XX:2.21.01.08;"/>
|
||||
<listOptionValue builtIn="false" value="LINKER_COMMAND_FILE=cc26x0f128.cmd"/>
|
||||
<listOptionValue builtIn="false" value="OUTPUT_TYPE=rtscApplication:executable"/>
|
||||
<listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.5.0"/>
|
||||
<listOptionValue builtIn="false" value="LINK_ORDER=TOOLS/ccs_linker_defines.cmd;TOOLS/cc26xx_app.cmd;"/>
|
||||
<listOptionValue builtIn="false" value="RTSC_MBS_VERSION=2.2.0"/>
|
||||
<listOptionValue builtIn="false" value="PRODUCTS=com.ti.rtsc.TIRTOSCC13XX_CC26XX:2.21.1.08;"/>
|
||||
<listOptionValue builtIn="false" value="PRODUCT_MACRO_IMPORTS={}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1880967367" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.3.LTS" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1880967367" name="Compiler version" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="18.1.3.LTS" valueType="string"/>
|
||||
<targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug.41559233" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.targetPlatformDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.1846214930" name="GNU Make.FlashROM" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug.1846214930" keepEnvironmentInBuildfile="false" name="GNU Make" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.builderDebug"/>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug.1893671440" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.compilerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1085621098" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.1977755763" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.1142049032" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.22245829" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.158868909" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.1782412253" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.1146753870" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.1085621098" name="Target processor version (--silicon_version, -mv)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.SILICON_VERSION.7M3" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.1977755763" name="Designate code state, 16-bit (thumb) or 32-bit (--code_state)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CODE_STATE.16" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.1142049032" name="Application binary interface. (--abi)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.ABI.eabi" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN.22245829" name="Little endian code [See 'General' page to edit] (--little_endian, -me)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.158868909" name="Optimization level (--opt_level, -O)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_LEVEL.4" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.1782412253" name="Speed vs. size trade-offs (--opt_for_speed, -mf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.OPT_FOR_SPEED.0" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH.1146753870" name="Add dir to #include search path (--include_path, -I)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.INCLUDE_PATH" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/examples/simple_central/cc26xx/app"/>
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/inc"/>
|
||||
@@ -66,7 +67,7 @@
|
||||
<listOptionValue builtIn="false" value="${SRC_BLE_CORE}/rom"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.667496043" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE.667496043" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DEFINE" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="BOARD_DISPLAY_EXCLUDE_UART"/>
|
||||
<listOptionValue builtIn="false" value="MODA_MEMORY_BOARD"/>
|
||||
<listOptionValue builtIn="false" value="BOOSTXL_CC2650MA"/>
|
||||
@@ -82,17 +83,17 @@
|
||||
<listOptionValue builtIn="false" value="xdc_runtime_Assert_DISABLE_ALL"/>
|
||||
<listOptionValue builtIn="false" value="xdc_runtime_Log_DISABLE_ALL"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.736801588" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.1123228537" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.736801588" name="C Dialect" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.C_DIALECT.C99" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS.1123228537" name="Suppress diagnostic <id> (--diag_suppress, -pds)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="48"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.1665010090" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING.1665010090" name="Treat diagnostic <id> as warning (--diag_warning, -pdsw)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WARNING" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="225"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.203653389" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.630994301" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.1257520161" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.1421890218" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.203653389" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER.630994301" name="Emit diagnostic identifier numbers (--display_error_number, -pden)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.1257520161" name="Place each function in a separate subsection (--gen_func_subsections, -ms)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE.1421890218" name="Read options from specified file (--cmd_file, -@)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compilerID.CMD_FILE" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${SRC_EX}/config/build_components.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/build_config.opt"/>
|
||||
<listOptionValue builtIn="false" value="${ORG_PROJ_DIR}/../../ccs/config/ccs_compiler_defines.bcfg"/>
|
||||
@@ -103,48 +104,49 @@
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS.171398647" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.compiler.inputType__ASM2_SRCS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug.436431825" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exe.linkerDebug">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.699911295" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.2112847717" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.1409849586" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.2140048531" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.367490210" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE.699911295" name="Set C system stack size (--stack_size, -stack)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.STACK_SIZE" value="256" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE.2112847717" name="Heap size for C/C++ dynamic memory allocation (--heap_size, -heap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.HEAP_SIZE" value="0" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE.1409849586" name="Link information (map) listed into <file> (--map_file, -m)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.MAP_FILE" value=""${ProjName}.map"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE.2140048531" name="Specify output file name (--output_file, -o)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.OUTPUT_FILE" value="${ProjName}.out" valueType="string"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY.367490210" name="Include library file or command file as input (--library, -l)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.LIBRARY" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="libc.a"/>
|
||||
<listOptionValue builtIn="false" value="${CC26XXWARE}/driverlib/bin/ccs/driverlib.lib"/>
|
||||
<listOptionValue builtIn="false" value="${ROM}/common_rom_releases/03282014/common_rom.symbols"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1780759134" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH.1780759134" name="Add <dir> to library search path (--search_path, -i)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.SEARCH_PATH" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/lib"/>
|
||||
<listOptionValue builtIn="false" value="${CG_TOOL_ROOT}/include"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1979731574" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS.1979731574" name="Suppress diagnostic <id> (--diag_suppress)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_SUPPRESS" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="10247-D"/>
|
||||
<listOptionValue builtIn="false" value="16002-D"/>
|
||||
</option>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.354734275" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.247118236" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.240019697" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.2041629903" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.2063612992" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.354734275" name="Wrap diagnostic messages (--diag_wrap)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DIAG_WRAP.off" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER.247118236" name="Emit diagnostic identifier numbers (--display_error_number)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO.240019697" name="Detailed link information data-base into <file> (--xml_link_info, -xml_link_info)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.XML_LINK_INFO" value=""${ProjName}_linkInfo.xml"" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.2041629903" name="Aggressively reduce size of the DWARF information (--compress_dwarf)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.COMPRESS_DWARF.on" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.2063612992" name="Eliminate sections not needed in the executable (--unused_section_elimination)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.linkerID.UNUSED_SECTION_ELIMINATION.on" valueType="enumerated"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS.880448580" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS.411314174" name="Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__CMD2_SRCS"/>
|
||||
<inputType id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS.487223306" name="Generated Linker Command Files" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.exeLinker.inputType__GEN_CMDS"/>
|
||||
</tool>
|
||||
<tool id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.1252521545" name="ARM Hex Utility" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex">
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1844703656" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.659519706" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.1118587417" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH.1844703656" name="Specify rom width (--romwidth, -romwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.ROMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH.659519706" name="Specify memory width (--memwidth, -memwidth=width)" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.MEMWIDTH" value="8" valueType="string"/>
|
||||
<option id="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.1118587417" name="Output format" superClass="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT" value="com.ti.ccstudio.buildDefinitions.TMS470_18.1.hex.OUTPUT_FORMAT.INTEL" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.290281007" name="XDCtools" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool">
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.1450848120" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH" valueType="stringList">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH.1450848120" name="XDCpath package repositories (--xdcpath)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.XDC_PATH" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="${COM_TI_RTSC_TIRTOSCC13XX_CC26XX_REPOS}"/>
|
||||
<listOptionValue builtIn="false" value="${TARGET_CONTENT_BASE}"/>
|
||||
<listOptionValue builtIn="false" value="C:\ti\ccs\ccs_base"/>
|
||||
</option>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET.653491273" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET" value="ti.targets.arm.elf.M3" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM.870080666" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM" value="ti.platforms.simplelink:CC2650F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW.1631957435" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW" value="ti.platforms.simplelink:CC2650F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE.295250289" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE" value="release" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR.1337126905" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR" value="${CG_TOOL_ROOT}" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS.434618420" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS" value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET.653491273" name="Target (-t)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.TARGET" value="ti.targets.arm.elf.M3" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM.870080666" name="Platform (-p)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM" value="ti.platforms.simplelink:CC2650F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW.1631957435" name="Platform (-p)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.PLATFORM_RAW" value="ti.platforms.simplelink:CC2650F128" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE.295250289" name="Build-profile (-r)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.BUILD_PROFILE" value="release" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR.1337126905" name="Compiler tools directory (-c)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.CODEGEN_TOOL_DIR" value="${CG_TOOL_ROOT}" valueType="string"/>
|
||||
<option id="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS.434618420" name="Additional compiler options (--compileOptions)" superClass="com.ti.rtsc.buildDefinitions.XDC_3.16.tool.COMPILE_OPTIONS" value=""${COMPILER_FLAGS}"" valueType="string"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
|
||||
@@ -127,8 +127,29 @@ PIN_Config keyPinsCfg[] =
|
||||
PIN_TERMINATE
|
||||
};
|
||||
|
||||
extern uint16_t EventMask;
|
||||
extern void ext_call_sem();
|
||||
|
||||
|
||||
/** event */
|
||||
#define EVT_ALL 0xFFFF
|
||||
#define EVT_MEM_LED 0x0001 /**< set led event */
|
||||
#define EVT_MEM_LED_OFF 0x0002
|
||||
#define EVT_MEM_DECODE_INS 0x0004
|
||||
#define EVT_PIN_REQST 0x0008
|
||||
#define EVT_MEM_RETURN_DATA 0x0010
|
||||
#define EVT_MEM_CONN_TIMEOUT 0x0020
|
||||
#define EVT_MEM_NOTIFY_HANDLE 0x0040
|
||||
#define EVT_MEM_UART_ROUTINE 0x0080
|
||||
/**
|
||||
* fire a event with [flag].
|
||||
*/
|
||||
#define flag_notify(flag) \
|
||||
do { \
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EventMask |= (uint16_t)(flag); \
|
||||
Hwi_restore(__key); \
|
||||
ext_call_sem(); \
|
||||
} while (0)
|
||||
|
||||
/*********************************************************************
|
||||
* PUBLIC FUNCTIONS
|
||||
@@ -149,7 +170,7 @@ void Board_initKeys(keysPressedCB_t appKeyCB)
|
||||
PIN_registerIntCb(hKeyPins, Board_keyCallback);
|
||||
|
||||
#if defined (BOOSTXL_CC2650MA)
|
||||
PIN_setConfig(hKeyPins, PIN_BM_IRQ, PIN_MEM_INS | PIN_IRQ_NEGEDGE);
|
||||
// PIN_setConfig(hKeyPins, PIN_BM_IRQ, PIN_MEM_INS | PIN_IRQ_NEGEDGE);
|
||||
PIN_setConfig(hKeyPins, PIN_BM_IRQ, PIN_MEM_REQ | PIN_IRQ_NEGEDGE);
|
||||
#elif defined (CC2650_LAUNCHXL) || defined (CC1350_LAUNCHXL)
|
||||
PIN_setConfig(hKeyPins, PIN_BM_IRQ, Board_BTN1 | PIN_IRQ_NEGEDGE);
|
||||
@@ -185,21 +206,19 @@ static void Board_keyCallback(PIN_Handle hPin, PIN_Id pinId)
|
||||
// PIN_setOutputValue(hKeyPins, PIN_MEM_TEST, test_pin_state);
|
||||
// test_pin_state = ~test_pin_state;
|
||||
#if defined (BOOSTXL_CC2650MA)
|
||||
if ( PIN_getInputValue(PIN_MEM_INS) == 0 &&
|
||||
!procedureInProgress)
|
||||
{
|
||||
// if(KEY_INSTEAD_UART == 1)
|
||||
// {
|
||||
// keysPressed |= KEY_RIGHT;
|
||||
// }
|
||||
// else{
|
||||
keysPressed |= KEY_UART_EN;
|
||||
// }
|
||||
}
|
||||
else if ( PIN_getInputValue(PIN_MEM_REQ) == 0 &&
|
||||
|
||||
extern uint8 ram_sw;
|
||||
extern uint8 notify_handle_done;
|
||||
extern void master_switch_memory();
|
||||
|
||||
if ( PIN_getInputValue(PIN_MEM_REQ) == 0 &&
|
||||
!procedureInProgress)
|
||||
{
|
||||
keysPressed |= KEY_REQ;
|
||||
// keysPressed |= KEY_REQ;
|
||||
flag_notify(EVT_PIN_REQST);
|
||||
|
||||
// if (ram_sw && notify_handle_done) master_switch_memory();
|
||||
// else ram_sw = true;
|
||||
}
|
||||
|
||||
#elif defined (CC2650_LAUNCHXL) || defined (CC1350_LAUNCHXL)
|
||||
|
||||
+281
@@ -0,0 +1,281 @@
|
||||
|
||||
#include "mem_board_central.h"
|
||||
#include "mem_uart.h"
|
||||
#include "mem_central_spi.h"
|
||||
#include "mem_central_handle_notify.h"
|
||||
#include "mem_event.h"
|
||||
#include "util.h"
|
||||
|
||||
#define BLE_CDR_SAMLL_SIZE 10
|
||||
#define BLE_CHAR2_HANDLE 0x0021 // read CIS return data
|
||||
#define BLE_CHAR3_HANDLE 0x0024 // send instruction
|
||||
#define BLE_CHAR4_CONFIG_HANDLE 0x0028 // notify enable: 0100=enable; 0000=disable
|
||||
|
||||
#define RET_INFO_BUF_SIZE 52
|
||||
|
||||
#define CIS_BUFF_PREFIX 3
|
||||
#define CIS_BUFF_SUFFIX 2
|
||||
static uint16_t CIS_length = 10;
|
||||
static char CIS_data[50];
|
||||
|
||||
static void mem_central_event();
|
||||
static void mem_connect_device(uint8_t addrType, uint8_t *peerAddr);
|
||||
static void mem_send_ins(uint16_t hadnle, uint8_t *value);
|
||||
static void mem_read_data_and_return();
|
||||
static void mem_central_get_cis(uint8_t handle);
|
||||
static void mem_connection_timeout();
|
||||
|
||||
// Application states
|
||||
typedef enum
|
||||
{
|
||||
BLE_STATE_IDLE,
|
||||
BLE_STATE_BROWSING,
|
||||
BLE_STATE_CONNECTING,
|
||||
BLE_STATE_CONNECTED,
|
||||
BLE_STATE_DISCOVERED,
|
||||
BLE_STATE_DISCONNECTING
|
||||
} bleState_t;
|
||||
extern bleState_t state;
|
||||
|
||||
void MemBoard_init(void){
|
||||
mem_UART_init();
|
||||
master_spi_open();
|
||||
central_mem_init();
|
||||
central_reset();
|
||||
|
||||
flag_enable(EVT_MEM_UART_ROUTINE);
|
||||
}
|
||||
|
||||
/**
|
||||
* system event handle. It go through [EVENT_TABLE] and invoke event callback
|
||||
* if event_mask bits set.
|
||||
*/
|
||||
void mem_event_handle() {
|
||||
for (EventTableEntry *entry = EVENT_TABLE; EventMask && entry->event_mask; entry++) {
|
||||
if (entry->event_callback && flag_mask(entry->event_mask)) {
|
||||
entry->event_callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mem_central_event() {
|
||||
if(flag_mask(EVT_MEM_NOTIFY_HANDLE)){
|
||||
flag_disable(EVT_MEM_NOTIFY_HANDLE);
|
||||
notify_handle_done = false;
|
||||
central_handle_notify();
|
||||
}
|
||||
|
||||
if (flag_mask(EVT_PIN_REQST)){
|
||||
flag_disable(EVT_PIN_REQST);
|
||||
|
||||
// spi idle
|
||||
if (notify_handle_done){
|
||||
master_switch_memory();
|
||||
}
|
||||
// spi busy
|
||||
else{
|
||||
ram_sw = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_UART_ROUTINE)){
|
||||
flag_disable(EVT_MEM_UART_ROUTINE);
|
||||
mem_uart_routine();
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_INS_SCAN)){
|
||||
flag_disable(EVT_MEM_INS_SCAN);
|
||||
SimpleBLECentral_discoverDevices();
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_INS_CONNECT)){
|
||||
flag_disable(EVT_MEM_INS_CONNECT);
|
||||
mem_connect_device(store_rxBuf[2], store_rxBuf+3);
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_INS_WRITE)){
|
||||
flag_disable(EVT_MEM_INS_WRITE);
|
||||
if(state == BLE_STATE_CONNECTED){
|
||||
// selectedMenuItem should be MENU_ITEM_READ_WRITE
|
||||
// This is done by SimpleBLECentral_processRoleEvent() in the case "GAP_LINK_ESTABLISHED_EVENT"
|
||||
mem_send_ins(store_rxBuf[2], store_rxBuf+3);
|
||||
}
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_INS_READ)){
|
||||
flag_disable(EVT_MEM_INS_READ);
|
||||
if(state == BLE_STATE_CONNECTED){
|
||||
mem_central_get_cis(store_rxBuf[2]);
|
||||
}
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_INS_DISCONNECT)){
|
||||
flag_disable(EVT_MEM_INS_DISCONNECT);
|
||||
GAPCentralRole_TerminateLink(connHandle);
|
||||
state = BLE_STATE_DISCONNECTING;
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_RETURN_DATA)){
|
||||
flag_disable(EVT_MEM_RETURN_DATA);
|
||||
mem_read_data_and_return();
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_CONN_TIMEOUT)){
|
||||
flag_disable(EVT_MEM_CONN_TIMEOUT);
|
||||
mem_connection_timeout();
|
||||
}
|
||||
}
|
||||
|
||||
static EventTableEntry EVENT_TABLE[] = { //
|
||||
{EVT_ALL, &mem_central_event},
|
||||
|
||||
// terminated
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static void mem_connect_device(uint8_t addrType, uint8_t *peerAddr) {
|
||||
|
||||
uint8_t Addr[B_ADDR_LEN];
|
||||
|
||||
for(int i=0 ; i<B_ADDR_LEN ; i++){
|
||||
Addr[5-i] = *(peerAddr+i);
|
||||
}
|
||||
|
||||
// UART_write(uart_handle, Addr, 6);
|
||||
|
||||
state = BLE_STATE_CONNECTING;
|
||||
|
||||
Util_startClock(&connectingClock);
|
||||
|
||||
extern bStatus_t GAPCentralRole_EstablishLink(uint8_t highDutyCycle, uint8_t whiteList,
|
||||
uint8_t addrTypePeer, uint8_t *peerAddr);
|
||||
// TRUE to use high scan duty cycle when creating link
|
||||
#define DEFAULT_LINK_HIGH_DUTY_CYCLE FALSE
|
||||
// TRUE to use white list when creating link
|
||||
#define DEFAULT_LINK_WHITE_LIST FALSE
|
||||
|
||||
GAPCentralRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
|
||||
DEFAULT_LINK_WHITE_LIST,
|
||||
addrType, Addr);
|
||||
}
|
||||
|
||||
static void mem_send_ins(uint16_t handle, uint8_t *value){
|
||||
|
||||
if (state == BLE_STATE_CONNECTED &&
|
||||
charHdl != 0 &&
|
||||
procedureInProgress == FALSE)
|
||||
{
|
||||
uint8_t ACK[15] = {0}; //ack success
|
||||
ACK[1] = handle;
|
||||
ACK[2] = value[0];
|
||||
ACK[3] = value[1];
|
||||
UART_write(uart_handle, ACK, 4);
|
||||
uint8_t status;
|
||||
|
||||
// Do a read or write as long as no other read or write is in progress
|
||||
// Do a write
|
||||
attWriteReq_t req;
|
||||
|
||||
// enable notify
|
||||
req.handle = handle;
|
||||
req.len = 19;
|
||||
if(handle == BLE_CHAR3_HANDLE){
|
||||
// RIS, VIS, CIS instruction
|
||||
req.len = 19;
|
||||
}
|
||||
else if(handle == BLE_CHAR4_CONFIG_HANDLE){
|
||||
// notify enable
|
||||
req.len = 2;
|
||||
}
|
||||
else{
|
||||
uint8_t error_handle[13] = "error handle";
|
||||
UART_write(uart_handle, error_handle, 13);
|
||||
status = bleMemAllocError;
|
||||
return;
|
||||
}
|
||||
|
||||
req.pValue = GATT_bm_alloc(connHandle, ATT_WRITE_REQ, req.len, NULL);
|
||||
if ( req.pValue != NULL )
|
||||
{
|
||||
// send instruction
|
||||
for(int i=0 ; i < req.len ; i++){
|
||||
req.pValue[i] = *(value+i);
|
||||
}
|
||||
req.sig = 0;
|
||||
req.cmd = 0;
|
||||
status = GATT_WriteCharValue(connHandle, &req, selfEntity);
|
||||
|
||||
// uncomment GATT_WriteLongCharValue if we need a long instruction;
|
||||
// However, there are some error to fix when using GATT_WriteLongCharValue
|
||||
// status = GATT_WriteLongCharValue(connHandle, &req, selfEntity);
|
||||
|
||||
if ( status != SUCCESS )
|
||||
{
|
||||
GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t error_msg[10] = "err";
|
||||
error_msg[3] = req.handle;
|
||||
error_msg[4] = *value;
|
||||
error_msg[5] = *(value+1);
|
||||
error_msg[6] = *(value+2);
|
||||
error_msg[7] = *(value+3);
|
||||
error_msg[8] = *(value+4);
|
||||
error_msg[9] = *(value+5);
|
||||
UART_write(uart_handle, error_msg, 10);
|
||||
status = bleMemAllocError;
|
||||
}
|
||||
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
procedureInProgress = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mem_central_get_cis(uint8_t handle){
|
||||
// get the actual CIS data from simple_central.c > SimpleBLECentral_processGATTMsg()
|
||||
if (state == BLE_STATE_CONNECTED &&
|
||||
charHdl != 0 &&
|
||||
procedureInProgress == FALSE)
|
||||
{
|
||||
uint8_t status;
|
||||
|
||||
// send read command
|
||||
attReadReq_t read_cis_req;
|
||||
read_cis_req.handle = handle;
|
||||
status = GATT_ReadCharValue(connHandle, &read_cis_req, selfEntity);
|
||||
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
procedureInProgress = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mem_read_data_and_return(){
|
||||
// CIS_BUFF_SUFFIX = {0,0}
|
||||
|
||||
// add prefix and suffix to sync communication
|
||||
uint16_t ret_length;
|
||||
|
||||
if (CIS_length < 22) {
|
||||
ret_length = 20;
|
||||
} else {
|
||||
ret_length = CIS_length - 2;
|
||||
}
|
||||
|
||||
CIS_data[0] = 4;
|
||||
CIS_data[1] = 0;
|
||||
CIS_data[2] = ret_length;
|
||||
CIS_data[CIS_length++] = 0;
|
||||
CIS_data[CIS_length++] = 0;
|
||||
|
||||
UART_write(uart_handle, CIS_data, ret_length + 3);
|
||||
}
|
||||
|
||||
static void mem_connection_timeout(){
|
||||
|
||||
}
|
||||
+5
-471
@@ -1,4 +1,7 @@
|
||||
|
||||
#ifndef MEM_BOARD_CENTRAL
|
||||
#define MEM_BOARD_CENTRAL
|
||||
|
||||
/*
|
||||
* Reference web page https://github.com/ti-simplelink/ble_examples/tree/ble_examples-2.2
|
||||
* http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/2_20_00_06/
|
||||
@@ -6,478 +9,9 @@
|
||||
* doxygen/html/_u_a_r_t_c_c26_x_x_8h.html
|
||||
*/
|
||||
|
||||
#ifndef MEM_BOARD_CENTRAL
|
||||
#define MEM_BOARD_CENTRAL
|
||||
|
||||
#include <ti/sysbios/knl/Clock.h>
|
||||
#include "mem_central_pin.h"
|
||||
#include "mem_uart.h"
|
||||
#include "mem_event.h"
|
||||
#include "mem_central_handle_notify.h"
|
||||
|
||||
//#include "uart_printf.h"
|
||||
//#include <xdc/runtime/System.h>
|
||||
|
||||
#define BLE_CDR_SAMLL_SIZE 10
|
||||
#define BLE_CHAR2_HANDLE 0x0021 // read CIS return data
|
||||
#define BLE_CHAR3_HANDLE 0x0024 // send instruction
|
||||
#define BLE_CHAR4_CONFIG_HANDLE 0x0028 // notify enable: 0100=enable; 0000=disable
|
||||
|
||||
#define RET_INFO_BUF_SIZE 52
|
||||
|
||||
#define CIS_BUFF_PREFIX 3
|
||||
#define CIS_BUFF_SUFFIX 2
|
||||
static uint16_t CIS_length = 10;
|
||||
static char CIS_data[50];
|
||||
|
||||
static void mem_central_event();
|
||||
static void mem_recv_ins();
|
||||
static void mem_connect_device(uint8_t addrType, uint8_t *peerAddr);
|
||||
static void mem_send_ins(uint16_t hadnle, uint8_t *value);
|
||||
static void mem_read_data_and_return();
|
||||
static void mem_central_get_cis(uint8_t handle);
|
||||
static void mem_connection_timeout();
|
||||
|
||||
static void MemBoard_init(void){
|
||||
mem_UART_init();
|
||||
master_spi_open();
|
||||
central_mem_init();
|
||||
central_reset();
|
||||
|
||||
// uint8_t txBuf[] = "Simple Central memory board MA\n\r"; // Transmit buffer
|
||||
// UART_txBuf = txBuf;
|
||||
// UART_write(uart_handle, txBuf, sizeof(txBuf));
|
||||
|
||||
|
||||
// mem_UART_display(txBuf);
|
||||
}
|
||||
|
||||
static EventTableEntry EVENT_TABLE[] = { //
|
||||
{EVT_ALL, &mem_central_event},
|
||||
|
||||
// terminated
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
/**
|
||||
* system event handle. It go through [EVENT_TABLE] and invoke event callback
|
||||
* if event_mask bits set.
|
||||
*/
|
||||
static void mem_event_handle() {
|
||||
for (EventTableEntry *entry = EVENT_TABLE; EventMask && entry->event_mask; entry++) {
|
||||
if (entry->event_callback && flag_mask(entry->event_mask)) {
|
||||
entry->event_callback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typedef enum{
|
||||
LED_OFF,
|
||||
LED_ON
|
||||
} LED_Status;
|
||||
|
||||
typedef enum{
|
||||
UART_NO_DATA,
|
||||
UART_RECEIVED_DATA
|
||||
} UART_DATA_Status;
|
||||
|
||||
typedef enum{
|
||||
INS_IDLE,
|
||||
INS_RESET,
|
||||
INS_KEY,
|
||||
INS_SCAN,
|
||||
INS_SCAN_RESPONSE,
|
||||
INS_CONNECT,
|
||||
INS_WRITE,
|
||||
INS_READ,
|
||||
INS_DISCONNECT,
|
||||
INS_PREPARE_CONNECT
|
||||
} Control_Ins;
|
||||
|
||||
static LED_Status GLEDStatus = LED_OFF;
|
||||
static UART_DATA_Status UARTStatus = UART_NO_DATA;
|
||||
|
||||
static void mem_central_event() {
|
||||
if (flag_mask(EVT_MEM_LED)) {
|
||||
flag_disable(EVT_MEM_LED);
|
||||
GLEDStatus = LED_ON;
|
||||
// SetMemOutputPIN(Board_GLED, 1);
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_LED_OFF)){
|
||||
flag_disable(EVT_MEM_LED_OFF);
|
||||
GLEDStatus = LED_OFF;
|
||||
// SetMemOutputPIN(Board_GLED, 0);
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_DECODE_INS)){
|
||||
flag_disable(EVT_MEM_DECODE_INS);
|
||||
mem_recv_ins();
|
||||
}
|
||||
|
||||
if (flag_mask(EVT_PIN_REQST)) {
|
||||
flag_disable(EVT_PIN_REQST);
|
||||
master_switch_memory();
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_RETURN_DATA)){
|
||||
flag_disable(EVT_MEM_RETURN_DATA);
|
||||
mem_read_data_and_return();
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_CONN_TIMEOUT)){
|
||||
flag_disable(EVT_MEM_CONN_TIMEOUT);
|
||||
mem_connection_timeout();
|
||||
}
|
||||
|
||||
if(flag_mask(EVT_MEM_NOTIFY_HANDLE)){
|
||||
flag_disable(EVT_MEM_NOTIFY_HANDLE);
|
||||
central_handle_notify();
|
||||
}
|
||||
}
|
||||
|
||||
static Control_Ins ins = INS_IDLE;
|
||||
|
||||
static void mem_recv_ins(){
|
||||
extern uint8_t keysPressed;
|
||||
extern Clock_Struct keyChangeClock;
|
||||
static bool prepare_to_connect = false;
|
||||
|
||||
// if(state == BLE_STATE_CONNECTED){
|
||||
UART_read(uart_handle, UART_rxBuf, 21);
|
||||
// }
|
||||
// else if(prepare_to_connect){
|
||||
// prepare_to_connect = false;
|
||||
// UART_read(uart_handle, UART_rxBuf, 8);
|
||||
// }
|
||||
// else{
|
||||
// UART_read(uart_handle, UART_rxBuf, 3);
|
||||
// }
|
||||
|
||||
switch(UART_rxBuf[0]){
|
||||
case INS_IDLE:{
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_RESET:{
|
||||
state = BLE_STATE_IDLE;
|
||||
connHandle = GAP_CONNHANDLE_INIT;
|
||||
discState = BLE_DISC_STATE_IDLE;
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_KEY:{
|
||||
if(UART_rxBuf[1] == 1){
|
||||
keysPressed = KEY_LEFT;
|
||||
Util_startClock(&keyChangeClock);
|
||||
}
|
||||
else if(UART_rxBuf[1] == 2){
|
||||
keysPressed = KEY_RIGHT;
|
||||
Util_startClock(&keyChangeClock);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_SCAN:{
|
||||
SimpleBLECentral_discoverDevices();
|
||||
break;
|
||||
}
|
||||
|
||||
// instruction format:
|
||||
// ins[0]: INS_SCAN_RESPONSE = 0x04
|
||||
// ins[1]: scan_response (device number)=0, a certain device = device_id
|
||||
// ins[2]: attr_length=0, e.g. len(addr)=6, len(company_code)=4, len(localName)=20
|
||||
// addr=1, localName=2, company_code=3, version_info=4, battery_info=5
|
||||
case INS_SCAN_RESPONSE:{
|
||||
uint8_t device_number;
|
||||
uint8_t ret_info_buf[RET_INFO_BUF_SIZE];
|
||||
uint8_t attr_length[5] = {sizeof(devList[device_number].addr),
|
||||
sizeof(devList[device_number].localName),
|
||||
LEN_COMPANY_CODE,
|
||||
LEN_VERSION_INFO,
|
||||
LEN_BATTERY_INFO};
|
||||
|
||||
// report scan device number
|
||||
// using preamble here, ensure sync with controller
|
||||
// The chosen preamble is a 32-bits M-sequence: 0b1010001100101001 = 0xA329
|
||||
if(UART_rxBuf[1] == 0){
|
||||
|
||||
}
|
||||
|
||||
// report a certain device information
|
||||
else{
|
||||
device_number = UART_rxBuf[1] - 1;
|
||||
if(device_number >= scanRes){
|
||||
char illegal_id[20] = "illegal device id";
|
||||
UART_write(uart_handle, illegal_id, 20);
|
||||
}
|
||||
|
||||
if(UART_rxBuf[2] == 0){
|
||||
UART_write(uart_handle, attr_length, 5);
|
||||
}
|
||||
else if(UART_rxBuf[2] == 1){
|
||||
// uint8_t scan_addr[20] = Util_convertBdAddr2Str(devList[device_number].addr);
|
||||
UART_write(uart_handle, devList[device_number].addr, attr_length[0]);
|
||||
}
|
||||
else if(UART_rxBuf[2] == 2){
|
||||
// uint8_t scan_name[20] = "test_device_name";
|
||||
// UART_write(uart_handle, scan_name, 20);
|
||||
UART_write(uart_handle, devList[device_number].localName, attr_length[1]);
|
||||
// UART_write(uart_handle, LocalName[device_number], attr_length[1]);
|
||||
}
|
||||
else if(UART_rxBuf[2] == 3){
|
||||
UART_write(uart_handle, devList[device_number].company_code, attr_length[2]);
|
||||
}
|
||||
else if(UART_rxBuf[2] == 4){
|
||||
UART_write(uart_handle, devList[device_number].version_info, attr_length[3]);
|
||||
}
|
||||
else if(UART_rxBuf[2] == 5){
|
||||
UART_write(uart_handle, devList[device_number].battery_info, attr_length[4]);
|
||||
}
|
||||
else if(UART_rxBuf[2] == 6){
|
||||
// return all information in a single UART transmit
|
||||
uint8_t index = 0;
|
||||
ret_info_buf[index ++] = 0;
|
||||
ret_info_buf[index ++] = 0;
|
||||
ret_info_buf[index ++] = 0;
|
||||
|
||||
// B_ADDR_LEN = 6
|
||||
for(int i=0 ; i < B_ADDR_LEN ; i++){
|
||||
ret_info_buf[index ++] = devList[device_number].addr[i];
|
||||
}
|
||||
|
||||
ret_info_buf[index ++] = devList[device_number].addrType;
|
||||
|
||||
for(int i=0 ; i < attr_length[1] ; i++){
|
||||
ret_info_buf[index ++] = devList[device_number].localName[i];
|
||||
}
|
||||
|
||||
for(int i=0 ; i < attr_length[2] ; i++){
|
||||
ret_info_buf[index ++] = devList[device_number].company_code[i];
|
||||
}
|
||||
|
||||
for(int i=0 ; i < attr_length[3] ; i++){
|
||||
ret_info_buf[index ++] = devList[device_number].version_info[i];
|
||||
}
|
||||
|
||||
for(int i=0 ; i < attr_length[4] ; i++){
|
||||
ret_info_buf[index ++] = devList[device_number].battery_info[i];
|
||||
}
|
||||
|
||||
for( ; index < RET_INFO_BUF_SIZE ; index++){
|
||||
ret_info_buf[index] = 0;
|
||||
}
|
||||
|
||||
UART_write(uart_handle, ret_info_buf, RET_INFO_BUF_SIZE);
|
||||
}
|
||||
|
||||
else{
|
||||
return;
|
||||
}
|
||||
state = BLE_STATE_BROWSING;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_PREPARE_CONNECT:{
|
||||
prepare_to_connect = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_CONNECT:{
|
||||
// uint8_t *p;
|
||||
// p = UART_rxBuf+2;
|
||||
// char ACK[15] = {9,9,9 , p[0], p[1], p[2], p[3], p[4], p[5]};
|
||||
// UART_write(uart_handle, ACK, 15);
|
||||
mem_connect_device(UART_rxBuf[1], UART_rxBuf+2);
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_WRITE:{
|
||||
if(state == BLE_STATE_CONNECTED){
|
||||
// selectedMenuItem should be MENU_ITEM_READ_WRITE
|
||||
// This is done by SimpleBLECentral_processRoleEvent() in the case "GAP_LINK_ESTABLISHED_EVENT"
|
||||
char ACK[15] = {4,0,1,1}; //ack success
|
||||
UART_write(uart_handle, ACK, 4);
|
||||
mem_send_ins(UART_rxBuf[1], UART_rxBuf+2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_READ:{
|
||||
if(state == BLE_STATE_CONNECTED){
|
||||
mem_central_get_cis(UART_rxBuf[1]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case INS_DISCONNECT:{
|
||||
// clear scan result
|
||||
GAPCentralRole_TerminateLink(connHandle);
|
||||
state = BLE_STATE_DISCONNECTING;
|
||||
|
||||
|
||||
// scanRes = 0;
|
||||
// memset(devList, NULL, sizeof(devList[0])*DEFAULT_MAX_SCAN_RES);
|
||||
//
|
||||
// state = BLE_STATE_IDLE;
|
||||
// connHandle = GAP_CONNHANDLE_INIT;
|
||||
// discState = BLE_DISC_STATE_IDLE;
|
||||
// charHdl = 0;
|
||||
// procedureInProgress = FALSE;
|
||||
|
||||
// SimpleBLECentral_CancelRssi(pEvent->linkTerminate.connectionHandle);
|
||||
// selectedMenuItem = MENU_ITEM_CONN_PARAM_UPDATE;
|
||||
break;
|
||||
}
|
||||
|
||||
default:{
|
||||
uint8_t error_msg[35] = "error";
|
||||
error_msg[6] = state;
|
||||
error_msg[7] = 0xFF;
|
||||
for(int i = 0 ; i < UART_BUFF_SIZE ; i++){
|
||||
error_msg[8+i] = UART_rxBuf[i];
|
||||
}
|
||||
UART_write(uart_handle, error_msg, 35);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mem_connect_device(uint8_t addrType, uint8_t *peerAddr) {
|
||||
|
||||
uint8_t Addr[B_ADDR_LEN];
|
||||
|
||||
for(int i=0 ; i<B_ADDR_LEN ; i++){
|
||||
Addr[5-i] = *(peerAddr+i);
|
||||
}
|
||||
|
||||
// char ACK[15] = {3, 3, 3, 4, 0, 6, Addr[5], Addr[4], Addr[3], Addr[2], Addr[1], Addr[0]};
|
||||
// UART_write(uart_handle, ACK, 15);
|
||||
|
||||
state = BLE_STATE_CONNECTING;
|
||||
|
||||
Util_startClock(&connectingClock);
|
||||
|
||||
GAPCentralRole_EstablishLink(DEFAULT_LINK_HIGH_DUTY_CYCLE,
|
||||
DEFAULT_LINK_WHITE_LIST,
|
||||
addrType, Addr);
|
||||
}
|
||||
|
||||
static void mem_send_ins(uint16_t handle, uint8_t *value){
|
||||
|
||||
if (state == BLE_STATE_CONNECTED &&
|
||||
charHdl != 0 &&
|
||||
procedureInProgress == FALSE)
|
||||
{
|
||||
uint8_t status;
|
||||
|
||||
// Do a read or write as long as no other read or write is in progress
|
||||
// Do a write
|
||||
attWriteReq_t req;
|
||||
|
||||
// enable notify
|
||||
req.handle = handle;
|
||||
req.len = 19;
|
||||
if(handle == BLE_CHAR3_HANDLE){
|
||||
// RIS, VIS, CIS instruction
|
||||
req.len = 19;
|
||||
}
|
||||
else if(handle == BLE_CHAR4_CONFIG_HANDLE){
|
||||
// notify enable
|
||||
req.len = 2;
|
||||
}
|
||||
else{
|
||||
uint8_t error_handle[13] = "error handle";
|
||||
UART_write(uart_handle, error_handle, 13);
|
||||
status = bleMemAllocError;
|
||||
return;
|
||||
}
|
||||
|
||||
req.pValue = GATT_bm_alloc(connHandle, ATT_WRITE_REQ, req.len, NULL);
|
||||
if ( req.pValue != NULL )
|
||||
{
|
||||
// send instruction
|
||||
for(int i=0 ; i < req.len ; i++){
|
||||
req.pValue[i] = *(value+i);
|
||||
}
|
||||
req.sig = 0;
|
||||
req.cmd = 0;
|
||||
status = GATT_WriteCharValue(connHandle, &req, selfEntity);
|
||||
|
||||
// uncomment GATT_WriteLongCharValue if we need a long instruction;
|
||||
// However, there are some error to fix when using GATT_WriteLongCharValue
|
||||
// status = GATT_WriteLongCharValue(connHandle, &req, selfEntity);
|
||||
|
||||
if ( status != SUCCESS )
|
||||
{
|
||||
GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t error_msg[10] = "err";
|
||||
error_msg[3] = req.handle;
|
||||
error_msg[4] = *value;
|
||||
error_msg[5] = *(value+1);
|
||||
error_msg[6] = *(value+2);
|
||||
error_msg[7] = *(value+3);
|
||||
error_msg[8] = *(value+4);
|
||||
error_msg[9] = *(value+5);
|
||||
UART_write(uart_handle, error_msg, 10);
|
||||
status = bleMemAllocError;
|
||||
}
|
||||
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
procedureInProgress = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mem_central_get_cis(uint8_t handle){
|
||||
// get the actual CIS data from simple_central.c > SimpleBLECentral_processGATTMsg()
|
||||
if (state == BLE_STATE_CONNECTED &&
|
||||
charHdl != 0 &&
|
||||
procedureInProgress == FALSE)
|
||||
{
|
||||
uint8_t status;
|
||||
|
||||
// send read command
|
||||
attReadReq_t read_cis_req;
|
||||
read_cis_req.handle = handle;
|
||||
status = GATT_ReadCharValue(connHandle, &read_cis_req, selfEntity);
|
||||
|
||||
if (status == SUCCESS)
|
||||
{
|
||||
procedureInProgress = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void mem_read_data_and_return(){
|
||||
// CIS_BUFF_SUFFIX = {0,0}
|
||||
|
||||
// add prefix and suffix to sync communication
|
||||
uint16_t ret_length;
|
||||
|
||||
if (CIS_length < 22) {
|
||||
ret_length = 20;
|
||||
} else {
|
||||
ret_length = CIS_length - 2;
|
||||
}
|
||||
|
||||
CIS_data[0] = 4;
|
||||
CIS_data[1] = 0;
|
||||
CIS_data[2] = ret_length;
|
||||
CIS_data[CIS_length++] = 0;
|
||||
CIS_data[CIS_length++] = 0;
|
||||
|
||||
UART_write(uart_handle, CIS_data, ret_length + 3);
|
||||
}
|
||||
|
||||
static void mem_connection_timeout(){
|
||||
|
||||
}
|
||||
void MemBoard_init(void);
|
||||
void mem_event_handle();
|
||||
|
||||
#endif
|
||||
|
||||
+13
-7
@@ -13,7 +13,7 @@
|
||||
=======================*/
|
||||
|
||||
#define MEM_BUFFER_SIZE SPI_TX_BUFFER_SIZE
|
||||
#define MEM_SWITCH_THRESHOLD 0x0800
|
||||
#define MEM_SWITCH_THRESHOLD 0x1C00 //max:7K bytes
|
||||
|
||||
#define MSM_REG_WRITE 0x01
|
||||
#define MEM_INS_WRITE 0x02
|
||||
@@ -25,6 +25,8 @@
|
||||
static uint8 mem_sel = 0;
|
||||
static uint16_t not_counter = 0; // writing counter, increase when notify
|
||||
static uint16_t not_offset = 0; // writing pointer, current not writing index
|
||||
uint8 ram_sw = true;
|
||||
uint8 notify_handle_done = true;
|
||||
|
||||
static uint16_t notify_length = 0;
|
||||
static uint8_t notify_value[250] = {0};
|
||||
@@ -65,7 +67,7 @@ static void central_reset(){
|
||||
// selectedMenuItem = MENU_ITEM_CONN_PARAM_UPDATE;
|
||||
}
|
||||
|
||||
static void master_switch_memory();
|
||||
void master_switch_memory();
|
||||
|
||||
//static void central_handle_notify(uint8_t notify_length, uint8_t *notify_value){
|
||||
static uint8_t notify_counter = 0;
|
||||
@@ -102,18 +104,22 @@ static void central_handle_notify(){
|
||||
unsafe_memcpy(p, notify_value, notify_length); // data content
|
||||
|
||||
central_spi_send(p - master_tx_buffer);
|
||||
notify_handle_done = true;
|
||||
|
||||
if (central_pi3_not_busy() && ((not_offset >= MEM_SWITCH_THRESHOLD) || flag_mask(EVT_PIN_REQST))) {
|
||||
// if (central_pi3_not_busy() && (not_offset >= MEM_SWITCH_THRESHOLD)) {
|
||||
flag_disable(EVT_PIN_REQST);
|
||||
// if (central_pi3_not_busy() && ((not_offset >= MEM_SWITCH_THRESHOLD) || flag_mask(EVT_PIN_REQST))) {
|
||||
if (ram_sw){
|
||||
master_switch_memory();
|
||||
}
|
||||
else if (central_pi3_not_busy() && (not_offset >= MEM_SWITCH_THRESHOLD)) {
|
||||
// flag_disable(EVT_PIN_REQST);
|
||||
master_switch_memory();
|
||||
}
|
||||
|
||||
central_pin_output(Board_GLED, not_counter & 0x10);
|
||||
// central_pin_output(Board_GLED, not_counter & 0x10);
|
||||
|
||||
}
|
||||
|
||||
static void master_switch_memory() {
|
||||
void master_switch_memory() {
|
||||
uint16_t cnt_offset = not_offset;
|
||||
not_offset = MEM_META_LENGTH;
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#ifndef MEM_EVENT_H
|
||||
#define MEM_EVENT_H
|
||||
|
||||
extern void ext_call_sem();
|
||||
|
||||
/**
|
||||
* test event [flag] has been enabled.
|
||||
*/
|
||||
@@ -35,7 +37,7 @@
|
||||
uint8 __key = Hwi_disable(); \
|
||||
EventMask |= (uint16_t)(flag); \
|
||||
Hwi_restore(__key); \
|
||||
Semaphore_post(sem); \
|
||||
ext_call_sem(); \
|
||||
} while (0)
|
||||
|
||||
/** event */
|
||||
@@ -47,8 +49,9 @@
|
||||
#define EVT_MEM_RETURN_DATA 0x0010
|
||||
#define EVT_MEM_CONN_TIMEOUT 0x0020
|
||||
#define EVT_MEM_NOTIFY_HANDLE 0x0040
|
||||
#define EVT_MEM_UART_ROUTINE 0x0080
|
||||
|
||||
static uint16_t EventMask = 0;
|
||||
uint16_t EventMask = 0;
|
||||
|
||||
/**
|
||||
* event table entry.
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
|
||||
#include "mem_uart.h"
|
||||
#include "mem_event.h"
|
||||
|
||||
#define IS_EVT_MEM_DECODE_INS(_b) ((_b)[0] == INS_SCAN || \
|
||||
(_b)[0] == INS_CONNECT || \
|
||||
(_b)[0] == INS_WRITE || \
|
||||
(_b)[0] == INS_READ || \
|
||||
(_b)[0] == INS_DISCONNECT)
|
||||
|
||||
#define IS_FINAL_RX_BYTE(_i, _l) (((_i) == (_l) + 1) && (store_rxBuf[(_l) + 1] == 0xF1))
|
||||
|
||||
static UART_Handle uart_handle;
|
||||
static UART_Params params;
|
||||
|
||||
static uint8_t UART_txBuf[UART_BUFF_SIZE];
|
||||
static uint8_t UART_rxBuf[UART_BUFF_SIZE];
|
||||
|
||||
static uint8_t store_rxBuf[UART_BUFF_SIZE];
|
||||
|
||||
static void mem_recv_uart();
|
||||
|
||||
// Callback function
|
||||
static void readCallback(UART_Handle handle, void *rxBuf, size_t size)
|
||||
{
|
||||
// static uint8_t test_pin_state = 0;
|
||||
// PIN_setOutputValue(hKeyPins, PIN_MEM_TEST, test_pin_state);
|
||||
// test_pin_state = ~test_pin_state;
|
||||
|
||||
uint8_t *uart_rxBuf = (uint8_t *)rxBuf;
|
||||
static int index = 0;
|
||||
static int length = 0;
|
||||
static bool rx_fi = false;
|
||||
|
||||
if (rx_fi) {
|
||||
memset(store_rxBuf, 0, UART_BUFF_SIZE);
|
||||
rx_fi = false;
|
||||
}
|
||||
|
||||
if (IS_EVT_MEM_DECODE_INS(uart_rxBuf) && index == 0) {
|
||||
store_rxBuf[0] = uart_rxBuf[0];
|
||||
index++;
|
||||
} else if (IS_EVT_MEM_DECODE_INS(store_rxBuf) && index == 1) {
|
||||
store_rxBuf[1] = uart_rxBuf[0];
|
||||
length = uart_rxBuf[0];
|
||||
index++;
|
||||
} else if (IS_EVT_MEM_DECODE_INS(store_rxBuf) && index > 1) {
|
||||
store_rxBuf[index] = uart_rxBuf[0];
|
||||
if (index >= length + 2) { //num = 0 when over length
|
||||
store_rxBuf[index] = 0;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
|
||||
//0xF1 = 241
|
||||
if(index > 1 && store_rxBuf[0] == INS_SCAN && store_rxBuf[length + 1] == 0xF1 ) {
|
||||
index = 0;
|
||||
length = 0;
|
||||
flag_notify(EVT_MEM_INS_SCAN);
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
rx_fi = true;
|
||||
return;
|
||||
} else if (index > 1 && store_rxBuf[0] == INS_CONNECT && store_rxBuf[length + 1] == 0xF1) {
|
||||
index = 0;
|
||||
length = 0;
|
||||
flag_notify(EVT_MEM_INS_CONNECT);
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
rx_fi = true;
|
||||
return;
|
||||
} else if (index > 1 && store_rxBuf[0] == INS_WRITE && store_rxBuf[length + 1] == 0xF1) {
|
||||
index = 0;
|
||||
length = 0;
|
||||
flag_notify(EVT_MEM_INS_WRITE);
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
rx_fi = true;
|
||||
return;
|
||||
} else if (index > 1 && store_rxBuf[0] == INS_READ && store_rxBuf[length + 1] == 0xF1) {
|
||||
index = 0;
|
||||
length = 0;
|
||||
flag_notify(EVT_MEM_INS_READ);
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
rx_fi = true;
|
||||
return;
|
||||
} else if (index > 1 && store_rxBuf[0] == INS_DISCONNECT && store_rxBuf[length + 1] == 0xF1) {
|
||||
flag_notify(EVT_MEM_INS_DISCONNECT);
|
||||
index = 0;
|
||||
length = 0;
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
rx_fi = true;
|
||||
return;
|
||||
}
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
}
|
||||
|
||||
void mem_UART_init(){
|
||||
|
||||
uint32_t timeoutUs = 5000; // 5ms timeout, default timeout is no timeout (BIOS_WAIT_FOREVER)
|
||||
|
||||
// Init UART and specify non-default parameters
|
||||
UART_Params_init(¶ms);
|
||||
params.baudRate = 115200;
|
||||
params.writeDataMode = UART_DATA_BINARY;
|
||||
params.readMode = UART_MODE_CALLBACK;
|
||||
params.readDataMode = UART_DATA_BINARY;
|
||||
params.readCallback = readCallback;
|
||||
// params.readTimeout = timeoutUs / Clock_tickPeriod; // Default tick period is 10us
|
||||
// params.readTimeout = ti_sysbios_BIOS_WAIT_FOREVER;
|
||||
|
||||
// Open the UART and do the read
|
||||
uart_handle = UART_open(Board_UART, ¶ms);
|
||||
// int rxBytes = UART_read(uart_handle, rxBuf, 100);
|
||||
return;
|
||||
}
|
||||
|
||||
int mem_uart_read_byte(){
|
||||
return UART_read(uart_handle, UART_rxBuf, 1)
|
||||
}
|
||||
|
||||
void mem_get_uart_ins(uint8_t* ins){
|
||||
ins = UART_rxBuf;
|
||||
}
|
||||
@@ -10,141 +10,44 @@
|
||||
|
||||
#include <ti/drivers/UART.h>
|
||||
#include <ti/drivers/uart/UARTCC26XX.h>
|
||||
#include "mem_event.h"
|
||||
|
||||
#define UART_BUFF_SIZE 25
|
||||
|
||||
static UART_Handle uart_handle;
|
||||
static UART_Params params;
|
||||
typedef enum{
|
||||
INS_IDLE,
|
||||
INS_RESET,
|
||||
INS_KEY,
|
||||
INS_SCAN,
|
||||
INS_SCAN_RESPONSE,
|
||||
INS_CONNECT,
|
||||
INS_WRITE,
|
||||
INS_READ,
|
||||
INS_DISCONNECT,
|
||||
INS_PREPARE_CONNECT,
|
||||
} Control_Ins;
|
||||
|
||||
static uint8_t UART_txBuf[UART_BUFF_SIZE];
|
||||
static uint8_t UART_rxBuf[UART_BUFF_SIZE];
|
||||
|
||||
static void mem_recv_uart();
|
||||
|
||||
static void mem_UART_init(){
|
||||
|
||||
uint32_t timeoutUs = 5000; // 5ms timeout, default timeout is no timeout (BIOS_WAIT_FOREVER)
|
||||
|
||||
// Init UART and specify non-default parameters
|
||||
UART_Params_init(¶ms);
|
||||
params.baudRate = 115200;
|
||||
params.writeDataMode = UART_DATA_BINARY;
|
||||
// params.readMode = UART_MODE_CALLBACK;
|
||||
// params.readDataMode = UART_DATA_BINARY;
|
||||
// params.readCallback = readCallback;
|
||||
// params.readTimeout = timeoutUs / Clock_tickPeriod; // Default tick period is 10us
|
||||
params.readTimeout = ti_sysbios_BIOS_WAIT_FOREVER;
|
||||
|
||||
// Open the UART and do the read
|
||||
uart_handle = UART_open(Board_UART, ¶ms);
|
||||
// int rxBytes = UART_read(uart_handle, rxBuf, 100);
|
||||
return;
|
||||
}
|
||||
|
||||
static void mem_UART_display(char *str){
|
||||
|
||||
// calculate string size
|
||||
uint8_t str_size;
|
||||
for(str_size=0 ; *(str+str_size)!='\0' && str_size < 10; str_size++){
|
||||
// do nothing
|
||||
}
|
||||
str_size ++;
|
||||
|
||||
char *out_str = malloc((str_size) * sizeof(char));
|
||||
|
||||
// char *out_str = str;
|
||||
for(int i=0 ; i<str_size ; i++){
|
||||
*(out_str+i) = *(str+i);
|
||||
}
|
||||
|
||||
UART_write(uart_handle, out_str, str_size);
|
||||
free(out_str);
|
||||
out_str = NULL;
|
||||
}
|
||||
|
||||
static void mem_UART_clear_screen(){
|
||||
uint8_t cls[] = "\033[2J";
|
||||
|
||||
UART_write(uart_handle, cls, sizeof(cls));
|
||||
}
|
||||
|
||||
static void mem_UART_display_u8(uint8_t *str, uint8_t len){
|
||||
// calculate string size
|
||||
uint8_t str_size;
|
||||
// for(str_size=0 ; *(str+str_size)!='\0' && str_size < 400; str_size+=2){
|
||||
// // do nothing
|
||||
// }
|
||||
str_size = 2*len + 1;
|
||||
|
||||
uint8_t *out_str = malloc((str_size) * sizeof(uint8_t));
|
||||
|
||||
for(int i=0 ; i<str_size/2 ; i++){
|
||||
uint8_t MSB = (*(str+i) >> 4) & 0x0F;
|
||||
uint8_t LSB = *(str+i) & 0x0F;
|
||||
if(0 <= MSB && MSB <= 9){
|
||||
*(out_str + 2*i) = MSB + '0';
|
||||
}
|
||||
else if(10 <= MSB && MSB <= 15){
|
||||
*(out_str + 2*i) = MSB - 10 + 'A';
|
||||
}
|
||||
else{
|
||||
*(out_str + 2*i) = 'x';
|
||||
}
|
||||
|
||||
if(0 <= LSB && LSB <= 9){
|
||||
*(out_str + 2*i+1) = LSB + '0';
|
||||
}
|
||||
else if(10 <= LSB && LSB <= 15){
|
||||
*(out_str + 2*i+1) = LSB - 10 + 'A';
|
||||
}
|
||||
else{
|
||||
*(out_str + 2*i+1) = 'x';
|
||||
}
|
||||
}
|
||||
|
||||
UART_write(uart_handle, out_str, str_size);
|
||||
free(out_str);
|
||||
out_str = NULL;
|
||||
}
|
||||
|
||||
static void mem_UART_display_u16(uint16_t u16){
|
||||
// calculate string size
|
||||
uint8_t *out_str = malloc(4 * sizeof(uint8_t));
|
||||
|
||||
uint8_t u8[4];
|
||||
for(int i=0 ; i<4 ; i++){
|
||||
u8[3-i] = (u16 >> (4*i)) & 0x0F;
|
||||
}
|
||||
|
||||
for(int i=0 ; i<4 ; i++){
|
||||
if(0 <= u8[i] && u8[i] <= 9){
|
||||
out_str[i] = u8[i] + '0';
|
||||
}
|
||||
else if(10 <= u8[i] && u8[i] <= 15){
|
||||
out_str[i] = u8[i] - 10 + 'A';
|
||||
}
|
||||
else{
|
||||
out_str[i] = 'x';
|
||||
}
|
||||
}
|
||||
/** event */
|
||||
#define EVT_ALL 0xFFFF
|
||||
#define EVT_MEM_LED 0x0001 /**< set led event */
|
||||
#define EVT_MEM_LED_OFF 0x0002
|
||||
#define EVT_MEM_DECODE_INS 0x0004
|
||||
#define EVT_PIN_REQST 0x0008
|
||||
#define EVT_MEM_RETURN_DATA 0x0010
|
||||
#define EVT_MEM_CONN_TIMEOUT 0x0020
|
||||
#define EVT_MEM_NOTIFY_HANDLE 0x0040
|
||||
#define EVT_MEM_UART_ROUTINE 0x0080
|
||||
#define EVT_MEM_INS_SCAN 0x0100
|
||||
#define EVT_MEM_INS_CONNECT 0x0200
|
||||
#define EVT_MEM_INS_WRITE 0x0400
|
||||
#define EVT_MEM_INS_READ 0x0800
|
||||
#define EVT_MEM_INS_DISCONNECT 0x1000
|
||||
|
||||
|
||||
UART_write(uart_handle, out_str, 4);
|
||||
free(out_str);
|
||||
out_str = NULL;
|
||||
}
|
||||
|
||||
static void mem_UART_newline(){
|
||||
char out_str[2] = {'\n', '\r'};
|
||||
UART_write(uart_handle, out_str, 2);
|
||||
}
|
||||
|
||||
static void mem_recv_uart(){
|
||||
UART_read(uart_handle, UART_rxBuf, 10);
|
||||
}
|
||||
|
||||
static void mem_send_recv_uart(){
|
||||
UART_write(uart_handle, UART_rxBuf, 10);
|
||||
}
|
||||
void mem_UART_init();
|
||||
int mem_uart_read_byte();
|
||||
void mem_get_uart_ins(uint8_t* ins);
|
||||
|
||||
#endif
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
|
||||
#include "mem_uart_routine.h"
|
||||
|
||||
void mem_uart_routine(){
|
||||
if (uartProcedureInProgress == FALSE) {
|
||||
// uartProcedureInProgress = TRUE;
|
||||
int rxBytes = mem_uart_read_byte();
|
||||
} else {
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
|
||||
#ifndef MEM_UART_ROUTINE_H
|
||||
#define MEM_UART_ROUTINE_H
|
||||
|
||||
#include "mem_uart.h"
|
||||
#include "mem_event.h"
|
||||
|
||||
void mem_uart_routine();
|
||||
|
||||
static void mem_uart_routine(){
|
||||
if (uartProcedureInProgress == FALSE) {
|
||||
// uartProcedureInProgress = TRUE;
|
||||
int rxBytes = UART_read(uart_handle, UART_rxBuf, 1);
|
||||
} else {
|
||||
flag_notify(EVT_MEM_UART_ROUTINE);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
+89
-46
@@ -350,7 +350,7 @@ static bool scanningStarted = FALSE;
|
||||
static uint16_t connHandle = GAP_CONNHANDLE_INIT;
|
||||
|
||||
// Application state
|
||||
static bleState_t state = BLE_STATE_IDLE;
|
||||
bleState_t state = BLE_STATE_IDLE;
|
||||
|
||||
// Discovery state
|
||||
static bleDiscState_t discState = BLE_DISC_STATE_IDLE;
|
||||
@@ -376,6 +376,7 @@ static bool doWrite = FALSE;
|
||||
|
||||
// GATT read/write procedure state
|
||||
bool procedureInProgress = FALSE;
|
||||
bool uartProcedureInProgress = FALSE;
|
||||
|
||||
// Maximum PDU size (default = 27 octets)
|
||||
static uint16_t maxPduSize;
|
||||
@@ -389,8 +390,6 @@ static readRssi_t readRssi[MAX_NUM_BLE_CONNS];
|
||||
static void SimpleBLECentral_init(void);
|
||||
static void SimpleBLECentral_taskFxn(UArg a0, UArg a1);
|
||||
|
||||
static void MemBoard_init(void);
|
||||
|
||||
static void SimpleBLECentral_processGATTMsg(gattMsgEvent_t *pMsg);
|
||||
static void SimpleBLECentral_handleKeys(uint8_t shift, uint8_t keys);
|
||||
static void SimpleBLECentral_processStackMsg(ICall_Hdr *pMsg);
|
||||
@@ -402,6 +401,7 @@ static bool SimpleBLECentral_findSvcUuid(uint16_t uuid, uint8_t *pData,
|
||||
uint8_t dataLen);
|
||||
static void SimpleBLECentral_discoverDevices(void);
|
||||
void SimpleBLECentral_timeoutConnecting(UArg arg0);
|
||||
static bool SimpleBLECentral_checkBPSDeviceInfo(uint8_t *pEvtData, uint8_t dataLen);
|
||||
static void SimpleBLECentral_addDeviceInfo(uint8_t *pAddr, uint8_t addrType);
|
||||
static bool SimpleBLECentral_findLocalName(uint8_t *pEvtData, uint8_t dataLen);
|
||||
static void SimpleBLECentral_addDeviceName(uint8_t i, uint8_t *pEvtData,
|
||||
@@ -834,41 +834,38 @@ static void SimpleBLECentral_processRoleEvent(gapCentralRoleEvent_t *pEvent)
|
||||
break;
|
||||
|
||||
case GAP_DEVICE_INFO_EVENT:
|
||||
{
|
||||
{
|
||||
//Find peer device address by UUID
|
||||
if ( (DEFAULT_DEV_DISC_BY_SVC_UUID == FALSE) ||
|
||||
SimpleBLECentral_findSvcUuid(SIMPLEPROFILE_SERV_UUID,
|
||||
pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen))
|
||||
{
|
||||
SimpleBLECentral_addDeviceInfo(pEvent->deviceInfo.addr,
|
||||
pEvent->deviceInfo.addrType);
|
||||
}
|
||||
if (SimpleBLECentral_findLocalName(pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen)){
|
||||
if(SimpleBLECentral_checkBPSDeviceInfo(pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen)){
|
||||
SimpleBLECentral_addDeviceInfo(pEvent->deviceInfo.addr,
|
||||
pEvent->deviceInfo.addrType);
|
||||
//Update deviceInfo entry with the name
|
||||
SimpleBLECentral_addDeviceName(0, pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen);
|
||||
|
||||
// Check if the discovered device is already in scan results
|
||||
uint8_t i;
|
||||
for (i = 0; i < scanRes; i++)
|
||||
{
|
||||
if (memcmp(pEvent->deviceInfo.addr, devList[i].addr , B_ADDR_LEN) == 0)
|
||||
{
|
||||
//Check if pEventData contains a device name
|
||||
if (SimpleBLECentral_findLocalName(pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen))
|
||||
{
|
||||
//Update deviceInfo entry with the name
|
||||
SimpleBLECentral_addDeviceName(i, pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen);
|
||||
|
||||
// get company code, version, battery
|
||||
SimepleBLECentral_getDeviceinfo(i, pEvent->deviceInfo.pEvtData,
|
||||
// get company code, version, battery
|
||||
SimepleBLECentral_getDeviceinfo(0, pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen);
|
||||
|
||||
// response company code, version, battery
|
||||
SimepleBLECentral_respDeviceinfo(i, pEvent->deviceInfo.pEvtData,
|
||||
// response company code, version, battery
|
||||
SimepleBLECentral_respDeviceinfo(0, pEvent->deviceInfo.pEvtData,
|
||||
pEvent->deviceInfo.dataLen);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Increment scan result count
|
||||
scanRes = 1;
|
||||
// if(scanRes == DEFAULT_MAX_SCAN_RES){
|
||||
GAPCentralRole_CancelDiscovery();
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -991,8 +988,8 @@ static void SimpleBLECentral_processRoleEvent(gapCentralRoleEvent_t *pEvent)
|
||||
state = BLE_STATE_IDLE;
|
||||
connHandle = GAP_CONNHANDLE_INIT;
|
||||
discState = BLE_DISC_STATE_IDLE;
|
||||
char ACK4[10] = {5, 5};
|
||||
UART_write(uart_handle, ACK4, 5);
|
||||
// char ACK4[10] = {5, 5};
|
||||
// UART_write(uart_handle, ACK4, 5);
|
||||
|
||||
// Display_clearLine(dispHandle, ROW_FOUR);
|
||||
// Display_print0(dispHandle, ROW_TWO, 0, "Connect Failed");
|
||||
@@ -1656,6 +1653,8 @@ static void SimpleBLECentral_processGATTMsg(gattMsgEvent_t *pMsg)
|
||||
// increment value
|
||||
// Display_print1(dispHandle, ROW_SIX, 0, "Write sent: %d", charVal++);
|
||||
// mem_UART_display("write success\n\r");
|
||||
char ACK[15] = {4,0,1,3}; //ack success
|
||||
UART_write(uart_handle, ACK, 4);
|
||||
}
|
||||
procedureInProgress = FALSE;
|
||||
}
|
||||
@@ -2020,7 +2019,6 @@ static void SimpleBLECentral_processGATTDiscEvent(gattMsgEvent_t *pMsg)
|
||||
mem_UART_newline();
|
||||
#endif
|
||||
discState = BLE_DISC_STATE_SVC;
|
||||
|
||||
// Discovery simple BLE service
|
||||
VOID GATT_DiscPrimaryServiceByUUID(connHandle, uuid, ATT_BT_UUID_SIZE,
|
||||
selfEntity);
|
||||
@@ -2214,6 +2212,52 @@ Void SimpleBLECentral_timeoutConnecting(UArg arg0)
|
||||
}
|
||||
}
|
||||
|
||||
static bool SimpleBLECentral_checkBPSDeviceInfo(uint8_t *pEvtData, uint8_t dataLen){
|
||||
uint8_t adLen;
|
||||
uint8_t adType;
|
||||
uint8_t *pEnd;
|
||||
uint8_t *p = pEvtData;
|
||||
|
||||
pEnd = p + dataLen - 1;
|
||||
|
||||
// While end of data not reached
|
||||
while (p < pEnd)
|
||||
{
|
||||
// Get length of next data item
|
||||
adLen = *p++;
|
||||
if (adLen > 0)
|
||||
{
|
||||
adType = *p;
|
||||
|
||||
// If AD type is MANUFACTURER_SPECIFIC
|
||||
if(adType == GAP_ADTYPE_MANUFACTURER_SPECIFIC)
|
||||
{
|
||||
p++;
|
||||
adLen--;
|
||||
if((*p == 'B') &&
|
||||
(*(p+1) == 'P') &&
|
||||
(*(p+2) == 'H') &&
|
||||
(*(p+3) == 'S')){
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Handle possible erroneous extra byte in advertisement data
|
||||
if (adLen == 1)
|
||||
{
|
||||
p++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Go to next item
|
||||
p += adLen;
|
||||
}
|
||||
}
|
||||
}
|
||||
// No name found
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* @fn SimpleBLECentral_addDeviceInfo
|
||||
*
|
||||
@@ -2240,9 +2284,6 @@ static void SimpleBLECentral_addDeviceInfo(uint8_t *pAddr, uint8_t addrType)
|
||||
// Add addr to scan result list
|
||||
memcpy(devList[scanRes].addr, pAddr, B_ADDR_LEN);
|
||||
devList[scanRes].addrType = addrType;
|
||||
|
||||
// Increment scan result count
|
||||
scanRes++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2407,23 +2448,21 @@ static void SimepleBLECentral_getDeviceinfo(uint8_t i, uint8_t *pEvtData, uint8_
|
||||
}
|
||||
|
||||
static void SimepleBLECentral_respDeviceinfo(uint8_t i, uint8_t *pEvtData, uint8_t dataLen){
|
||||
if ((*(uint32_t *)devList[1].company_code == (uint32_t)COMPANY_CODE_BPHS)){
|
||||
uint8_t ret_info_buf[RET_INFO_BUF_SIZE]={0};
|
||||
uint8_t ret_info_buf[RET_INFO_BUF_SIZE]={0};
|
||||
|
||||
struct scan_packet_hdr_t scan_packet_hdr;
|
||||
uint8_t index = 0;
|
||||
struct scan_packet_hdr_t scan_packet_hdr;
|
||||
uint8_t index = 0;
|
||||
|
||||
scan_packet_hdr.scan_res_hdr = 4;
|
||||
scan_packet_hdr.scan_res_cnt = scanRes;
|
||||
scan_packet_hdr.pyld_len = DEV_INFO_LEN;
|
||||
scan_packet_hdr.scan_res_hdr = 4;
|
||||
scan_packet_hdr.scan_res_cnt = scanRes;
|
||||
scan_packet_hdr.pyld_len = DEV_INFO_LEN;
|
||||
|
||||
memcpy(&ret_info_buf[index], &scan_packet_hdr, SCAN_RES_HDR_LEN);
|
||||
index += SCAN_RES_HDR_LEN;
|
||||
memcpy(&ret_info_buf[index], &scan_packet_hdr, SCAN_RES_HDR_LEN);
|
||||
index += SCAN_RES_HDR_LEN;
|
||||
|
||||
memcpy(&ret_info_buf[index], &devList[i], DEV_INFO_LEN); //name 20byte, number0 kill
|
||||
memcpy(&ret_info_buf[index], &devList[i], DEV_INFO_LEN); //name 20byte, number0 kill
|
||||
|
||||
UART_write(uart_handle, ret_info_buf, RET_INFO_BUF_SIZE);
|
||||
}
|
||||
UART_write(uart_handle, ret_info_buf, RET_INFO_BUF_SIZE);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
@@ -2567,3 +2606,7 @@ static uint8_t SimpleBLECentral_enqueueMsg(uint8_t event, uint8_t status,
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ext_call_sem(){
|
||||
Semaphore_post(sem);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user