diff --git a/router/Z-Stack_3.x.0/CHANGELOG.md b/router/Z-Stack_3.x.0/CHANGELOG.md index 6ce9d9b..c15edae 100644 --- a/router/Z-Stack_3.x.0/CHANGELOG.md +++ b/router/Z-Stack_3.x.0/CHANGELOG.md @@ -1,3 +1,8 @@ +# 20221102 +- Allow to set transmit power +- Fix directly connected Xiaomi devices disconnecting +- SimpleLink SDK 6.30.00.84 ([changelog](https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/6.30.00.84/exports/changelog.html)) + # 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 diff --git a/router/Z-Stack_3.x.0/COMPILE.md b/router/Z-Stack_3.x.0/COMPILE.md index 4dd885e..25ce83d 100644 --- a/router/Z-Stack_3.x.0/COMPILE.md +++ b/router/Z-Stack_3.x.0/COMPILE.md @@ -1,23 +1,23 @@ # Compiling the firmware ## Setup development environment -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) +1. Download and install [SIMPLELINK-CC13XX-CC26XX-SDK_6_30_00_84](https://www.ti.com/tool/download/SIMPLELINK-CC13XX-CC26XX-SDK) +1. Download and install [Code Composer Studio 12.1.0.00007](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_5_30_01_01/examples/rtos`. Click OK (or Open) in the file browser window +1. Go to *File -> Import -> Code Composer Studio -> CCS Projects -> Select* search-directory: `simplelink_cc13xx_cc26xx_sdk_6_30_00_84/examples/rtos`. 1. Select: - - `zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs` - - `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs` - - `zr_genericapp_LP_CC2652RB_tirtos_ccs`. + - `zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang` + - `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang` + - `zr_genericapp_LP_CC2652RB_tirtos7_ticlang` 4. Press *Finish*. -1. In Code Composer Studio, expand the 3 projects and for each open `znp.syscfg`, expand `Power Management` and change `Minimal Poll Period (ms)` to `1000`, change it back to `100` immediately and save the file. +1. In Code Composer Studio, expand the 3 projects and for each open `zr_genericapp.syscfg`, expand `Power Management` and 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. 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. -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_LP_CC2652RB_tirtos_ccs.hex` -> CC2652RB - - `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs.hex` -> CC1352P-2 and CC2652P + - **Important:** by default the **launchpad** variant of the CC1352P2_CC2652P (= `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang`) is build. To build the **other** variant comment `#define LAUNCHPAD_CONFIG 1` in `preinclude.h` (located under `Stack/Config/`), don't forget to save. +1. Once finished, the firmware can be found under `zr_genericapp_[CC26X2R1/CC1352P_2/CC2652RB]_LAUNCHXL_tirtos7_ticlang/default/zr_genericapp_[CC26X2R1/CC2652RB/CC1352P_2]_LAUNCHXL_tirtos7_ticlang.hex` + - `zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang.hex` -> CC2652R + - `zr_genericapp_LP_CC2652RB_tirtos7_ticlang.hex` -> CC2652RB + - `zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang.hex` -> CC1352P-2 and CC2652P \ No newline at end of file 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 deleted file mode 100644 index 8d12a5e..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20220125.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20221102.zip b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20221102.zip new file mode 100644 index 0000000..3ad488e Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_launchpad_router_20221102.zip 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 deleted file mode 100644 index 2dd2c40..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20220125.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20221102.zip b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20221102.zip new file mode 100644 index 0000000..8f76f3a Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC1352P2_CC2652P_other_router_20221102.zip 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 deleted file mode 100644 index 8aa656b..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC2652RB_router_20220125.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC2652RB_router_20221102.zip b/router/Z-Stack_3.x.0/bin/CC2652RB_router_20221102.zip new file mode 100644 index 0000000..4864132 Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC2652RB_router_20221102.zip 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 deleted file mode 100644 index 1e9b2e1..0000000 Binary files a/router/Z-Stack_3.x.0/bin/CC2652R_router_20220125.zip and /dev/null differ diff --git a/router/Z-Stack_3.x.0/bin/CC2652R_router_20221102.zip b/router/Z-Stack_3.x.0/bin/CC2652R_router_20221102.zip new file mode 100644 index 0000000..3b25ac9 Binary files /dev/null and b/router/Z-Stack_3.x.0/bin/CC2652R_router_20221102.zip differ diff --git a/router/Z-Stack_3.x.0/firmware.patch b/router/Z-Stack_3.x.0/firmware.patch index ad94781..39e13b1 100644 --- a/router/Z-Stack_3.x.0/firmware.patch +++ b/router/Z-Stack_3.x.0/firmware.patch @@ -1,74 +1,107 @@ -From 41916c4f9b203b779f606244cb5be0748a2412fb Mon Sep 17 00:00:00 2001 +From 3141c9a49a9e763c449b5731487eecaf8e6d56ca Mon Sep 17 00:00:00 2001 From: Koen Kanters -Date: Tue, 25 Jan 2022 19:51:16 +0100 +Date: Mon, 31 Oct 2022 20:04:41 +0100 Subject: [PATCH 1/1] Own changes --- - .../Application/zcl_genericapp.c | 33 +- - .../Application/zcl_genericapp_data.c | 22 +- + .../Application/zcl_genericapp.c | 43 +- + .../Application/zcl_genericapp_data.c | 50 ++- + .../Common/zcl/zcl.c | 10 + .../Stack/Config/f8wrouter.opts | 2 + - .../Stack/Config/preinclude.h | 49 +++ - .../app.cfg | 4 +- - .../cc13x2_cc26x2.cmd | 6 +- - .../ti_devices_config.c | 105 +++++ + .../Stack/Config/preinclude.h | 51 +++ + .../Stack/sys/zcomdef.h | 3 + + .../Stack/sys/zglobals.c | 2 +- + .../Stack/zdo/zd_app.c | 22 +- + .../cc13x2_cc26x2_tirtos7_ticlang.cmd | 6 +- + .../ti_devices_config.c | 108 +++++ .../ti_drivers_config.h | 274 +++++++++++++ - .../ti_radio_config.c | 387 ++++++++++++++++++ + .../ti_radio_config.c | 385 ++++++++++++++++++ .../ti_radio_config.h | 83 ++++ .../zr_genericapp.syscfg | 11 +- - .../Application/zcl_genericapp.c | 33 +- - .../Application/zcl_genericapp_data.c | 22 +- + .../Application/zcl_genericapp.c | 43 +- + .../Application/zcl_genericapp_data.c | 50 ++- + .../Common/zcl/zcl.c | 10 + .../Stack/Config/f8wrouter.opts | 2 + - .../Stack/Config/preinclude.h | 31 ++ - .../app.cfg | 4 +- - .../cc13x2_cc26x2.cmd | 6 +- + .../Stack/Config/preinclude.h | 33 ++ + .../Stack/sys/zcomdef.h | 3 + + .../Stack/sys/zglobals.c | 2 +- + .../Stack/zdo/zd_app.c | 22 +- + .../cc13x2_cc26x2_tirtos7_ticlang.cmd | 6 +- .../zr_genericapp.syscfg | 7 +- - .../Application/zcl_genericapp.c | 33 +- - .../Application/zcl_genericapp_data.c | 22 +- + .../Application/zcl_genericapp.c | 43 +- + .../Application/zcl_genericapp_data.c | 50 ++- + .../Common/zcl/zcl.c | 10 + .../Stack/Config/f8wrouter.opts | 2 + - .../Stack/Config/preinclude.h | 31 ++ - zr_genericapp_LP_CC2652RB_tirtos_ccs/app.cfg | 4 +- - .../cc13x2_cc26x2.cmd | 6 +- + .../Stack/Config/preinclude.h | 33 ++ + .../Stack/sys/zcomdef.h | 3 + + .../Stack/sys/zglobals.c | 2 +- + .../Stack/zdo/zd_app.c | 22 +- + .../cc13x2_cc26x2_tirtos7_ticlang.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/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 + 34 files changed, 1268 insertions(+), 138 deletions(-) + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_devices_config.c + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_drivers_config.h + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.c + create mode 100644 zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.h + create mode 100644 zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h + create mode 100644 zr_genericapp_LP_CC2652RB_tirtos7_ticlang/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 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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c +index 550be7a..0725b39 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c @@ -53,6 +53,8 @@ * INCLUDES */ -+#include -+ ++#include ++ #include "rom_jt_154.h" #include "zcomdef.h" -@@ -870,6 +872,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn +@@ -68,6 +70,8 @@ + #include "zcl_genericapp.h" + #include "zcl_port.h" + ++#include "osal_nv.h" ++ + #include + #include "ti_drivers_config.h" + #include "util_timer.h" +@@ -261,6 +265,14 @@ void sampleApp_task(NVINTF_nvFuncts_t *pfnNV) + pfnZdlNV = pfnNV; + zclport_registerNV(pfnZdlNV, ZCL_PORT_SCENE_TABLE_NV_ID); + ++ // Init the transmit power NV item, this will be skipped if item is already initialized ++ int8_t transmitPower = TXPOWER; ++ osal_nv_item_init( ZCD_NV_TRANSMIT_POWER, sizeof(transmitPower), &transmitPower ); ++ ++ // Set transmit power ++ osal_nv_read( ZCD_NV_TRANSMIT_POWER, 0, sizeof( transmitPower ), &transmitPower ); ++ ZMacSetTransmitPower( (ZMacTransmitPower_t)transmitPower ); ++ + // Initialize application + zclGenericApp_initialization(); + +@@ -870,6 +882,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn */ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg) { -+ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; ++ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; switch(bdbCommissioningModeMsg->bdbCommissioningMode) { case BDB_COMMISSIONING_FORMATION: -@@ -909,6 +912,8 @@ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t * +@@ -909,6 +922,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); ++ 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 +@@ -1209,28 +1224,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask */ static void zclGenericApp_processKey(Button_Handle _btn) { @@ -78,11 +111,11 @@ index 82a4bec..23788ff 100644 - { - 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())); ++ 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); @@ -98,32 +131,53 @@ index 82a4bec..23788ff 100644 - { - Zstackapi_bdbResetLocalActionReq(appServiceTaskId); - } -+ zgWriteStartupOptions( ZG_STARTUP_SET, -+ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); ++ zgWriteStartupOptions( ZG_STARTUP_SET, ++ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); -+ SysCtrlSystemReset(); ++ SysCtrlSystemReset(); } -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..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; +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c +index c0e473d..4d08810 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c +@@ -49,6 +49,8 @@ + #include "zcl_general.h" + #include "zcl_ha.h" + ++#include "osal_nv.h" ++ + /* GENERICAPP_TODO: Include any of the header files below to access specific cluster data + #include "zcl_poll_control.h" + #include "zcl_electrical_measurement.h" +@@ -96,8 +98,11 @@ 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_SwBuildID[] = { 8, '2','0','2','2','1','1','0','2' }; const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; ++int8_t zclGenericApp_TransmitPower; -@@ -143,10 +145,28 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + #ifdef ZCL_IDENTIFY + // Identify Cluster +@@ -134,7 +139,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_HW_VERSION, // Attribute ID - Found in Cluster Library header (ie. zcl_general.h) + ZCL_DATATYPE_UINT8, // Data Type - found in zcl.h +- ACCESS_CONTROL_READ, // Variable access control - found in zcl.h ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), // Variable access control - found in zcl.h + (void *)&zclGenericApp_HWRevision // Pointer to attribute variable + } + }, +@@ -143,16 +148,34 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = { // Attribute record ATTRID_BASIC_ZCL_VERSION, ZCL_DATATYPE_UINT8, - ACCESS_CONTROL_READ, -+ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE), ++ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE | ACCESS_CONTROL_AUTH_READ), (void *)&zclGenericApp_ZCLVersion } }, @@ -132,7 +186,7 @@ index c0e473d..1446606 100644 + { // Attribute record + ATTRID_BASIC_MODEL_IDENTIFIER, + ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_ModelID + } + }, @@ -141,30 +195,131 @@ index c0e473d..1446606 100644 + { // Attribute record + ATTRID_BASIC_SW_BUILD_ID, + ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_SwBuildID + } + }, { 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..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 + ATTRID_BASIC_MANUFACTURER_NAME, + ZCL_DATATYPE_CHAR_STR, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_ManufacturerName + } + }, +@@ -161,7 +184,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_POWER_SOURCE, + ZCL_DATATYPE_ENUM8, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_PowerSource + } + }, +@@ -170,7 +193,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_PHYSICAL_ENVIRONMENT, + ZCL_DATATYPE_ENUM8, +- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE), ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_PhysicalEnvironment + } + }, +@@ -179,10 +202,20 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_CLUSTER_REVISION, + ZCL_DATATYPE_UINT16, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_basic_clusterRevision + } + }, ++ { ++ ZCL_CLUSTER_ID_GENERAL_BASIC, ++ { // Attribute record ++ ATTRID_BASIC_TRANSMIT_POWER, ++ ZCL_DATATYPE_INT8, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), ++ (void *)&zclGenericApp_TransmitPower ++ } ++ }, ++ + + #ifdef ZCL_IDENTIFY + // *** Identify Cluster Attribute *** +@@ -191,7 +224,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_IDENTIFY_IDENTIFY_TIME, + ZCL_DATATYPE_UINT16, +- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE), ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_IdentifyTime + } + }, +@@ -201,7 +234,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_CLUSTER_REVISION, + ZCL_DATATYPE_UINT16, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_identify_clusterRevision + } + }, +@@ -276,6 +309,7 @@ void zclGenericApp_ResetAttributesToDefaultValues(void) + { + + zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; ++ osal_nv_read( ZCD_NV_TRANSMIT_POWER, 0, sizeof( zclGenericApp_TransmitPower ), &zclGenericApp_TransmitPower ); + + #ifdef ZCL_IDENTIFY + zclGenericApp_IdentifyTime = 0; +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c +index 51902c4..9afcba3 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c +@@ -47,6 +47,8 @@ + #include "zcl.h" + #include "zcl_general.h" + ++#include "osal_nv.h" ++ + #if defined ( INTER_PAN ) || defined ( BDB_TL_INITIATOR ) || defined ( BDB_TL_TARGET ) + #include "stub_aps.h" + #endif +@@ -4675,6 +4677,14 @@ static uint8_t zclProcessInWriteCmd( zclIncoming_t *pInMsg ) + status = zclWriteAttrData( pInMsg->msg->endPoint, &(pInMsg->msg->srcAddr), + &attrRec, statusRec ); + } ++ ++ if((pInMsg->msg->clusterId == ZCL_CLUSTER_ID_GENERAL_BASIC) && (statusRec->attrID == ATTRID_BASIC_TRANSMIT_POWER)) ++ { ++ int8_t transmitPower; ++ OsalPort_memcpy((int8_t*)&transmitPower,statusRec->attrData,sizeof(int8_t)); ++ ZMacSetTransmitPower( (ZMacTransmitPower_t)transmitPower ); ++ osal_nv_write( ZCD_NV_TRANSMIT_POWER, sizeof( transmitPower ), &transmitPower ); ++ } + } + else // Use CB + { +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts +index b841d60..ed396c2 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts @@ -9,3 +9,5 @@ -DADDRMGR_NV_SINGLES -DBINDINGTABLE_NV_SINGLES -DASSOCLIST_NV_SINGLES -+ -+--preinclude=preinclude.h ++ ++-include 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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h new file mode 100644 -index 0000000..2a92dd1 +index 0000000..1d0429a --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h -@@ -0,0 +1,49 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h +@@ -0,0 +1,51 @@ +// Increase MAC buffers +#undef MAC_CFG_TX_DATA_MAX +#define MAC_CFG_TX_DATA_MAX 20 @@ -202,6 +357,8 @@ index 0000000..2a92dd1 + */ +#define TXPOWER 9 + ++#define ATTRID_BASIC_TRANSMIT_POWER 0x1337 ++ +// Different configs, uncomment for for launchpad firmware +#define LAUNCHPAD_CONFIG 1 + @@ -214,44 +371,96 @@ index 0000000..2a92dd1 +#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/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. */ +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h +index 26c0b45..8a338c1 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h +@@ -123,6 +123,9 @@ extern "C" + #define ZCD_NV_STARTUP_OPTION 0x0003 + #define ZCD_NV_START_DELAY 0x0004 + ++// Custom transmit power NV item ++#define ZCD_NV_TRANSMIT_POWER 0x0010 ++ + // NWK Layer NV item IDs + #define ZCD_NV_NIB 0x0021 + #define ZCD_NV_DEVICE_LIST 0x0022 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c +index 706736b..b63af7b 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c +@@ -225,7 +225,7 @@ uint8_t zgEndDeviceConfiguration = END_DEV_CONFIGURATION; + // + // NOTICE: Before enabling Child Aging make sure to review all the related + // definitions in this file, especially zgNwkParentInformation. +-uint8_t zgChildAgingEnable = TRUE; ++uint8_t zgChildAgingEnable = FALSE; + + //========== TouchLink NWK configuration =============== + // Values used by Router when starts a network as initiator +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c +index 1f30180..0fd57f5 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c +@@ -441,12 +441,11 @@ uint32_t ZDApp_event_loop( uint8_t task_id, uint32_t events ) + ZDApp_ChangeState( DEV_ROUTER ); + } + +- if ( zgChildAgingEnable == TRUE ) +- { +- // Once the device has changed its state to a ROUTER set the timer to send +- // Parent annce +- ZDApp_SetParentAnnceTimer(); +- } ++ // As we cannot enable child aging as Xiaomi devices will drop off ++ // but we stil want to have the parent announces we always enable it here. ++ // Otherwise some end devices could be unreachable when they changed parent ++ // while the coordinator was powered off. ++ ZDApp_SetParentAnnceTimer(); + } + else + { +@@ -907,12 +906,11 @@ void ZDApp_NetworkStartEvt( void ) + bdb_reportCommissioningState(BDB_INITIALIZATION,TRUE); + } + +- if ( zgChildAgingEnable == TRUE ) +- { +- // Once the device has changed its state to a COORDINATOR set the timer to send +- // Parent annce +- ZDApp_SetParentAnnceTimer(); +- } ++ // As we cannot enable child aging as Xiaomi devices will drop off ++ // but we stil want to have the parent announces we always enable it here. ++ // Otherwise some end devices could be unreachable when they changed parent ++ // while the coordinator was powered off. ++ ZDApp_SetParentAnnceTimer(); + } + else + { +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd +index da62af1..234ac56 100755 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd +@@ -71,9 +71,9 @@ + #endif #define FLASH_BASE 0x00000000 --#define FLASH_SIZE 0x52000 --#define FLASH_NV_BASE 0x52000 --#define FLASH_NV_SIZE 0x4000 +-#define FLASH_SIZE (0x56000 - (NVOCMP_NVPAGES * 0x2000)) +-#define FLASH_NV_BASE (0x56000 - (NVOCMP_NVPAGES * 0x2000)) +-#define FLASH_NV_SIZE (NVOCMP_NVPAGES * 0x2000) +#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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_devices_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_devices_config.c new file mode 100644 -index 0000000..577e5a0 +index 0000000..c80aafd --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_devices_config.c -@@ -0,0 +1,105 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_devices_config.c +@@ -0,0 +1,108 @@ +/* + * ======== ti_devices_config.c ======== + * Customer Configuration for CC26XX and CC13XX devices. @@ -323,9 +532,12 @@ index 0000000..577e5a0 +// Debug access settings +//##################################### + -+// Disable unlocking of TI FA option. ++// Disable unlocking of TI Failure Analysis option +#define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE 0x00 + ++// Disable customer key CKEY0-3 to be XOR'ed with TI FA option unlock key ++#define SET_CCFG_CCFG_TI_OPTIONS_C_FA_DIS 0xC5 ++ +// Access enabled if also enabled in FCFG +#define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE 0xC5 + @@ -357,11 +569,11 @@ index 0000000..577e5a0 + +#include +#include DeviceFamily_constructPath(startup_files/ccfg.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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_drivers_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_drivers_config.h new file mode 100644 index 0000000..6a57a31 --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_drivers_config.h ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_drivers_config.h @@ -0,0 +1,274 @@ +/* + * ======== ti_drivers_config.h ======== @@ -637,12 +849,12 @@ index 0000000..6a57a31 +#endif + +#endif /* include guard */ -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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.c b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.c new file mode 100644 -index 0000000..c23e14a +index 0000000..229cea7 --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.c -@@ -0,0 +1,387 @@ ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.c +@@ -0,0 +1,385 @@ +/* + * ======== ti_radio_config.c ======== + * Configured RadioConfig module definitions @@ -650,8 +862,8 @@ index 0000000..c23e14a + * DO NOT EDIT - This file is generated for the CC1352P1F3RGZ + * by the SysConfig tool. + * -+ * Radio Config module version : 1.11 -+ * SmartRF Studio data version : 2.23.0 ++ * Radio Config module version : 1.14 ++ * SmartRF Studio data version : 2.27.0 + */ + +#include "ti_radio_config.h" @@ -661,7 +873,7 @@ index 0000000..c23e14a +// ********************************************************************************* +// RF Frontend configuration +// ********************************************************************************* -+// RF design based on: LAUNCHXL-CC1352P-2 (CC1352PEM-XD4251-XD24-PA24_10dBm) ++// RF design based on: LAUNCHXL-CC1352P-2 + +// TX Power tables +// The RF_TxPowerTable_DEFAULT_PA_ENTRY and RF_TxPowerTable_HIGH_PA_ENTRY macros are defined in RF.h. @@ -674,27 +886,29 @@ index 0000000..c23e14a +// 868 MHz, 13 dBm +RF_TxPowerTable_Entry txPowerTable_868_pa13[TXPOWERTABLE_868_PA13_SIZE] = +{ -+ {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(0, 3, 0, 2) }, -+ {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(1, 3, 0, 3) }, -+ {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(2, 3, 0, 5) }, -+ {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(4, 3, 0, 5) }, -+ {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 8) }, -+ {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 9) }, -+ {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 9) }, -+ {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(11, 3, 0, 10) }, -+ {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 3, 0, 11) }, -+ {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 3, 0, 14) }, -+ {6, RF_TxPowerTable_DEFAULT_PA_ENTRY(17, 3, 0, 16) }, -+ {7, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 19) }, -+ {8, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 22) }, -+ {9, RF_TxPowerTable_DEFAULT_PA_ENTRY(28, 3, 0, 31) }, -+ {10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 2, 0, 31) }, -+ {11, RF_TxPowerTable_DEFAULT_PA_ENTRY(26, 2, 0, 51) }, -+ {12, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 0, 0, 82) }, ++ {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(0, 3, 0, 2) }, // 0x04C0 ++ {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(1, 3, 0, 3) }, // 0x06C1 ++ {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(2, 3, 0, 5) }, // 0x0AC2 ++ {-7, RF_TxPowerTable_DEFAULT_PA_ENTRY(3, 3, 0, 5) }, // 0x0AC3 ++ {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(4, 3, 0, 5) }, // 0x0AC4 ++ {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(5, 3, 0, 6) }, // 0x0CC5 ++ {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 8) }, // 0x10C8 ++ {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(9, 3, 0, 9) }, // 0x12C9 ++ {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 9) }, // 0x12CA ++ {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(11, 3, 0, 10) }, // 0x14CB ++ {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(13, 3, 0, 11) }, // 0x16CD ++ {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(14, 3, 0, 14) }, // 0x1CCE ++ {6, RF_TxPowerTable_DEFAULT_PA_ENTRY(17, 3, 0, 16) }, // 0x20D1 ++ {7, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 19) }, // 0x26D4 ++ {8, RF_TxPowerTable_DEFAULT_PA_ENTRY(24, 3, 0, 22) }, // 0x2CD8 ++ {9, RF_TxPowerTable_DEFAULT_PA_ENTRY(28, 3, 0, 31) }, // 0x3EDC ++ {10, RF_TxPowerTable_DEFAULT_PA_ENTRY(18, 2, 0, 31) }, // 0x3E92 ++ {11, RF_TxPowerTable_DEFAULT_PA_ENTRY(26, 2, 0, 51) }, // 0x669A ++ {12, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 0, 0, 82) }, // 0xA410 + // The original PA value (12.5 dBm) has been rounded to an integer value. -+ {13, RF_TxPowerTable_DEFAULT_PA_ENTRY(36, 0, 0, 89) }, ++ {13, RF_TxPowerTable_DEFAULT_PA_ENTRY(36, 0, 0, 89) }, // 0xB224 + // This setting requires CCFG_FORCE_VDDR_HH = 1. -+ {14, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 1, 0) }, ++ {14, RF_TxPowerTable_DEFAULT_PA_ENTRY(63, 0, 1, 0) }, // 0x013F + RF_TxPowerTable_TERMINATION_ENTRY +}; + @@ -702,42 +916,42 @@ index 0000000..c23e14a +// 2400 MHz, 5 dBm +RF_TxPowerTable_Entry txPowerTable_2400_pa5[TXPOWERTABLE_2400_PA5_SIZE] = +{ -+ {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) }, -+ {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) }, -+ {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) }, -+ {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) }, -+ {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) }, -+ {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) }, -+ {-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) }, -+ {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) }, -+ {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) }, -+ {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) }, -+ {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) }, -+ {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) }, -+ {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) }, -+ {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) }, -+ {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) }, ++ {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) }, // 0x04C6 ++ {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) }, // 0x06C8 ++ {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) }, // 0x06CA ++ {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) }, // 0x0ACC ++ {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) }, // 0x0ACF ++ {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) }, // 0x0AD0 ++ {-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) }, // 0x10D4 ++ {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) }, // 0x12D6 ++ {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) }, // 0x1893 ++ {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) }, // 0x2853 ++ {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) }, // 0x2856 ++ {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) }, // 0x3259 ++ {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) }, // 0x385D ++ {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) }, // 0x4E63 ++ {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) }, // 0x7217 + RF_TxPowerTable_TERMINATION_ENTRY +}; + +// 2400 MHz, 5 + 20 dBm +RF_TxPowerTable_Entry txPowerTable_2400_pa5_20[TXPOWERTABLE_2400_PA5_20_SIZE] = +{ -+ {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) }, -+ {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) }, -+ {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) }, -+ {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) }, -+ {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) }, -+ {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) }, -+ {-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) }, -+ {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) }, -+ {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) }, -+ {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) }, -+ {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) }, -+ {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) }, -+ {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) }, -+ {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) }, -+ {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) }, ++ {-20, RF_TxPowerTable_DEFAULT_PA_ENTRY(6, 3, 0, 2) }, // 0x04C6 ++ {-18, RF_TxPowerTable_DEFAULT_PA_ENTRY(8, 3, 0, 3) }, // 0x06C8 ++ {-15, RF_TxPowerTable_DEFAULT_PA_ENTRY(10, 3, 0, 3) }, // 0x06CA ++ {-12, RF_TxPowerTable_DEFAULT_PA_ENTRY(12, 3, 0, 5) }, // 0x0ACC ++ {-10, RF_TxPowerTable_DEFAULT_PA_ENTRY(15, 3, 0, 5) }, // 0x0ACF ++ {-9, RF_TxPowerTable_DEFAULT_PA_ENTRY(16, 3, 0, 5) }, // 0x0AD0 ++ {-6, RF_TxPowerTable_DEFAULT_PA_ENTRY(20, 3, 0, 8) }, // 0x10D4 ++ {-5, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 3, 0, 9) }, // 0x12D6 ++ {-3, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 2, 0, 12) }, // 0x1893 ++ {0, RF_TxPowerTable_DEFAULT_PA_ENTRY(19, 1, 0, 20) }, // 0x2853 ++ {1, RF_TxPowerTable_DEFAULT_PA_ENTRY(22, 1, 0, 20) }, // 0x2856 ++ {2, RF_TxPowerTable_DEFAULT_PA_ENTRY(25, 1, 0, 25) }, // 0x3259 ++ {3, RF_TxPowerTable_DEFAULT_PA_ENTRY(29, 1, 0, 28) }, // 0x385D ++ {4, RF_TxPowerTable_DEFAULT_PA_ENTRY(35, 1, 0, 39) }, // 0x4E63 ++ {5, RF_TxPowerTable_DEFAULT_PA_ENTRY(23, 0, 0, 57) }, // 0x7217 + + // CUSTOM: allow transmit power 6 - 13 dbm + {6, .value.rawValue = (0x144f2a), .value.paType = RF_TxPowerTable_HighPA }, @@ -749,13 +963,13 @@ index 0000000..c23e14a + {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) }, -+ {17, RF_TxPowerTable_HIGH_PA_ENTRY(37, 3, 1, 39, 27) }, -+ {18, RF_TxPowerTable_HIGH_PA_ENTRY(32, 3, 1, 35, 48) }, -+ {19, RF_TxPowerTable_HIGH_PA_ENTRY(34, 3, 1, 48, 63) }, -+ {20, RF_TxPowerTable_HIGH_PA_ENTRY(53, 3, 1, 58, 63) }, ++ {14, RF_TxPowerTable_HIGH_PA_ENTRY(22, 3, 1, 19, 27) }, // 0x1B27D6 ++ {15, RF_TxPowerTable_HIGH_PA_ENTRY(26, 3, 1, 23, 27) }, // 0x1B2FDA ++ {16, RF_TxPowerTable_HIGH_PA_ENTRY(30, 3, 1, 28, 27) }, // 0x1B39DE ++ {17, RF_TxPowerTable_HIGH_PA_ENTRY(37, 3, 1, 39, 27) }, // 0x1B4FE5 ++ {18, RF_TxPowerTable_HIGH_PA_ENTRY(32, 3, 1, 35, 48) }, // 0x3047E0 ++ {19, RF_TxPowerTable_HIGH_PA_ENTRY(34, 3, 1, 48, 63) }, // 0x3F61E2 ++ {20, RF_TxPowerTable_HIGH_PA_ENTRY(53, 3, 1, 58, 63) }, // 0x3F75F5 + RF_TxPowerTable_TERMINATION_ENTRY +}; + @@ -807,8 +1021,6 @@ index 0000000..c23e14a + (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 +}; + @@ -827,8 +1039,6 @@ index 0000000..c23e14a + (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 +}; + @@ -1030,11 +1240,11 @@ index 0000000..c23e14a +}; + + -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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.h b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.h new file mode 100644 -index 0000000..9d58da3 +index 0000000..870127b --- /dev/null -+++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos_ccs/ti_radio_config.h ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/ti_radio_config.h @@ -0,0 +1,83 @@ +/* + * ======== ti_radio_config.h ======== @@ -1043,8 +1253,8 @@ index 0000000..9d58da3 + * DO NOT EDIT - This file is generated for the CC1352P1F3RGZ + * by the SysConfig tool. + * -+ * Radio Config module version : 1.11 -+ * SmartRF Studio data version : 2.23.0 ++ * Radio Config module version : 1.14 ++ * SmartRF Studio data version : 2.27.0 + */ +#ifndef _TI_RADIO_CONFIG_H_ +#define _TI_RADIO_CONFIG_H_ @@ -1056,12 +1266,12 @@ index 0000000..9d58da3 +#include + +/* SmartRF Studio version that the RF data is fetched from */ -+#define SMARTRF_STUDIO_VERSION "2.23.0" ++#define SMARTRF_STUDIO_VERSION "2.27.0" + +// ********************************************************************************* +// RF Frontend configuration +// ********************************************************************************* -+// RF design based on: LAUNCHXL-CC1352P-2 (CC1352PEM-XD4251-XD24-PA24_10dBm) ++// RF design based on: LAUNCHXL-CC1352P-2 +#define LAUNCHXL_CC1352P_2 + +// High-Power Amplifier supported @@ -1078,7 +1288,7 @@ index 0000000..9d58da3 +#define SUPPORT_FREQBAND_2400 + +// TX power table size definitions -+#define TXPOWERTABLE_868_PA13_SIZE 20 // 868 MHz, 13 dBm ++#define TXPOWERTABLE_868_PA13_SIZE 22 // 868 MHz, 13 dBm +#define TXPOWERTABLE_2400_PA5_SIZE 16 // 2400 MHz, 5 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 @@ -1119,13 +1329,13 @@ index 0000000..9d58da3 +extern uint32_t pOverrides_ieee154Tx20[]; + +#endif // _TI_RADIO_CONFIG_H_ -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 +diff --git a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg +index 1b16340..f700be5 100644 +--- a/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg ++++ b/zr_genericapp_CC1352P_2_LAUNCHXL_tirtos7_ticlang/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"} + * @cliArgs --board "/ti/boards/CC1352P_2_LAUNCHXL" --rtos "tirtos7" --product "simplelink_cc13xx_cc26xx_sdk@6.30.00.84" + * @versions {"tool":"1.14.0+2667"} */ +scripting.excludeFromBuild("ti_devices_config.c"); +scripting.excludeFromBuild("ti_radio_config.c"); @@ -1134,15 +1344,15 @@ index 3a3068f..b356b04 100644 /** * Import the modules used in this configuration. -@@ -50,6 +54,7 @@ CCFG.enableBootloaderBackdoor = true; +@@ -65,6 +69,7 @@ CCFG.enableBootloaderBackdoor = true; CCFG.dioBootloaderBackdoor = 15; CCFG.levelBootloaderBackdoor = "Active low"; CCFG.forceVddr = true; +CCFG.enableDCDC = false; - CCFG.ccfgTemplate.$name = "ti_devices_CCFGTemplate0"; + CCFG.ccfgTemplate.$name = "ti_devices_CCFG_CCFGCC26XXTemplate0"; rfdesign.rfDesign = "LAUNCHXL-CC1352P-2"; -@@ -72,8 +77,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; +@@ -87,8 +92,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; NVS1.$name = "CONFIG_NVSINTERNAL"; NVS1.internalFlash.$name = "ti_drivers_nvs_NVSCC26XX0"; @@ -1153,7 +1363,7 @@ index 3a3068f..b356b04 100644 NVS2.$name = "CONFIG_NVSEXTERNAL"; NVS2.nvsType = "External"; -@@ -125,6 +130,8 @@ zstack.deviceTypeReadOnly = true; +@@ -179,6 +184,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"; @@ -1162,37 +1372,61 @@ index 3a3068f..b356b04 100644 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_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Application/zcl_genericapp.c -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 +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c +index 550be7a..0725b39 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp.c @@ -53,6 +53,8 @@ * INCLUDES */ -+#include -+ ++#include ++ #include "rom_jt_154.h" #include "zcomdef.h" -@@ -870,6 +872,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn +@@ -68,6 +70,8 @@ + #include "zcl_genericapp.h" + #include "zcl_port.h" + ++#include "osal_nv.h" ++ + #include + #include "ti_drivers_config.h" + #include "util_timer.h" +@@ -261,6 +265,14 @@ void sampleApp_task(NVINTF_nvFuncts_t *pfnNV) + pfnZdlNV = pfnNV; + zclport_registerNV(pfnZdlNV, ZCL_PORT_SCENE_TABLE_NV_ID); + ++ // Init the transmit power NV item, this will be skipped if item is already initialized ++ int8_t transmitPower = TXPOWER; ++ osal_nv_item_init( ZCD_NV_TRANSMIT_POWER, sizeof(transmitPower), &transmitPower ); ++ ++ // Set transmit power ++ osal_nv_read( ZCD_NV_TRANSMIT_POWER, 0, sizeof( transmitPower ), &transmitPower ); ++ ZMacSetTransmitPower( (ZMacTransmitPower_t)transmitPower ); ++ + // Initialize application + zclGenericApp_initialization(); + +@@ -870,6 +882,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn */ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg) { -+ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; ++ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; switch(bdbCommissioningModeMsg->bdbCommissioningMode) { case BDB_COMMISSIONING_FORMATION: -@@ -909,6 +912,8 @@ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t * +@@ -909,6 +922,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); ++ 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 +@@ -1209,28 +1224,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask */ static void zclGenericApp_processKey(Button_Handle _btn) { @@ -1202,11 +1436,11 @@ index 82a4bec..23788ff 100644 - { - 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())); ++ 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); @@ -1222,32 +1456,53 @@ index 82a4bec..23788ff 100644 - { - Zstackapi_bdbResetLocalActionReq(appServiceTaskId); - } -+ zgWriteStartupOptions( ZG_STARTUP_SET, -+ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); ++ zgWriteStartupOptions( ZG_STARTUP_SET, ++ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); -+ SysCtrlSystemReset(); ++ SysCtrlSystemReset(); } -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..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; +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c +index c0e473d..4d08810 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Application/zcl_genericapp_data.c +@@ -49,6 +49,8 @@ + #include "zcl_general.h" + #include "zcl_ha.h" + ++#include "osal_nv.h" ++ + /* GENERICAPP_TODO: Include any of the header files below to access specific cluster data + #include "zcl_poll_control.h" + #include "zcl_electrical_measurement.h" +@@ -96,8 +98,11 @@ 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_SwBuildID[] = { 8, '2','0','2','2','1','1','0','2' }; const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; ++int8_t zclGenericApp_TransmitPower; -@@ -143,10 +145,28 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + #ifdef ZCL_IDENTIFY + // Identify Cluster +@@ -134,7 +139,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_HW_VERSION, // Attribute ID - Found in Cluster Library header (ie. zcl_general.h) + ZCL_DATATYPE_UINT8, // Data Type - found in zcl.h +- ACCESS_CONTROL_READ, // Variable access control - found in zcl.h ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), // Variable access control - found in zcl.h + (void *)&zclGenericApp_HWRevision // Pointer to attribute variable + } + }, +@@ -143,16 +148,34 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = { // Attribute record ATTRID_BASIC_ZCL_VERSION, ZCL_DATATYPE_UINT8, - ACCESS_CONTROL_READ, -+ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE), ++ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE | ACCESS_CONTROL_AUTH_READ), (void *)&zclGenericApp_ZCLVersion } }, @@ -1256,7 +1511,7 @@ index c0e473d..1446606 100644 + { // Attribute record + ATTRID_BASIC_MODEL_IDENTIFIER, + ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_ModelID + } + }, @@ -1265,30 +1520,131 @@ index c0e473d..1446606 100644 + { // Attribute record + ATTRID_BASIC_SW_BUILD_ID, + ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_SwBuildID + } + }, { 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..91eb00e 100644 ---- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts -+++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/f8wrouter.opts + ATTRID_BASIC_MANUFACTURER_NAME, + ZCL_DATATYPE_CHAR_STR, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_ManufacturerName + } + }, +@@ -161,7 +184,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_POWER_SOURCE, + ZCL_DATATYPE_ENUM8, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_PowerSource + } + }, +@@ -170,7 +193,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_PHYSICAL_ENVIRONMENT, + ZCL_DATATYPE_ENUM8, +- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE), ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_PhysicalEnvironment + } + }, +@@ -179,10 +202,20 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_CLUSTER_REVISION, + ZCL_DATATYPE_UINT16, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_basic_clusterRevision + } + }, ++ { ++ ZCL_CLUSTER_ID_GENERAL_BASIC, ++ { // Attribute record ++ ATTRID_BASIC_TRANSMIT_POWER, ++ ZCL_DATATYPE_INT8, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), ++ (void *)&zclGenericApp_TransmitPower ++ } ++ }, ++ + + #ifdef ZCL_IDENTIFY + // *** Identify Cluster Attribute *** +@@ -191,7 +224,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_IDENTIFY_IDENTIFY_TIME, + ZCL_DATATYPE_UINT16, +- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE), ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_IdentifyTime + } + }, +@@ -201,7 +234,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_CLUSTER_REVISION, + ZCL_DATATYPE_UINT16, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_identify_clusterRevision + } + }, +@@ -276,6 +309,7 @@ void zclGenericApp_ResetAttributesToDefaultValues(void) + { + + zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; ++ osal_nv_read( ZCD_NV_TRANSMIT_POWER, 0, sizeof( zclGenericApp_TransmitPower ), &zclGenericApp_TransmitPower ); + + #ifdef ZCL_IDENTIFY + zclGenericApp_IdentifyTime = 0; +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c +index 51902c4..9afcba3 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Common/zcl/zcl.c +@@ -47,6 +47,8 @@ + #include "zcl.h" + #include "zcl_general.h" + ++#include "osal_nv.h" ++ + #if defined ( INTER_PAN ) || defined ( BDB_TL_INITIATOR ) || defined ( BDB_TL_TARGET ) + #include "stub_aps.h" + #endif +@@ -4675,6 +4677,14 @@ static uint8_t zclProcessInWriteCmd( zclIncoming_t *pInMsg ) + status = zclWriteAttrData( pInMsg->msg->endPoint, &(pInMsg->msg->srcAddr), + &attrRec, statusRec ); + } ++ ++ if((pInMsg->msg->clusterId == ZCL_CLUSTER_ID_GENERAL_BASIC) && (statusRec->attrID == ATTRID_BASIC_TRANSMIT_POWER)) ++ { ++ int8_t transmitPower; ++ OsalPort_memcpy((int8_t*)&transmitPower,statusRec->attrData,sizeof(int8_t)); ++ ZMacSetTransmitPower( (ZMacTransmitPower_t)transmitPower ); ++ osal_nv_write( ZCD_NV_TRANSMIT_POWER, sizeof( transmitPower ), &transmitPower ); ++ } + } + else // Use CB + { +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts +index b841d60..ed396c2 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/f8wrouter.opts @@ -9,3 +9,5 @@ -DADDRMGR_NV_SINGLES -DBINDINGTABLE_NV_SINGLES -DASSOCLIST_NV_SINGLES -+ -+--preinclude=preinclude.h ++ ++-include 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 +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h new file mode 100644 -index 0000000..8a7300b +index 0000000..1ce7b56 --- /dev/null -+++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/Stack/Config/preinclude.h -@@ -0,0 +1,31 @@ ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/Config/preinclude.h +@@ -0,0 +1,33 @@ +// Increase MAC buffers +#undef MAC_CFG_TX_DATA_MAX +#define MAC_CFG_TX_DATA_MAX 20 @@ -1313,6 +1669,8 @@ index 0000000..8a7300b +#define MAX_RTG_ENTRIES 150 +#define ZDO_API_ADVANCED + ++#define ATTRID_BASIC_TRANSMIT_POWER 0x1337 ++ +// From https://www.ti.com/lit/an/swra650b/swra650b.pdf +#define LINK_DOWN_TRIGGER 12 +#define NWK_ROUTE_AGE_LIMIT 5 @@ -1320,51 +1678,103 @@ index 0000000..8a7300b +#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. */ +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h +index 26c0b45..8a338c1 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zcomdef.h +@@ -123,6 +123,9 @@ extern "C" + #define ZCD_NV_STARTUP_OPTION 0x0003 + #define ZCD_NV_START_DELAY 0x0004 + ++// Custom transmit power NV item ++#define ZCD_NV_TRANSMIT_POWER 0x0010 ++ + // NWK Layer NV item IDs + #define ZCD_NV_NIB 0x0021 + #define ZCD_NV_DEVICE_LIST 0x0022 +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c +index 706736b..b63af7b 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/sys/zglobals.c +@@ -225,7 +225,7 @@ uint8_t zgEndDeviceConfiguration = END_DEV_CONFIGURATION; + // + // NOTICE: Before enabling Child Aging make sure to review all the related + // definitions in this file, especially zgNwkParentInformation. +-uint8_t zgChildAgingEnable = TRUE; ++uint8_t zgChildAgingEnable = FALSE; + + //========== TouchLink NWK configuration =============== + // Values used by Router when starts a network as initiator +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c +index 1f30180..0fd57f5 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/Stack/zdo/zd_app.c +@@ -441,12 +441,11 @@ uint32_t ZDApp_event_loop( uint8_t task_id, uint32_t events ) + ZDApp_ChangeState( DEV_ROUTER ); + } + +- if ( zgChildAgingEnable == TRUE ) +- { +- // Once the device has changed its state to a ROUTER set the timer to send +- // Parent annce +- ZDApp_SetParentAnnceTimer(); +- } ++ // As we cannot enable child aging as Xiaomi devices will drop off ++ // but we stil want to have the parent announces we always enable it here. ++ // Otherwise some end devices could be unreachable when they changed parent ++ // while the coordinator was powered off. ++ ZDApp_SetParentAnnceTimer(); + } + else + { +@@ -907,12 +906,11 @@ void ZDApp_NetworkStartEvt( void ) + bdb_reportCommissioningState(BDB_INITIALIZATION,TRUE); + } + +- if ( zgChildAgingEnable == TRUE ) +- { +- // Once the device has changed its state to a COORDINATOR set the timer to send +- // Parent annce +- ZDApp_SetParentAnnceTimer(); +- } ++ // As we cannot enable child aging as Xiaomi devices will drop off ++ // but we stil want to have the parent announces we always enable it here. ++ // Otherwise some end devices could be unreachable when they changed parent ++ // while the coordinator was powered off. ++ ZDApp_SetParentAnnceTimer(); + } + else + { +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd +index da62af1..234ac56 100755 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd +@@ -71,9 +71,9 @@ + #endif #define FLASH_BASE 0x00000000 --#define FLASH_SIZE 0x52000 --#define FLASH_NV_BASE 0x52000 --#define FLASH_NV_SIZE 0x4000 +-#define FLASH_SIZE (0x56000 - (NVOCMP_NVPAGES * 0x2000)) +-#define FLASH_NV_BASE (0x56000 - (NVOCMP_NVPAGES * 0x2000)) +-#define FLASH_NV_SIZE (NVOCMP_NVPAGES * 0x2000) +#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 4b1ea23..b60ec66 100644 ---- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -+++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos_ccs/zr_genericapp.syscfg -@@ -47,6 +47,7 @@ CCFG.enableBootloader = true; +diff --git a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg +index 7af3313..300960f 100644 +--- a/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg ++++ b/zr_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang/zr_genericapp.syscfg +@@ -62,6 +62,7 @@ CCFG.enableBootloader = true; CCFG.enableBootloaderBackdoor = true; CCFG.dioBootloaderBackdoor = 13; CCFG.levelBootloaderBackdoor = "Active low"; +CCFG.enableDCDC = false; - CCFG.ccfgTemplate.$name = "ti_devices_CCFGTemplate0"; + CCFG.ccfgTemplate.$name = "ti_devices_CCFG_CCFGCC26XXTemplate0"; Display1.$hardware = system.deviceData.board.components.XDS110UART; -@@ -67,8 +68,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; +@@ -82,8 +83,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; NVS1.$name = "CONFIG_NVSINTERNAL"; NVS1.internalFlash.$name = "ti_drivers_nvs_NVSCC26XX0"; @@ -1375,7 +1785,7 @@ index 4b1ea23..b60ec66 100644 NVS2.$name = "CONFIG_NVSEXTERNAL"; NVS2.nvsType = "External"; -@@ -118,6 +119,8 @@ zstack.deviceTypeReadOnly = true; +@@ -172,6 +173,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"; @@ -1384,37 +1794,61 @@ index 4b1ea23..b60ec66 100644 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 +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp.c b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp.c +index 550be7a..0725b39 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp.c @@ -53,6 +53,8 @@ * INCLUDES */ -+#include -+ ++#include ++ #include "rom_jt_154.h" #include "zcomdef.h" -@@ -870,6 +872,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn +@@ -68,6 +70,8 @@ + #include "zcl_genericapp.h" + #include "zcl_port.h" + ++#include "osal_nv.h" ++ + #include + #include "ti_drivers_config.h" + #include "util_timer.h" +@@ -261,6 +265,14 @@ void sampleApp_task(NVINTF_nvFuncts_t *pfnNV) + pfnZdlNV = pfnNV; + zclport_registerNV(pfnZdlNV, ZCL_PORT_SCENE_TABLE_NV_ID); + ++ // Init the transmit power NV item, this will be skipped if item is already initialized ++ int8_t transmitPower = TXPOWER; ++ osal_nv_item_init( ZCD_NV_TRANSMIT_POWER, sizeof(transmitPower), &transmitPower ); ++ ++ // Set transmit power ++ osal_nv_read( ZCD_NV_TRANSMIT_POWER, 0, sizeof( transmitPower ), &transmitPower ); ++ ZMacSetTransmitPower( (ZMacTransmitPower_t)transmitPower ); ++ + // Initialize application + zclGenericApp_initialization(); + +@@ -870,6 +882,7 @@ static void zclGenericApp_processAfIncomingMsgInd(zstack_afIncomingMsgInd_t *pIn */ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg) { -+ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; ++ zstack_bdbStartCommissioningReq_t zstack_bdbStartCommissioningReq; switch(bdbCommissioningModeMsg->bdbCommissioningMode) { case BDB_COMMISSIONING_FORMATION: -@@ -909,6 +912,8 @@ static void zclGenericApp_ProcessCommissioningStatus(bdbCommissioningModeMsg_t * +@@ -909,6 +922,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); ++ 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 +@@ -1209,28 +1224,16 @@ static void zclGenericApp_changeKeyCallback(Button_Handle _btn, Button_EventMask */ static void zclGenericApp_processKey(Button_Handle _btn) { @@ -1424,11 +1858,11 @@ index 82a4bec..23788ff 100644 - { - 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())); ++ 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); @@ -1444,32 +1878,53 @@ index 82a4bec..23788ff 100644 - { - Zstackapi_bdbResetLocalActionReq(appServiceTaskId); - } -+ zgWriteStartupOptions( ZG_STARTUP_SET, -+ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); ++ zgWriteStartupOptions( ZG_STARTUP_SET, ++ ZCD_STARTOPT_DEFAULT_NETWORK_STATE | ZCD_STARTOPT_DEFAULT_CONFIG_STATE); -+ SysCtrlSystemReset(); ++ 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; +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp_data.c b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp_data.c +index c0e473d..4d08810 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp_data.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Application/zcl_genericapp_data.c +@@ -49,6 +49,8 @@ + #include "zcl_general.h" + #include "zcl_ha.h" + ++#include "osal_nv.h" ++ + /* GENERICAPP_TODO: Include any of the header files below to access specific cluster data + #include "zcl_poll_control.h" + #include "zcl_electrical_measurement.h" +@@ -96,8 +98,11 @@ 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_SwBuildID[] = { 8, '2','0','2','2','1','1','0','2' }; const uint8_t zclGenericApp_PowerSource = POWER_SOURCE_MAINS_1_PHASE; uint8_t zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; ++int8_t zclGenericApp_TransmitPower; -@@ -143,10 +145,28 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + #ifdef ZCL_IDENTIFY + // Identify Cluster +@@ -134,7 +139,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_HW_VERSION, // Attribute ID - Found in Cluster Library header (ie. zcl_general.h) + ZCL_DATATYPE_UINT8, // Data Type - found in zcl.h +- ACCESS_CONTROL_READ, // Variable access control - found in zcl.h ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), // Variable access control - found in zcl.h + (void *)&zclGenericApp_HWRevision // Pointer to attribute variable + } + }, +@@ -143,16 +148,34 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = { // Attribute record ATTRID_BASIC_ZCL_VERSION, ZCL_DATATYPE_UINT8, - ACCESS_CONTROL_READ, -+ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE), ++ (ACCESS_CONTROL_READ | ACCESS_REPORTABLE | ACCESS_CONTROL_AUTH_READ), (void *)&zclGenericApp_ZCLVersion } }, @@ -1478,7 +1933,7 @@ index c0e473d..1446606 100644 + { // Attribute record + ATTRID_BASIC_MODEL_IDENTIFIER, + ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_ModelID + } + }, @@ -1487,30 +1942,131 @@ index c0e473d..1446606 100644 + { // Attribute record + ATTRID_BASIC_SW_BUILD_ID, + ZCL_DATATYPE_CHAR_STR, -+ ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_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 + ATTRID_BASIC_MANUFACTURER_NAME, + ZCL_DATATYPE_CHAR_STR, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)zclGenericApp_ManufacturerName + } + }, +@@ -161,7 +184,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_POWER_SOURCE, + ZCL_DATATYPE_ENUM8, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_PowerSource + } + }, +@@ -170,7 +193,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_BASIC_PHYSICAL_ENVIRONMENT, + ZCL_DATATYPE_ENUM8, +- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE), ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_PhysicalEnvironment + } + }, +@@ -179,10 +202,20 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_CLUSTER_REVISION, + ZCL_DATATYPE_UINT16, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_basic_clusterRevision + } + }, ++ { ++ ZCL_CLUSTER_ID_GENERAL_BASIC, ++ { // Attribute record ++ ATTRID_BASIC_TRANSMIT_POWER, ++ ZCL_DATATYPE_INT8, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), ++ (void *)&zclGenericApp_TransmitPower ++ } ++ }, ++ + + #ifdef ZCL_IDENTIFY + // *** Identify Cluster Attribute *** +@@ -191,7 +224,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_IDENTIFY_IDENTIFY_TIME, + ZCL_DATATYPE_UINT16, +- (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE), ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_IdentifyTime + } + }, +@@ -201,7 +234,7 @@ CONST zclAttrRec_t zclGenericApp_Attrs[] = + { // Attribute record + ATTRID_CLUSTER_REVISION, + ZCL_DATATYPE_UINT16, +- ACCESS_CONTROL_READ, ++ (ACCESS_CONTROL_READ | ACCESS_CONTROL_AUTH_READ), + (void *)&zclGenericApp_identify_clusterRevision + } + }, +@@ -276,6 +309,7 @@ void zclGenericApp_ResetAttributesToDefaultValues(void) + { + + zclGenericApp_PhysicalEnvironment = PHY_UNSPECIFIED_ENV; ++ osal_nv_read( ZCD_NV_TRANSMIT_POWER, 0, sizeof( zclGenericApp_TransmitPower ), &zclGenericApp_TransmitPower ); + + #ifdef ZCL_IDENTIFY + zclGenericApp_IdentifyTime = 0; +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Common/zcl/zcl.c b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Common/zcl/zcl.c +index 51902c4..9afcba3 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Common/zcl/zcl.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Common/zcl/zcl.c +@@ -47,6 +47,8 @@ + #include "zcl.h" + #include "zcl_general.h" + ++#include "osal_nv.h" ++ + #if defined ( INTER_PAN ) || defined ( BDB_TL_INITIATOR ) || defined ( BDB_TL_TARGET ) + #include "stub_aps.h" + #endif +@@ -4675,6 +4677,14 @@ static uint8_t zclProcessInWriteCmd( zclIncoming_t *pInMsg ) + status = zclWriteAttrData( pInMsg->msg->endPoint, &(pInMsg->msg->srcAddr), + &attrRec, statusRec ); + } ++ ++ if((pInMsg->msg->clusterId == ZCL_CLUSTER_ID_GENERAL_BASIC) && (statusRec->attrID == ATTRID_BASIC_TRANSMIT_POWER)) ++ { ++ int8_t transmitPower; ++ OsalPort_memcpy((int8_t*)&transmitPower,statusRec->attrData,sizeof(int8_t)); ++ ZMacSetTransmitPower( (ZMacTransmitPower_t)transmitPower ); ++ osal_nv_write( ZCD_NV_TRANSMIT_POWER, sizeof( transmitPower ), &transmitPower ); ++ } + } + else // Use CB + { +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/f8wrouter.opts b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/f8wrouter.opts +index b841d60..ed396c2 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/f8wrouter.opts ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/f8wrouter.opts @@ -9,3 +9,5 @@ -DADDRMGR_NV_SINGLES -DBINDINGTABLE_NV_SINGLES -DASSOCLIST_NV_SINGLES -+ -+--preinclude=preinclude.h ++ ++-include 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 +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/preinclude.h b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/preinclude.h new file mode 100644 -index 0000000..8a7300b +index 0000000..1ce7b56 --- /dev/null -+++ b/zr_genericapp_LP_CC2652RB_tirtos_ccs/Stack/Config/preinclude.h -@@ -0,0 +1,31 @@ ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/Config/preinclude.h +@@ -0,0 +1,33 @@ +// Increase MAC buffers +#undef MAC_CFG_TX_DATA_MAX +#define MAC_CFG_TX_DATA_MAX 20 @@ -1535,6 +2091,8 @@ index 0000000..8a7300b +#define MAX_RTG_ENTRIES 150 +#define ZDO_API_ADVANCED + ++#define ATTRID_BASIC_TRANSMIT_POWER 0x1337 ++ +// From https://www.ti.com/lit/an/swra650b/swra650b.pdf +#define LINK_DOWN_TRIGGER 12 +#define NWK_ROUTE_AGE_LIMIT 5 @@ -1542,51 +2100,103 @@ index 0000000..8a7300b +#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. */ +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zcomdef.h b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zcomdef.h +index 26c0b45..8a338c1 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zcomdef.h ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zcomdef.h +@@ -123,6 +123,9 @@ extern "C" + #define ZCD_NV_STARTUP_OPTION 0x0003 + #define ZCD_NV_START_DELAY 0x0004 + ++// Custom transmit power NV item ++#define ZCD_NV_TRANSMIT_POWER 0x0010 ++ + // NWK Layer NV item IDs + #define ZCD_NV_NIB 0x0021 + #define ZCD_NV_DEVICE_LIST 0x0022 +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zglobals.c b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zglobals.c +index 706736b..b63af7b 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zglobals.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/sys/zglobals.c +@@ -225,7 +225,7 @@ uint8_t zgEndDeviceConfiguration = END_DEV_CONFIGURATION; + // + // NOTICE: Before enabling Child Aging make sure to review all the related + // definitions in this file, especially zgNwkParentInformation. +-uint8_t zgChildAgingEnable = TRUE; ++uint8_t zgChildAgingEnable = FALSE; + + //========== TouchLink NWK configuration =============== + // Values used by Router when starts a network as initiator +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/zdo/zd_app.c b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/zdo/zd_app.c +index 1f30180..0fd57f5 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/zdo/zd_app.c ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/Stack/zdo/zd_app.c +@@ -441,12 +441,11 @@ uint32_t ZDApp_event_loop( uint8_t task_id, uint32_t events ) + ZDApp_ChangeState( DEV_ROUTER ); + } + +- if ( zgChildAgingEnable == TRUE ) +- { +- // Once the device has changed its state to a ROUTER set the timer to send +- // Parent annce +- ZDApp_SetParentAnnceTimer(); +- } ++ // As we cannot enable child aging as Xiaomi devices will drop off ++ // but we stil want to have the parent announces we always enable it here. ++ // Otherwise some end devices could be unreachable when they changed parent ++ // while the coordinator was powered off. ++ ZDApp_SetParentAnnceTimer(); + } + else + { +@@ -907,12 +906,11 @@ void ZDApp_NetworkStartEvt( void ) + bdb_reportCommissioningState(BDB_INITIALIZATION,TRUE); + } + +- if ( zgChildAgingEnable == TRUE ) +- { +- // Once the device has changed its state to a COORDINATOR set the timer to send +- // Parent annce +- ZDApp_SetParentAnnceTimer(); +- } ++ // As we cannot enable child aging as Xiaomi devices will drop off ++ // but we stil want to have the parent announces we always enable it here. ++ // Otherwise some end devices could be unreachable when they changed parent ++ // while the coordinator was powered off. ++ ZDApp_SetParentAnnceTimer(); + } + else + { +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd +index da62af1..234ac56 100755 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/cc13x2_cc26x2_tirtos7_ticlang.cmd +@@ -71,9 +71,9 @@ + #endif #define FLASH_BASE 0x00000000 --#define FLASH_SIZE 0x52000 --#define FLASH_NV_BASE 0x52000 --#define FLASH_NV_SIZE 0x4000 +-#define FLASH_SIZE (0x56000 - (NVOCMP_NVPAGES * 0x2000)) +-#define FLASH_NV_BASE (0x56000 - (NVOCMP_NVPAGES * 0x2000)) +-#define FLASH_NV_SIZE (NVOCMP_NVPAGES * 0x2000) +#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; +diff --git a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/zr_genericapp.syscfg b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/zr_genericapp.syscfg +index 94e3ede..3d2f361 100644 +--- a/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/zr_genericapp.syscfg ++++ b/zr_genericapp_LP_CC2652RB_tirtos7_ticlang/zr_genericapp.syscfg +@@ -63,6 +63,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"; + CCFG.ccfgTemplate.$name = "ti_devices_CCFG_CCFGCC26XXTemplate0"; Display1.$hardware = system.deviceData.board.components.XDS110UART; -@@ -68,8 +69,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; +@@ -83,8 +84,8 @@ ECDSA1.$name = "CONFIG_ECDSA_0"; NVS1.$name = "CONFIG_NVSINTERNAL"; NVS1.internalFlash.$name = "ti_drivers_nvs_NVSCC26XX0"; @@ -1597,7 +2207,7 @@ index d137337..d9e3ef6 100644 NVS2.$name = "CONFIG_NVSEXTERNAL"; NVS2.nvsType = "External"; -@@ -119,6 +120,8 @@ zstack.deviceTypeReadOnly = true; +@@ -173,6 +174,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"; @@ -1607,5 +2217,5 @@ index d137337..d9e3ef6 100644 zstack.rf.radioConfig.codeExportConfig.$name = "ti_devices_radioconfig_code_export_param0"; zstack.rf.coexSettings.$name = "ti_zstack_rf_zstack_coex_mod0"; -- -2.34.0 +2.37.0