19 #include "CorsairLightingFirmware.h"
21 #define toBigEndian(a) highByte(a), lowByte(a)
25 #define CLP_STRCAT(a, b) a##b
26 #define CLP_STRCAT3(a, b, c) a##b##c
28 #define CLP_XSTRCAT(a, b) CLP_STRCAT(a, b)
29 #define CLP_XSTRCAT3(a, b, c) CLP_STRCAT3(a, b, c)
31 #if defined(CLP_DEBUG_PORT)
33 extern int printf(
const char* format, ...);
34 extern int printf(
const __FlashStringHelper* format, ...);
36 #define clpPrintf CLP::printf
38 #define clpPrintf printf
42 static inline void printVar(uint8_t
const* buf, uint32_t bufsize) {
43 for (uint32_t i = 0; i < bufsize; i++) clpPrintf(
"%02X ", buf[i]);
45 extern void printData(uint8_t
const* buf, uint32_t bufsize,
bool address_table);
49 #define CLP_LOG(n, ...) CLP_XSTRCAT(CLP_LOG, n)(__VA_ARGS__)
50 #define CLP_LOG_VAR(n, ...) CLP_XSTRCAT3(CLP_LOG, n, _VAR)(__VA_ARGS__)
51 #define CLP_LOG_HEX(n, ...) CLP_XSTRCAT3(CLP_LOG, n, _HEX)(__VA_ARGS__)
52 #define CLP_LOG_DAT(n, buf, size, at) CLP_XSTRCAT3(CLP_LOG, n, _DAT)(buf, size, at)
53 #define CLP_LOG_LOCATION() clpPrintf("%s: %d:\r\n", __PRETTY_FUNCTION__, __LINE__)
54 #define CLP_LOG_FAILED() clpPrintf("%s: %d: Failed\r\n", __PRETTY_FUNCTION__, __LINE__)
55 #define CLP_LOG_FUNC(func) func
58 #define CLP_LOG1 clpPrintf
59 #define CLP_LOG1_VAR(_x) CLP::printVar((uint8_t const*)(_x), sizeof(*(_x)))
60 #define CLP_LOG1_HEX(_x) clpPrintf(#_x " = %lX\r\n", (unsigned long) (_x) )
61 #define CLP_LOG1_DAT(_x, _y, _z) CLP::printData((uint8_t const*)(_x), _y, _z)
65 #define CLP_LOG2 CLP_LOG1
66 #define CLP_LOG2_VAR CLP_LOG1_VAR
67 #define CLP_LOG2_HEX CLP_LOG1_HEX
68 #define CLP_LOG2_DAT CLP_LOG1_DAT
73 #define CLP_LOG3 CLP_LOG1
74 #define CLP_LOG3_VAR CLP_LOG1_VAR
75 #define CLP_LOG3_HEX CLP_LOG1_HEX
76 #define CLP_LOG3_DAT CLP_LOG1_DAT
81 #define CLP_LOG4 CLP_LOG1
82 #define CLP_LOG4_VAR CLP_LOG1_VAR
83 #define CLP_LOG4_HEX CLP_LOG1_HEX
84 #define CLP_LOG4_DAT CLP_LOG1_DAT
91 #define CLP_LOG(n, ...)
92 #define CLP_LOG_VAR(n, ...)
93 #define CLP_LOG_HEX(n, ...)
94 #define CLP_LOG_DAT(n, buf, size, at)
95 #define CLP_LOG_FUNC(n)
99 #define CLP_LOG0_VAR(...)
100 #define CLP_LOG0_HEX(...)
101 #define CLP_LOG0_DAT(...)
104 #define CLP_LOG1(...)
105 #define CLP_LOG1_VAR(...)
106 #define CLP_LOG1_HEX(...)
107 #define CLP_LOG1_DAT(...)
111 #define CLP_LOG2(...)
112 #define CLP_LOG2_VAR(...)
113 #define CLP_LOG2_HEX(...)
114 #define CLP_LOG2_DAT(...)
118 #define CLP_LOG3(...)
119 #define CLP_LOG3_VAR(...)
120 #define CLP_LOG3_HEX(...)
121 #define CLP_LOG3_DAT(...)
125 #define CLP_LOG4(...)
126 #define CLP_LOG4_VAR(...)
127 #define CLP_LOG4_HEX(...)
128 #define CLP_LOG4_DAT(...)
133 template <
typename T>
134 void swap(T a, T b) {
140 template <
typename T>
141 void reverse(T first, T last) {
142 while ((first != last) && (first != --last)) {
143 CLP::swap(first++, last);
147 template <
typename T>
148 void rotate(T first, T n_first, T last) {
149 if (first == n_first)
return;
150 if (n_first == last)
return;
156 while (read != last) {
157 if (write == next_read) next_read = read;
158 CLP::swap(read++, write++);
161 (rotate)(write, next_read, last);
165 uint16_t fromBigEndian(
const byte& byte1,
const byte& byte2);
172 inline uint8_t convert100To255(uint8_t value) {
return value * 2.5546875f; }
179 inline uint8_t convert255To100(uint8_t value) {
return value / 2.5546875f; }
186 bool isNullID(
const DeviceID& deviceId);
193 bool isResetID(
const DeviceID& deviceId);
198 void disableBuildInLEDs();
205 void printDeviceID(
const DeviceID& deviceId);
213 void printFps(
const int interval);
Definition: CorsairLightingFirmware.h:40