@@ -185,4 +185,100 @@ void test_send_nop_to_node()
185
185
test_discard_timeout_ms ,
186
186
test_callback ,
187
187
test_user ));
188
- }
188
+ }
189
+
190
+ void test_zwave_command_class_list_pack_empty ()
191
+ {
192
+ zwave_node_info_t node_info = {.listening_protocol = 2 ,
193
+ .optional_protocol = 3 ,
194
+ .basic_device_class = 4 ,
195
+ .generic_device_class = 5 ,
196
+ .specific_device_class = 6 ,
197
+ .command_class_list_length = 0 ,
198
+ .command_class_list = {0 }};
199
+
200
+ uint8_t nif [ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH * 2 ] = {0 };
201
+ uint8_t nif_length = 0 ;
202
+
203
+ zwave_command_class_list_pack (& node_info , nif , & nif_length );
204
+ TEST_ASSERT_EQUAL (0 , nif_length );
205
+ zwave_command_class_list_unpack (& node_info , nif , nif_length );
206
+ TEST_ASSERT_EQUAL (0 , node_info .command_class_list_length );
207
+ }
208
+
209
+ void test_zwave_command_class_list_pack ()
210
+ {
211
+ zwave_node_info_t node_info = {.listening_protocol = 2 ,
212
+ .optional_protocol = 3 ,
213
+ .basic_device_class = 4 ,
214
+ .generic_device_class = 5 ,
215
+ .specific_device_class = 6 ,
216
+ .command_class_list_length = 3 ,
217
+ .command_class_list = {0x01 , 0xF0 , 0xFF }};
218
+
219
+ uint8_t nif [ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH ] = {0 };
220
+ uint8_t nif_length = 0 ;
221
+
222
+ zwave_command_class_list_pack (& node_info , nif , & nif_length );
223
+
224
+ TEST_ASSERT_EQUAL (node_info .command_class_list_length , nif_length );
225
+ TEST_ASSERT_EQUAL (node_info .command_class_list [0 ], nif [0 ]);
226
+ TEST_ASSERT_EQUAL (node_info .command_class_list [1 ], nif [1 ]);
227
+ TEST_ASSERT_EQUAL (node_info .command_class_list [2 ], nif [2 ]);
228
+ }
229
+
230
+ void test_zwave_command_class_list_pack_extended ()
231
+ {
232
+ zwave_node_info_t node_info = {
233
+ .listening_protocol = 2 ,
234
+ .optional_protocol = 3 ,
235
+ .basic_device_class = 4 ,
236
+ .generic_device_class = 5 ,
237
+ .specific_device_class = 6 ,
238
+ .command_class_list_length = 3 + 3 ,
239
+ .command_class_list = {0x20 , 0xEF , 0xF0 , 0xF100 , 0xF101 , 0xFFFF }
240
+ };
241
+
242
+ uint8_t nif [ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH * 2 ] = {0 };
243
+ uint8_t nif_length = 0 ;
244
+
245
+ zwave_command_class_list_pack (& node_info , nif , & nif_length );
246
+
247
+ TEST_ASSERT_EQUAL (3 + 3 * 2 , nif_length );
248
+
249
+ TEST_ASSERT_EQUAL (node_info .command_class_list [0 ], nif [0 ]);
250
+ TEST_ASSERT_EQUAL (node_info .command_class_list [1 ], nif [1 ]);
251
+ TEST_ASSERT_EQUAL (node_info .command_class_list [2 ], nif [2 ]);
252
+ TEST_ASSERT_EQUAL (node_info .command_class_list [3 ], (nif [3 ] << 8 ) | nif [4 ]);
253
+ TEST_ASSERT_EQUAL (node_info .command_class_list [4 ], (nif [5 ] << 8 ) | nif [6 ]);
254
+ TEST_ASSERT_EQUAL (node_info .command_class_list [5 ], (nif [7 ] << 8 ) | nif [8 ]);
255
+ zwave_command_class_list_unpack (& node_info , nif , nif_length );
256
+ TEST_ASSERT_EQUAL (3 + 3 , node_info .command_class_list_length );
257
+ }
258
+
259
+ void test_zwave_command_class_list_pack_extended_full ()
260
+ {
261
+ zwave_node_info_t node_info = {
262
+ .listening_protocol = 2 ,
263
+ .optional_protocol = 3 ,
264
+ .basic_device_class = 4 ,
265
+ .generic_device_class = 5 ,
266
+ .specific_device_class = 6 ,
267
+ .command_class_list_length
268
+ = ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH ,
269
+ };
270
+
271
+ for (int i = 0 ; i < ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH ; i ++ ) {
272
+ node_info .command_class_list [i ] = 0xFFFF ;
273
+ }
274
+ uint8_t nif [ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH * 2 ] = {0 };
275
+ uint8_t nif_length = 0 ;
276
+
277
+ zwave_command_class_list_pack (& node_info , nif , & nif_length );
278
+ TEST_ASSERT_EQUAL (ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH * 2 ,
279
+ nif_length );
280
+
281
+ zwave_command_class_list_unpack (& node_info , nif , nif_length );
282
+ TEST_ASSERT_EQUAL (ZWAVE_CONTROLLER_MAXIMUM_COMMAND_CLASS_LIST_LENGTH ,
283
+ node_info .command_class_list_length );
284
+ }
0 commit comments