Skip to content

Commit 2e96957

Browse files
rzrlmolina
andcommitted
fix(cc/nif): Add testing for unpacking extended cc
Origin: #125 Bug-SiliconLabs: UIC-3664 Relate-to: SLVDBBP-3162484 Relate-to: SiliconLabsSoftware/z-wave-engine-application-layer#42 Co-authored-by: Laudin Molina Troconis <[email protected]> Signed-off-by: Philippe Coval <[email protected]>
1 parent 820fc8c commit 2e96957

File tree

2 files changed

+98
-2
lines changed

2 files changed

+98
-2
lines changed

applications/zpc/components/zwave/zwave_controller/test/zwave_controller_utils_test.c

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,4 +185,100 @@ void test_send_nop_to_node()
185185
test_discard_timeout_ms,
186186
test_callback,
187187
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+
}

applications/zpc/components/zwave_command_classes/test/zwave_command_class_node_info_resolver_test.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,4 +551,4 @@ void test_on_secure_nif_resolution_aborted()
551551
TEST_ASSERT_EQUAL_UINT8_ARRAY(command_class_list_expected_u8,
552552
command_class_list_result_u8,
553553
secure_nif_length_expected);
554-
}
554+
}

0 commit comments

Comments
 (0)