High level Bluetooth Low Energy API and radio abstraction layer
Fork of BLE_API by
Diff: ble/UUID.h
- Revision:
- 1023:a072b59caddb
- Parent:
- 1022:306c409f6c09
- Child:
- 1035:d8ba3cb5a39a
--- a/ble/UUID.h Thu Dec 10 09:15:02 2015 +0000 +++ b/ble/UUID.h Thu Dec 10 09:15:02 2015 +0000 @@ -22,18 +22,6 @@ #include "blecommon.h" -static uint16_t char2int(char c) { - if ((c >= '0') && (c <= '9')) { - return c - '0'; - } else if ((c >= 'a') && (c <= 'f')) { - return c - 'a' + 10; - } else if ((c >= 'A') && (c <= 'F')) { - return c - 'A' + 10; - } else { - return 0; - } -} - class UUID { public: enum UUID_Type_t { @@ -47,49 +35,6 @@ typedef uint8_t LongUUIDBytes_t[LENGTH_OF_LONG_UUID]; public: - - /** - * Creates a new 128-bit UUID. - * - * @note The UUID is a unique 128-bit (16 byte) ID used to identify - * different service or characteristics on the BLE device. - * - * @param stringUUID - * The 128-bit (16-byte) UUID as a human readable const-string. - * Format: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - * Upper and lower case supported. Hyphens are optional, but only - * upto four of them. The UUID is stored internally as a 16 byte - * array, LSB (little endian), which is opposite from the string. - */ - UUID(const char* stringUUID) : type(UUID_TYPE_LONG), baseUUID(), shortUUID(0) { - bool nibble = false; - uint8_t byte = 0; - size_t baseIndex = 0; - - // Iterate through string, abort if NULL is encountered prematurely. - // Ignore upto four hyphens. Reverse endian when storing internally. - for (size_t index = 0; (index < 36) && (baseIndex < LENGTH_OF_LONG_UUID); index++) { - if (stringUUID[index] == '\0') { - // error abort - break; - } else if (stringUUID[index] == '-') { - // ignore hyphen - continue; - } else if (nibble) { - // got second nibble - byte |= char2int(stringUUID[index]); - nibble = false; - - // reverse endian - baseUUID[LENGTH_OF_LONG_UUID - 1 - baseIndex++] = byte; - } else { - // got first nibble - byte = char2int(stringUUID[index]) << 4; - nibble = true; - } - } - } - /** * Creates a new 128-bit UUID. * @@ -97,7 +42,7 @@ * different service or characteristics on the BLE device. * * @param longUUID - * The 128-bit (16-byte) UUID value, LSB first (little-endian). + * The 128-bit (16-byte) UUID value, MSB first (big-endian). */ UUID(const LongUUIDBytes_t longUUID) : type(UUID_TYPE_LONG), baseUUID(), shortUUID(0) { setupLong(longUUID); @@ -149,7 +94,7 @@ void setupLong(const LongUUIDBytes_t longUUID) { type = UUID_TYPE_LONG; memcpy(baseUUID, longUUID, LENGTH_OF_LONG_UUID); - shortUUID = (uint16_t)((longUUID[13] << 8) | (longUUID[12])); + shortUUID = (uint16_t)((longUUID[2] << 8) | (longUUID[3])); } public: