### 8 Byte Decoding
uint64_t data = 0x8000000000000000;
- uint64_t result = get_bitfield(data, 0, 1, false);
+ uint64_t result = eightbyte_get_bitfield(data, 0, 1, false);
// result == 0x1
data = 0x0402574d555a0401;
- result = get_bitfield(data, 16, 32, false);
+ result = eightbyte_get_bitfield(data, 16, 32, false);
// result = 0x574d555a;
data = 0x00000000F34DFCFF;
### 8 Byte Encoding
uint64_t data = 0;
- fail_unless(set_bit_field(&data, 1, 0, 1));
- uint64_t result = get_bitfield(data, 0, 1, false);
+ fail_unless(8byte_set_bitfield(&data, 1, 0, 1));
+ uint64_t result = eightbyte_get_bitfield(data, 0, 1, false);
ck_assert_int_eq(result, 0x1);
### CAN Signal Encoding
The library supports encoding floating point CAN signals as well as booleans
into a uint64_t payload.
- uint64_t payload = bitfield_encode_float(1, 1, 3, 1, 0)
+ uint64_t payload = eightbyte_encode_float(1, 1, 3, 1, 0)
// payload == 0x1000000000000000
- payload = bitfield_encode_bool(true, 1, 3);
+ payload = eightbyte_encode_bool(true, 1, 3);
// payload == 0x1000000000000000
### CAN Signal Decoding
The library supports parsing floating point CAN signals as well as booleans.
uint64_t payload = 0xeb00000000000000;
- float float_result = bitfield_parse_float(payload,
+ float float_result = eightbyte_parse_float(payload,
2, // starting bit
4, // width of the signal's field
1001.0, // transformation factor for the signal value
-30000.0); // transformation offset for the signal value
// float_result == -19990.0
- bool bool_result = bitfield_parse_bool(payload,
+ bool bool_result = eightbyte_parse_bool(payload,
0, // starting bit
1, // width of the signal's field
1.0, // transformation factor for the signal value
START_TEST (test_set_wont_fit)
{
uint64_t data = 0;
- fail_if(set_bit_field(&data, 100, 0, 1));
+ fail_if(eightbyte_set_bitfield(&data, 100, 0, 1));
}
END_TEST
START_TEST (test_set_field)
{
uint64_t data = 0;
- fail_unless(set_bit_field(&data, 1, 0, 1));
+ fail_unless(eightbyte_set_bitfield(&data, 1, 0, 1));
uint64_t result = eightbyte_get_bitfield(data, 0, 1, false);
ck_assert_int_eq(result, 0x1);
data = 0;
- fail_unless(set_bit_field(&data, 1, 1, 1));
+ fail_unless(eightbyte_set_bitfield(&data, 1, 1, 1));
result = eightbyte_get_bitfield(data, 1, 1, false);
ck_assert_int_eq(result, 0x1);
data = 0;
- fail_unless(set_bit_field(&data, 0xf, 3, 4));
+ fail_unless(eightbyte_set_bitfield(&data, 0xf, 3, 4));
result = eightbyte_get_bitfield(data, 3, 4, false);
ck_assert_int_eq(result, 0xf);
}
START_TEST (test_set_doesnt_clobber_existing_data)
{
uint64_t data = 0xFFFC4DF300000000;
- fail_unless(set_bit_field(&data, 0x4fc8, 16, 16));
+ fail_unless(eightbyte_set_bitfield(&data, 0x4fc8, 16, 16));
uint64_t result = eightbyte_get_bitfield(data, 16, 16, false);
fail_unless(result == 0x4fc8,
"Field retrieved in 0x%llx was 0x%llx instead of 0x%x", data, result,
0xc84f);
data = 0x8000000000000000;
- fail_unless(set_bit_field(&data, 1, 21, 1));
+ fail_unless(eightbyte_set_bitfield(&data, 1, 21, 1));
fail_unless(data == 0x8000040000000000LLU,
"Expected combined value 0x8000040000000000 but got 0x%llx%llx",
data >> 32, data);
START_TEST (test_set_off_byte_boundary)
{
uint64_t data = 0xFFFC4DF300000000;
- fail_unless(set_bit_field(&data, 0x12, 12, 8));
+ fail_unless(eightbyte_set_bitfield(&data, 0x12, 12, 8));
uint64_t result = eightbyte_get_bitfield(data, 12, 12, false);
ck_assert_int_eq(result,0x12d);
}
START_TEST (test_set_odd_number_of_bits)
{
uint64_t data = 0xFFFC4DF300000000LLU;
- fail_unless(set_bit_field(&data, 0x12, 11, 5));
+ fail_unless(eightbyte_set_bitfield(&data, 0x12, 11, 5));
uint64_t result = eightbyte_get_bitfield(data, 11, 5, false);
fail_unless(result == 0x12,
"Field set in 0x%llx%llx%llx%llx was 0x%llx instead of 0x%llx", data, result,
0x12);
data = 0xFFFC4DF300000000LLU;
- fail_unless(set_bit_field(&data, 0x2, 11, 5));
+ fail_unless(eightbyte_set_bitfield(&data, 0x2, 11, 5));
result = eightbyte_get_bitfield(data, 11, 5, false);
fail_unless(result == 0x2,
"Field set in 0x%llx%llx%llx%llx was 0x%llx instead of 0x%llx", data, result,