REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
uuid.h
Go to the documentation of this file.
1#pragma once
2
3#include <Arduino.h>
4#include <ArduinoJson.h> // just for adapter
5#include <cstdlib>
6#include <string>
7
8namespace utils {
9
19struct UUID { // : public Printable { // no inheritance to maintain POD
20public:
21 uint8_t ar[16] = {0};
22
23 // hint: Could also use something like the following if helps.
24 /*
25 union {
26 uint8_t bytes[16];
27 uin16_t nibbles[8];
28 uint32_t quads[4];
29 } _ar;
30 */
31
36 bool allZero() {
37 for (size_t i = 0; i < 16; i++)
38 if (ar[i] != 0)
39 return false;
40 return true;
41 }
42
43 bool operator==(const UUID &other) {
44 for (int i = 0; i < 16; i++)
45 if (other.ar[i] != ar[i])
46 return false;
47 return true;
48 }
49
50 void toCharArray(char *_buffer) const;
51 String toString() const;
52 size_t printTo(Print &p) const;
53
56 static UUID fromString(const char *str);
57
59 void toJson(JsonArray target) const {
60 for (int i = 0; i < 16; i++)
61 target[i] = ar[i];
62 }
63
64 void fromJson(JsonArrayConst src) {
65 if (src.size() != 16)
66 return;
67 for (int i = 0; i < 16; i++)
68 ar[i] = src[i];
69 }
70
72 void fromJson(JsonVariantConst src) {
73 if (src.is<const char *>()) {
74 fromString(src.as<const char *>());
75 } else {
76 fromJson(src.as<JsonArrayConst>());
77 }
78 }
79};
80
81inline void convertToJson(const UUID &uuid, JsonVariant target) { uuid.toJson(target.to<JsonArray>()); }
82
83inline void convertFromJson(JsonVariantConst src, UUID &uuid) { uuid.fromJson(src); }
84
85} // namespace utils
uint32_t src
Definition flasher.cpp:63
void convertFromJson(JsonVariantConst serialized_mac, MacAddress &mac)
Definition mac.cpp:68
void convertToJson(const MacAddress &mac, JsonVariant serialized_mac)
Definition mac.cpp:76
This is a small UUID representation class.
Definition uuid.h:19
bool allZero()
Checks if UUID is all zeros, can be used for detecting illegal values and failed conversions.
Definition uuid.h:36
void toCharArray(char *_buffer) const
Definition uuid.cpp:6
bool operator==(const UUID &other)
Definition uuid.h:43
String toString() const
Definition uuid.cpp:42
static UUID fromString(const char *str)
Parses standard UUID representation such as "2d2f7585-c53c-465b-8844-1294c52dc917",...
Definition uuid.cpp:66
void toJson(JsonArray target) const
Provides only the Array representation.
Definition uuid.h:59
uint8_t ar[16]
Definition uuid.h:21
void fromJson(JsonArrayConst src)
Definition uuid.h:64
size_t printTo(Print &p) const
Definition uuid.cpp:49
void fromJson(JsonVariantConst src)
Can read both string and array representation.
Definition uuid.h:72