FreeCalypso > hg > themwi-system-sw
diff libutil/osmo_bits.h @ 194:05d01e810217
libutil: add TFO message gen function based on Osmocom crc8gen
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 17 Mar 2023 16:52:21 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libutil/osmo_bits.h Fri Mar 17 16:52:21 2023 -0800 @@ -0,0 +1,35 @@ +/* + * This include file has been put together from Osmocom (specifically + * libosmocore) header files, containing definitions for bit vector + * manipulation and CRC functions. + */ + +/* from bits.h */ + +/*! unpacked bit (0 or 1): 1 bit per byte */ +typedef uint8_t ubit_t; + +/* from crc8gen.h */ + +/*! structure describing a given CRC code of max 8 bits */ +struct osmo_crc8gen_code { + int bits; /*!< Actual number of bits of the CRC */ + uint8_t poly; /*!< Polynom (normal representation, MSB omitted */ + uint8_t init; /*!< Initialization value of the CRC state */ + uint8_t remainder; /*!< Remainder of the CRC (final XOR) */ +}; + +uint8_t osmo_crc8gen_compute_bits(const struct osmo_crc8gen_code *code, + const ubit_t *in, int len); +int osmo_crc8gen_check_bits(const struct osmo_crc8gen_code *code, + const ubit_t *in, int len, const ubit_t *crc_bits); +void osmo_crc8gen_set_bits(const struct osmo_crc8gen_code *code, + const ubit_t *in, int len, ubit_t *crc_bits); + +/* + * Themyscira-added (not Osmocom-originating) functions + * that use the ubit_t defined type that (to our knowledge) + * was invented by Osmocom. + */ + +void uint16_to_bits(uint16_t word, ubit_t *out, unsigned nbits);