Checkpoint commit renaming some functions for clarity.
[apps/agl-service-can-low-level.git] / src / canutil / write.h
1 #ifndef __WRITE_H__
2 #define __WRITE_H__
3
4 #include <stdint.h>
5 #include <stdbool.h>
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 /* Public: Encode a floating point number into a fixed point, fixed bit width
12  *      field in a bit array.
13  *
14  * value - the floating point value to encode.
15  * bit_offset - the starting point for the encoded bits in the returned value.
16  * bit_size - The max width of the field in the resulting bit array. If bit_size
17  *      isn't big enough to store the fixed point version of the value, the
18  *      bitfeld will *not* be set. TODO some error reporting would be nice.
19  * factor - a factor used to transform from floating to fixed point before
20  *      encoding. Use 1.0 for no factor.
21  * offset - an offset used to transform from floating to fixed point before
22  *      encoding. Use 0 for no offset.
23  *
24  * Returns a big-endian uint64_t with the value encoded as a bitfield.
25  */
26 uint64_t eightbyte_encode_float(float value, uint8_t bit_offset,
27         uint8_t bit_size, float factor, float offset);
28
29 bool bitfield_encode_float(float value, uint8_t bit_offset,
30         uint8_t bit_size, float factor, float offset, uint8_t destination[]);
31
32 /* Public: Encode a boolean into fixed bit width field in a bit array.
33  *
34  * value - the boolean value to encode - true will be 1, false will be 0.
35  * bit_offset - the starting point for the encoded bits in the returned value.
36  * bit_size - The max width of the field in the resulting bit array. If bit_size
37  *      isn't big enough to store the fixed point version of the value, the
38  *      bitfeld will *not* be set. TODO some error reporting would be nice.
39  *
40  * Returns a big-endian uint64_t with the value encoded as a bitfield.
41  */
42 uint64_t eightbyte_encode_bool(const bool value, const uint8_t bit_offset,
43         const uint8_t bit_size);
44
45 #ifdef __cplusplus
46 }
47 #endif
48
49 #endif // __WRITE_H__