From fc5c41b902bc7171f8be1b89dcf79bc85d0ad91e Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 28 Jul 2020 19:39:55 +0200 Subject: [PATCH 1/1] Own changes --- Components/hal/include/hal_led.h | 1 + Components/hal/target/CC2530USB/hal_led.c | 6 + .../hal/target/CC2530ZNP/hal_board_cfg.h | 6 +- Components/hal/target/CC2530ZNP/hal_led.c | 6 + Components/mt/MT_SYS.c | 16 +++ Components/mt/MT_UTIL.c | 2 + Components/mt/MT_ZDO.c | 8 ++ Components/mt/revision_info.h | 1 + Components/stack/af/AF.c | 26 +++- Components/stack/zdo/ZDApp.c | 10 +- Components/stack/zdo/ZDObject.c | 14 ++ Components/stack/zdo/ZDSecMgr.c | 21 +++ Projects/zstack/ZMain/TI2530ZNP/OnBoard.c | 9 ++ Projects/zstack/ZMain/TI2530ZNP/OnBoard.h | 4 +- .../zstack/ZNP/CC253x/Source/preinclude.h | 126 ++++++++++++++++++ Projects/zstack/ZNP/Source/znp.cfg | 4 +- Projects/zstack/ZNP/Source/znp_app.c | 22 ++- 17 files changed, 269 insertions(+), 13 deletions(-) create mode 100644 Components/mt/revision_info.h create mode 100644 Projects/zstack/ZNP/CC253x/Source/preinclude.h diff --git a/Components/hal/include/hal_led.h b/Components/hal/include/hal_led.h index 217b8bf..ff0ce2f 100644 --- a/Components/hal/include/hal_led.h +++ b/Components/hal/include/hal_led.h @@ -71,6 +71,7 @@ extern "C" #define HAL_LED_MODE_BLINK 0x02 #define HAL_LED_MODE_FLASH 0x04 #define HAL_LED_MODE_TOGGLE 0x08 +#define HAL_LED_MODE_DISABLE 0x10 /* Defaults */ #define HAL_LED_DEFAULT_MAX_LEDS 4 diff --git a/Components/hal/target/CC2530USB/hal_led.c b/Components/hal/target/CC2530USB/hal_led.c index 2471fb7..4c14e58 100644 --- a/Components/hal/target/CC2530USB/hal_led.c +++ b/Components/hal/target/CC2530USB/hal_led.c @@ -81,6 +81,7 @@ typedef struct static uint8 HalLedState; // LED state at last set/clr/blink update +static bool LedsDisabled; #if HAL_LED == TRUE static uint8 HalSleepLedState; // LED state at last set/clr/blink update @@ -136,6 +137,11 @@ void HalLedInit (void) ***************************************************************************************************/ uint8 HalLedSet (uint8 leds, uint8 mode) { + if (LedsDisabled == true) return ( HalLedState ); + if (mode == HAL_LED_MODE_DISABLE) { + LedsDisabled = true; + mode = HAL_LED_MODE_OFF; + } #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE) uint8 led; diff --git a/Components/hal/target/CC2530ZNP/hal_board_cfg.h b/Components/hal/target/CC2530ZNP/hal_board_cfg.h index 0459c86..1e40362 100644 --- a/Components/hal/target/CC2530ZNP/hal_board_cfg.h +++ b/Components/hal/target/CC2530ZNP/hal_board_cfg.h @@ -314,7 +314,7 @@ extern unsigned char znpCfg0; */ /* ----------- RF-frontend Connection Initialization ---------- */ -#if defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590 +#if defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590 || defined HAL_PA_LNA_CC2592 extern void MAC_RfFrontendSetup(void); #define HAL_BOARD_RF_FRONTEND_SETUP() MAC_RfFrontendSetup() #else @@ -343,7 +343,7 @@ extern void MAC_RfFrontendSetup(void); #endif /* ----------- Board Initialization ---------- */ -#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590) +#if defined (HAL_BOARD_CC2530EB_REV17) && !defined (HAL_PA_LNA) && !defined (HAL_PA_LNA_CC2590) && !defined (HAL_PA_LNA_CC2592) #define HAL_BOARD_INIT() st \ ( \ @@ -362,7 +362,7 @@ extern void MAC_RfFrontendSetup(void); PREFETCH_ENABLE(); \ ) -#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590) +#elif defined (HAL_BOARD_CC2530EB_REV13) || defined (HAL_PA_LNA) || defined (HAL_PA_LNA_CC2590)|| defined (HAL_PA_LNA_CC2592) #ifdef HAL_ENABLE_WIFI_COEX_PINS #define HAL_BOARD_ENABLE_WIFI_COEX_PINS() st \ diff --git a/Components/hal/target/CC2530ZNP/hal_led.c b/Components/hal/target/CC2530ZNP/hal_led.c index 2471fb7..4c14e58 100644 --- a/Components/hal/target/CC2530ZNP/hal_led.c +++ b/Components/hal/target/CC2530ZNP/hal_led.c @@ -81,6 +81,7 @@ typedef struct static uint8 HalLedState; // LED state at last set/clr/blink update +static bool LedsDisabled; #if HAL_LED == TRUE static uint8 HalSleepLedState; // LED state at last set/clr/blink update @@ -136,6 +137,11 @@ void HalLedInit (void) ***************************************************************************************************/ uint8 HalLedSet (uint8 leds, uint8 mode) { + if (LedsDisabled == true) return ( HalLedState ); + if (mode == HAL_LED_MODE_DISABLE) { + LedsDisabled = true; + mode = HAL_LED_MODE_OFF; + } #if (defined (BLINK_LEDS)) && (HAL_LED == TRUE) uint8 led; diff --git a/Components/mt/MT_SYS.c b/Components/mt/MT_SYS.c index 35aae57..1f8ee82 100644 --- a/Components/mt/MT_SYS.c +++ b/Components/mt/MT_SYS.c @@ -2141,6 +2141,21 @@ static void MT_SysSnifferParameters( uint8 *pBuf ) *****************************************************************************/ static void powerOffSoc(void) { +#if defined(FIRMWARE_CC2530) || defined(FIRMWARE_CC2530_CC2591) || defined(FIRMWARE_CC2530_CC2592) + HAL_DISABLE_INTERRUPTS(); + STIF = 0; //HAL_SLEEP_TIMER_CLEAR_INT; + if (ZNP_CFG1_UART == znpCfg1) + { + HalUARTSuspend(); + } + + /* Prep CC2530 power mode */ + //HAL_SLEEP_PREP_POWER_MODE(3); + SLEEPCMD &= ~PMODE; /* clear mode bits */ + SLEEPCMD |= 3; /* set mode bits to PM3 */ + while (!(STLOAD & LDRDY)); + SystemReset(); +#else HAL_DISABLE_INTERRUPTS(); /* turn off the RF front end device */ @@ -2181,6 +2196,7 @@ static void powerOffSoc(void) PCON = halSleepPconValue; asm("NOP"); } +#endif } #endif diff --git a/Components/mt/MT_UTIL.c b/Components/mt/MT_UTIL.c index bc5ba4a..338ed3b 100644 --- a/Components/mt/MT_UTIL.c +++ b/Components/mt/MT_UTIL.c @@ -935,6 +935,8 @@ static void MT_UtilLedControl(uint8 *pBuf) Mode = HAL_LED_MODE_FLASH; else if ( iMode == 4 ) Mode = HAL_LED_MODE_TOGGLE; + else if ( iMode == 5 ) + Mode = HAL_LED_MODE_DISABLE; else Led = 0; diff --git a/Components/mt/MT_ZDO.c b/Components/mt/MT_ZDO.c index d43d7c0..db8d264 100644 --- a/Components/mt/MT_ZDO.c +++ b/Components/mt/MT_ZDO.c @@ -54,6 +54,7 @@ #include "ZDApp.h" #include "OnBoard.h" #include "aps_groups.h" +#include "hal_led.h" #if defined ( MT_ZDO_EXTENSIONS ) #include "rtg.h" @@ -1626,6 +1627,11 @@ static void MT_ZdoMgmtPermitJoinRequest(uint8 *pBuf) ignoreIndication = TRUE; retValue = (uint8)ZDP_MgmtPermitJoinReq( &destAddr, duration, tcSignificance, 0); ignoreIndication = FALSE; + + // If joining is enabled via a router, ZDO_ProcessMgmtPermitJoinReq is never triggered thus + // ZDSecMgrPermitJoining is never called. Joining via a router would always fail now since + // ZDSecMgrPermitJoiningEnabled in zd_sec_mgr.c stays FALSE + ZDSecMgrPermitJoining(duration); MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP | (uint8)MT_RPC_SYS_ZDO), cmdId, 1, &retValue); } @@ -1812,6 +1818,8 @@ static void MT_ZdoStartupFromApp(uint8 *pBuf) retValue = ZDOInitDevice(100); + HalLedSet(HAL_LED_3, HAL_LED_MODE_OFF); + if (MT_RPC_CMD_SREQ == (cmd0 & MT_RPC_CMD_TYPE_MASK)) { MT_BuildAndSendZToolResponse(((uint8)MT_RPC_CMD_SRSP|(uint8)MT_RPC_SYS_ZDO), cmd1,1, &retValue); diff --git a/Components/mt/revision_info.h b/Components/mt/revision_info.h new file mode 100644 index 0000000..eb5b07c --- /dev/null +++ b/Components/mt/revision_info.h @@ -0,0 +1 @@ +#define CODE_REVISION_NUMBER 20211115 \ No newline at end of file diff --git a/Components/stack/af/AF.c b/Components/stack/af/AF.c index c6183b6..dbcda1e 100644 --- a/Components/stack/af/AF.c +++ b/Components/stack/af/AF.c @@ -372,10 +372,18 @@ void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress, uint16 Src #if !defined ( APS_NO_GROUPS ) // Find the first endpoint for this group grpEp = aps_FindGroupForEndpoint( aff->GroupID, APS_GROUPS_FIND_FIRST ); - if ( grpEp == APS_GROUPS_EP_NOT_FOUND ) - return; // No endpoint found - - epDesc = afFindEndPointDesc( grpEp ); + if ( grpEp == APS_GROUPS_EP_NOT_FOUND ) { + // No endpoint found, default to endpoint 1. + // In the original source code there is a return here. + // This prevent the messags from being forwarded. + // For our use-case we want to capture all messages. + // Even if the coordinator is not in the group. + epDesc = afFindEndPointDesc( 1 ); + } + else { + epDesc = afFindEndPointDesc( grpEp ); + } + if ( epDesc == NULL ) return; // Endpoint descriptor not found @@ -392,6 +400,12 @@ void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress, uint16 Src epDesc = pList->epDesc; } } + else if ( aff->DstEndPoint == 10 || aff->DstEndPoint == 11 ) { + if ( (epDesc = afFindEndPointDesc( 1 )) ) + { + pList = afFindEndPointDescList( epDesc->endPoint ); + } + } else if ( (epDesc = afFindEndPointDesc( aff->DstEndPoint )) ) { pList = afFindEndPointDescList( epDesc->endPoint ); @@ -422,7 +436,9 @@ void afIncomingData( aps_FrameFormat_t *aff, zAddrType_t *SrcAddress, uint16 Src // if the Wildcard ProfileID is received the message should not be sent to ZDO endpoint if ( (aff->ProfileID == epProfileID) || ((epDesc->endPoint == ZDO_EP) && (aff->ProfileID == ZDO_PROFILE_ID)) || - ((epDesc->endPoint != ZDO_EP) && ( aff->ProfileID == ZDO_WILDCARD_PROFILE_ID )) ) + ((epDesc->endPoint != ZDO_EP) && ( aff->ProfileID == ZDO_WILDCARD_PROFILE_ID )) || + // Forward messages to endpoint even with profileID mismatches + ((aff->ProfileID >= 0x100) && (aff->ProfileID <= 0xFC01)) ) { // Save original endpoint uint8 endpoint = aff->DstEndPoint; diff --git a/Components/stack/zdo/ZDApp.c b/Components/stack/zdo/ZDApp.c index 242be04..cfad5e9 100644 --- a/Components/stack/zdo/ZDApp.c +++ b/Components/stack/zdo/ZDApp.c @@ -3148,6 +3148,14 @@ void ZDO_NetworkStatusCB( uint16 nwkDstAddr, uint8 statusCode, uint16 dstAddr ) // Routing error for dstAddr, this is informational and a Route // Request should happen automatically. } + + if ( (nwkDstAddr == NLME_GetShortAddr()) + && (statusCode == NWKSTAT_SOURCE_ROUTE_FAILURE) ) + { + // Received a source route failure, remove route and rediscover. + RTG_RemoveRtgEntry( dstAddr, 0 ); + NLME_RouteDiscoveryRequest( dstAddr, 0, 30 ); + } } /****************************************************************************** @@ -3463,7 +3471,7 @@ void ZDApp_NVUpdate( void ) */ uint16 ZDApp_CoordStartPANIDConflictCB( uint16 panid ) { - return ( panid + 1 ); + return ( panid ); } /********************************************************************* diff --git a/Components/stack/zdo/ZDObject.c b/Components/stack/zdo/ZDObject.c index 24bc9c3..bb4d3cb 100644 --- a/Components/stack/zdo/ZDObject.c +++ b/Components/stack/zdo/ZDObject.c @@ -644,6 +644,20 @@ void ZDO_ProcessNodeDescReq( zdoIncomingMsg_t *inMsg ) if ( desc != NULL ) { + uint8 extAddr[Z_EXTADDR_LEN]; + // Respond with Xiaomi manufacturer code when ieeAddr is withing Xiaomi address space + // Otherwise some devices don't work + // https://github.com/Koenkk/zigbee2mqtt/issues/9274 + if (APSME_LookupExtAddr(inMsg->srcAddr.addr.shortAddr, extAddr) == TRUE && + ((extAddr[7] == 0x04 && extAddr[6] == 0xcf && extAddr[5] == 0x8c) || + (extAddr[7] == 0x54 && extAddr[6] == 0xef && extAddr[5] == 0x44))) { + desc->ManufacturerCode[0] = 0x5f; + desc->ManufacturerCode[1] = 0x11; + } else { + desc->ManufacturerCode[0] = 0x0; + desc->ManufacturerCode[1] = 0x0; + } + ZDP_NodeDescMsg( inMsg, aoi, desc ); } else diff --git a/Components/stack/zdo/ZDSecMgr.c b/Components/stack/zdo/ZDSecMgr.c index 2eacc11..0c8a07c 100644 --- a/Components/stack/zdo/ZDSecMgr.c +++ b/Components/stack/zdo/ZDSecMgr.c @@ -42,6 +42,8 @@ extern "C" { #endif +#define SLEEP(_count) do {volatile uint32 count = (_count); while (count--);} while (0) + /****************************************************************************** * INCLUDES */ @@ -58,6 +60,7 @@ extern "C" #include "APSMEDE.h" #include "ZDConfig.h" #include "ZDSecMgr.h" +#include "hal_led.h" /****************************************************************************** * CONSTANTS @@ -1114,14 +1117,22 @@ ZStatus_t ZDSecMgrDeviceJoin( ZDSecMgrDevice_t* device ) ZStatus_t status = ZSuccess; uint16 ami; + // Add sleeps, see https://github.com/Koenkk/zigbee2mqtt/issues/3177 + SLEEP(0x3E8); + // attempt to validate device that joined/rejoined without security if ( device->secure == FALSE ) { + SLEEP(0x3E8); status = ZDSecMgrDeviceValidate( device ); } + + SLEEP(0x3E8); if ( status == ZSuccess ) { + SLEEP(0x3E8); + // Add the device to the address manager ZDSecMgrAddrStore( device->nwkAddr, device->extAddr, &ami ); @@ -1129,18 +1140,25 @@ ZStatus_t ZDSecMgrDeviceJoin( ZDSecMgrDevice_t* device ) if ( ( device->devStatus & DEV_SEC_INIT_STATUS ) && ( device->secure == FALSE ) ) { + SLEEP(0x3E8); //send the nwk key data to the joining device status = ZDSecMgrSendNwkKey( device ); } + + SLEEP(0x3E8); if ( status != ZSuccess ) { + SLEEP(0x3E8); ZDSecMgrAddrClear( device->extAddr ); } } + + SLEEP(0x3E8); if ( status != ZSuccess ) { + SLEEP(0x3E8); // not allowed or transport key failed, remove the device ZDSecMgrDeviceRemove( device ); } @@ -1504,6 +1522,8 @@ uint8 ZDSecMgrPermitJoining( uint8 duration ) ZDSecMgrPermitJoiningEnabled = FALSE; } + HalLedSet(HAL_LED_3, ZDSecMgrPermitJoiningEnabled ? HAL_LED_MODE_ON : HAL_LED_MODE_OFF); + accept = TRUE; return accept; @@ -1522,6 +1542,7 @@ void ZDSecMgrPermitJoiningTimeout( void ) { if ( ZDSecMgrPermitJoiningTimed == TRUE ) { + HalLedSet(HAL_LED_3, HAL_LED_MODE_OFF); ZDSecMgrPermitJoiningEnabled = FALSE; ZDSecMgrPermitJoiningTimed = FALSE; } diff --git a/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c b/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c index 7c6c77e..8265ff1 100644 --- a/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c +++ b/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c @@ -144,8 +144,17 @@ void InitBoard( uint8 level ) #if defined CC2531ZNP znpCfg1 = ZNP_CFG1_UART; +#elif defined FIRMWARE_CC2530_CC2591 || defined(FIRMWARE_CC2530_CC2592) + znpCfg1 = ZNP_CFG1_UART; + znpCfg0 = ZNP_CFG0_32K_OSC; #elif defined CC2530_MK + + #if defined FIRMWARE_CC2530 + znpCfg1 = ZNP_CFG1_UART; + #else znpCfg1 = ZNP_CFG1_SPI; + #endif + znpCfg0 = ZNP_CFG0_32K_OSC; #else znpCfg1 = P2_0; diff --git a/Projects/zstack/ZMain/TI2530ZNP/OnBoard.h b/Projects/zstack/ZMain/TI2530ZNP/OnBoard.h index 9d035de..c850a66 100644 --- a/Projects/zstack/ZMain/TI2530ZNP/OnBoard.h +++ b/Projects/zstack/ZMain/TI2530ZNP/OnBoard.h @@ -185,8 +185,8 @@ extern uint8 znpCfg1; #endif // SOC defines the ideal sizes in the individual _hal_uart_dma/isr.c modules. #define HAL_UART_FLOW_THRESHOLD 0 -#define HAL_UART_RX_BUF_SIZE 0 -#define HAL_UART_TX_BUF_SIZE 0 +#define HAL_UART_RX_BUF_SIZE 1024 +#define HAL_UART_TX_BUF_SIZE 1024 #define HAL_UART_IDLE_TIMEOUT 0 // Restart system from absolute beginning diff --git a/Projects/zstack/ZNP/CC253x/Source/preinclude.h b/Projects/zstack/ZNP/CC253x/Source/preinclude.h new file mode 100644 index 0000000..356bce2 --- /dev/null +++ b/Projects/zstack/ZNP/CC253x/Source/preinclude.h @@ -0,0 +1,126 @@ +// Shared accross all firmwares +#define ASSERT_RESET + +#if defined FIRMWARE_SBL + #define MAKE_CRC_SHDW +#else + #define FAKE_CRC_SHDW +#endif + +#define TC_LINKKEY_JOIN +#define SECURE 1 +#define INCLUDE_REVISION_INFORMATION + +// Save memory +#undef APS_MAX_GROUPS +#define APS_MAX_GROUPS 1 +#undef NWK_MAX_BINDING_ENTRIES +#define NWK_MAX_BINDING_ENTRIES 1 + +/** + * Disabling MULTICAST is required in order for proper group support. + * If MULTICAST is not disabled, the group adress is not included in the APS header + */ +#define MULTICAST_ENABLED FALSE + +/** + * Reduce BCAST_DELIVERY_TIME and increase MAX_BCAST time. + * BCAST_DELIVERY_TIME is the length of time a broadcast message is kept in the broadcast table + * MAX_BCAST is the max number of messages that are in the broadcast table + * If e.g. BCAST_DELIVERY_TIME = 1 second and MAX_BCAST = 10; 10 broadcast messages per second can be send. + * + * Zigbee2mqtt has a fixed delay of 170ms between each command. + * Therefore a BCAST_DELIVERY_TIME = 20 (= 2 seconds) and MAX_BCAST = 12 allows us to send + * 2 / 12 = 1 group command per 166ms, which is just below the zigbee2mqtt delay. + * Therefore the broadcast table will never get full. + */ +#define BCAST_DELIVERY_TIME 20 +#undef MAX_BCAST // avoids incompatible redefinition of macro warning +#define MAX_BCAST 12 + +// See swra635.pdf +#define HAL_LCD FALSE +#define HAL_ADC FALSE + +/** + * Enable MTO routing/source routing + * Source routing could have issues: https://github.com/Koenkk/zigbee2mqtt/issues/1408 + */ +#define CONCENTRATOR_ENABLE TRUE +#define CONCENTRATOR_DISCOVERY_TIME 60 + +#if defined SOURCE_ROUTING + #define CONCENTRATOR_ROUTE_CACHE TRUE + #define MAX_RTG_SRC_ENTRIES 40 + #undef MAX_RTG_ENTRIES + #define MAX_RTG_ENTRIES 40 + #define MAX_NEIGHBOR_ENTRIES 16 + #define SRC_RTG_EXPIRY_TIME 0 +#else + #define CONCENTRATOR_ROUTE_CACHE FALSE + #define MAX_RTG_SRC_ENTRIES 1 // Source table is not used, reduce to minimal size + #undef MAX_RTG_ENTRIES + #define MAX_RTG_ENTRIES 30 + #define MAX_NEIGHBOR_ENTRIES 12 +#endif + +// CC2531 +#if defined FIRMWARE_CC2531 + #define CC2531ZNP + #if defined SOURCE_ROUTING + #define NWK_MAX_DEVICE_LIST 5 + #define MAXMEMHEAP 3307 + #else + #define NWK_MAX_DEVICE_LIST 20 + #define MAXMEMHEAP 3283 + #endif + +// CC2530 +#elif defined FIRMWARE_CC2530 + #define ENABLE_MT_SYS_RESET_SHUTDOWN + #define ZTOOL_P1 + #define CC2530_MK + + #if defined SOURCE_ROUTING + #define HAL_UART_DMA_RX_MAX 128 + #define NWK_MAX_DEVICE_LIST 5 + #define MAXMEMHEAP 3189 + #else + #define HAL_UART_DMA_RX_MAX 220 + #define NWK_MAX_DEVICE_LIST 16 + #define MAXMEMHEAP 2909 + #endif + +// CC2530 + CC2591 +#elif defined FIRMWARE_CC2530_CC2591 + #define ENABLE_MT_SYS_RESET_SHUTDOWN + #define ZTOOL_P1 + #define HAL_PA_LNA + + #if defined SOURCE_ROUTING + #define HAL_UART_DMA_RX_MAX 128 + #define NWK_MAX_DEVICE_LIST 5 + #define MAXMEMHEAP 3187 + #else + #define HAL_UART_DMA_RX_MAX 220 + #define NWK_MAX_DEVICE_LIST 16 + #define MAXMEMHEAP 2907 + #endif + +// CC2530 + CC2592 +#elif defined FIRMWARE_CC2530_CC2592 + #define ENABLE_MT_SYS_RESET_SHUTDOWN + #define ZTOOL_P1 + #define HAL_PA_LNA_CC2592 + + #if defined SOURCE_ROUTING + #define HAL_UART_DMA_RX_MAX 128 + #define NWK_MAX_DEVICE_LIST 5 + #define MAXMEMHEAP 3187 + #else + #define HAL_UART_DMA_RX_MAX 220 + #define NWK_MAX_DEVICE_LIST 16 + #define MAXMEMHEAP 2907 + #endif + +#endif diff --git a/Projects/zstack/ZNP/Source/znp.cfg b/Projects/zstack/ZNP/Source/znp.cfg index 7e524a9..d5b88a3 100644 --- a/Projects/zstack/ZNP/Source/znp.cfg +++ b/Projects/zstack/ZNP/Source/znp.cfg @@ -101,4 +101,6 @@ -DMT_ZDO_EXTENSIONS /* MT_APP interface - useful when ZAP defines ZAP_ZNP_MT for MT_SYS_APP_MSG pass-through. */ --DMT_APP_FUNC \ No newline at end of file +-DMT_APP_FUNC + +--preinclude=preinclude.h \ No newline at end of file diff --git a/Projects/zstack/ZNP/Source/znp_app.c b/Projects/zstack/ZNP/Source/znp_app.c index 470ff12..e42ac65 100644 --- a/Projects/zstack/ZNP/Source/znp_app.c +++ b/Projects/zstack/ZNP/Source/znp_app.c @@ -390,12 +390,23 @@ static void npInit(void) halUARTCfg_t uartConfig; uartConfig.configured = TRUE; + +#if defined(FIRMWARE_CC2530) || defined(FIRMWARE_CC2530_CC2591) || defined(FIRMWARE_CC2530_CC2592) + uartConfig.baudRate = HAL_UART_BR_115200; +#else uartConfig.baudRate = ZNP_UART_BAUD; -#ifdef ZNP_ALT +#endif + +#if defined(FIRMWARE_CC2530) || defined(FIRMWARE_CC2530_CC2591) || defined(FIRMWARE_CC2530_CC2592) uartConfig.flowControl = FALSE; #else + #ifdef ZNP_ALT + uartConfig.flowControl = FALSE; + #else uartConfig.flowControl = TRUE; + #endif #endif + uartConfig.flowControlThreshold = HAL_UART_FLOW_THRESHOLD; uartConfig.rx.maxBufSize = HAL_UART_RX_BUF_SIZE; uartConfig.tx.maxBufSize = HAL_UART_TX_BUF_SIZE; @@ -404,6 +415,15 @@ static void npInit(void) uartConfig.callBackFunc = npUartCback; HalUARTOpen(HAL_UART_PORT, &uartConfig); MT_UartRegisterTaskID(znpTaskId); + +#if defined FIRMWARE_CC2530_CC2591 || defined(FIRMWARE_CC2530_CC2592) + //Add TX Setting + #if defined HAL_PA_LNA || defined HAL_PA_LNA_CC2592 + ZMacSetTransmitPower(TX_PWR_PLUS_19); + #else + ZMacSetTransmitPower(TX_PWR_PLUS_4); + #endif +#endif } else { -- 2.18.0.windows.1