diff libutil/osmo_bits.h @ 0:35c0d9f03c0a

beginning with sipout-test-voice, a copy of sip-manual-out from themwi-system-sw
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 03 Mar 2024 23:20:19 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libutil/osmo_bits.h	Sun Mar 03 23:20:19 2024 -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);