blob: c356eb582c5e639a6e4fdc4b431a1b3691d23cb7 [file] [log] [blame]
#ifndef _UUID_H_
#define _UUID_H_
#include "types.h"
#define BT_UUID_BASE {0x800000805F9B34FBULL, 0x0000000000001000ULL}
#define UUIDFMT "{%08lx-%04x-%04x-%04x-%04x%08lx}"
#define UUIDCONV(u) (unsigned long)(((u).hi) >> 32),(unsigned)((((u).hi) >> 16) & 0xFFFF),(unsigned)(((u).hi) & 0xFFFF),\
(unsigned)(((u).lo) >> 48),(unsigned)((((u).lo) >> 32) & 0xFFFF),(unsigned long)(((u).lo) & 0xFFFFFFFF)
struct uuid {
uint64_t lo;
uint64_t hi;
} __packed;
void uuidFromUuid16(struct uuid *dst, uint16_t uuid16);
bool uuidToUuid16(uint16_t *dst, const struct uuid *uuid128);
void uuidFromUuid32(struct uuid *dst, uint32_t uuid32);
bool uuidToUuid32(uint32_t *dst, const struct uuid *uuid128);
bool uuidCmp(const struct uuid *a, const struct uuid *b);
void uuidWriteLE(void *dst, const struct uuid *src);
void uuidReadLE(struct uuid *dst, const void *src);
void uuidWriteBE(void *dst, const struct uuid *src);
void uuidReadBE(struct uuid *dst, const void *src);
bool uuidIsZero(const struct uuid *uuid);
void uuidZero(struct uuid *dst);
#endif