diff --git a/router/Z-Stack_3.x.0/CHANGELOG.md b/router/Z-Stack_3.x.0/CHANGELOG.md index 96d5ca1..6ce9d9b 100644 --- a/router/Z-Stack_3.x.0/CHANGELOG.md +++ b/router/Z-Stack_3.x.0/CHANGELOG.md @@ -1,2 +1,8 @@ +# 20220125 +- SimpleLink SDK 5.30.01.01 ([changelog](https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/5.30.01.01/exports/changelog.html)) +- Increase memory heap +- Increase transmit power of CC1352P/CC2652P from 5dBm to 9dBm +- Support routing table command + # 20210128 - Initial router firmwares \ No newline at end of file diff --git a/router/Z-Stack_3.x.0/COMPILE.md b/router/Z-Stack_3.x.0/COMPILE.md index 3e008af..918f1fc 100644 --- a/router/Z-Stack_3.x.0/COMPILE.md +++ b/router/Z-Stack_3.x.0/COMPILE.md @@ -1,29 +1,18 @@ # Compiling the firmware ## Setup development environment -1. Download and install [SIMPLELINK-CC13X2-26X2-SDK_4.40.00.44](http://www.ti.com/tool/download/SIMPLELINK-CC13X2-26X2-SDK). -1. Download and install [Code Composer Studio 10.2.0.00009](http://www.ti.com/tool/CCSTUDIO). +1. Download and install [SIMPLELINK-CC13XX-CC26XX-SDK_5.30.01.01](https://www.ti.com/tool/download/SIMPLELINK-CC13XX-CC26XX-SDK) +1. Download and install [Code Composer Studio 11.0.0.00012](http://www.ti.com/tool/CCSTUDIO) ## Compiling 1. Start Code Composer Studio -1. Go to *File -> Import -> Code Composer Studio -> CCS Projects -> Select* search-directory: `simplelink_cc13x2_26x2_sdk_4_40_00_44/examples/rtos`. Click OK (or Open) in the file browser window -1. Select: - - `zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs` - - `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs` - - `zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs`. -4. Press *Finish*. +1. Go to *File -> Import -> Code Composer Studio -> CCS Projects -> Select* search-directory: `simplelink_cc13xx_cc26xx_sdk_5_30_01_01/examples/rtos`. Select `zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_css`, `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_css` and `zr_genericapp_LP_CC2652RB_tirtos_ccs`. Press *Finish*. 1. In Code Composer Studio, expand the 3 projects and for each open `znp.syscfg`, change `Minimal Poll Period (ms)` to `1000`, change it back to `100` immediately and save the file. 1. Go to your CCS workspace and copy `firmware.patch` to the root. 1. Open Git Bash, go to your CCS root and apply the patch using `git apply firmware.patch --ignore-space-change`. -1. **Only** for `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_css`: - - Right click on `znp.syscfg` -> *Delete* - - Right click on `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_css` -> *Properties*. - - Go to *(CCS) Build* - *ARM Compiler* - *Include Options* -> Under *Add dir to #include search path (--include_path, -l)* add `${PROJECT_ROOT}/syscfg` as the **last** entry. - - Go to *(CCS) Build* - *ARM Linker* - *File Search Path* -> Under *Include library file or command file as input (--library, -l)* change `${PROJECT_BUILD_DIR}/syscfg/ti_utils_build_linker.cmd.genlibs` to `${PROJECT_ROOT}/syscfg/ti_utils_build_linker.cmd.genlibs` -8. Build the 3 projects; right click -> *Build project*. +1. Build the 3 projects; right click -> *Build project*. - **Important:** by default the **launchpad** variant of the CC1352P2_CC2652P (= `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs`) is build. To build the **other** variant comment `#define LAUNCHPAD_CONFIG 1` in `preinclude.h` (located under `Stack/Config/`), don't forget to save. -9. Once finished, the firmware can be found under `zr_genericapp_[CC26X2R1/CC1352P_2/CC2652RB]_LAUNCHXL_tirtos_ccs/default/zr_genericapp_[CC26X2R1/CC2652RB/CC1352P_2]_LAUNCHXL_tirtos_ccs.hex` +1. Once finished, the firmware can be found under `zr_genericapp_[CC26X2R1/CC1352P_2/CC2652RB]_LAUNCHXL_tirtos_ccs/default/zr_genericapp_[CC26X2R1/CC2652RB/CC1352P_2]_LAUNCHXL_tirtos_ccs.hex` - `zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs.hex` -> CC2652R - `zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs.hex` -> CC2652RB - `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs.hex` -> CC1352P-2 and CC2652P - diff --git a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20210128.zip b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20210128.zip deleted file mode 100644 index 7ff0e55..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20210128.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20220125.zip b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20220125.zip new file mode 100644 index 0000000..8d12a5e Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20220125.zip differ diff --git a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20210128.zip b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20210128.zip deleted file mode 100644 index 1ac06c4..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20210128.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20220125.zip b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20220125.zip new file mode 100644 index 0000000..2dd2c40 Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20220125.zip differ diff --git a/router/Z-Stack_3.x.0/bin/CC2652RB_router_20210128.zip b/router/Z-Stack_3.x.0/bin/CC2652RB_router_20210128.zip deleted file mode 100644 index 025e087..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC2652RB_router_20210128.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC2652RB_router_20220125.zip b/router/Z-Stack_3.x.0/bin/CC2652RB_router_20220125.zip new file mode 100644 index 0000000..8aa656b Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC2652RB_router_20220125.zip differ diff --git a/router/Z-Stack_3.x.0/bin/CC2652R_router_20210128.zip b/router/Z-Stack_3.x.0/bin/CC2652R_router_20210128.zip deleted file mode 100644 index ca0175e..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC2652R_router_20210128.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC2652R_router_20220125.zip b/router/Z-Stack_3.x.0/bin/CC2652R_router_20220125.zip new file mode 100644 index 0000000..1e9b2e1 Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC2652R_router_20220125.zip differ diff --git a/router/Z-Stack_3.x.0/firmware.patch b/router/Z-Stack_3.x.0/firmware.patch index 0389805..ad94781 100644 --- a/router/Z-Stack_3.x.0/firmware.patch +++ b/router/Z-Stack_3.x.0/firmware.patch @@ -1,44 +1,45 @@ -From 0c5f65ee658c64f991b7cb22551df907984d2f71 Mon Sep 17 00:00:00 2001 +From 41916c4f9b203b779f606244cb5be0748a2412fb Mon Sep 17 00:00:00 2001 From: Koen Kanters -Date: Mon, 25 Jan 2021 15:48:06 +0100 +Date: Tue, 25 Jan 2022 19:51:16 +0100 Subject: [PATCH 1/1] Own changes --- - .../Application/zcl_genericapp.c | 32 +- - .../Application/zcl_genericapp_data.c | 22 +- - .../Stack/Config/f8wrouter.opts | 2 + - .../Stack/Config/preinclude.h | 19 + - .../syscfg/ti_devices_config.c | 103 ++ - .../syscfg/ti_drivers_config.c | 1060 +++++++++++++++++ - .../syscfg/ti_drivers_config.h | 283 +++++ - .../syscfg/ti_radio_config.c | 340 ++++++ - .../syscfg/ti_radio_config.h | 77 ++ - .../syscfg/ti_utils_build_linker.cmd.genlibs | 35 + - .../syscfg/ti_zstack_config.h | 226 ++++ - .../Application/zcl_genericapp.c | 32 +- - .../Application/zcl_genericapp_data.c | 22 +- - .../Stack/Config/f8wrouter.opts | 2 + - .../Stack/Config/preinclude.h | 6 + - .../zr_genericapp.syscfg | 3 + - .../Application/zcl_genericapp.c | 32 +- - .../Application/zcl_genericapp_data.c | 22 +- - .../Stack/Config/f8wrouter.opts | 2 + - .../Stack/Config/preinclude.h | 6 + - .../zr_genericapp.syscfg | 3 + - 21 files changed, 2263 insertions(+), 66 deletions(-) + .../Application/zcl_genericapp.c | 33 +- + .../Application/zcl_genericapp_data.c | 22 +- + .../Stack/Config/f8wrouter.opts | 2 + + .../Stack/Config/preinclude.h | 49 +++ + .../app.cfg | 4 +- + .../cc13x2_cc26x2.cmd | 6 +- + .../ti_devices_config.c | 105 +++++ + .../ti_drivers_config.h | 274 +++++++++++++ + .../ti_radio_config.c | 387 ++++++++++++++++++ + .../ti_radio_config.h | 83 ++++ + .../zr_genericapp.syscfg | 11 +- + .../Application/zcl_genericapp.c | 33 +- + .../Application/zcl_genericapp_data.c | 22 +- + .../Stack/Config/f8wrouter.opts | 2 + + .../Stack/Config/preinclude.h | 31 ++ + .../app.cfg | 4 +- + .../cc13x2_cc26x2.cmd | 6 +- + .../zr_genericapp.syscfg | 7 +- + .../Application/zcl_genericapp.c | 33 +- + .../Application/zcl_genericapp_data.c | 22 +- + .../Stack/Config/f8wrouter.opts | 2 + + .../Stack/Config/preinclude.h | 31 ++ + zr_genericapp_LP_CC2652RB_tirtos_ccs/app.cfg | 4 +- + .../cc13x2_cc26x2.cmd | 6 +- + .../zr_genericapp.syscfg | 7 +- + 25 files changed, 1105 insertions(+), 81 deletions(-) create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_devices_config.c - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.c - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.h - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.c - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.h - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_utils_build_linker.cmd.genlibs - create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_zstack_config.h - create mode 100644 zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_devices_config.c + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_drivers_config.h + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.c + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.h create mode 100644 zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h + create mode 100644 zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/preinclude.h diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c -index f33fc07..5aad76f 100644 +index 82a4bec..23788ff 100644 --- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c +++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c @@ -53,6 +53,8 @@ @@ -50,16 +51,24 @@ index f33fc07..5aad76f 100644 #include "rom_jt_154.h" #include "zcomdef.h" -@@ -426,7 +428,7 @@ static void zclGenericApp_Init( void ) - // Call BDB initialization. Should be called once from application at startup to restore - // previous network configuration, if applicable. - zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; -- zstack_bdbStartCommissioningReq.commissioning_mode = 0; -+ zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; - Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); - } +@@ -870,6 +872,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn + */ + static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg) + { ++ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; + switch(bdbCommissioningModeMsg->bdbCommissioningMode) + { + case BDB_COMMISSIONING_FORMATION: +@@ -909,6 +912,8 @@ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t * + } + break; + case BDB_COMMISSIONING_INITIALIZATION: ++ zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; ++ Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); + //Initialization notification can only be successful. Failure on initialization + //only happens for ZED and is notified as BDB_COMMISSIONING_PARENT_LOST notification -@@ -1208,28 +1210,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask +@@ -1209,28 +1214,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask */ static void zclGenericApp_processKey(Button_Handle _btn) { @@ -97,7 +106,7 @@ index f33fc07..5aad76f 100644 diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c -index c0e473d..a09a0df 100644 +index c0e473d..1446606 100644 --- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c +++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c @@ -96,6 +96,8 @@ const uint16_t zclGenericApp_identify_clusterRevision = 0x0001; @@ -105,7 +114,7 @@ index c0e473d..a09a0df 100644 const uint8_t zclGenericApp_ZCLVersion = GENERICAPP_ZCLVERSION; const uint8_t zclGenericApp_ManufacturerName[] = { 16, 'T','e','x','a','s','I','n','s','t','r','u','m','e','n','t','s' }; +const uint8_t zclGenericApp_ModelID[] = { 9, 't','i','.','r','o','u','t','e','r' }; -+const uint8_t zclGenericApp_SwBuildID[] = { 8, '2','0','2','1','0','1','2','8' }; ++const uint8_t zclGenericApp_SwBuildID[] = { 8, '2','0','2','2','0','1','2','5' }; const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; @@ -114,7 +123,7 @@ index c0e473d..a09a0df 100644 ATTRID_BASIC_ZCL_VERSION, ZCL_DATATYPE_UINT8, - ACCESS_CONTROL_READ, -+ ACCESS_CONTROL_READ | ACCESS_REPORTABLE, ++ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE), (void *)&zclGenericApp_ZCLVersion } }, @@ -140,7 +149,7 @@ index c0e473d..a09a0df 100644 ZCL_CLUSTER_ID_GENERAL_BASIC, { // Attribute record diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts -index b841d60..598f537 100644 +index b841d60..91eb00e 100644 --- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts +++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts @@ -9,3 +9,5 @@ @@ -148,20 +157,50 @@ index b841d60..598f537 100644 -DBINDINGTABLE_NV_SINGLES -DASSOCLIST_NV_SINGLES + -+--preinclude=preinclude.h ++--preinclude=preinclude.h \ No newline at end of file diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h new file mode 100644 -index 0000000..7fe1942 +index 0000000..2a92dd1 --- /dev/null +++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h -@@ -0,0 +1,19 @@ +@@ -0,0 +1,49 @@ ++// Increase MAC buffers ++#undef MAC_CFG_TX_DATA_MAX ++#define MAC_CFG_TX_DATA_MAX 20 ++#undef MAC_CFG_TX_MAX ++#define MAC_CFG_TX_MAX 32 ++#undef MAC_CFG_RX_MAX ++#define MAC_CFG_RX_MAX 20 ++ ++// Increase NV pages to 3 to allow for bigger device tables ++#undef NVOCMP_NVPAGES ++#define NVOCMP_NVPAGES 3 ++ ++// Increase the max number of boardcasts, the default broadcast delivery time is 3 seconds ++// with the value below this will allow for 1 broadcast every 0.15 second ++#define MAX_BCAST 30 ++ +#define ZCL_REPORT_DESTINATION_DEVICE +#define BDB_REPORTING +#define CUI_DISABLE +#define NWK_MAX_DEVICE_LIST 50 -+#define MAX_NEIGHBOR_ENTRIES 30 -+#define MAX_RTG_ENTRIES 100 ++#define MAX_NEIGHBOR_ENTRIES 50 ++#define MAX_RTG_ENTRIES 150 ++#define ZDO_API_ADVANCED ++ ++// From https://www.ti.com/lit/an/swra650b/swra650b.pdf ++#define LINK_DOWN_TRIGGER 12 ++#define NWK_ROUTE_AGE_LIMIT 5 ++#define DEF_NWK_RADIUS 15 ++#define DEFAULT_ROUTE_REQUEST_RADIUS 8 ++#define ZDNWKMGR_MIN_TRANSMISSIONS 0 ++#define ROUTE_DISCOVERY_TIME 13 ++ ++/** ++ * Set default transmit power to 9 ++ */ ++#define TXPOWER 9 + +// Different configs, uncomment for for launchpad firmware +#define LAUNCHPAD_CONFIG 1 @@ -175,12 +214,44 @@ index 0000000..7fe1942 +#define CONFIG_RF_HIGH_PA 0x0000005 +#define SET_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA 0xfa +#endif -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_devices_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_devices_config.c +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/app.cfg b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/app.cfg +index 5089a84..146ef06 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/app.cfg ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/app.cfg +@@ -700,7 +700,9 @@ var GateMutexPri = xdc.useModule('ti.sysbios.gates.GateMutexPri'); + */ + var Memory = xdc.useModule('xdc.runtime.Memory'); + var HEAPMGR_CONFIG = 0; +-var HEAPMGR_SIZE = 0x1800; ++// Increase heap to 48kb ++// https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1052120/cc2652r-mac-no-resources-0x1a-errors-complete-crash-with-simplelink-cc13xx-cc26xx-sdk_5-30-00-56/3897554#3897554 ++var HEAPMGR_SIZE = 0xc000; + + // The following will create the #define HEAPMGR_CONFIG. It can then be used by include + Program.global.HEAPMGR_CONFIG = HEAPMGR_CONFIG; +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd +index 2856ad2..031cfeb 100755 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd +@@ -67,9 +67,9 @@ + /* must be located at the beginning of the application. */ + + #define FLASH_BASE 0x00000000 +-#define FLASH_SIZE 0x52000 +-#define FLASH_NV_BASE 0x52000 +-#define FLASH_NV_SIZE 0x4000 ++#define FLASH_SIZE 0x50000 ++#define FLASH_NV_BASE 0x50000 ++#define FLASH_NV_SIZE 0x6000 + #define FLASH_LAST_BASE 0x56000 + #define FLASH_LAST_SIZE 0x2000 + +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_devices_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_devices_config.c new file mode 100644 -index 0000000..e6815a3 +index 0000000..577e5a0 --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_devices_config.c -@@ -0,0 +1,103 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_devices_config.c +@@ -0,0 +1,105 @@ +/* + * ======== ti_devices_config.c ======== + * Customer Configuration for CC26XX and CC13XX devices. @@ -218,6 +289,7 @@ index 0000000..e6815a3 + +// Apply cap-array delta +#define SET_CCFG_MODE_CONF_XOSC_CAP_MOD 0x0 ++// CUSTOM: set in preinclude.h +// #define SET_CCFG_MODE_CONF_XOSC_CAPARRAY_DELTA 0xc1 + +//##################################### @@ -244,6 +316,9 @@ index 0000000..e6815a3 +#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 +//##################################### @@ -269,1093 +344,25 @@ index 0000000..e6815a3 +// 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 +#include DeviceFamily_constructPath(startup_files/ccfg.c) -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.c +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_drivers_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_drivers_config.h new file mode 100644 -index 0000000..304f6b2 +index 0000000..6a57a31 --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.c -@@ -0,0 +1,1060 @@ -+/* -+ * ======== ti_drivers_config.c ======== -+ * Configured TI-Drivers module definitions -+ * -+ * DO NOT EDIT - This file is generated for the CC1352P_2_LAUNCHXL -+ * by the SysConfig tool. -+ */ -+ -+#include -+#include -+ -+#ifndef DeviceFamily_CC13X2 -+#define DeviceFamily_CC13X2 -+#endif -+ -+#include -+ -+#include "ti_drivers_config.h" -+ -+/* -+ * =============================== AESCBC =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_AESCBC_COUNT 1 -+AESCBCCC26XX_Object aescbcCC26XXObjects[CONFIG_AESCBC_COUNT]; -+ -+/* -+ * ======== aescbcCC26XXHWAttrs ======== -+ */ -+const AESCBCCC26XX_HWAttrs aescbcCC26XXHWAttrs[CONFIG_AESCBC_COUNT] = { -+ { -+ .intPriority = (~0), -+ }, -+}; -+ -+const AESCBC_Config AESCBC_config[CONFIG_AESCBC_COUNT] = { -+ { /* CONFIG_AESCBC_0 */ -+ .object = &aescbcCC26XXObjects[CONFIG_AESCBC_0], -+ .hwAttrs = &aescbcCC26XXHWAttrs[CONFIG_AESCBC_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_AESCBC_0_CONST = CONFIG_AESCBC_0; -+const uint_least8_t AESCBC_count = CONFIG_AESCBC_COUNT; -+ -+/* -+ * =============================== AESCCM =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_AESCCM_COUNT 1 -+AESCCMCC26XX_Object aesccmCC26XXObjects[CONFIG_AESCCM_COUNT]; -+ -+/* -+ * ======== aesccmCC26XXHWAttrs ======== -+ */ -+const AESCCMCC26XX_HWAttrs aesccmCC26XXHWAttrs[CONFIG_AESCCM_COUNT] = { -+ { -+ .intPriority = 0x40, -+ }, -+}; -+ -+const AESCCM_Config AESCCM_config[CONFIG_AESCCM_COUNT] = { -+ { /* CONFIG_AESCCM_0 */ -+ .object = &aesccmCC26XXObjects[CONFIG_AESCCM_0], -+ .hwAttrs = &aesccmCC26XXHWAttrs[CONFIG_AESCCM_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_AESCCM_0_CONST = CONFIG_AESCCM_0; -+const uint_least8_t AESCCM_count = CONFIG_AESCCM_COUNT; -+ -+/* -+ * =============================== AESECB =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_AESECB_COUNT 1 -+AESECBCC26XX_Object aesecbCC26XXObjects[CONFIG_AESECB_COUNT]; -+ -+/* -+ * ======== aesecbCC26XXHWAttrs ======== -+ */ -+const AESECBCC26XX_HWAttrs aesecbCC26XXHWAttrs[CONFIG_AESECB_COUNT] = { -+ { -+ .intPriority = 0x20, -+ }, -+}; -+ -+const AESECB_Config AESECB_config[CONFIG_AESECB_COUNT] = { -+ { /* CONFIG_AESECB_0 */ -+ .object = &aesecbCC26XXObjects[CONFIG_AESECB_0], -+ .hwAttrs = &aesecbCC26XXHWAttrs[CONFIG_AESECB_0] -+ }, -+}; -+ -+ -+const uint_least8_t CONFIG_AESECB_0_CONST = CONFIG_AESECB_0; -+const uint_least8_t AESECB_count = CONFIG_AESECB_COUNT; -+ -+/* -+ * =============================== DMA =============================== -+ */ -+ -+#include -+#include -+#include -+ -+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, -+ }, -+}; -+ -+/* -+ * =============================== ECDH =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_ECDH_COUNT 1 -+ -+ECDHCC26X2_Object ecdhCC26X2Objects[CONFIG_ECDH_COUNT]; -+ -+/* -+ * ======== ecdhCC26X2HWAttrs ======== -+ */ -+const ECDHCC26X2_HWAttrs ecdhCC26X2HWAttrs[CONFIG_ECDH_COUNT] = { -+ { -+ .intPriority = (~0), -+ }, -+}; -+ -+const ECDH_Config ECDH_config[CONFIG_ECDH_COUNT] = { -+ { /* CONFIG_ECDH_0 */ -+ .object = &ecdhCC26X2Objects[CONFIG_ECDH_0], -+ .hwAttrs = &ecdhCC26X2HWAttrs[CONFIG_ECDH_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_ECDH_0_CONST = CONFIG_ECDH_0; -+const uint_least8_t ECDH_count = CONFIG_ECDH_COUNT; -+ -+/* -+ * =============================== ECDSA =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_ECDSA_COUNT 1 -+ECDSACC26X2_Object ecdsaCC26X2Objects[CONFIG_ECDSA_COUNT]; -+ -+/* -+ * ======== ecdsaCC26X2HWAttrs ======== -+ */ -+const ECDSACC26X2_HWAttrs ecdsaCC26X2HWAttrs[CONFIG_ECDSA_COUNT] = { -+ { -+ .intPriority = (~0), -+ .trngIntPriority = (~0), -+ }, -+}; -+ -+const ECDSA_Config ECDSA_config[CONFIG_ECDSA_COUNT] = { -+ { /* CONFIG_ECDSA_0 */ -+ .object = &ecdsaCC26X2Objects[CONFIG_ECDSA_0], -+ .hwAttrs = &ecdsaCC26X2HWAttrs[CONFIG_ECDSA_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_ECDSA_0_CONST = CONFIG_ECDSA_0; -+const uint_least8_t ECDSA_count = CONFIG_ECDSA_COUNT; -+ -+/* -+ * =============================== ECJPAKE =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_ECJPAKE_COUNT 1 -+ECJPAKECC26X2_Object ecjpakeCC26X2Objects[CONFIG_ECJPAKE_COUNT]; -+ -+/* -+ * ======== ecjpakeCC26X2HWAttrs ======== -+ */ -+const ECJPAKECC26X2_HWAttrs ecjpakeCC26X2HWAttrs[CONFIG_ECJPAKE_COUNT] = { -+ { -+ .intPriority = (~0), -+ }, -+}; -+ -+const ECJPAKE_Config ECJPAKE_config[CONFIG_ECJPAKE_COUNT] = { -+ { /* CONFIG_ECJPAKE_0 */ -+ .object = &ecjpakeCC26X2Objects[CONFIG_ECJPAKE_0], -+ .hwAttrs = &ecjpakeCC26X2HWAttrs[CONFIG_ECJPAKE_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_ECJPAKE_0_CONST = CONFIG_ECJPAKE_0; -+const uint_least8_t ECJPAKE_count = CONFIG_ECJPAKE_COUNT; -+ -+/* -+ * =============================== GPIO =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_GPIO_COUNT 5 -+ -+/* -+ * ======== gpioPinConfigs ======== -+ * Array of Pin configurations -+ */ -+GPIO_PinConfig gpioPinConfigs[] = { -+ /* CONFIG_GPIO_BTN1 : LaunchPad Button BTN-1 (Left) */ -+ GPIOCC26XX_DIO_15 | GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING, -+ /* CONFIG_GPIO_BTN2 : LaunchPad Button BTN-2 (Right) */ -+ GPIOCC26XX_DIO_14 | GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING, -+ /* CONFIG_GPIO_RLED : LaunchPad LED Red */ -+ GPIOCC26XX_DIO_06 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_LOW, -+ /* CONFIG_GPIO_GLED : LaunchPad LED Green */ -+ GPIOCC26XX_DIO_07 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_LOW, -+ /* SPI Flash Slave Select GPIO Instance */ -+ GPIOCC26XX_DIO_20 | GPIO_CFG_OUT_STD | GPIO_CFG_OUT_STR_MED | GPIO_CFG_OUT_HIGH, -+}; -+ -+/* -+ * ======== gpioCallbackFunctions ======== -+ * Array of callback function pointers -+ * -+ * NOTE: Unused callback entries can be omitted from the callbacks array to -+ * reduce memory usage by enabling callback table optimization -+ * (GPIO.optimizeCallbackTableSize = true) -+ */ -+GPIO_CallbackFxn gpioCallbackFunctions[] = { -+ /* CONFIG_GPIO_BTN1 : LaunchPad Button BTN-1 (Left) */ -+ NULL, -+ /* CONFIG_GPIO_BTN2 : LaunchPad Button BTN-2 (Right) */ -+ NULL, -+ /* CONFIG_GPIO_RLED : LaunchPad LED Red */ -+ NULL, -+ /* CONFIG_GPIO_GLED : LaunchPad LED Green */ -+ NULL, -+ /* SPI Flash Slave Select GPIO Instance */ -+ NULL, -+}; -+ -+const uint_least8_t CONFIG_GPIO_BTN1_CONST = CONFIG_GPIO_BTN1; -+const uint_least8_t CONFIG_GPIO_BTN2_CONST = CONFIG_GPIO_BTN2; -+const uint_least8_t CONFIG_GPIO_RLED_CONST = CONFIG_GPIO_RLED; -+const uint_least8_t CONFIG_GPIO_GLED_CONST = CONFIG_GPIO_GLED; -+const uint_least8_t CONFIG_GPIO_0_CONST = CONFIG_GPIO_0; -+ -+/* -+ * ======== GPIOCC26XX_config ======== -+ */ -+const GPIOCC26XX_Config GPIOCC26XX_config = { -+ .pinConfigs = (GPIO_PinConfig *)gpioPinConfigs, -+ .callbacks = (GPIO_CallbackFxn *)gpioCallbackFunctions, -+ .numberOfPinConfigs = 5, -+ .numberOfCallbacks = 5, -+ .intPriority = (~0) -+}; -+ -+/* -+ * =============================== NVS =============================== -+ */ -+ -+#include -+#include -+ -+/* -+ * NVSCC26XX Internal NVS flash region definitions -+ * -+ * Place uninitialized char arrays at addresses -+ * corresponding to the 'regionBase' addresses defined in -+ * the configured NVS regions. These arrays are used as -+ * place holders so that the linker will not place other -+ * content there. -+ * -+ * For GCC targets, the char arrays are each placed into -+ * the shared ".nvs" section. The user must add content to -+ * their GCC linker command file to place the .nvs section -+ * at the lowest 'regionBase' address specified in their NVS -+ * regions. -+ */ -+ -+#if defined(__TI_COMPILER_VERSION__) || defined(__clang__) -+ -+static char flashBuf0[0x4000] __attribute__ ((retain, noinit, location(0x52000))); -+ -+#elif defined(__IAR_SYSTEMS_ICC__) -+ -+__no_init static char flashBuf0[0x4000] @ 0x52000; -+ -+#elif defined(__GNUC__) -+ -+__attribute__ ((section (".nvs"))) -+static char flashBuf0[0x4000]; -+ -+#endif -+ -+NVSCC26XX_Object nvsCC26XXObjects[1]; -+ -+static const NVSCC26XX_HWAttrs nvsCC26XXHWAttrs[1] = { -+ /* CONFIG_NVSINTERNAL */ -+ { -+ .regionBase = (void *) flashBuf0, -+ .regionSize = 0x4000 -+ }, -+}; -+ -+#include -+ -+/* -+ * NVSSPI25X External NVS flash region definitions -+ */ -+ -+/* -+ * Provide write verification buffer whose size is -+ * the largest specified Verification Buffer Size -+ */ -+ -+static uint8_t verifyBuf[64]; -+ -+NVSSPI25X_Object nvsSPI25XObjects[1]; -+ -+static const NVSSPI25X_HWAttrs nvsSPI25XHWAttrs[1] = { -+ /* CONFIG_NVSEXTERNAL */ -+ /* MX25R8035F SPI Flash */ -+ { -+ .regionBaseOffset = 0x0, -+ .regionSize = 0x256000, -+ .sectorSize = 0x1000, -+ .verifyBuf = verifyBuf, -+ .verifyBufSize = 64, -+ /* NVS opens SPI */ -+ .spiHandle = NULL, -+ /* SPI driver index */ -+ .spiIndex = CONFIG_SPI_0, -+ .spiBitRate = 4000000, -+ /* GPIO driver pin index */ -+ .spiCsnGpioIndex = CONFIG_GPIO_0, -+ .statusPollDelayUs = 100 -+ }, -+}; -+ -+#define CONFIG_NVS_COUNT 2 -+ -+const NVS_Config NVS_config[CONFIG_NVS_COUNT] = { -+ /* CONFIG_NVSINTERNAL */ -+ { -+ .fxnTablePtr = &NVSCC26XX_fxnTable, -+ .object = &nvsCC26XXObjects[0], -+ .hwAttrs = &nvsCC26XXHWAttrs[0], -+ }, -+ /* CONFIG_NVSEXTERNAL */ -+ /* MX25R8035F SPI Flash */ -+ { -+ .fxnTablePtr = &NVSSPI25X_fxnTable, -+ .object = &nvsSPI25XObjects[0], -+ .hwAttrs = &nvsSPI25XHWAttrs[0], -+ }, -+}; -+ -+const uint_least8_t CONFIG_NVSINTERNAL_CONST = CONFIG_NVSINTERNAL; -+const uint_least8_t CONFIG_NVSEXTERNAL_CONST = CONFIG_NVSEXTERNAL; -+const uint_least8_t NVS_count = CONFIG_NVS_COUNT; -+ -+/* -+ * =============================== PIN =============================== -+ */ -+#include -+#include -+ -+#define CONFIG_PIN_COUNT 13 -+ -+const PIN_Config BoardGpioInitTable[CONFIG_PIN_COUNT + 1] = { -+ /* XDS110 UART, Parent Signal: CONFIG_DISPLAY_UART TX, (DIO13) */ -+ CONFIG_PIN_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED, -+ /* XDS110 UART, Parent Signal: CONFIG_DISPLAY_UART RX, (DIO12) */ -+ CONFIG_PIN_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN | PIN_IRQ_DIS, -+ /* SKY13317-373LF RF Antenna Switch, Parent Signal: /ti/drivers/RF RF Antenna Pin 0, (DIO28) */ -+ CONFIG_RF_24GHZ | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS, -+ /* SKY13317-373LF RF Antenna Switch, Parent Signal: /ti/drivers/RF RF Antenna Pin 1, (DIO29) */ -+ CONFIG_RF_HIGH_PA | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS, -+ /* SKY13317-373LF RF Antenna Switch, Parent Signal: /ti/drivers/RF RF Antenna Pin 2, (DIO30) */ -+ CONFIG_RF_SUB1GHZ | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS, -+ /* LaunchPad Button BTN-1 (Left), Parent Signal: CONFIG_GPIO_BTN1 GPIO Pin, (DIO15) */ -+ CONFIG_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS, -+ /* LaunchPad Button BTN-2 (Right), Parent Signal: CONFIG_GPIO_BTN2 GPIO Pin, (DIO14) */ -+ CONFIG_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS, -+ /* LaunchPad LED Red, Parent Signal: CONFIG_GPIO_RLED GPIO Pin, (DIO6) */ -+ CONFIG_PIN_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED, -+ /* LaunchPad LED Green, Parent Signal: CONFIG_GPIO_GLED GPIO Pin, (DIO7) */ -+ CONFIG_PIN_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED, -+ /* MX25R8035F SPI Flash Slave Select, Parent Signal: CONFIG_GPIO_0 GPIO Pin, (DIO20) */ -+ CONFIG_PIN_0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MED, -+ /* LaunchPad SPI Bus, Parent Signal: CONFIG_SPI_0 SCLK, (DIO10) */ -+ CONFIG_PIN_SPI_SCLK | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED, -+ /* LaunchPad SPI Bus, Parent Signal: CONFIG_SPI_0 MISO, (DIO8) */ -+ CONFIG_PIN_SPI_MISO | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS, -+ /* LaunchPad SPI Bus, Parent Signal: CONFIG_SPI_0 MOSI, (DIO9) */ -+ CONFIG_PIN_SPI_MOSI | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED, -+ -+ PIN_TERMINATE -+}; -+ -+const PINCC26XX_HWAttrs PINCC26XX_hwAttrs = { -+ .intPriority = (~0), -+ .swiPriority = 0 -+}; -+ -+/* -+ * =============================== Power =============================== -+ */ -+#include -+#include -+#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 -+ -+/* -+ * 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 ======== -+ */ -+static PIN_Handle antennaPins; -+static PIN_State antennaState; -+ -+static void initAntennaSwitch() -+{ -+ PIN_Config antennaConfig[] = { -+ CONFIG_RF_24GHZ | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* Path disabled */ -+ CONFIG_RF_HIGH_PA | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* Path disabled */ -+ CONFIG_RF_SUB1GHZ | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* Path disabled */ -+ PIN_TERMINATE -+ }; -+ antennaPins = PIN_open(&antennaState, antennaConfig); -+} -+ -+/* -+ * ======== rfDriverCallbackAntennaSwitching ======== -+ * Sets up the antenna switch depending on the current PHY configuration. -+ * -+ * Truth table: -+ * -+ * Path DIO28 DIO29 DIO30 -+ * =========== ===== ===== ===== -+ * Off 0 0 0 -+ * Sub-1 GHz 0 0 1 -+ * 2.4 GHz 1 0 0 -+ * 20 dBm TX 0 1 0 -+ */ -+void __attribute__((weak)) rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg) -+{ -+ /* Protect against repeated RF_init */ -+ static bool initialized = false; -+ -+ /* Local variable. */ -+ bool sub1GHz = false; -+ uint8_t loDivider = 0; -+ -+ if (!initialized && events & RF_GlobalEventInit) { -+ /* Don't do it again */ -+ initialized = true; -+ initAntennaSwitch(); -+ } -+ else if (events & RF_GlobalEventRadioSetup) { -+ /* Switch off all paths. */ -+ PINCC26XX_setOutputValue(CONFIG_RF_24GHZ, 0); -+ PINCC26XX_setOutputValue(CONFIG_RF_HIGH_PA, 0); -+ PINCC26XX_setOutputValue(CONFIG_RF_SUB1GHZ, 0); -+ -+ /* Decode the current PA configuration. */ -+ RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType; -+ -+ /* Decode the generic argument as a setup command. */ -+ RF_RadioSetup* setupCommand = (RF_RadioSetup*)arg; -+ -+ switch (setupCommand->common.commandNo) { -+ case (CMD_RADIO_SETUP): -+ case (CMD_BLE5_RADIO_SETUP): -+ loDivider = RF_LODIVIDER_MASK & setupCommand->common.loDivider; -+ -+ /* Sub-1GHz front-end. */ -+ if (loDivider != 0) { -+ sub1GHz = true; -+ } -+ break; -+ case (CMD_PROP_RADIO_DIV_SETUP): -+ loDivider = RF_LODIVIDER_MASK & setupCommand->prop_div.loDivider; -+ -+ /* Sub-1GHz front-end. */ -+ if (loDivider != 0) { -+ sub1GHz = true; -+ } -+ break; -+ default:break; -+ } -+ -+ if (sub1GHz) { -+ /* Sub-1 GHz */ -+ if (paType == RF_TxPowerTable_HighPA) { -+ /* PA enable --> HIGH PA -+ * LNA enable --> Sub-1 GHz -+ */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_24GHZ, PINCC26XX_MUX_GPIO); -+ /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not -+ de-asserted on CC1352 Rev A. */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_HIGH_PA, PINCC26XX_MUX_RFC_GPO3); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_SUB1GHZ, PINCC26XX_MUX_RFC_GPO0); -+ } else { -+ /* RF core active --> Sub-1 GHz */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_24GHZ, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_HIGH_PA, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_SUB1GHZ, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setOutputValue(CONFIG_RF_SUB1GHZ, 1); -+ } -+ } else { -+ /* 2.4 GHz */ -+ if (paType == RF_TxPowerTable_HighPA) -+ { -+ /* PA enable --> HIGH PA -+ * LNA enable --> 2.4 GHz -+ */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_24GHZ, PINCC26XX_MUX_RFC_GPO0); -+ /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not -+ de-asserted on CC1352 Rev A. */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_HIGH_PA, PINCC26XX_MUX_RFC_GPO3); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_SUB1GHZ, PINCC26XX_MUX_GPIO); -+ } else { -+ /* RF core active --> 2.4 GHz */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_24GHZ, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_HIGH_PA, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_SUB1GHZ, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setOutputValue(CONFIG_RF_24GHZ, 1); -+ } -+ } -+ } -+ else if (events & RF_GlobalEventRadioPowerDown) { -+ /* Switch off all paths. */ -+ PINCC26XX_setOutputValue(CONFIG_RF_24GHZ, 0); -+ PINCC26XX_setOutputValue(CONFIG_RF_HIGH_PA, 0); -+ PINCC26XX_setOutputValue(CONFIG_RF_SUB1GHZ, 0); -+ -+ /* Reset the IO multiplexer to GPIO functionality */ -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_24GHZ, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_HIGH_PA, PINCC26XX_MUX_GPIO); -+ PINCC26XX_setMux(antennaPins, CONFIG_RF_SUB1GHZ, PINCC26XX_MUX_GPIO); -+ } -+} -+ -+/* -+ * =============================== SHA2 =============================== -+ */ -+ -+#include -+#include -+ -+#define CONFIG_SHA2_COUNT 1 -+ -+SHA2CC26X2_Object sha2CC26X2Objects[CONFIG_SHA2_COUNT]; -+ -+/* -+ * ======== sha2CC26X2HWAttrs ======== -+ */ -+const SHA2CC26X2_HWAttrs sha2CC26X2HWAttrs[CONFIG_SHA2_COUNT] = { -+ { -+ .intPriority = (~0), -+ }, -+}; -+ -+const SHA2_Config SHA2_config[CONFIG_SHA2_COUNT] = { -+ { /* CONFIG_SHA2_0 */ -+ .object = &sha2CC26X2Objects[CONFIG_SHA2_0], -+ .hwAttrs = &sha2CC26X2HWAttrs[CONFIG_SHA2_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_SHA2_0_CONST = CONFIG_SHA2_0; -+const uint_least8_t SHA2_count = CONFIG_SHA2_COUNT; -+ -+/* -+ * =============================== SPI DMA =============================== -+ */ -+#include -+#include -+ -+#define CONFIG_SPI_COUNT 1 -+ -+/* -+ * ======== spiCC26X2DMAObjects ======== -+ */ -+SPICC26X2DMA_Object spiCC26X2DMAObjects[CONFIG_SPI_COUNT]; -+ -+/* -+ * ======== spiCC26X2DMAHWAttrs ======== -+ */ -+const SPICC26X2DMA_HWAttrs spiCC26X2DMAHWAttrs[CONFIG_SPI_COUNT] = { -+ /* CONFIG_SPI_0 */ -+ /* LaunchPad SPI Bus */ -+ { -+ .baseAddr = SSI0_BASE, -+ .intNum = INT_SSI0_COMB, -+ .intPriority = (~0), -+ .swiPriority = 0, -+ .powerMngrId = PowerCC26XX_PERIPH_SSI0, -+ .defaultTxBufValue = ~0, -+ .rxChannelBitMask = 1< -+#include -+ -+#define CONFIG_TRNG_COUNT 1 -+ -+TRNGCC26XX_Object trngCC26XXObjects[CONFIG_TRNG_COUNT]; -+ -+/* -+ * ======== trngCC26XXHWAttrs ======== -+ */ -+static const TRNGCC26XX_HWAttrs trngCC26XXHWAttrs[CONFIG_TRNG_COUNT] = { -+ { -+ .intPriority = (~0), -+ .swiPriority = 0, -+ .samplesPerCycle = 240000 -+ }, -+}; -+ -+const TRNG_Config TRNG_config[CONFIG_TRNG_COUNT] = { -+ { /* CONFIG_TRNG_0 */ -+ .object = &trngCC26XXObjects[CONFIG_TRNG_0], -+ .hwAttrs = &trngCC26XXHWAttrs[CONFIG_TRNG_0] -+ }, -+}; -+ -+const uint_least8_t CONFIG_TRNG_0_CONST = CONFIG_TRNG_0; -+const uint_least8_t TRNG_count = CONFIG_TRNG_COUNT; -+ -+/* -+ * =============================== Temperature =============================== -+ */ -+#include -+#include -+ -+const TemperatureCC26X2_Config TemperatureCC26X2_config = { -+ .intPriority = (~0), -+}; -+ -+/* -+ * =============================== UART =============================== -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define CONFIG_UART_COUNT 1 -+ -+UARTCC26XX_Object uartCC26XXObjects[CONFIG_UART_COUNT]; -+ -+static unsigned char uartCC26XXRingBuffer0[32]; -+ -+static const UARTCC26XX_HWAttrsV2 uartCC26XXHWAttrs[CONFIG_UART_COUNT] = { -+ { -+ .baseAddr = UART0_BASE, -+ .intNum = INT_UART0_COMB, -+ .intPriority = (~0), -+ .swiPriority = 0, -+ .powerMngrId = PowerCC26XX_PERIPH_UART0, -+ .ringBufPtr = uartCC26XXRingBuffer0, -+ .ringBufSize = sizeof(uartCC26XXRingBuffer0), -+ .rxPin = IOID_12, -+ .txPin = IOID_13, -+ .ctsPin = PIN_UNASSIGNED, -+ .rtsPin = PIN_UNASSIGNED, -+ .txIntFifoThr = UARTCC26XX_FIFO_THRESHOLD_1_8, -+ .rxIntFifoThr = UARTCC26XX_FIFO_THRESHOLD_4_8, -+ .errorFxn = NULL -+ }, -+}; -+ -+const UART_Config UART_config[CONFIG_UART_COUNT] = { -+ { /* CONFIG_DISPLAY_UART */ -+ .fxnTablePtr = &UARTCC26XX_fxnTable, -+ .object = &uartCC26XXObjects[CONFIG_DISPLAY_UART], -+ .hwAttrs = &uartCC26XXHWAttrs[CONFIG_DISPLAY_UART] -+ }, -+}; -+ -+const uint_least8_t CONFIG_DISPLAY_UART_CONST = CONFIG_DISPLAY_UART; -+const uint_least8_t UART_count = CONFIG_UART_COUNT; -+ -+/* -+ * =============================== Button =============================== -+ */ -+#include -+ -+#define CONFIG_BUTTON_COUNT 2 -+Button_Object ButtonObjects[CONFIG_BUTTON_COUNT]; -+ -+static const Button_HWAttrs ButtonHWAttrs[CONFIG_BUTTON_COUNT] = { -+ /* CONFIG_BTN_LEFT */ -+ /* LaunchPad Button BTN-1 (Left) */ -+ { -+ .gpioIndex = CONFIG_GPIO_BTN1 -+ }, -+ /* CONFIG_BTN_RIGHT */ -+ /* LaunchPad Button BTN-2 (Right) */ -+ { -+ .gpioIndex = CONFIG_GPIO_BTN2 -+ }, -+}; -+ -+const Button_Config Button_config[CONFIG_BUTTON_COUNT] = { -+ /* CONFIG_BTN_LEFT */ -+ /* LaunchPad Button BTN-1 (Left) */ -+ { -+ .object = &ButtonObjects[CONFIG_BTN_LEFT], -+ .hwAttrs = &ButtonHWAttrs[CONFIG_BTN_LEFT] -+ }, -+ /* CONFIG_BTN_RIGHT */ -+ /* LaunchPad Button BTN-2 (Right) */ -+ { -+ .object = &ButtonObjects[CONFIG_BTN_RIGHT], -+ .hwAttrs = &ButtonHWAttrs[CONFIG_BTN_RIGHT] -+ }, -+}; -+ -+const uint_least8_t CONFIG_BTN_LEFT_CONST = CONFIG_BTN_LEFT; -+const uint_least8_t CONFIG_BTN_RIGHT_CONST = CONFIG_BTN_RIGHT; -+const uint_least8_t Button_count = CONFIG_BUTTON_COUNT; -+ -+/* -+ * =============================== LED =============================== -+ */ -+#include -+ -+#define CONFIG_LED_COUNT 2 -+LED_Object LEDObjects[CONFIG_LED_COUNT]; -+ -+static const LED_HWAttrs LEDHWAttrs[CONFIG_LED_COUNT] = { -+ /* CONFIG_LED_RED */ -+ /* LaunchPad LED Red */ -+ { -+ .type = LED_GPIO_CONTROLLED, -+ .index = CONFIG_GPIO_RLED, -+ }, -+ /* CONFIG_LED_GREEN */ -+ /* LaunchPad LED Green */ -+ { -+ .type = LED_GPIO_CONTROLLED, -+ .index = CONFIG_GPIO_GLED, -+ }, -+}; -+ -+const LED_Config LED_config[CONFIG_LED_COUNT] = { -+ /* CONFIG_LED_RED */ -+ /* LaunchPad LED Red */ -+ { -+ .object = &LEDObjects[CONFIG_LED_RED], -+ .hwAttrs = &LEDHWAttrs[CONFIG_LED_RED] -+ }, -+ /* CONFIG_LED_GREEN */ -+ /* LaunchPad LED Green */ -+ { -+ .object = &LEDObjects[CONFIG_LED_GREEN], -+ .hwAttrs = &LEDHWAttrs[CONFIG_LED_GREEN] -+ }, -+}; -+ -+const uint_least8_t CONFIG_LED_RED_CONST = CONFIG_LED_RED; -+const uint_least8_t CONFIG_LED_GREEN_CONST = CONFIG_LED_GREEN; -+const uint_least8_t LED_count = CONFIG_LED_COUNT; -+ -+#include -+ -+#include -+#include -+ -+#include -+ -+/* -+ * ======== Board_sendExtFlashByte ======== -+ */ -+void Board_sendExtFlashByte(PIN_Handle pinHandle, uint8_t byte) -+{ -+ uint8_t i; -+ -+ /* SPI Flash CS */ -+ PIN_setOutputValue(pinHandle, IOID_20, 0); -+ -+ for (i = 0; i < 8; i++) { -+ PIN_setOutputValue(pinHandle, IOID_10, 0); /* SPI Flash CLK */ -+ -+ /* SPI Flash MOSI */ -+ PIN_setOutputValue(pinHandle, IOID_9, (byte >> (7 - i)) & 0x01); -+ PIN_setOutputValue(pinHandle, IOID_10, 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); -+ } -+ -+ PIN_setOutputValue(pinHandle, IOID_10, 0); /* CLK */ -+ PIN_setOutputValue(pinHandle, IOID_20, 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) -+{ -+ PIN_Config extFlashPinTable[] = { -+ /* SPI Flash CS */ -+ IOID_20 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | -+ PIN_INPUT_DIS | PIN_DRVSTR_MED, -+ PIN_TERMINATE -+ }; -+ PIN_State extFlashPinState; -+ PIN_Handle extFlashPinHandle = PIN_open(&extFlashPinState, extFlashPinTable); -+ -+ /* -+ * 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 */ -+ PIN_setOutputValue(extFlashPinHandle, IOID_20, 0); -+ /* 3 cycles per loop: 1 loop @ 48 Mhz ~= 62 ns */ -+ CPUdelay(1); -+ PIN_setOutputValue(extFlashPinHandle, IOID_20, 1); -+ /* 3 cycles per loop: 560 loops @ 48 Mhz ~= 35 us */ -+ CPUdelay(560); -+ -+ PIN_close(extFlashPinHandle); -+} -+ -+/* -+ * ======== 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(); -+ -+ PIN_Config extFlashPinTable[] = { -+ /* SPI Flash CS*/ -+ IOID_20 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | -+ PIN_INPUT_DIS | PIN_DRVSTR_MED, -+ /* SPI Flash CLK */ -+ IOID_10 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | -+ PIN_INPUT_DIS | PIN_DRVSTR_MED, -+ /* SPI Flash MOSI */ -+ IOID_9 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | -+ PIN_INPUT_DIS | PIN_DRVSTR_MED, -+ /* SPI Flash MISO */ -+ IOID_8 | PIN_INPUT_EN | PIN_PULLDOWN, -+ PIN_TERMINATE -+ }; -+ PIN_State extFlashPinState; -+ PIN_Handle extFlashPinHandle = PIN_open(&extFlashPinState, extFlashPinTable); -+ -+ uint8_t extFlashShutdown = 0xB9; -+ -+ Board_sendExtFlashByte(extFlashPinHandle, extFlashShutdown); -+ -+ PIN_close(extFlashPinHandle); -+} -+ -+ -+#include -+ -+/* -+ * ======== 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/CCFGTemplate initialization ==== */ -+ -+ /* ==== /ti/drivers/PIN initialization ==== */ -+ if (PIN_init(BoardGpioInitTable) != PIN_SUCCESS) { -+ /* Error with PIN_init */ -+ while (1); -+ } -+ /* ==== /ti/drivers/RF initialization ==== */ -+ -+ -+ Board_shutDownExtFlash(); -+ -+ Board_initHook(); -+} -+ -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.h -new file mode 100644 -index 0000000..abf128f ---- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_drivers_config.h -@@ -0,0 +1,283 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_drivers_config.h +@@ -0,0 +1,274 @@ +/* + * ======== ti_drivers_config.h ======== + * Configured TI-Drivers module declarations @@ -1442,34 +449,65 @@ index 0000000..abf128f + + +/* -+ * ======== ECJPAKE ======== -+ */ -+ -+extern const uint_least8_t CONFIG_ECJPAKE_0_CONST; -+#define CONFIG_ECJPAKE_0 0 -+#define CONFIG_TI_DRIVERS_ECJPAKE_COUNT 1 -+ -+ -+/* + * ======== GPIO ======== + */ ++/* Owned by CONFIG_DISPLAY_UART as */ ++extern const uint_least8_t CONFIG_GPIO_DISPLAY_UART_TX_CONST; ++#define CONFIG_GPIO_DISPLAY_UART_TX 13 + -+/* DIO15, LaunchPad Button BTN-1 (Left) */ -+extern const uint_least8_t CONFIG_GPIO_BTN1_CONST; -+#define CONFIG_GPIO_BTN1 0 -+/* DIO14, LaunchPad Button BTN-2 (Right) */ -+extern const uint_least8_t CONFIG_GPIO_BTN2_CONST; -+#define CONFIG_GPIO_BTN2 1 -+/* DIO6, LaunchPad LED Red */ -+extern const uint_least8_t CONFIG_GPIO_RLED_CONST; -+#define CONFIG_GPIO_RLED 2 -+/* DIO7, LaunchPad LED Green */ -+extern const uint_least8_t CONFIG_GPIO_GLED_CONST; -+#define CONFIG_GPIO_GLED 3 -+/* DIO20, MX25R8035F SPI Flash Slave Select */ -+extern const uint_least8_t CONFIG_GPIO_0_CONST; -+#define CONFIG_GPIO_0 4 -+#define CONFIG_TI_DRIVERS_GPIO_COUNT 5 ++/* Owned by CONFIG_DISPLAY_UART as */ ++extern const uint_least8_t CONFIG_GPIO_DISPLAY_UART_RX_CONST; ++#define CONFIG_GPIO_DISPLAY_UART_RX 12 ++ ++/* Owned by /ti/drivers/RF as */ ++extern const uint_least8_t CONFIG_RF_24GHZ_CONST; ++// CUSTOM: set in preinclude.h ++// #define CONFIG_RF_24GHZ 28 ++ ++/* Owned by /ti/drivers/RF as */ ++extern const uint_least8_t CONFIG_RF_HIGH_PA_CONST; ++// CUSTOM: set in preinclude.h ++// #define CONFIG_RF_HIGH_PA 29 ++ ++/* Owned by /ti/drivers/RF as */ ++extern const uint_least8_t CONFIG_RF_SUB1GHZ_CONST; ++#define CONFIG_RF_SUB1GHZ 30 ++ ++/* Owned by CONFIG_BTN_LEFT as */ ++extern const uint_least8_t CONFIG_GPIO_BTN1_CONST; ++#define CONFIG_GPIO_BTN1 15 ++ ++/* Owned by CONFIG_BTN_RIGHT as */ ++extern const uint_least8_t CONFIG_GPIO_BTN2_CONST; ++#define CONFIG_GPIO_BTN2 14 ++ ++/* Owned by CONFIG_LED_RED as */ ++extern const uint_least8_t CONFIG_GPIO_RLED_CONST; ++#define CONFIG_GPIO_RLED 6 ++ ++/* Owned by CONFIG_LED_GREEN as */ ++extern const uint_least8_t CONFIG_GPIO_GLED_CONST; ++#define CONFIG_GPIO_GLED 7 ++ ++/* Owned by CONFIG_NVS_SPI_0 as */ ++extern const uint_least8_t CONFIG_GPIO_0_CONST; ++#define CONFIG_GPIO_0 20 ++ ++/* Owned by CONFIG_SPI_0 as */ ++extern const uint_least8_t CONFIG_PIN_SPI_SCLK_CONST; ++#define CONFIG_PIN_SPI_SCLK 10 ++ ++/* Owned by CONFIG_SPI_0 as */ ++extern const uint_least8_t CONFIG_PIN_SPI_MISO_CONST; ++#define CONFIG_PIN_SPI_MISO 8 ++ ++/* Owned by CONFIG_SPI_0 as */ ++extern const uint_least8_t CONFIG_PIN_SPI_MOSI_CONST; ++#define CONFIG_PIN_SPI_MOSI 9 ++ ++/* 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) @@ -1490,7 +528,7 @@ index 0000000..abf128f + * MISO: DIO8 + * SCLK: DIO10 + * LaunchPad SPI Bus -+ * SS: DIO20, MX25R8035F SPI Flash Slave Select ++ * SS: undefined + */ +extern const uint_least8_t CONFIG_NVSEXTERNAL_CONST; +#define CONFIG_NVSEXTERNAL 1 @@ -1498,42 +536,6 @@ index 0000000..abf128f + + +/* -+ * ======== PIN ======== -+ */ -+#include -+ -+extern const PIN_Config BoardGpioInitTable[]; -+ -+/* XDS110 UART, Parent Signal: CONFIG_DISPLAY_UART TX, (DIO13) */ -+#define CONFIG_PIN_UART_TX 0x0000000d -+/* XDS110 UART, Parent Signal: CONFIG_DISPLAY_UART RX, (DIO12) */ -+#define CONFIG_PIN_UART_RX 0x0000000c -+/* SKY13317-373LF RF Antenna Switch, Parent Signal: /ti/drivers/RF RF Antenna Pin 0, (DIO28) */ -+// #define CONFIG_RF_24GHZ 0x0000001c -+/* SKY13317-373LF RF Antenna Switch, Parent Signal: /ti/drivers/RF RF Antenna Pin 1, (DIO29) */ -+// #define CONFIG_RF_HIGH_PA 0x0000001d -+/* SKY13317-373LF RF Antenna Switch, Parent Signal: /ti/drivers/RF RF Antenna Pin 2, (DIO30) */ -+#define CONFIG_RF_SUB1GHZ 0x0000001e -+/* LaunchPad Button BTN-1 (Left), Parent Signal: CONFIG_GPIO_BTN1 GPIO Pin, (DIO15) */ -+#define CONFIG_PIN_BTN1 0x0000000f -+/* LaunchPad Button BTN-2 (Right), Parent Signal: CONFIG_GPIO_BTN2 GPIO Pin, (DIO14) */ -+#define CONFIG_PIN_BTN2 0x0000000e -+/* LaunchPad LED Red, Parent Signal: CONFIG_GPIO_RLED GPIO Pin, (DIO6) */ -+#define CONFIG_PIN_RLED 0x00000006 -+/* LaunchPad LED Green, Parent Signal: CONFIG_GPIO_GLED GPIO Pin, (DIO7) */ -+#define CONFIG_PIN_GLED 0x00000007 -+/* MX25R8035F SPI Flash Slave Select, Parent Signal: CONFIG_GPIO_0 GPIO Pin, (DIO20) */ -+#define CONFIG_PIN_0 0x00000014 -+/* LaunchPad SPI Bus, Parent Signal: CONFIG_SPI_0 SCLK, (DIO10) */ -+#define CONFIG_PIN_SPI_SCLK 0x0000000a -+/* LaunchPad SPI Bus, Parent Signal: CONFIG_SPI_0 MISO, (DIO8) */ -+#define CONFIG_PIN_SPI_MISO 0x00000008 -+/* LaunchPad SPI Bus, Parent Signal: CONFIG_SPI_0 MOSI, (DIO9) */ -+#define CONFIG_PIN_SPI_MOSI 0x00000009 -+#define CONFIG_TI_DRIVERS_PIN_COUNT 13 -+ -+ -+/* + * ======== RF ======== + */ +#define Board_DIO_30_RFSW 0x0000001e @@ -1573,7 +575,7 @@ index 0000000..abf128f + + +/* -+ * ======== UART ======== ++ * ======== UART2 ======== + */ + +/* @@ -1581,19 +583,17 @@ index 0000000..abf128f + * RX: DIO12 + * XDS110 UART + */ -+extern const uint_least8_t CONFIG_DISPLAY_UART_CONST; -+#define CONFIG_DISPLAY_UART 0 -+#define CONFIG_TI_DRIVERS_UART_COUNT 1 ++extern const uint_least8_t CONFIG_DISPLAY_UART_CONST; ++#define CONFIG_DISPLAY_UART 0 ++#define CONFIG_TI_DRIVERS_UART2_COUNT 1 + + +/* + * ======== Button ======== + */ + -+/* DIO15, LaunchPad Button BTN-1 (Left) */ +extern const uint_least8_t CONFIG_BTN_LEFT_CONST; +#define CONFIG_BTN_LEFT 0 -+/* DIO14, LaunchPad Button BTN-2 (Right) */ +extern const uint_least8_t CONFIG_BTN_RIGHT_CONST; +#define CONFIG_BTN_RIGHT 1 +#define CONFIG_TI_DRIVERS_BUTTON_COUNT 2 @@ -1603,10 +603,8 @@ index 0000000..abf128f + * ======== LED ======== + */ + -+/* DIO6, LaunchPad LED Red */ +extern const uint_least8_t CONFIG_LED_RED_CONST; +#define CONFIG_LED_RED 0 -+/* DIO7, LaunchPad LED Green */ +extern const uint_least8_t CONFIG_LED_GREEN_CONST; +#define CONFIG_LED_GREEN 1 +#define CONFIG_TI_DRIVERS_LED_COUNT 2 @@ -1639,12 +637,12 @@ index 0000000..abf128f +#endif + +#endif /* include guard */ -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.c +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.c new file mode 100644 -index 0000000..ac1e16f +index 0000000..c23e14a --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.c -@@ -0,0 +1,340 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.c +@@ -0,0 +1,387 @@ +/* + * ======== ti_radio_config.c ======== + * Configured RadioConfig module definitions @@ -1652,17 +650,12 @@ index 0000000..ac1e16f + * DO NOT EDIT - This file is generated for the CC1352P1F3RGZ + * by the SysConfig tool. + * -+ * Radio Config module version : 1.8 -+ * SmartRF Studio data version : 2.20.0 ++ * Radio Config module version : 1.11 ++ * SmartRF Studio data version : 2.23.0 + */ + -+#include -+#include DeviceFamily_constructPath(driverlib/rf_mailbox.h) -+#include DeviceFamily_constructPath(driverlib/rf_common_cmd.h) -+#include DeviceFamily_constructPath(driverlib/rf_ieee_cmd.h) -+#include -+#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_ieee_802_15_4.h) +#include "ti_radio_config.h" ++#include DeviceFamily_constructPath(rf_patches/rf_patch_cpe_ieee_802_15_4.h) + + +// ********************************************************************************* @@ -1745,6 +738,17 @@ index 0000000..ac1e16f + {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) }, ++ ++ // CUSTOM: allow transmit power 6 - 13 dbm ++ {6, .value.rawValue = (0x144f2a), .value.paType = RF_TxPowerTable_HighPA }, ++ {7, .value.rawValue = (0x14285f), .value.paType = RF_TxPowerTable_HighPA }, ++ {8, .value.rawValue = (0x10335a), .value.paType = RF_TxPowerTable_HighPA }, ++ {9, .value.rawValue = (0x103f5f), .value.paType = RF_TxPowerTable_HighPA }, ++ {10, .value.rawValue = (0x104f66), .value.paType = RF_TxPowerTable_HighPA }, ++ {11, .value.rawValue = (0x3021cb), .value.paType = RF_TxPowerTable_HighPA }, ++ {12, .value.rawValue = (0x3f27cc), .value.paType = RF_TxPowerTable_HighPA }, ++ {13, .value.rawValue = (0x3fc3cd), .value.paType = RF_TxPowerTable_HighPA }, ++ + {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) }, @@ -1766,7 +770,7 @@ index 0000000..ac1e16f + +// PARAMETER SUMMARY +// Channel - Frequency (MHz): 2405 -+// TX Power (dBm): 5 ++// TX Power (dBm): 20 + +// TI-RTOS RF Mode Object +RF_Mode RF_prop_ieee154 = @@ -1788,6 +792,46 @@ index 0000000..ac1e16f + (uint32_t)0xFFFFFFFF +}; + ++// Overrides for CMD_RADIO_SETUP_PA ++uint32_t pOverrides_ieee154TxStd[] = ++{ ++ // override_txstd_placeholder.json ++ // TX Standard power override ++ TX_STD_POWER_OVERRIDE(0x7217), ++ // The ANADIV radio parameter based on LO divider and front end settings ++ (uint32_t)0x05320703, ++ // override_txstd_settings.json ++ // Set RTIM offset to default for standard PA ++ (uint32_t)0x00008783, ++ // Set synth mux to default value for standard PA ++ (uint32_t)0x050206C3, ++ // Set TXRX pin to 0 in RX and high impedance in idle/TX. ++ HW_REG_OVERRIDE(0x60A8,0x0401), ++ // Tx: Set DCDC settings IPEAK=3, dither = off ++ (uint32_t)0x00F388D3, ++ (uint32_t)0xFFFFFFFF ++}; ++ ++// Overrides for CMD_RADIO_SETUP_PA ++uint32_t pOverrides_ieee154Tx20[] = ++{ ++ // override_tx20_placeholder.json ++ // TX HighPA power override ++ TX20_POWER_OVERRIDE(0x003F75F5), ++ // The ANADIV radio parameter based on LO divider and front end settings ++ (uint32_t)0x01C20703, ++ // override_tx20_settings.json ++ // Set RTIM offset to 3 for high power PA ++ (uint32_t)0x00038783, ++ // Set synth mux for high power PA ++ (uint32_t)0x010206C3, ++ // Set TXRX pin to 0 in RX/TX and high impedance in idle. ++ HW_REG_OVERRIDE(0x60A8,0x0001), ++ // Tx: Set DCDC settings IPEAK=7, dither = off ++ (uint32_t)0x00F788D3, ++ (uint32_t)0xFFFFFFFF ++}; ++ + + +// CMD_RADIO_SETUP_PA @@ -1810,10 +854,11 @@ index 0000000..ac1e16f + .config.biasMode = 0x1, + .config.analogCfgMode = 0x0, + .config.bNoFsPowerUp = 0x0, -+ .txPower = 0x7217, ++ .config.bSynthNarrowBand = 0x0, ++ .txPower = 0xFFFF, + .pRegOverride = pOverrides_ieee154, -+ .pRegOverrideTxStd = 0, -+ .pRegOverrideTx20 = 0 ++ .pRegOverrideTxStd = pOverrides_ieee154TxStd, ++ .pRegOverrideTx20 = pOverrides_ieee154Tx20 +}; + +// CMD_FS @@ -1985,12 +1030,12 @@ index 0000000..ac1e16f +}; + + -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.h +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.h new file mode 100644 -index 0000000..1e63c91 +index 0000000..9d58da3 --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_radio_config.h -@@ -0,0 +1,77 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.h +@@ -0,0 +1,83 @@ +/* + * ======== ti_radio_config.h ======== + * Configured RadioConfig module definitions @@ -1998,8 +1043,8 @@ index 0000000..1e63c91 + * DO NOT EDIT - This file is generated for the CC1352P1F3RGZ + * by the SysConfig tool. + * -+ * Radio Config module version : 1.8 -+ * SmartRF Studio data version : 2.20.0 ++ * Radio Config module version : 1.11 ++ * SmartRF Studio data version : 2.23.0 + */ +#ifndef _TI_RADIO_CONFIG_H_ +#define _TI_RADIO_CONFIG_H_ @@ -2010,6 +1055,9 @@ index 0000000..1e63c91 +#include DeviceFamily_constructPath(driverlib/rf_ieee_cmd.h) +#include + ++/* SmartRF Studio version that the RF data is fetched from */ ++#define SMARTRF_STUDIO_VERSION "2.23.0" ++ +// ********************************************************************************* +// RF Frontend configuration +// ********************************************************************************* @@ -2032,7 +1080,8 @@ index 0000000..1e63c91 +// TX power table size definitions +#define TXPOWERTABLE_868_PA13_SIZE 20 // 868 MHz, 13 dBm +#define TXPOWERTABLE_2400_PA5_SIZE 16 // 2400 MHz, 5 dBm -+#define TXPOWERTABLE_2400_PA5_20_SIZE 23 // 2400 MHz, 5 + 20 dBm ++// CUSTOM: account for extra entities in ti_radio_config.c txPowerTable_2400_pa5_20 ++#define TXPOWERTABLE_2400_PA5_20_SIZE 31 // 2400 MHz, 5 + 20 dBm + +// TX power tables +extern RF_TxPowerTable_Entry txPowerTable_868_pa13[]; // 868 MHz, 13 dBm @@ -2049,9 +1098,9 @@ index 0000000..1e63c91 +//********************************************************************************* + +// PA table usage -+#define TX_POWER_TABLE_SIZE_ieee154 TXPOWERTABLE_2400_PA5_SIZE ++#define TX_POWER_TABLE_SIZE_ieee154 TXPOWERTABLE_2400_PA5_20_SIZE + -+#define txPowerTable_ieee154 txPowerTable_2400_pa5 ++#define txPowerTable_ieee154 txPowerTable_2400_pa5_20 + +// TI-RTOS RF Mode object +extern RF_Mode RF_prop_ieee154; @@ -2066,429 +1115,55 @@ index 0000000..1e63c91 + +// RF Core API overrides +extern uint32_t pOverrides_ieee154[]; ++extern uint32_t pOverrides_ieee154TxStd[]; ++extern uint32_t pOverrides_ieee154Tx20[]; + +#endif // _TI_RADIO_CONFIG_H_ -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_utils_build_linker.cmd.genlibs b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_utils_build_linker.cmd.genlibs -new file mode 100644 -index 0000000..4ce34a6 ---- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_utils_build_linker.cmd.genlibs -@@ -0,0 +1,35 @@ -+/* -+ * ======== 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 -+ * TI C/C++ toolchain -+ */ -+ -+/* libraries required for /third_party/spiffs */ -+-l"third_party/spiffs/lib/ccs/m4f/spiffs.a" -+ -+/* libraries required for /ti/drivers/RF */ -+-l"ti/drivers/rf/lib/rf_multiMode_cc13x2.aem4f" -+ -+/* libraries required for /ti/drivers */ -+-l"ti/drivers/lib/ccs/m4f/drivers_cc13x2.a" -+-l"ti/grlib/lib/ccs/m4f/grlib.a" -+-l"ti/dpl/lib/ccs/m4f/dpl_cc13x2.a" -+ -+/* libraries required for /ti/zstack */ -+-l"ti/ti154stack/library/tirtos/ccs/bin/maclib_nosecure_cc13x2_2_4g.a" -+-l"ti/zstack/lib/ccs/libZStack_nwk_zr_ccs.a" -+ -diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_zstack_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_zstack_config.h -new file mode 100644 -index 0000000..49ece4c ---- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/syscfg/ti_zstack_config.h -@@ -0,0 +1,226 @@ -+/* -+ * Copyright (c) 2018, Texas Instruments Incorporated -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * -+ * * Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * -+ * * Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * -+ * * Neither the name of Texas Instruments Incorporated nor the names of -+ * its contributors may be used to endorse or promote products derived -+ * from this software without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ */ -+ -+/* -+ * ti_zstack_config.h -+ * -+ * DO NOT EDIT - This file was generated by the SysConfig tool. -+ * -+ * Macros used to define a TI Z-Stack ZigBee device. New user defined -+ * options may be added to this file, as necessary. -+ * -+ */ -+ -+#ifndef TI_ZSTACK_CONFIG_H -+#define TI_ZSTACK_CONFIG_H -+ -+/* Default (primary) and secondary channel masks. Secondary mask is used when the -+ * default channels fail. -+ * Channels are defined in the following: -+ * 11 - 26 : 2.4 GHz 0x07FFF800 -+ */ -+#ifndef DEFAULT_CHANLIST -+#define DEFAULT_CHANLIST 0x07fff800 -+#endif -+ -+#ifndef SECONDARY_CHANLIST -+#define SECONDARY_CHANLIST 0x00000000 -+#endif -+ -+/* Define the default PAN ID. -+ * -+ * Setting this to a value other than 0xFFFF causes -+ * ZDO_COORD to use this value as its PAN ID and -+ * Routers and end devices to join PAN with this ID -+ */ -+#ifndef ZDAPP_CONFIG_PAN_ID -+#define ZDAPP_CONFIG_PAN_ID 0xFFFF -+#endif -+ -+/* Specifiy whether to set the EPID to the Extended Address, or to use the -+ * custom Extended Pan ID (EPID) defined by ZDAPP_CONFIG_EPID -+ */ -+#ifndef SET_EPID_AS_EXT_ADDR -+#define SET_EPID_AS_EXT_ADDR TRUE -+#endif -+ -+/* Define the default Extended Pan ID (EPID) -+ * ZDAPP_CONFIG_EPID is only used if SET_EPID_AS_EXT_ADDR is FALSE. Otherwise, -+ * the EPID is set to the Extended Address. -+ */ -+#ifndef ZDAPP_CONFIG_EPID -+#define ZDAPP_CONFIG_EPID {0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF} -+#endif -+ -+/* in seconds; set to 255 to turn off route expiry */ -+#ifndef ROUTE_EXPIRY_TIME -+#define ROUTE_EXPIRY_TIME 30 -+#endif -+ -+/* Default indirect message holding timeout value: -+ * 1-65535 (0 -> 65536) X CNT_RTG_TIMER X RTG_TIMER_INTERVAL -+ */ -+#ifndef NWK_INDIRECT_MSG_TIMEOUT -+#define NWK_INDIRECT_MSG_TIMEOUT 7 -+#endif -+ -+/* The number of simultaneous route discoveries in network */ -+#ifndef MAX_RREQ_ENTRIES -+#define MAX_RREQ_ENTRIES 8 -+#endif -+ -+/* The maximum number of MAC frame transmission attempts allowed */ -+#ifndef ZMAC_MAX_FRAME_RETRIES -+#define ZMAC_MAX_FRAME_RETRIES 3 -+#endif -+ -+/* Max number of times attempts looking for the next hop address of a message */ -+#ifndef NWK_MAX_DATA_RETRIES -+#define NWK_MAX_DATA_RETRIES 2 -+#endif -+ -+/* The maximum number of times APS frames are retried after not receiving an APS ACK */ -+#ifndef APSC_MAX_FRAME_RETRIES -+#define APSC_MAX_FRAME_RETRIES 3 -+#endif -+ -+/* This number is used by polled devices, since the spec'd formula -+ * doesn't work for sleeping end devices. For non-polled devices, -+ * a formula is used. Value is in 2 milliseconds periods -+ */ -+#ifndef APSC_ACK_WAIT_DURATION_POLLED -+#define APSC_ACK_WAIT_DURATION_POLLED 3000 -+#endif -+ -+/* The maximum number of groups in the groups table */ -+#ifndef APS_MAX_GROUPS -+#define APS_MAX_GROUPS 16 -+#endif -+ -+/* Number of entries in the regular routing table plus additional -+ * entries for route repair -+ */ -+#ifndef MAX_RTG_ENTRIES -+#define MAX_RTG_ENTRIES 40 -+#endif -+ -+/* Maximum number of entries in the Binding table. */ -+#ifndef NWK_MAX_BINDING_ENTRIES -+#define NWK_MAX_BINDING_ENTRIES 4 -+#endif -+ -+/* Default security key. */ -+#ifndef DEFAULT_KEY -+#define DEFAULT_KEY {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} -+#endif -+ -+/* ZigBee Alliance Pre-configured Distributed Link Key (for Distributed networks) */ -+#ifndef DISTRIBUTED_GLOBAL_LINK_KEY -+#define DISTRIBUTED_GLOBAL_LINK_KEY {0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF} -+#endif -+ -+/* ZigBee Alliance Pre-configured TC Link Key - 'ZigBeeAlliance09' (for Centralized networks) */ -+#ifndef DEFAULT_TC_LINK_KEY -+#define DEFAULT_TC_LINK_KEY {0x5a,0x69,0x67,0x42,0x65,0x65,0x41,0x6c,0x6c,0x69,0x61,0x6e,0x63,0x65,0x30,0x39} -+#endif -+ -+/* The number of milliseconds to wait between data request polls to the coordinator. */ -+#ifndef TXPOWER -+#define TXPOWER 5 -+#endif -+ -+/**************************************** -+ * The following are for End Devices only -+ ***************************************/ -+ -+/* Determine whether the radio on an End Device is always on */ -+#ifndef RFD_RX_ALWAYS_ON_CAPABLE -+#define RFD_RX_ALWAYS_ON_CAPABLE TRUE -+#endif -+ -+#ifndef RFD_RX_ALWAYS_ON -+#define RFD_RX_ALWAYS_ON TRUE -+#endif -+ -+/* The minimum poll rate. */ -+#ifndef MINIMUM_APP_POLL_RATE -+#define MINIMUM_APP_POLL_RATE 100 -+#endif -+ -+/* The number of milliseconds to wait between data request polls to the coordinator. */ -+#ifndef POLL_RATE -+#define POLL_RATE 3000 -+#endif -+ -+/* This is used after receiving a data indication to poll immediately -+ * for queued messages...in milliseconds. -+ */ -+#ifndef QUEUED_POLL_RATE -+#define QUEUED_POLL_RATE 100 -+#endif -+ -+/* This is used after receiving a data confirmation to poll immediately -+ * for response messages...in milliseconds -+ */ -+#ifndef RESPONSE_POLL_RATE -+#define RESPONSE_POLL_RATE 100 -+#endif -+ -+/* This is used as an alternate response poll rate only for rejoin request. -+ * This rate is determined by the response time of the parent that the device -+ * is trying to join. -+ */ -+#ifndef REJOIN_POLL_RATE -+#define REJOIN_POLL_RATE 440 -+#endif -+ -+/* Maximum number of devices in the Assoc/Device list. */ -+#ifndef NWK_MAX_DEVICE_LIST -+#define NWK_MAX_DEVICE_LIST 20 -+#endif -+ -+/* Total Number of APS keys that a TC can manage. This is equal to the number of devices a ZC can allow to join the network */ -+#ifndef ZDSECMGR_TC_DEVICE_MAX -+#define ZDSECMGR_TC_DEVICE_MAX 3 -+#endif -+ -+/* Value used by end device when sending End Device Timeout Request */ -+/* This is an index into table timeoutValue[] defined in nwk_globals.c */ -+#ifndef END_DEV_TIMEOUT_VALUE -+#define END_DEV_TIMEOUT_VALUE 8 -+#endif -+ -+ -+ -+ -+#endif /* TI_ZSTACK_CONFIG_H */ -diff --git a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c -index f33fc07..5aad76f 100644 ---- a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c -+++ b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c -@@ -53,6 +53,8 @@ - * INCLUDES - */ - -+#include -+ - #include "rom_jt_154.h" - #include "zcomdef.h" - -@@ -426,7 +428,7 @@ static void zclGenericApp_Init( void ) - // Call BDB initialization. Should be called once from application at startup to restore - // previous network configuration, if applicable. - zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; -- zstack_bdbStartCommissioningReq.commissioning_mode = 0; -+ zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; - Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); - } - -@@ -1208,28 +1210,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask - */ - static void zclGenericApp_processKey(Button_Handle _btn) - { -- zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; -- //Button 1 -- if(_btn == gLeftButtonHandle) -- { -- if(ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE) -- { -+ NLME_LeaveReq_t req; -+ memset( &req, 0, sizeof( NLME_LeaveReq_t ) ); -+ NLME_LeaveReq(&req); -+ // Sleep for 2 seconds, otherwise leave request is not send -+ Task_sleep(2000 * (1000 / ClockP_getSystemTickPeriod())); - -- zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; -- Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); -- } -- else if (ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE) -- { -- zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; -- Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); -- } -- } -- //Button 2 -- if(_btn == gRightButtonHandle) -- { -- Zstackapi_bdbResetLocalActionReq(appServiceTaskId); -- } -+ zgWriteStartupOptions( ZG_STARTUP_SET, -+ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); - -+ SysCtrlSystemReset(); - } - - -diff --git a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c -index c0e473d..a09a0df 100644 ---- a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c -+++ b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c -@@ -96,6 +96,8 @@ const uint16_t zclGenericApp_identify_clusterRevision = 0x0001; - const uint8_t zclGenericApp_HWRevision = GENERICAPP_HWVERSION; - const uint8_t zclGenericApp_ZCLVersion = GENERICAPP_ZCLVERSION; - const uint8_t zclGenericApp_ManufacturerName[] = { 16, 'T','e','x','a','s','I','n','s','t','r','u','m','e','n','t','s' }; -+const uint8_t zclGenericApp_ModelID[] = { 9, 't','i','.','r','o','u','t','e','r' }; -+const uint8_t zclGenericApp_SwBuildID[] = { 8, '2','0','2','1','0','1','2','8' }; - const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; - uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; - -@@ -143,10 +145,28 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = - { // Attribute record - ATTRID_BASIC_ZCL_VERSION, - ZCL_DATATYPE_UINT8, -- ACCESS_CONTROL_READ, -+ ACCESS_CONTROL_READ | ACCESS_REPORTABLE, - (void *)&zclGenericApp_ZCLVersion - } - }, -+ { -+ ZCL_CLUSTER_ID_GENERAL_BASIC, -+ { // Attribute record -+ ATTRID_BASIC_MODEL_IDENTIFIER, -+ ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, -+ (void *)zclGenericApp_ModelID -+ } -+ }, -+ { -+ ZCL_CLUSTER_ID_GENERAL_BASIC, -+ { // Attribute record -+ ATTRID_BASIC_SW_BUILD_ID, -+ ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, -+ (void *)zclGenericApp_SwBuildID -+ } -+ }, - { - ZCL_CLUSTER_ID_GENERAL_BASIC, - { // Attribute record -diff --git a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts -index b841d60..598f537 100644 ---- a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts -+++ b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts -@@ -9,3 +9,5 @@ - -DADDRMGR_NV_SINGLES - -DBINDINGTABLE_NV_SINGLES - -DASSOCLIST_NV_SINGLES -+ -+--preinclude=preinclude.h -\ No newline at end of file -diff --git a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h -new file mode 100644 -index 0000000..471eeb2 ---- /dev/null -+++ b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h -@@ -0,0 +1,6 @@ -+#define ZCL_REPORT_DESTINATION_DEVICE -+#define BDB_REPORTING -+#define CUI_DISABLE -+#define NWK_MAX_DEVICE_LIST 50 -+#define MAX_NEIGHBOR_ENTRIES 30 -+#define MAX_RTG_ENTRIES 100 -diff --git a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -index 538a31c..439ade0 100644 ---- a/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -+++ b/zr_genericapp_CC2652RB_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -@@ -50,6 +50,7 @@ CCFG.enableBootloaderBackdoor = true; - CCFG.dioBootloaderBackdoor = 13; +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg +index 3a3068f..b356b04 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg +@@ -4,6 +4,10 @@ + * @cliArgs --board "/ti/boards/CC1352P_2_LAUNCHXL" --rtos "tirtos" --product "simplelink_cc13xx_cc26xx_sdk@5.30.01.01" + * @versions {"tool":"1.10.0+2163"} + */ ++scripting.excludeFromBuild("ti_devices_config.c"); ++scripting.excludeFromBuild("ti_radio_config.c"); ++scripting.excludeFromBuild("ti_radio_config.h"); ++scripting.excludeFromBuild("ti_drivers_config.h"); + + /** + * Import the modules used in this configuration. +@@ -50,6 +54,7 @@ CCFG.enableBootloaderBackdoor = true; + CCFG.dioBootloaderBackdoor = 15; CCFG.levelBootloaderBackdoor = "Active low"; - CCFG.srcClkLF = "Derived from HF XOSC"; + CCFG.forceVddr = true; +CCFG.enableDCDC = false; CCFG.ccfgTemplate.$name = "ti_devices_CCFGTemplate0"; - AESCBC1.$name = "CONFIG_AESCBC_0"; -@@ -127,6 +128,8 @@ zstack.deviceTypeReadOnly = true; + rfdesign.rfDesign = "LAUNCHXL-CC1352P-2"; +@@ -72,8 +77,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; + + NVS1.$name = "CONFIG_NVSINTERNAL"; + NVS1.internalFlash.$name = "ti_drivers_nvs_NVSCC26XX0"; +-NVS1.internalFlash.regionSize = 0x4000; +-NVS1.internalFlash.regionBase = 0x52000; ++NVS1.internalFlash.regionBase = 0x50000; ++NVS1.internalFlash.regionSize = 0x6000; + + NVS2.$name = "CONFIG_NVSEXTERNAL"; + NVS2.nvsType = "External"; +@@ -125,6 +130,8 @@ zstack.deviceTypeReadOnly = true; zstack.touchlink.$name = "ti_zstack_touchlink_zstack_touchlink0"; zstack.pm.$name = "ti_zstack_pm_zstack_pm0"; zstack.rf.$name = "ti_zstack_rf_zstack_rf0"; ++zstack.rf.txPower = "20"; +zstack.rf.primaryChannels = [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]; -+zstack.rf.txPower = "5"; zstack.rf.radioConfig.$name = "ti_devices_radioconfig_settings_ieee_15_40"; zstack.rf.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param0"; - zstack.network.$name = "ti_zstack_network_zstack_network0"; + zstack.rf.coexSettings.$name = "ti_zstack_rf_zstack_coex_mod0"; diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c -index f33fc07..5aad76f 100644 +index 82a4bec..23788ff 100644 --- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c +++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c @@ -53,6 +53,8 @@ @@ -2500,16 +1175,24 @@ index f33fc07..5aad76f 100644 #include "rom_jt_154.h" #include "zcomdef.h" -@@ -426,7 +428,7 @@ static void zclGenericApp_Init( void ) - // Call BDB initialization. Should be called once from application at startup to restore - // previous network configuration, if applicable. - zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; -- zstack_bdbStartCommissioningReq.commissioning_mode = 0; -+ zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; - Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); - } +@@ -870,6 +872,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn + */ + static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg) + { ++ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; + switch(bdbCommissioningModeMsg->bdbCommissioningMode) + { + case BDB_COMMISSIONING_FORMATION: +@@ -909,6 +912,8 @@ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t * + } + break; + case BDB_COMMISSIONING_INITIALIZATION: ++ zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; ++ Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); + //Initialization notification can only be successful. Failure on initialization + //only happens for ZED and is notified as BDB_COMMISSIONING_PARENT_LOST notification -@@ -1208,28 +1210,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask +@@ -1209,28 +1214,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask */ static void zclGenericApp_processKey(Button_Handle _btn) { @@ -2547,7 +1230,7 @@ index f33fc07..5aad76f 100644 diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c -index c0e473d..a09a0df 100644 +index c0e473d..1446606 100644 --- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c +++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp_data.c @@ -96,6 +96,8 @@ const uint16_t zclGenericApp_identify_clusterRevision = 0x0001; @@ -2555,7 +1238,7 @@ index c0e473d..a09a0df 100644 const uint8_t zclGenericApp_ZCLVersion = GENERICAPP_ZCLVERSION; const uint8_t zclGenericApp_ManufacturerName[] = { 16, 'T','e','x','a','s','I','n','s','t','r','u','m','e','n','t','s' }; +const uint8_t zclGenericApp_ModelID[] = { 9, 't','i','.','r','o','u','t','e','r' }; -+const uint8_t zclGenericApp_SwBuildID[] = { 8, '2','0','2','1','0','1','2','8' }; ++const uint8_t zclGenericApp_SwBuildID[] = { 8, '2','0','2','2','0','1','2','5' }; const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; @@ -2564,7 +1247,7 @@ index c0e473d..a09a0df 100644 ATTRID_BASIC_ZCL_VERSION, ZCL_DATATYPE_UINT8, - ACCESS_CONTROL_READ, -+ ACCESS_CONTROL_READ | ACCESS_REPORTABLE, ++ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE), (void *)&zclGenericApp_ZCLVersion } }, @@ -2590,7 +1273,7 @@ index c0e473d..a09a0df 100644 ZCL_CLUSTER_ID_GENERAL_BASIC, { // Attribute record diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts -index b841d60..598f537 100644 +index b841d60..91eb00e 100644 --- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts +++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts @@ -9,3 +9,5 @@ @@ -2598,33 +1281,323 @@ index b841d60..598f537 100644 -DBINDINGTABLE_NV_SINGLES -DASSOCLIST_NV_SINGLES + -+--preinclude=preinclude.h ++--preinclude=preinclude.h \ No newline at end of file diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h new file mode 100644 -index 0000000..471eeb2 +index 0000000..8a7300b --- /dev/null +++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h -@@ -0,0 +1,6 @@ +@@ -0,0 +1,31 @@ ++// Increase MAC buffers ++#undef MAC_CFG_TX_DATA_MAX ++#define MAC_CFG_TX_DATA_MAX 20 ++#undef MAC_CFG_TX_MAX ++#define MAC_CFG_TX_MAX 32 ++#undef MAC_CFG_RX_MAX ++#define MAC_CFG_RX_MAX 20 ++ ++// Increase NV pages to 3 to allow for bigger device tables ++#undef NVOCMP_NVPAGES ++#define NVOCMP_NVPAGES 3 ++ ++// Increase the max number of boardcasts, the default broadcast delivery time is 3 seconds ++// with the value below this will allow for 1 broadcast every 0.15 second ++#define MAX_BCAST 30 ++ +#define ZCL_REPORT_DESTINATION_DEVICE +#define BDB_REPORTING +#define CUI_DISABLE +#define NWK_MAX_DEVICE_LIST 50 -+#define MAX_NEIGHBOR_ENTRIES 30 -+#define MAX_RTG_ENTRIES 100 ++#define MAX_NEIGHBOR_ENTRIES 50 ++#define MAX_RTG_ENTRIES 150 ++#define ZDO_API_ADVANCED ++ ++// From https://www.ti.com/lit/an/swra650b/swra650b.pdf ++#define LINK_DOWN_TRIGGER 12 ++#define NWK_ROUTE_AGE_LIMIT 5 ++#define DEF_NWK_RADIUS 15 ++#define DEFAULT_ROUTE_REQUEST_RADIUS 8 ++#define ZDNWKMGR_MIN_TRANSMISSIONS 0 ++#define ROUTE_DISCOVERY_TIME 13 +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/app.cfg b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/app.cfg +index 5089a84..146ef06 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/app.cfg ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/app.cfg +@@ -700,7 +700,9 @@ var GateMutexPri = xdc.useModule('ti.sysbios.gates.GateMutexPri'); + */ + var Memory = xdc.useModule('xdc.runtime.Memory'); + var HEAPMGR_CONFIG = 0; +-var HEAPMGR_SIZE = 0x1800; ++// Increase heap to 48kb ++// https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1052120/cc2652r-mac-no-resources-0x1a-errors-complete-crash-with-simplelink-cc13xx-cc26xx-sdk_5-30-00-56/3897554#3897554 ++var HEAPMGR_SIZE = 0xc000; + + // The following will create the #define HEAPMGR_CONFIG. It can then be used by include + Program.global.HEAPMGR_CONFIG = HEAPMGR_CONFIG; +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd +index 2856ad2..031cfeb 100755 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/cc13x2_cc26x2.cmd +@@ -67,9 +67,9 @@ + /* must be located at the beginning of the application. */ + + #define FLASH_BASE 0x00000000 +-#define FLASH_SIZE 0x52000 +-#define FLASH_NV_BASE 0x52000 +-#define FLASH_NV_SIZE 0x4000 ++#define FLASH_SIZE 0x50000 ++#define FLASH_NV_BASE 0x50000 ++#define FLASH_NV_SIZE 0x6000 + #define FLASH_LAST_BASE 0x56000 + #define FLASH_LAST_SIZE 0x2000 + diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -index e95d4ec..91c1400 100644 +index 4b1ea23..b60ec66 100644 --- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg +++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -@@ -49,6 +49,7 @@ CCFG.enableBootloader = true; +@@ -47,6 +47,7 @@ CCFG.enableBootloader = true; CCFG.enableBootloaderBackdoor = true; CCFG.dioBootloaderBackdoor = 13; CCFG.levelBootloaderBackdoor = "Active low"; +CCFG.enableDCDC = false; CCFG.ccfgTemplate.$name = "ti_devices_CCFGTemplate0"; - AESCBC1.$name = "CONFIG_AESCBC_0"; -@@ -126,6 +127,8 @@ zstack.deviceTypeReadOnly = true; + Display1.$hardware = system.deviceData.board.components.XDS110UART; +@@ -67,8 +68,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; + + NVS1.$name = "CONFIG_NVSINTERNAL"; + NVS1.internalFlash.$name = "ti_drivers_nvs_NVSCC26XX0"; +-NVS1.internalFlash.regionSize = 0x4000; +-NVS1.internalFlash.regionBase = 0x52000; ++NVS1.internalFlash.regionBase = 0x50000; ++NVS1.internalFlash.regionSize = 0x6000; + + NVS2.$name = "CONFIG_NVSEXTERNAL"; + NVS2.nvsType = "External"; +@@ -118,6 +119,8 @@ zstack.deviceTypeReadOnly = true; + zstack.touchlink.$name = "ti_zstack_touchlink_zstack_touchlink0"; + zstack.pm.$name = "ti_zstack_pm_zstack_pm0"; + zstack.rf.$name = "ti_zstack_rf_zstack_rf0"; ++zstack.rf.primaryChannels = [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]; ++zstack.rf.txPower = "5"; + zstack.rf.radioConfig.$name = "ti_devices_radioconfig_settings_ieee_15_40"; + zstack.rf.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param0"; + zstack.rf.coexSettings.$name = "ti_zstack_rf_zstack_coex_mod0"; +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp.c b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp.c +index 82a4bec..23788ff 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp.c +@@ -53,6 +53,8 @@ + * INCLUDES + */ + ++#include ++ + #include "rom_jt_154.h" + #include "zcomdef.h" + +@@ -870,6 +872,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn + */ + static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg) + { ++ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; + switch(bdbCommissioningModeMsg->bdbCommissioningMode) + { + case BDB_COMMISSIONING_FORMATION: +@@ -909,6 +912,8 @@ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t * + } + break; + case BDB_COMMISSIONING_INITIALIZATION: ++ zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; ++ Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); + //Initialization notification can only be successful. Failure on initialization + //only happens for ZED and is notified as BDB_COMMISSIONING_PARENT_LOST notification + +@@ -1209,28 +1214,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask + */ + static void zclGenericApp_processKey(Button_Handle _btn) + { +- zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; +- //Button 1 +- if(_btn == gLeftButtonHandle) +- { +- if(ZG_BUILD_COORDINATOR_TYPE && ZG_DEVICE_COORDINATOR_TYPE) +- { ++ NLME_LeaveReq_t req; ++ memset( &req, 0, sizeof( NLME_LeaveReq_t ) ); ++ NLME_LeaveReq(&req); ++ // Sleep for 2 seconds, otherwise leave request is not send ++ Task_sleep(2000 * (1000 / ClockP_getSystemTickPeriod())); + +- zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; +- Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); +- } +- else if (ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE) +- { +- zstack_bdbStartCommissioningReq.commissioning_mode = BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING; +- Zstackapi_bdbStartCommissioningReq(appServiceTaskId,&zstack_bdbStartCommissioningReq); +- } +- } +- //Button 2 +- if(_btn == gRightButtonHandle) +- { +- Zstackapi_bdbResetLocalActionReq(appServiceTaskId); +- } ++ zgWriteStartupOptions( ZG_STARTUP_SET, ++ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); + ++ SysCtrlSystemReset(); + } + + +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp_data.c b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp_data.c +index c0e473d..1446606 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp_data.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Application/zcl_genericapp_data.c +@@ -96,6 +96,8 @@ const uint16_t zclGenericApp_identify_clusterRevision = 0x0001; + const uint8_t zclGenericApp_HWRevision = GENERICAPP_HWVERSION; + const uint8_t zclGenericApp_ZCLVersion = GENERICAPP_ZCLVERSION; + const uint8_t zclGenericApp_ManufacturerName[] = { 16, 'T','e','x','a','s','I','n','s','t','r','u','m','e','n','t','s' }; ++const uint8_t zclGenericApp_ModelID[] = { 9, 't','i','.','r','o','u','t','e','r' }; ++const uint8_t zclGenericApp_SwBuildID[] = { 8, '2','0','2','2','0','1','2','5' }; + const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; + uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; + +@@ -143,10 +145,28 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_ZCL_VERSION, + ZCL_DATATYPE_UINT8, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE), + (void *)&zclGenericApp_ZCLVersion + } + }, ++ { ++ ZCL_CLUSTER_ID_GENERAL_BASIC, ++ { // Attribute record ++ ATTRID_BASIC_MODEL_IDENTIFIER, ++ ZCL_DATATYPE_CHAR_STR, ++ ACCESS_CONTROL_READ, ++ (void *)zclGenericApp_ModelID ++ } ++ }, ++ { ++ ZCL_CLUSTER_ID_GENERAL_BASIC, ++ { // Attribute record ++ ATTRID_BASIC_SW_BUILD_ID, ++ ZCL_DATATYPE_CHAR_STR, ++ ACCESS_CONTROL_READ, ++ (void *)zclGenericApp_SwBuildID ++ } ++ }, + { + ZCL_CLUSTER_ID_GENERAL_BASIC, + { // Attribute record +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/f8wrouter.opts b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/f8wrouter.opts +index b841d60..91eb00e 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/f8wrouter.opts ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/f8wrouter.opts +@@ -9,3 +9,5 @@ + -DADDRMGR_NV_SINGLES + -DBINDINGTABLE_NV_SINGLES + -DASSOCLIST_NV_SINGLES ++ ++--preinclude=preinclude.h +\ No newline at end of file +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/preinclude.h b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/preinclude.h +new file mode 100644 +index 0000000..8a7300b +--- /dev/null ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/preinclude.h +@@ -0,0 +1,31 @@ ++// Increase MAC buffers ++#undef MAC_CFG_TX_DATA_MAX ++#define MAC_CFG_TX_DATA_MAX 20 ++#undef MAC_CFG_TX_MAX ++#define MAC_CFG_TX_MAX 32 ++#undef MAC_CFG_RX_MAX ++#define MAC_CFG_RX_MAX 20 ++ ++// Increase NV pages to 3 to allow for bigger device tables ++#undef NVOCMP_NVPAGES ++#define NVOCMP_NVPAGES 3 ++ ++// Increase the max number of boardcasts, the default broadcast delivery time is 3 seconds ++// with the value below this will allow for 1 broadcast every 0.15 second ++#define MAX_BCAST 30 ++ ++#define ZCL_REPORT_DESTINATION_DEVICE ++#define BDB_REPORTING ++#define CUI_DISABLE ++#define NWK_MAX_DEVICE_LIST 50 ++#define MAX_NEIGHBOR_ENTRIES 50 ++#define MAX_RTG_ENTRIES 150 ++#define ZDO_API_ADVANCED ++ ++// From https://www.ti.com/lit/an/swra650b/swra650b.pdf ++#define LINK_DOWN_TRIGGER 12 ++#define NWK_ROUTE_AGE_LIMIT 5 ++#define DEF_NWK_RADIUS 15 ++#define DEFAULT_ROUTE_REQUEST_RADIUS 8 ++#define ZDNWKMGR_MIN_TRANSMISSIONS 0 ++#define ROUTE_DISCOVERY_TIME 13 +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/app.cfg b/zr_genericapp_LP_CC2652RB_tirtos_ccs/app.cfg +index 5089a84..146ef06 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos_ccs/app.cfg ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/app.cfg +@@ -700,7 +700,9 @@ var GateMutexPri = xdc.useModule('ti.sysbios.gates.GateMutexPri'); + */ + var Memory = xdc.useModule('xdc.runtime.Memory'); + var HEAPMGR_CONFIG = 0; +-var HEAPMGR_SIZE = 0x1800; ++// Increase heap to 48kb ++// https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1052120/cc2652r-mac-no-resources-0x1a-errors-complete-crash-with-simplelink-cc13xx-cc26xx-sdk_5-30-00-56/3897554#3897554 ++var HEAPMGR_SIZE = 0xc000; + + // The following will create the #define HEAPMGR_CONFIG. It can then be used by include + Program.global.HEAPMGR_CONFIG = HEAPMGR_CONFIG; +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/cc13x2_cc26x2.cmd b/zr_genericapp_LP_CC2652RB_tirtos_ccs/cc13x2_cc26x2.cmd +index 2856ad2..031cfeb 100755 +--- a/zr_genericapp_LP_CC2652RB_tirtos_ccs/cc13x2_cc26x2.cmd ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/cc13x2_cc26x2.cmd +@@ -67,9 +67,9 @@ + /* must be located at the beginning of the application. */ + + #define FLASH_BASE 0x00000000 +-#define FLASH_SIZE 0x52000 +-#define FLASH_NV_BASE 0x52000 +-#define FLASH_NV_SIZE 0x4000 ++#define FLASH_SIZE 0x50000 ++#define FLASH_NV_BASE 0x50000 ++#define FLASH_NV_SIZE 0x6000 + #define FLASH_LAST_BASE 0x56000 + #define FLASH_LAST_SIZE 0x2000 + +diff --git a/zr_genericapp_LP_CC2652RB_tirtos_ccs/zr_genericapp.syscfg b/zr_genericapp_LP_CC2652RB_tirtos_ccs/zr_genericapp.syscfg +index d137337..d9e3ef6 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos_ccs/zr_genericapp.syscfg ++++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/zr_genericapp.syscfg +@@ -48,6 +48,7 @@ CCFG.enableBootloaderBackdoor = true; + CCFG.dioBootloaderBackdoor = 13; + CCFG.levelBootloaderBackdoor = "Active low"; + CCFG.srcClkLF = "Derived from HF XOSC"; ++CCFG.enableDCDC = false; + CCFG.ccfgTemplate.$name = "ti_devices_CCFGTemplate0"; + + Display1.$hardware = system.deviceData.board.components.XDS110UART; +@@ -68,8 +69,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; + + NVS1.$name = "CONFIG_NVSINTERNAL"; + NVS1.internalFlash.$name = "ti_drivers_nvs_NVSCC26XX0"; +-NVS1.internalFlash.regionSize = 0x4000; +-NVS1.internalFlash.regionBase = 0x52000; ++NVS1.internalFlash.regionBase = 0x50000; ++NVS1.internalFlash.regionSize = 0x6000; + + NVS2.$name = "CONFIG_NVSEXTERNAL"; + NVS2.nvsType = "External"; +@@ -119,6 +120,8 @@ zstack.deviceTypeReadOnly = true; zstack.touchlink.$name = "ti_zstack_touchlink_zstack_touchlink0"; zstack.pm.$name = "ti_zstack_pm_zstack_pm0"; zstack.rf.$name = "ti_zstack_rf_zstack_rf0"; @@ -2632,7 +1605,7 @@ index e95d4ec..91c1400 100644 +zstack.rf.primaryChannels = [11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]; zstack.rf.radioConfig.$name = "ti_devices_radioconfig_settings_ieee_15_40"; zstack.rf.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param0"; - zstack.network.$name = "ti_zstack_network_zstack_network0"; + zstack.rf.coexSettings.$name = "ti_zstack_rf_zstack_coex_mod0"; -- -2.24.3 (Apple Git-128) +2.34.0