---
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"
Show replies by date