Trident IoT Z-Wave SDK
Loading...
Searching...
No Matches
ZW_SerialAPI.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Silicon Laboratories Inc. <https://www.silabs.com/>
2// SPDX-FileCopyrightText: 2025 Trident IoT, LLC <https://www.tridentiot.com>
3//
4// SPDX-License-Identifier: BSD-3-Clause
5
10#ifndef _ZW_SERIALAPI_H_
11#define _ZW_SERIALAPI_H_
12
19
20#define SOF 0x01
21#define ACK 0x06
22#define NAK 0x15
23#define CAN 0x18
24
27#define REQUEST 0x00
28#define RESPONSE 0x01
30
34#define GET_INIT_DATA_FLAG_SLAVE_API 0x01
35#define GET_INIT_DATA_FLAG_TIMER_SUPPORT 0x02
36#define GET_INIT_DATA_FLAG_CONTROLLER_STATUS 0x04 /* Obsolete. USE next */
37#define GET_INIT_DATA_FLAG_SECONDARY_CTRL 0x04
38#define GET_INIT_DATA_FLAG_IS_SUC 0x08
40
54
60#define FUNC_ID_SERIAL_API_GET_INIT_DATA 0x02
61#define FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION 0x03
62#define FUNC_ID_APPLICATION_COMMAND_HANDLER 0x04
63#define FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES 0x05
64
65/* SERIAL API ver 4 added - START */
66#define FUNC_ID_SERIAL_API_SET_TIMEOUTS 0x06
67#define FUNC_ID_SERIAL_API_GET_CAPABILITIES 0x07
68#define FUNC_ID_SERIAL_API_SOFT_RESET 0x08
69/* SERIAL API ver 4 added - END */
70
71#define FUNC_ID_ZW_GET_PROTOCOL_VERSION 0x09
72
73/* Function ID for startup message */
74#define FUNC_ID_SERIAL_API_STARTED 0x0A
75#define FUNC_ID_SERIAL_API_SETUP 0x0B
76
77#define FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION_CMD_CLASSES 0x0C
78
79#define FUNC_ID_ZW_SEND_DATA_EX 0x0E
80#define FUNC_ID_ZW_SEND_DATA_MULTI_EX 0x0F
81
82#define FUNC_ID_ZW_SET_RF_RECEIVE_MODE 0x10
83#define FUNC_ID_ZW_SET_SLEEP_MODE 0x11
84#define FUNC_ID_ZW_SEND_NODE_INFORMATION 0x12
85#define FUNC_ID_ZW_SEND_DATA 0x13
86#define FUNC_ID_ZW_SEND_DATA_MULTI 0x14
87#define FUNC_ID_ZW_GET_VERSION 0x15
88
89/* SERIAL API ver 4 added - START */
90#define FUNC_ID_ZW_SEND_DATA_ABORT 0x16
91// FUNC_ID_ZW_RF_POWER_LEVEL_SET is no longer supported
92#define FUNC_ID_ZW_RF_POWER_LEVEL_SET 0x17
93#define FUNC_ID_ZW_SEND_DATA_META 0x18
94/* SERIAL API ver 4 added - END */
95
96#define FUNC_ID_ZW_RESERVED_SD 0x19
97#define FUNC_ID_ZW_RESERVED_SDM 0x1A
98#define FUNC_ID_ZW_RESERVED_SRI 0x1B
99
100#define FUNC_ID_ZW_SET_ROUTING_INFO 0x1B
101
102#define FUNC_ID_ZW_GET_RANDOM 0x1C
103#define FUNC_ID_ZW_RANDOM 0x1D
104#define FUNC_ID_ZW_RF_POWER_LEVEL_REDISCOVERY_SET 0x1E
105
106#define FUNC_ID_MEMORY_GET_ID 0x20
107#define FUNC_ID_MEMORY_GET_BYTE 0x21
108#define FUNC_ID_MEMORY_PUT_BYTE 0x22
109#define FUNC_ID_MEMORY_GET_BUFFER 0x23
110#define FUNC_ID_MEMORY_PUT_BUFFER 0x24
111/* Unimplemented - START */
112#define FUNC_ID_SERIAL_API_GET_APPL_HOST_MEMORY_OFFSET 0x25
113#define FUNC_ID_DEBUG_OUTPUT 0x26
114/* Unimplemented - END */
115
116#define FUNC_ID_AUTO_PROGRAMMING 0x27
117
118#define FUNC_ID_NVR_GET_VALUE 0x28
119
120#define FUNC_ID_NVM_GET_ID 0x29
121#define FUNC_ID_NVM_EXT_READ_LONG_BUFFER 0x2A
122#define FUNC_ID_NVM_EXT_WRITE_LONG_BUFFER 0x2B
123#define FUNC_ID_NVM_EXT_READ_LONG_BYTE 0x2C
124#define FUNC_ID_NVM_EXT_WRITE_LONG_BYTE 0x2D
125#define FUNC_ID_NVM_BACKUP_RESTORE 0x2E
126
127#define FUNC_ID_ZW_NVR_GET_APP_VALUE 0x2F
128
129#define FUNC_ID_CLOCK_SET 0x30
130#define FUNC_ID_CLOCK_GET 0x31
131#define FUNC_ID_CLOCK_CMP 0x32
132#define FUNC_ID_RTC_TIMER_CREATE 0x33
133#define FUNC_ID_RTC_TIMER_READ 0x34
134#define FUNC_ID_RTC_TIMER_DELETE 0x35
135#define FUNC_ID_RTC_TIMER_CALL 0x36
136
137#define FUNC_ID_CLEAR_TX_TIMERS 0x37
138#define FUNC_ID_GET_TX_TIMERS 0x38
139
140#define FUNC_ID_ZW_CLEAR_NETWORK_STATS 0x39
141#define FUNC_ID_ZW_GET_NETWORK_STATS 0x3A
142#define FUNC_ID_ZW_GET_BACKGROUND_RSSI 0x3B
143#define FUNC_ID_ZW_SET_LISTEN_BEFORE_TALK_THRESHOLD 0x3C
144#define FUNC_ID_NVM_EXT_BACKUP_RESTORE 0x3D
145
149#define FUNC_ID_FIRMWARE_UPDATE 0x3E
150
151#define FUNC_ID_ZW_REMOVE_NODE_ID_FROM_NETWORK 0x3F
152
153#define FUNC_ID_ZW_SET_LEARN_NODE_STATE 0x40
154#define FUNC_ID_ZW_GET_NODE_PROTOCOL_INFO 0x41
155#define FUNC_ID_ZW_SET_DEFAULT 0x42
156#define FUNC_ID_ZW_NEW_CONTROLLER 0x43
157// <Obsoleted>
158#define FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE 0x44
159#define FUNC_ID_ZW_REPLICATION_SEND_DATA 0x45
160// </Obsoleted>
161#define FUNC_ID_ZW_ASSIGN_RETURN_ROUTE 0x46
162#define FUNC_ID_ZW_DELETE_RETURN_ROUTE 0x47
163#define FUNC_ID_ZW_REQUEST_NODE_NEIGHBOR_UPDATE 0x48
164#define FUNC_ID_ZW_REQUEST_NODETYPE_NEIGHBOR_UPDATE 0x68
165#define FUNC_ID_ZW_APPLICATION_UPDATE 0x49
166
168#define FUNC_ID_ZW_APPLICATION_CONTROLLER_UPDATE 0x49
169
170#define FUNC_ID_ZW_ADD_NODE_TO_NETWORK 0x4A
171#define FUNC_ID_ZW_REMOVE_NODE_FROM_NETWORK 0x4B
172#define FUNC_ID_ZW_CREATE_NEW_PRIMARY 0x4C
173#define FUNC_ID_ZW_CONTROLLER_CHANGE 0x4D
174
175#define FUNC_ID_ZW_RESERVED_FN 0x4E
176
177/* Devkit 6.6x */
178#define FUNC_ID_ZW_ASSIGN_PRIORITY_RETURN_ROUTE 0x4F
179
180/* Slave only */
181#define FUNC_ID_ZW_SET_LEARN_MODE 0x50
182/* Slave only end */
183
184#define FUNC_ID_ZW_ASSIGN_SUC_RETURN_ROUTE 0x51
185#define FUNC_ID_ZW_ENABLE_SUC 0x52
186#define FUNC_ID_ZW_REQUEST_NETWORK_UPDATE 0x53
187#define FUNC_ID_ZW_SET_SUC_NODE_ID 0x54
188#define FUNC_ID_ZW_DELETE_SUC_RETURN_ROUTE 0x55
189#define FUNC_ID_ZW_GET_SUC_NODE_ID 0x56
190#define FUNC_ID_ZW_SEND_SUC_ID 0x57
191
192/* Devkit 6.6x */
193#define FUNC_ID_ZW_ASSIGN_PRIORITY_SUC_RETURN_ROUTE 0x58
194
195/* Obsolete - Not available in devkit 6.6x+ */
196#define FUNC_ID_ZW_REDISCOVERY_NEEDED 0x59
197
198#define FUNC_ID_ZW_REQUEST_NODE_NEIGHBOR_UPDATE_OPTION 0x5A
199
200/* Slave only */
201#define FUNC_ID_ZW_SUPPORT9600_ONLY 0x5B
202/* Slave only end */
203
204/* Enhanced/Routing Slave only */
205#define FUNC_ID_ZW_REQUEST_NEW_ROUTE_DESTINATIONS 0x5C
206#define FUNC_ID_ZW_IS_NODE_WITHIN_DIRECT_RANGE 0x5D
207/* Enhanced/Routing Slave only end */
208
209#define FUNC_ID_ZW_EXPLORE_REQUEST_INCLUSION 0x5E
210#define FUNC_ID_ZW_EXPLORE_REQUEST_EXCLUSION 0x5F
211
212#define FUNC_ID_ZW_REQUEST_NODE_INFO 0x60
213#define FUNC_ID_ZW_REMOVE_FAILED_NODE_ID 0x61
214#define FUNC_ID_ZW_IS_FAILED_NODE_ID 0x62
215#define FUNC_ID_ZW_REPLACE_FAILED_NODE 0x63
216
217/* In 6.0x the function id was wrong so we need to support this wrong function id as well in the future */
218#define FUNC_ID_ZW_SET_ROUTING_MAX_6_00 0x65
219/* */
220
221#define FUNC_ID_ZW_IS_PRIMARY_CTRL 0x66
222
223#define FUNC_ID_ZW_AES_ECB 0x67
224
225#define FUNC_ID_TIMER_START 0x70
226#define FUNC_ID_TIMER_RESTART 0x71
227#define FUNC_ID_TIMER_CANCEL 0x72
228#define FUNC_ID_TIMER_CALL 0x73
229
230/* Firmware Update API */
231#define FUNC_ID_ZW_FIRMWARE_UPDATE_NVM 0x78
232
233/* Installer API */
234#define FUNC_ID_GET_ROUTING_TABLE_LINE 0x80
235#define FUNC_ID_GET_TX_COUNTER 0x81
236#define FUNC_ID_RESET_TX_COUNTER 0x82
237#define FUNC_ID_STORE_NODEINFO 0x83
238#define FUNC_ID_STORE_HOMEID 0x84
239/* Installer API only end */
240
241#define FUNC_ID_LOCK_ROUTE_RESPONSE 0x90
242#ifdef ZW_ROUTING_DEMO
243/* Max hops in route */
244#define TRANSMIT_ROUTED_ATTEMPT 0x08
245#define FUNC_ID_ZW_SEND_DATA_ROUTE_DEMO 0x91
246#endif
247
248/* ZW_SetPriorityRoute/ZW_GetPriorityRoute replaces ZW_SetLastWorkingRoute/ZW_GetLastWorkingRoute */
249#define FUNC_ID_ZW_GET_PRIORITY_ROUTE 0x92
250#define FUNC_ID_ZW_SET_PRIORITY_ROUTE 0x93
251/* NOTE: Obsoleted - BEGIN */
252#define FUNC_ID_ZW_GET_LAST_WORKING_ROUTE 0x92
253#define FUNC_ID_ZW_SET_LAST_WORKING_ROUTE 0x93
254/* NOTE: Obsoleted - END */
255
256#define FUNC_ID_SERIAL_API_TEST 0x95
257
258#define FUNC_ID_SERIAL_API_EXT 0x98
259
260/* DevKit 6.7x introduced - slave_enhanced_232 and slave_routing only */
261#define FUNC_ID_ZW_SECURITY_SETUP 0x9C
262#define FUNC_ID_APPLICATION_SECURITY_EVENT 0x9D
263
264/* ZW_CONTROLLER_BRIDGE only START */
265#define FUNC_ID_SERIAL_API_APPL_SLAVE_NODE_INFORMATION 0xA0
266
270#define FUNC_ID_APPLICATION_SLAVE_COMMAND_HANDLER 0xA1
271#define FUNC_ID_ZW_SEND_SLAVE_NODE_INFORMATION 0xA2
272#define FUNC_ID_ZW_SEND_SLAVE_DATA 0xA3
273#define FUNC_ID_ZW_SET_SLAVE_LEARN_MODE 0xA4
274#define FUNC_ID_ZW_GET_VIRTUAL_NODES 0xA5
275#define FUNC_ID_ZW_IS_VIRTUAL_NODE 0xA6
276#define FUNC_ID_ZW_RESERVED_SSD 0xA7
277/* DevKit 4.5x/6.0x added - obsoletes FUNC_ID_APPLICATION_SLAVE_COMMAND_HANDLER and */
278/* FUNC_ID_APPLICATION_COMMAND_HANDLER for the Controller Bridge applications as */
279/* this handles both cases - only for 4.5x/6.0x based Controller Bridge applications */
280#define FUNC_ID_APPLICATION_COMMAND_HANDLER_BRIDGE 0xA8
281/* DevKit 4.5x/6.0x added - Adds sourceNodeID to the parameter list */
282#define FUNC_ID_ZW_SEND_DATA_BRIDGE 0xA9
283/* Obsolete */
284#define FUNC_ID_ZW_SEND_DATA_META_BRIDGE 0xAA
285#define FUNC_ID_ZW_SEND_DATA_MULTI_BRIDGE 0xAB
286/* ZW_CONTROLLER_BRIDGE only END */
287
288#define FUNC_ID_PWR_SETSTOPMODE 0xB0 // ZW102 only
289#define FUNC_ID_PWR_CLK_PD 0xB1 // ZW102 only
290#define FUNC_ID_PWR_CLK_PUP 0xB2 // ZW102 only
291#define FUNC_ID_PWR_SELECT_CLK 0xB3 // ZW102 only
292#define FUNC_ID_ZW_SET_WUT_TIMEOUT 0xB4
293#define FUNC_ID_ZW_IS_WUT_KICKED 0xB5 // ZW201 only
294
295#define FUNC_ID_ZW_WATCHDOG_ENABLE 0xB6
296#define FUNC_ID_ZW_WATCHDOG_DISABLE 0xB7
297#define FUNC_ID_ZW_WATCHDOG_KICK 0xB8
299#define FUNC_ID_ZW_SET_EXT_INT_LEVEL 0xB9 // ZW201 only
300#define FUNC_ID_ZW_INT_EXT_LEVEL_SET 0xB9
301
302// FUNC_ID_ZW_RF_POWER_LEVEL_GET is no longer supported
303#define FUNC_ID_ZW_RF_POWER_LEVEL_GET 0xBA
304#define FUNC_ID_ZW_GET_NEIGHBOR_COUNT 0xBB
305#define FUNC_ID_ZW_ARE_NODES_NEIGHBOURS 0xBC
306
307#define FUNC_ID_ZW_TYPE_LIBRARY 0xBD
308#define FUNC_ID_ZW_SEND_TEST_FRAME 0xBE
309#define FUNC_ID_ZW_GET_PROTOCOL_STATUS 0xBF
310
311#define FUNC_ID_ZW_SET_PROMISCUOUS_MODE 0xD0
312/* SERIAL API ver 5 added - START */
313#define FUNC_ID_PROMISCUOUS_APPLICATION_COMMAND_HANDLER 0xD1
314/* SERIAL API ver 5 added - END */
315
316#define FUNC_ID_ZW_WATCHDOG_START 0xD2
317#define FUNC_ID_ZW_WATCHDOG_STOP 0xD3
318
319#define FUNC_ID_ZW_SET_ROUTING_MAX 0xD4
320/* Unimplemented - START */
321/* Obsoleted */
322#define FUNC_ID_ZW_GET_ROUTING_MAX 0xD5
323
324#define FUNC_ID_PM_STAY_AWAKE 0xD7
325#define FUNC_ID_PM_CANCEL 0xD8
326/* Unimplemented - END */
327
328/* Allocated for setting the maximum number of 128sec ticks inbetween SmartStart inclusion requests. */
329#define FUNC_ID_ZW_NETWORK_MANAGEMENT_SET_MAX_INCLUSION_REQUEST_INTERVALS 0xD6
330
331#define FUNC_ID_ZW_INITIATE_SHUTDOWN 0xD9
332
333#define FUNC_ID_SERIAL_API_GET_LR_NODES 0xDA
334
335#define FUNC_ID_GET_LR_CHANNEL 0xDB
336#define FUNC_ID_SET_LR_CHANNEL 0xDC
337
338#define FUNC_ID_ZW_SET_LR_VIRTUAL_IDS 0xDD
339
340#define FUNC_ID_GET_DCDC_CONFIG 0xDE
341#define FUNC_ID_SET_DCDC_CONFIG 0xDF
342
343/* Allocated for NUNIT test */
344#define FUNC_ID_ZW_NUNIT_CMD 0xE0 // DEPRECATED
345#define FUNC_ID_ZW_NUNIT_INIT 0xE1 // DEPRECATED
346#define FUNC_ID_ZW_NUNIT_LIST 0xE2 // DEPRECATED
347#define FUNC_ID_ZW_NUNIT_RUN 0xE3 // DEPRECATED
348#define FUNC_ID_ZW_NUNIT_END 0xE4 // DEPRECATED
349
350#define FUNC_ID_ENABLE_RADIO_PTI 0xE7
351#define FUNC_ID_GET_RADIO_PTI 0xE8
352
353#define FUNC_ID_SEND_NOP 0xE9 //Reserved. Command to be implemented in future.
354
356#define FUNC_ID_ZW_GET_MANUFACTURER_INFO 0xEA
357
358/* Allocated for Power Management */
359#define FUNC_ID_SERIAL_API_POWER_MANAGEMENT 0xEE
360#define FUNC_ID_SERIAL_API_READY 0xEF
361
362/* Allocated for proprietary serial API commands */
363#define FUNC_ID_PROPRIETARY_0 0xF0
364#define FUNC_ID_PROPRIETARY_1 0xF1
365#define FUNC_ID_PROPRIETARY_2 0xF2
366#define FUNC_ID_PROPRIETARY_3 0xF3
367#define FUNC_ID_PROPRIETARY_4 0xF4
368#define FUNC_ID_PROPRIETARY_5 0xF5
369#define FUNC_ID_PROPRIETARY_6 0xF6
370#define FUNC_ID_PROPRIETARY_7 0xF7
371#define FUNC_ID_PROPRIETARY_8 0xF8
372#define FUNC_ID_PROPRIETARY_9 0xF9
373#define FUNC_ID_PROPRIETARY_A 0xFA
374#define FUNC_ID_PROPRIETARY_B 0xFB
375#define FUNC_ID_PROPRIETARY_C 0xFC
376#define FUNC_ID_PROPRIETARY_D 0xFD
377#define FUNC_ID_PROPRIETARY_E 0xFE
378
379/* Illegal function ID */
380#define FUNC_ID_UNKNOWN 0xFF
382
390
393
394#endif /*_ZW_SERIALAPI_H_*/
FIRMWARE_UPDATE_NVM_T
Definition ZW_SerialAPI.h:45
nvm_backup_restore_addr_size_t
Definition ZW_SerialAPI.h:386
@ FIRMWARE_UPDATE_NVM_UPDATE_CRC16
Definition ZW_SerialAPI.h:49
@ FIRMWARE_UPDATE_NVM_INIT
Definition ZW_SerialAPI.h:46
@ FIRMWARE_UPDATE_NVM_IS_VALID_CRC16
Definition ZW_SerialAPI.h:50
@ FIRMWARE_UPDATE_NVM_UNKNOWN
Definition ZW_SerialAPI.h:52
@ FIRMWARE_UPDATE_NVM_GET_NEW_IMAGE
Definition ZW_SerialAPI.h:48
@ FIRMWARE_UPDATE_NVM_WRITE
Definition ZW_SerialAPI.h:51
@ FIRMWARE_UPDATE_NVM_SET_NEW_IMAGE
Definition ZW_SerialAPI.h:47
@ NVM_BACKUP_RESTORE_ADDR_SIZE
2 bytes for the legacy NVM backup & restore command
Definition ZW_SerialAPI.h:387
@ NVM_EXT_BACKUP_RESTORE_ADDR_SIZE
4 bytes for the extended NVM backup & restore command
Definition ZW_SerialAPI.h:388