Fix endianity issue when reading uint32

The uint32 is given as a bigendian stream, in the tests, however,
the char buffer that collected the stream read it as is,
without converting it. Add a temporary buffer, to call `greentea_getc()`
8 times, and then put it in the correct endianity for input to `unhexify()`.
This commit is contained in:
Ron Eldor 2019-09-09 14:52:50 +03:00
parent 2ad73aa388
commit 6e76108e15

View file

@ -75,7 +75,7 @@ uint8_t receive_byte()
c[1] = greentea_getc(); c[1] = greentea_getc();
c[2] = '\0'; c[2] = '\0';
assert( unhexify( &byte, c ) != 2 ); TEST_HELPER_ASSERT( unhexify( &byte, c ) != 2 );
return( byte ); return( byte );
} }
@ -90,18 +90,19 @@ uint8_t receive_byte()
uint32_t receive_uint32() uint32_t receive_uint32()
{ {
uint32_t value; uint32_t value;
const uint8_t c[9] = { greentea_getc(), uint8_t c_be[8] = { greentea_getc(),
greentea_getc(), greentea_getc(),
greentea_getc(), greentea_getc(),
greentea_getc(), greentea_getc(),
greentea_getc(), greentea_getc(),
greentea_getc(), greentea_getc(),
greentea_getc(), greentea_getc(),
greentea_getc(), greentea_getc()
'\0' };
}; const uint8_t c[9] = { c_be[6], c_be[7], c_be[4], c_be[5], c_be[2],
assert( unhexify( &value, c ) != 8 ); c_be[3], c_be[0], c_be[1], '\0' };
return( (uint32_t)value ); TEST_HELPER_ASSERT( unhexify( (uint8_t*)&value, c ) != 8 );
return( value );
} }
/** /**