diff --git a/lib/bluetooth.h b/lib/bluetooth.h
index f214d81..6ca64b6 100644
--- a/lib/bluetooth.h
+++ b/lib/bluetooth.h
uint8_t data[16];
} uint128_t;
+static inline void bswap_128(const void *src, void *dst)
+{
+ const uint8_t *s = src;
+ uint8_t *d = dst;
+ int i;
+
+ for (i = 0; i < 16; i++)
+ d[15 - i] = s[i];
+}
+
#if __BYTE_ORDER == __BIG_ENDIAN
#define ntoh64(x) (x)
static inline void btoh128(const uint128_t *src, uint128_t *dst)
{
- int i;
-
- for (i = 0; i < 16; i++)
- dst->data[15 - i] = src->data[i];
+ bswap_128(src, dst);
}
#else
static inline void ntoh128(const uint128_t *src, uint128_t *dst)
{
- int i;
-
- for (i = 0; i < 16; i++)
- dst->data[15 - i] = src->data[i];
+ bswap_128(src, dst);
}
static inline void btoh128(const uint128_t *src, uint128_t *dst)
diff --git a/lib/uuid.c b/lib/uuid.c
index 3eb7dbe..4f34b17 100644
--- a/lib/uuid.c
+++ b/lib/uuid.c
return 0;
case BT_UUID32:
bt_uuid_to_uuid128(src, &uuid);
- ntoh128(&uuid.value.u128, dst);
- return 0;
+ /* Fallthrough */
case BT_UUID128:
- ntoh128(&src->value.u128, dst);
+ /* Convert from 128-bit BE to LE */
+ bswap_128(&src->value.u128, dst);
return 0;
case BT_UUID_UNSPEC:
default:
diff --git a/src/shared/util.h b/src/shared/util.h
index 7dba1b3..30b7d92 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
uint8_t util_get_uid(unsigned int *bitmap, uint8_t max);
void util_clear_uid(unsigned int *bitmap, uint8_t id);
-static inline void bswap_128(const void *src, void *dst)
-{
- const uint8_t *s = src;
- uint8_t *d = dst;
- int i;
-
- for (i = 0; i < 16; i++)
- d[15 - i] = s[i];
-}
-
static inline uint16_t get_le16(const void *ptr)
{
return le16_to_cpu(get_unaligned((const uint16_t *) ptr));