Bluenet  5.7.0
Bluenet, firmware for nRF52 smart home devices
Loading...
Searching...
No Matches
cs_UuidParser.h
Go to the documentation of this file.
1/*
2 * Author: Crownstone Team
3 * Copyright: Crownstone (https://crownstone.rocks)
4 * Date: 18 Mar., 2019
5 * License: LGPLv3+, Apache License 2.0, and/or MIT (triple-licensed)
6 */
7#pragma once
8#include <cstdint>
9
10#define CS_UUID_STR_LEN 36
11
12namespace CsUtils {
13
17constexpr int parseHexChar(const char chr) {
18 if ('0' <= chr && chr <= '9') {
19 return chr - '0';
20 }
21 else if ('a' <= chr && chr <= 'f') {
22 return chr - 'a' + 10;
23 }
24 else if ('A' <= chr && chr <= 'F') {
25 return chr - 'A' + 10;
26 }
27 return 0;
28}
29
33constexpr int parseHexPair(const char* str) {
34 return (parseHexChar(str[0]) << 4) | (parseHexChar(str[1]) << 0);
35}
36
40constexpr bool parseUuid(const char* str, int stringSize, uint8_t* array, int arraySize) {
41 if (stringSize != CS_UUID_STR_LEN || arraySize < 16) {
42 return false;
43 }
44 // 0 8+1 12+2 16+3 20+4
45 // XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
46 // 0 2 4 6 9 14 19 24
47 array[15] = parseHexPair(str);
48 array[14] = parseHexPair(str + 2);
49 array[13] = parseHexPair(str + 4);
50 array[12] = parseHexPair(str + 6);
51 array[11] = parseHexPair(str + 8 + 1);
52 array[10] = parseHexPair(str + 10 + 1);
53 array[9] = parseHexPair(str + 12 + 2);
54 array[8] = parseHexPair(str + 14 + 2);
55 array[7] = parseHexPair(str + 16 + 3);
56 array[6] = parseHexPair(str + 18 + 3);
57 array[5] = parseHexPair(str + 20 + 4);
58 array[4] = parseHexPair(str + 22 + 4);
59 array[3] = parseHexPair(str + 24 + 4);
60 array[2] = parseHexPair(str + 26 + 4);
61 array[1] = parseHexPair(str + 28 + 4);
62 array[0] = parseHexPair(str + 30 + 4);
63 return true;
64}
65
66} // namespace CsUtils
#define CS_UUID_STR_LEN
Definition: cs_UuidParser.h:10
Author: Crownstone Team Copyright: Crownstone (https://crownstone.rocks) Date: Oct 29,...
constexpr int parseHexChar(const char chr)
Parses a hex char to an integer.
Definition: cs_UuidParser.h:17
constexpr bool parseUuid(const char *str, int stringSize, uint8_t *array, int arraySize)
Parse UUID string (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) to a byte array.
Definition: cs_UuidParser.h:40
constexpr int parseHexPair(const char *str)
Parses 2 hex chars to an integer.
Definition: cs_UuidParser.h:33