-
Notifications
You must be signed in to change notification settings - Fork 640
/
firmware_CC2531_CC2530.patch
334 lines (319 loc) · 11.8 KB
/
firmware_CC2531_CC2530.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
diff --git a/Components/hal/target/CC2530ZNP/hal_board_cfg.h b/Components/hal/target/CC2530ZNP/hal_board_cfg.h
index 4af8164..4be21ca 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 aa57766..f80e1e5 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_VERSION.c b/Components/mt/MT_VERSION.c
index f374554..720a8fe 100644
--- a/Components/mt/MT_VERSION.c
+++ b/Components/mt/MT_VERSION.c
@@ -21,7 +21,7 @@
its documentation for any purpose.
YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
- PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+ PROVIDED �AS IS� WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
@@ -69,7 +69,7 @@
*****************************************************************************/
const uint8 MTVersionString[] = {
2, /* Transport protocol revision */
- 0, /* Product ID */
+ 2, /* Product ID */
2, /* Software major release number */
7, /* Software minor release number */
2, /* Software maintenance release number */
diff --git a/Components/mt/revision_info.h b/Components/mt/revision_info.h
new file mode 100644
index 0000000..34cd616
--- /dev/null
+++ b/Components/mt/revision_info.h
@@ -0,0 +1 @@
+#define CODE_REVISION_NUMBER 20190523
\ No newline at end of file
diff --git a/Components/stack/af/AF.c b/Components/stack/af/AF.c
index 5e54237..988416f 100644
--- a/Components/stack/af/AF.c
+++ b/Components/stack/af/AF.c
@@ -405,10 +405,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
+ 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 );
+ }
- epDesc = afFindEndPointDesc( grpEp );
if ( epDesc == NULL )
return; // Endpoint descriptor not found
@@ -425,6 +433,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/sys/ZGlobals.c b/Components/stack/sys/ZGlobals.c
index d170283..292659a 100644
--- a/Components/stack/sys/ZGlobals.c
+++ b/Components/stack/sys/ZGlobals.c
@@ -212,7 +212,11 @@ uint8 zgEndDeviceConfiguration = END_DEV_CONFIGURATION;
//
// NOTICE: Before enabling Child Aging make sure to review all the related
// definitions in this file, especially zgNwkParentInformation.
-uint8 zgChildAgingEnable = TRUE;
+
+/**
+ * Disable child aging, otherwise Xiaomi devices are being kicked off the network.
+ */
+uint8 zgChildAgingEnable = FALSE;
//========== TouchLink NWK configuration ===============
// Values used by Router when starts a network as initiator
diff --git a/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c b/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c
index eebe038..dcc2618 100644
--- a/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c
+++ b/Projects/zstack/ZMain/TI2530ZNP/OnBoard.c
@@ -149,8 +149,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/Source/preinclude.h b/Projects/zstack/ZNP/Source/preinclude.h
new file mode 100644
index 0000000..2f5a0c6
--- /dev/null
+++ b/Projects/zstack/ZNP/Source/preinclude.h
@@ -0,0 +1,95 @@
+#if defined FIRMWARE_SBL
+ #define MAKE_CRC_SHDW
+#else
+ #define FAKE_CRC_SHDW
+#endif
+
+// Shared accross all firmwares
+#define TC_LINKKEY_JOIN
+#define ASSERT_RESET
+#define INCLUDE_REVISION_INFORMATION
+#define SECURE 1
+#define BDB_FINDING_BINDING_CAPABILITY_ENABLED 0
+#define ZDSECMGR_TC_DEVICE_MAX 40
+#define DISABLE_GREENPOWER_BASIC_PROXY
+#define MT_SYS_KEY_MANAGEMENT 1
+#define TP2_LEGACY_ZC
+
+// Increase NWK_LINK_STATUS_PERIOD to reduce amount of messages on the network
+#define NWK_LINK_STATUS_PERIOD 60
+
+// Save memory
+#undef NWK_MAX_BINDING_ENTRIES
+#define NWK_MAX_BINDING_ENTRIES 1
+#undef APS_MAX_GROUPS
+#define APS_MAX_GROUPS 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
+
+// Save memory, see swra635.pdf
+#define HAL_LCD FALSE
+#define HAL_ADC 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
+
+/**
+ * Enable MTO routing, but disable source routing.
+ * https://github.com/Koenkk/zigbee2mqtt/issues/1408
+ */
+#define CONCENTRATOR_ENABLE TRUE
+#define CONCENTRATOR_ROUTE_CACHE FALSE
+#define CONCENTRATOR_DISCOVERY_TIME 120
+#define MAX_RTG_SRC_ENTRIES 1 // Source table is not used, reduce to minimal size
+#undef MAX_RTG_ENTRIES
+#define MAX_RTG_ENTRIES 40
+#define MAX_NEIGHBOR_ENTRIES 8
+
+// CC2531
+#if defined FIRMWARE_CC2531
+ #define NWK_MAX_DEVICE_LIST 15
+ #define CC2531ZNP
+ #define MAXMEMHEAP 3203
+
+// CC2530
+#elif defined FIRMWARE_CC2530
+ #define HAL_UART_DMA_RX_MAX 128
+ #define ENABLE_MT_SYS_RESET_SHUTDOWN
+ #define ZTOOL_P1
+ #define CC2530_MK
+ #define NWK_MAX_DEVICE_LIST 10
+ #define MAXMEMHEAP 3225
+
+// 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
+ #define NWK_MAX_DEVICE_LIST 10
+ #define MAXMEMHEAP 3223
+
+// 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
+ #define NWK_MAX_DEVICE_LIST 10
+ #define MAXMEMHEAP 3223
+
+#endif
\ No newline at end of file
diff --git a/Projects/zstack/ZNP/Source/znp.cfg b/Projects/zstack/ZNP/Source/znp.cfg
index 2b8d56d..adb5e42 100644
--- a/Projects/zstack/ZNP/Source/znp.cfg
+++ b/Projects/zstack/ZNP/Source/znp.cfg
@@ -107,3 +107,4 @@
-DMT_APP_FUNC
-DMT_APP_CNF_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 31b115e..e8bd3ab 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;
@@ -405,11 +416,14 @@ static void npInit(void)
HalUARTOpen(HAL_UART_PORT, &uartConfig);
MT_UartRegisterTaskID(znpTaskId);
-#ifdef HAL_PA_LNA_CC2592
- ZMacSetTransmitPower(TX_PWR_PLUS_19);
-#else
- ZMacSetTransmitPower(TX_PWR_PLUS_4);
-#endif
+#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
{