[PATCH 1/3] Add helper functions for a5/3.

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/baseband-devel@lists.osmocom.org/.

Max Suraev Max.Suraev at fairwaves.ru
Thu Dec 6 16:23:51 UTC 2012


---
 include/osmocom/core/bits.h |   14 +++++++++++++-
 src/bits.c                  |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/include/osmocom/core/bits.h b/include/osmocom/core/bits.h
index 4c68532..29a99ff 100644
--- a/include/osmocom/core/bits.h
+++ b/include/osmocom/core/bits.h
@@ -2,7 +2,7 @@
 #define _OSMO_BITS_H
 
 #include <stdint.h>
-
+#include <stddef.h>
 /*! \defgroup bits soft, unpacked and packed bits
  *  @{
  */
@@ -73,6 +73,18 @@ uint32_t osmo_revbytebits_8(uint8_t x);
 /* \brief reverse the bits of each byte in a given buffer */
 void osmo_revbytebits_buf(uint8_t *buf, int len);
 
+/* \brief reverse the order of the bytes in a given buffer */
+void osmo_revbytes_buf(uint8_t *buf, size_t len);
+
+/* \brief left circular shift */
+uint16_t rol16(uint16_t in, unsigned shift);
+
+/* return 2 bytes from a given array glued into single uint16_t */
+uint16_t osmo_get2bytes(uint8_t *a);
+
+/* convert uint64_t into array of 8 bytes in out */
+void osmo_64pack2pbit(uint64_t in, pbit_t *out);
+
 /*! @} */
 
 #endif /* _OSMO_BITS_H */
diff --git a/src/bits.c b/src/bits.c
index 4c67bdd..1df332b 100644
--- a/src/bits.c
+++ b/src/bits.c
@@ -185,4 +185,37 @@ void osmo_revbytebits_buf(uint8_t *buf, int len)
 	}
 }
 
+void osmo_revbytes_buf(uint8_t *buf, size_t len)
+{
+    uint8_t *end = buf + len - 1, tmp;
+
+    while (buf < end) {
+        tmp = *buf;
+        *buf++ = *end;
+        *end-- = tmp;
+    }
+}
+
+/* left circular shift */
+uint16_t rol16(uint16_t in, unsigned shift)
+{
+    return (in << shift) | (in >> (16 - shift));
+}
+
+/* return 2 bytes from a given array glued into single uint16_t */
+uint16_t osmo_get2bytes(uint8_t *a)
+{ /* UNSAFE! Do NOT use unless you know what you are doing! */
+    return (uint16_t)((((uint16_t)a[0]) << 8) + (uint16_t)a[1]);
+}
+
+/* convert uint64_t into array of 8 bytes in out */
+void osmo_64pack2pbit(uint64_t in, pbit_t *out)
+{
+    int i;
+    for (i = 7; i >=0; i--) {
+	out[i] = in & 0xFF;
+	in >>= 8;
+    }
+}
+
 /*! @} */
-- 
1.7.10.4


--------------000004050908040808070403
Content-Type: text/x-patch;
 name="0002-Add-Kasumi-implementation.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="0002-Add-Kasumi-implementation.patch"



More information about the baseband-devel mailing list