OSDN Git Service

shared: Add bswap_128()
authorClaudio Takahasi <claudio.takahasi@openbossa.org>
Tue, 18 Mar 2014 20:26:16 +0000 (17:26 -0300)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 20 Mar 2014 17:29:49 +0000 (19:29 +0200)
Adds a new helper to swap 128-bit values. It is intended to be used for
GATT 128-bit UUID handling, converting 128-bit UUID from big-endian to
little-endian (or the opposite).

No matter the system, bt_uuid_t should always store 128-bit UUID value
using big-endian format (similar to human-readable format).

src/shared/util.h

index cc2dbcd..f9170bb 100644 (file)
@@ -91,6 +91,16 @@ void util_debug(util_debug_func_t function, void *user_data,
 void util_hexdump(const char dir, const unsigned char *buf, size_t len,
                                util_debug_func_t function, void *user_data);
 
+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 void put_le16(uint16_t val, void *dst)
 {
        put_unaligned(cpu_to_le16(val), (uint16_t *) dst);