-
Notifications
You must be signed in to change notification settings - Fork 641
/
firmware.patch
335 lines (323 loc) · 10.8 KB
/
firmware.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
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/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/revision_info.h b/Components/mt/revision_info.h
new file mode 100644
index 0000000..abe513b
--- /dev/null
+++ b/Components/mt/revision_info.h
@@ -0,0 +1 @@
+#define CODE_REVISION_NUMBER 20190619
diff --git a/Components/stack/af/AF.c b/Components/stack/af/AF.c
index c6183b6..2b885b6 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 );
diff --git a/Components/stack/zdo/ZDApp.c b/Components/stack/zdo/ZDApp.c
index 242be04..cca4781 100644
--- a/Components/stack/zdo/ZDApp.c
+++ b/Components/stack/zdo/ZDApp.c
@@ -3463,7 +3463,7 @@ void ZDApp_NVUpdate( void )
*/
uint16 ZDApp_CoordStartPANIDConflictCB( uint16 panid )
{
- return ( panid + 1 );
+ return ( panid );
}
/*********************************************************************
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/ZNP/CC253x/Source/preinclude.h b/Projects/zstack/ZNP/CC253x/Source/preinclude.h
new file mode 100644
index 0000000..5ab4fd5
--- /dev/null
+++ b/Projects/zstack/ZNP/CC253x/Source/preinclude.h
@@ -0,0 +1,123 @@
+// 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 3309
+ #else
+ #define NWK_MAX_DEVICE_LIST 20
+ #define MAXMEMHEAP 3285
+ #endif
+
+// CC2530
+#elif defined FIRMWARE_CC2530
+ #define HAL_UART_DMA_RX_MAX 128
+ #define ENABLE_MT_SYS_RESET_SHUTDOWN
+ #define ZTOOL_P1
+ #define CC2530_MK
+
+ #if defined SOURCE_ROUTING
+ #define NWK_MAX_DEVICE_LIST 5
+ #define MAXMEMHEAP 3189
+ #else
+ #define NWK_MAX_DEVICE_LIST 16
+ #define MAXMEMHEAP 3277
+ #endif
+
+// CC2530 + CC2591
+#elif defined FIRMWARE_CC2530_CC2591
+ #define ENABLE_MT_SYS_RESET_SHUTDOWN
+ #define ZTOOL_P1
+ #define HAL_UART_DMA_RX_MAX 128
+ #define HAL_PA_LNA
+
+ #if defined SOURCE_ROUTING
+ #define NWK_MAX_DEVICE_LIST 5
+ #define MAXMEMHEAP 3187
+ #else
+ #define NWK_MAX_DEVICE_LIST 16
+ #define MAXMEMHEAP 3275
+ #endif
+
+// CC2530 + CC2592
+#elif defined FIRMWARE_CC2530_CC2592
+ #define ENABLE_MT_SYS_RESET_SHUTDOWN
+ #define ZTOOL_P1
+ #define HAL_UART_DMA_RX_MAX 128
+ #define HAL_PA_LNA_CC2592
+
+ #if defined SOURCE_ROUTING
+ #define NWK_MAX_DEVICE_LIST 5
+ #define MAXMEMHEAP 3187
+ #else
+ #define NWK_MAX_DEVICE_LIST 16
+ #define MAXMEMHEAP 3275
+ #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
{