PixelKey
NeoPixel USB Key
Loading...
Searching...
No Matches
version.h
Go to the documentation of this file.
1#ifndef VERSION_H
2#define VERSION_H
3
11#include <stdint.h>
12#include <assert.h>
13
15#define XSTR(x) #x
17#define STR(x) XSTR(x)
18
20#define PIXELKEY_VERSION_MAJOR 0 // Valid range: 0-255; do not add parentheses.
22#define PIXELKEY_VERSION_MINOR 1 // Valid range: 0-255; do not add parentheses.
24#define PIXELKEY_VERSION_PATCH 0 // Valid range: 0-999; do not add parentheses.
25
27#define PIXELKEY_VERSION_STR STR(PIXELKEY_VERSION_MAJOR)"."STR(PIXELKEY_VERSION_MINOR)"."STR(PIXELKEY_VERSION_PATCH)
28
29static_assert(PIXELKEY_VERSION_MAJOR >= 0 && PIXELKEY_VERSION_MAJOR <= 255 && sizeof(STR(PIXELKEY_VERSION_MAJOR)) <= 4, "Major version field invalid.");
30static_assert(PIXELKEY_VERSION_MINOR >= 0 && PIXELKEY_VERSION_MINOR <= 255 && sizeof(STR(PIXELKEY_VERSION_MINOR)) <= 4, "Minor version field invalid.");
31static_assert(PIXELKEY_VERSION_PATCH >= 0 && PIXELKEY_VERSION_PATCH <= 999 && sizeof(STR(PIXELKEY_VERSION_PATCH)) <= 4, "Patch version field invalid.");
32
34#define PIXELKEY_VERSION_STR_MAX_LENGTH (12) // 3 major + . + 3 minor + . + 3 patch + \0
35
36#define PIXELKEY_PRODUCT_STR "PixelKey"
37#define PIXELKEY_PRODUCT_STR_LENGTH sizeof(PIXELKEY_PRODUCT_STR)
38
40typedef union u_version
41{
42 struct
43 {
44 uint16_t patch;
45 uint8_t minor;
46 uint8_t major;
47 } version_b;
48 uint32_t version;
49} version_t;
50
51static_assert(sizeof(version_t) == sizeof(uint32_t), "Version must be 32-bits.");
52
53extern const version_t g_pixelkey_version;
55extern const char g_pixelkey_product_str[PIXELKEY_PRODUCT_STR_LENGTH];
56
59#endif
#define STR(x)
Expands symbols to be stringified.
Definition: version.h:17
#define PIXELKEY_VERSION_MINOR
PixelKey minor version number.
Definition: version.h:22
const char g_pixelkey_product_str[sizeof("PixelKey")]
PixelKey product string.
const char g_pixelkey_version_str[(12)]
PixelKey version number string.
#define PIXELKEY_VERSION_MAJOR
PixelKey major version number.
Definition: version.h:20
#define PIXELKEY_VERSION_STR_MAX_LENGTH
Maximum allowable length of the version string.
Definition: version.h:34
#define PIXELKEY_VERSION_PATCH
PixelKey patch version number.
Definition: version.h:24
Version struct.
Definition: version.h:41
uint16_t patch
Patch field.
Definition: version.h:44
uint8_t major
Major field.
Definition: version.h:46
uint32_t version
Version word.
Definition: version.h:48
uint8_t minor
Minor field.
Definition: version.h:45