@@ -16,7 +16,8 @@ void tearDown(void) {}
1616// Test 1: Empty payload returns 0 and zeroes both outputs.
1717static void test_rx_parse_empty_payload (void )
1818{
19- frame_t v0 , v1 ;
19+ frame_t v0 ;
20+ frame_t v1 ;
2021 memset (& v0 , 0xA5 , sizeof (v0 ));
2122 memset (& v1 , 0xA5 , sizeof (v1 ));
2223 const canard_bytes_t pl = { 0 , NULL };
@@ -34,7 +35,8 @@ static void test_rx_parse_empty_payload(void)
3435// v1.1 message CAN ID: (prio << 26) | (subject << 8) | (1 << 7) | src
3536static void test_rx_parse_v1_1_message_golden (void )
3637{
37- frame_t v0 , v1 ;
38+ frame_t v0 ;
39+ frame_t v1 ;
3840 // Mid: prio=3, subject=1234, src=42. CAN ID = 0x0C04D2AA.
3941 {
4042 const byte_t d [] = { 0x11 , 0x22 , 0xE7 }; // v1 single-frame tail: SOT=1 EOT=1 toggle=1 tid=7
@@ -84,7 +86,8 @@ static void test_rx_parse_v1_1_message_golden(void)
8486// v1.0 message CAN ID: (prio << 26) | (reserved22:21 << 21) | (subject << 8) | src [bit7=0, bit25=0]
8587static void test_rx_parse_v1_0_message_golden (void )
8688{
87- frame_t v0 , v1 ;
89+ frame_t v0 ;
90+ frame_t v1 ;
8891 // Normal: prio=4, subject=42, src=11, reserved=11b. CAN ID = 0x10602A0B.
8992 {
9093 const byte_t d [] = { 0xAA , 0xE5 }; // v1 single, tid=5
@@ -122,7 +125,8 @@ static void test_rx_parse_v1_0_message_golden(void)
122125// v1.0 service CAN ID: (prio << 26) | (1 << 25) | (req?1:0 << 24) | (svc_id << 14) | (dst << 7) | src
123126static void test_rx_parse_v1_0_service_golden (void )
124127{
125- frame_t v0 , v1 ;
128+ frame_t v0 ;
129+ frame_t v1 ;
126130 // Request: prio=4, svc_id=430, dst=24, src=11. CAN ID = 0x136B8C0B.
127131 {
128132 const byte_t d [] = { 0xBB , 0xE1 }; // v1 single, tid=1
@@ -163,7 +167,8 @@ static void test_rx_parse_v1_0_service_golden(void)
163167// v0 message CAN ID: (prio << 26) | (3 << 24) | (type_id << 8) | src [bit7=0]
164168static void test_rx_parse_v0_message_golden (void )
165169{
166- frame_t v0 , v1 ;
170+ frame_t v0 ;
171+ frame_t v1 ;
167172 // Normal: prio=4, type_id=0x040A, src=1. CAN ID = 0x13040A01.
168173 {
169174 const byte_t d [] = { 0x55 , 0xC2 }; // v0 single: SOT=1 EOT=1 toggle=0 tid=2
@@ -201,7 +206,8 @@ static void test_rx_parse_v0_message_golden(void)
201206// v0 service CAN ID: (((prio<<2)|3) << 24) | (type_id << 16) | (req?1<<15:0) | (dst << 8) | (1 << 7) | src
202207static void test_rx_parse_v0_service_golden (void )
203208{
204- frame_t v0 , v1 ;
209+ frame_t v0 ;
210+ frame_t v1 ;
205211 // Request: prio=4, type_id=0x37, dst=24, src=11. CAN ID = 0x1337988B.
206212 {
207213 const byte_t d [] = { 0x42 , 0xC4 }; // v0 single, tid=4
@@ -230,7 +236,8 @@ static void test_rx_parse_v0_service_golden(void)
230236// Test 7: v1.0 frames with reserved bit 23 set are rejected.
231237static void test_rx_parse_v1_0_reserved_bit23_reject (void )
232238{
233- frame_t v0 , v1 ;
239+ frame_t v0 ;
240+ frame_t v1 ;
234241 // v1.0 service: 0x136B8C0B | 0x00800000 = 0x13EB8C0B. v1 tail → is_v0=false. bit23 → is_v1=false.
235242 {
236243 const byte_t d [] = { 0xE0 };
@@ -249,7 +256,8 @@ static void test_rx_parse_v1_0_reserved_bit23_reject(void)
249256// Test 8: v0 service with src=0 or dst=0 is rejected (0 reserved for anonymous/broadcast in v0).
250257static void test_rx_parse_v0_service_zero_node_reject (void )
251258{
252- frame_t v0 , v1 ;
259+ frame_t v0 ;
260+ frame_t v1 ;
253261 // src=0: CAN ID 0x13379880 → v0 service with src=0 → rejected. v0 tail → is_v1=false. Return=0.
254262 {
255263 const byte_t d [] = { 0xC0 };
@@ -268,7 +276,8 @@ static void test_rx_parse_v0_service_zero_node_reject(void)
268276// Test 9: Version detection via SOT+toggle in the tail byte.
269277static void test_rx_parse_version_detection (void )
270278{
271- frame_t v0 , v1 ;
279+ frame_t v0 ;
280+ frame_t v1 ;
272281 // CAN ID valid for both versions: v1.0 message / v0 message (bit7=0, bit25=0, bit23=0).
273282 const uint32_t can_id = 0x00002A01UL ; // prio=0, subject=42 (v1.0), type_id=42 (v0), src=1
274283 // SOT=1 toggle=1 → v1 only
@@ -301,7 +310,8 @@ static void test_rx_parse_version_detection(void)
301310// Test 10: Payload pointer and size are forwarded correctly.
302311static void test_rx_parse_payload_handling (void )
303312{
304- frame_t v0 , v1 ;
313+ frame_t v0 ;
314+ frame_t v1 ;
305315 const uint32_t can_id = 0x00000080UL ; // v1.1 message, prio=0, subject=0, src=0
306316 // Size 1 (tail byte only → effective payload is 0 bytes)
307317 {
@@ -343,7 +353,8 @@ static void test_rx_parse_payload_handling(void)
343353// Test 11: Exhaustive tail-byte field mapping for all SOT/EOT/toggle combinations and TID boundary values.
344354static void test_rx_parse_tail_byte_exhaustive (void )
345355{
346- frame_t v0 , v1 ;
356+ frame_t v0 ;
357+ frame_t v1 ;
347358 const uint32_t can_id = 0x00002A01UL ; // valid for both versions (message, bit7=0)
348359
349360 // All 8 SOT/EOT/toggle combinations. Pick the correct output depending on version detection.
@@ -438,7 +449,8 @@ static void test_rx_parse_tail_byte_exhaustive(void)
438449// Test 12: Non-first frames where the same CAN ID produces valid but different results for v0 and v1.
439450static void test_rx_parse_cross_version_ambiguity (void )
440451{
441- frame_t v0 , v1 ;
452+ frame_t v0 ;
453+ frame_t v1 ;
442454 // Non-first tail: SOT=0 → both versions attempted.
443455 const byte_t nf = 0x05 ; // SOT=0 EOT=0 toggle=0 tid=5
444456
@@ -490,7 +502,8 @@ static void test_rx_parse_cross_version_ambiguity(void)
490502// Test 13: Adjacent bit fields do not bleed into each other.
491503static void test_rx_parse_bit_field_boundaries (void )
492504{
493- frame_t v0 , v1 ;
505+ frame_t v0 ;
506+ frame_t v1 ;
494507 // v1.0 service: max svc_id=511 with dst=0 and src=0 → verify dst and src read 0.
495508 // CAN ID: (0<<26)|(1<<25)|(0<<24)|(511<<14)|(0<<7)|0 = 0x027FC000
496509 {
@@ -530,7 +543,8 @@ static void test_rx_parse_bit_field_boundaries(void)
530543// Test 14: v1.1 does NOT reject bit 23 (unlike v1.0).
531544static void test_rx_parse_v1_1_accepts_bit23 (void )
532545{
533- frame_t v0 , v1 ;
546+ frame_t v0 ;
547+ frame_t v1 ;
534548 // Subject 0x18000: bit 23 of CAN ID is set because (0x18000 << 8) sets bit 23.
535549 // CAN ID: (0<<26) | (0x18000<<8) | (1<<7) | 0 = 0x01800080
536550 {
@@ -557,7 +571,8 @@ static void test_rx_parse_v1_1_accepts_bit23(void)
557571// Test 15: v1.0 message reserved bits 22:21 are masked out and do not affect the extracted subject-ID.
558572static void test_rx_parse_v1_0_message_ignores_reserved_bits_22_21 (void )
559573{
560- frame_t v0 , v1 ;
574+ frame_t v0 ;
575+ frame_t v1 ;
561576 const byte_t d [] = { 0xE0 };
562577 const canard_bytes_t pl = { sizeof (d ), d };
563578 // bits 22:21 = 00: CAN ID = (0<<26)|(0<<21)|(42<<8)|1 = 0x00002A01
@@ -574,7 +589,8 @@ static void test_rx_parse_v1_0_message_ignores_reserved_bits_22_21(void)
574589// Test 16: Non-first frame produces valid distinct results for both v0 and v1 simultaneously.
575590static void test_rx_parse_non_first_dual_output (void )
576591{
577- frame_t v0 , v1 ;
592+ frame_t v0 ;
593+ frame_t v1 ;
578594 // CAN ID 0x0C04D2AA: v1.1 message (bit7=1) / v0 service (bit7=1).
579595 // Non-first tail: SOT=0 EOT=0 toggle=0 tid=5.
580596 const byte_t d [] = { 0x11 , 0x22 , 0x05 };
0 commit comments