diff options
Diffstat (limited to 'src/canutil/write.h')
-rw-r--r-- | src/canutil/write.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/canutil/write.h b/src/canutil/write.h index 3d13b1df..f117a06c 100644 --- a/src/canutil/write.h +++ b/src/canutil/write.h @@ -8,11 +8,35 @@ extern "C" { #endif +/* Public: Encode a floating point number into a fixed point, fixed bit width + * field in a bit array. + * + * value - the floating point value to encode. + * bit_offset - the starting point for the encoded bits in the returned value. + * bit_size - The max width of the field in the resulting bit array. If bit_size + * isn't big enough to store the fixed point version of the value, the bitfeld + * will *not* be set. TODO some error reporting would be nice. + * factor - a factor used to transform from floating to fixed point before + * encoding. Use 1.0 for no factor. + * offset - an offset used to transform from floating to fixed point before + * encoding. Use 0 for no offset. + * + * Returns a big-endian uint64_t with the value encoded as a bitfield. + */ uint64_t bitfield_encode_float(float value, uint8_t bit_offset, uint8_t bit_size, float factor, float offset); -uint64_t bitfield_encode_bool(bool value, uint8_t bit_offset, uint8_t bit_size, - float factor, float offset); +/* Public: Encode a boolean into fixed bit width field in a bit array. + * + * value - the boolean value to encode - true will be 1, false will be 0. + * bit_offset - the starting point for the encoded bits in the returned value. + * bit_size - The max width of the field in the resulting bit array. If bit_size + * isn't big enough to store the fixed point version of the value, the bitfeld + * will *not* be set. TODO some error reporting would be nice. + * + * Returns a big-endian uint64_t with the value encoded as a bitfield. + */ +uint64_t bitfield_encode_bool(const bool value, const uint8_t bit_offset, const uint8_t bit_size); #ifdef __cplusplus } |