9#define __STDC_LIMIT_MACROS
21uint64_t
reverseBits(uint64_t input, uint16_t nbits);
25 const bool isRepeat =
false);
34uint8_t
sumBytes(
const uint8_t *
const start,
const uint16_t length,
35 const uint8_t init = 0);
36uint8_t
xorBytes(
const uint8_t *
const start,
const uint16_t length,
37 const uint8_t init = 0);
38uint16_t
countBits(
const uint8_t *
const start,
const uint16_t length,
39 const bool ones =
true,
const uint16_t init = 0);
40uint16_t
countBits(
const uint64_t data,
const uint8_t length,
41 const bool ones =
true,
const uint16_t init = 0);
42uint64_t
invertBits(
const uint64_t data,
const uint16_t nbits);
49String addBoolToString(
const bool value,
const String label,
50 const bool precomma =
true);
51String addToggleToString(
const bool toggle,
const String label,
52 const bool precomma =
true);
53String addIntToString(
const uint16_t value,
const String label,
54 const bool precomma =
true);
55String addSignedIntToString(
const int16_t value,
const String label,
56 const bool precomma =
true);
59 const bool precomma =
true);
61 const bool precomma =
true);
62String addTempToString(
const uint16_t degrees,
const bool celsius =
true,
63 const bool precomma =
true,
64 const bool isSensorTemp =
false);
65String addTempFloatToString(
const float degrees,
const bool celsius =
true,
66 const bool precomma =
true,
67 const bool isSensorTemp =
false);
68String addModeToString(
const uint8_t mode,
const uint8_t automatic,
69 const uint8_t cool,
const uint8_t heat,
70 const uint8_t dry,
const uint8_t fan);
71String addFanToString(
const uint8_t speed,
const uint8_t high,
72 const uint8_t low,
const uint8_t automatic,
73 const uint8_t quiet,
const uint8_t medium,
74 const uint8_t maximum = 0xFF,
75 const uint8_t medium_high = 0xFF);
76String addSwingHToString(
const uint8_t position,
const uint8_t automatic,
77 const uint8_t maxleft,
const uint8_t left,
79 const uint8_t right,
const uint8_t maxright,
81 const uint8_t leftright,
const uint8_t rightleft,
82 const uint8_t threed,
const uint8_t wide);
83String addSwingVToString(
const uint8_t position,
const uint8_t automatic,
84 const uint8_t highest,
const uint8_t high,
85 const uint8_t uppermiddle,
87 const uint8_t lowermiddle,
88 const uint8_t low,
const uint8_t lowest,
89 const uint8_t off,
const uint8_t swing,
90 const uint8_t breeze,
const uint8_t circulate);
91String addDayToString(
const uint8_t day_of_week,
const int8_t offset = 0,
92 const bool precomma =
true);
93String addTimerModeToString(
const uint8_t timerType,
const uint8_t noTimer,
94 const uint8_t delayTimer,
95 const uint8_t schedule1 = 0xFF,
96 const uint8_t schedule2 = 0xFF,
97 const uint8_t schedule3 = 0xFF,
98 const bool precomma =
true);
100 uint8_t iFeelReportCmd = 0xFF,
101 uint8_t timerCmd = 0xFF,
102 uint8_t configCmd = 0xFF);
104String daysBitmaskToString(uint8_t daysBitmap, uint8_t offset = 0);
108String minsToString(
const uint16_t mins);
109uint8_t sumNibbles(
const uint8_t *
const start,
const uint16_t length,
110 const uint8_t init = 0);
111uint8_t sumNibbles(
const uint64_t data,
const uint8_t count = 16,
112 const uint8_t init = 0,
const bool nibbleonly =
true);
113uint16_t
sumBytes(
const uint64_t data,
const uint8_t count = 8,
114 const uint8_t init = 0,
const bool byteonly =
true);
115uint8_t bcdToUint8(
const uint8_t bcd);
116uint8_t uint8ToBcd(
const uint8_t integer);
117bool getBit(
const uint64_t data,
const uint8_t position,
118 const uint8_t size = 64);
119bool getBit(
const uint8_t data,
const uint8_t position);
120#define GETBIT8(a, b) ((a) & (static_cast<uint8_t>(1) << (b)))
121#define GETBIT16(a, b) ((a) & (static_cast<uint16_t>(1) << (b)))
122#define GETBIT32(a, b) ((a) & (static_cast<uint32_t>(1) << (b)))
123#define GETBIT64(a, b) ((a) & (static_cast<uint64_t>(1) << (b)))
124#define GETBITS8(data, offset, size) \
125 (((data) & ((static_cast<uint8_t>(UINT8_MAX) >> (8 - (size))) << \
126 (offset))) >> (offset))
127#define GETBITS16(data, offset, size) \
128 (((data) & ((static_cast<uint16_t>(UINT16_MAX) >> (16 - (size))) << \
129 (offset))) >> (offset))
130#define GETBITS32(data, offset, size) \
131 (((data) & ((static_cast<uint32_t>(UINT32_MAX) >> (32 - (size))) << \
132 (offset))) >> (offset))
133#define GETBITS64(data, offset, size) \
134 (((data) & ((static_cast<uint64_t>(UINT64_MAX) >> (64 - (size))) << \
135 (offset))) >> (offset))
136uint64_t setBit(
const uint64_t data,
const uint8_t position,
137 const bool on =
true,
const uint8_t size = 64);
138uint8_t setBit(
const uint8_t data,
const uint8_t position,
139 const bool on =
true);
140void setBit(uint8_t *
const data,
const uint8_t position,
141 const bool on =
true);
142void setBit(uint32_t *
const data,
const uint8_t position,
143 const bool on =
true);
144void setBit(uint64_t *
const data,
const uint8_t position,
145 const bool on =
true);
146void setBits(uint8_t *
const dst,
const uint8_t offset,
const uint8_t nbits,
148void setBits(uint32_t *
const dst,
const uint8_t offset,
const uint8_t nbits,
149 const uint32_t data);
150void setBits(uint64_t *
const dst,
const uint8_t offset,
const uint8_t nbits,
151 const uint64_t data);
152uint8_t * invertBytePairs(uint8_t *ptr,
const uint16_t length);
153bool checkInvertedBytePairs(
const uint8_t *
const ptr,
const uint16_t length);
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition IRremoteESP8266.h:1036
std::string String
Definition IRremoteESP8266.h:1564
uint8_t sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init)
Sum all the bytes of an array and return the least significant 8-bits of the result.
Definition IRutils.cpp:451
String resultToHumanReadableBasic(const decode_results *const results)
Dump out the decode_results structure into a human readable format.
Definition IRutils.cpp:398
decode_type_t strToDecodeType(const char *str)
Convert a C-style string to a decode_type_t.
Definition IRutils.cpp:120
String resultToSourceCode(const decode_results *const results)
Return a String containing the key values of a decode_results structure in a C/C++ code style format.
Definition IRutils.cpp:252
float celsiusToFahrenheit(const float deg)
Convert degrees Celsius to degrees Fahrenheit.
Definition IRutils.cpp:526
uint64_t invertBits(const uint64_t data, const uint16_t nbits)
Invert/Flip the bits in an Integer.
Definition IRutils.cpp:515
String int64ToString(int64_t input, uint8_t base=10)
Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle pr...
Definition IRutils.cpp:97
String resultToHexidecimal(const decode_results *const result)
Convert the decode_results structure's value/state to simple hexadecimal.
Definition IRutils.cpp:378
const uint8_t kHighNibble
Definition IRutils.h:19
uint16_t countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)
Count the number of bits of a certain type in an array.
Definition IRutils.cpp:478
void serialPrintUint64(uint64_t input, uint8_t base=10)
Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long long...
Definition IRutils.cpp:112
uint64_t reverseBits(uint64_t input, uint16_t nbits)
Reverse the order of the requested least significant nr. of bits.
Definition IRutils.cpp:46
uint16_t * resultToRawArray(const decode_results *const decode)
Convert a decode_results into an array suitable for sendRaw().
Definition IRutils.cpp:427
const uint8_t kModeBitsSize
Definition IRutils.h:20
bool hasACState(const decode_type_t protocol)
Does the given protocol use a complex state as part of the decode?
Definition IRutils.cpp:167
String uint64ToString(uint64_t input, uint8_t base=10)
Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle...
Definition IRutils.cpp:66
String typeToString(const decode_type_t protocol, const bool isRepeat=false)
Convert a protocol type (enum etc) to a human readable string.
Definition IRutils.cpp:141
float fahrenheitToCelsius(const float deg)
Convert degrees Fahrenheit to degrees Celsius.
Definition IRutils.cpp:529
const uint8_t kNibbleSize
Definition IRutils.h:17
uint16_t getCorrectedRawLength(const decode_results *const results)
Return the corrected length of a 'raw' format array structure after over-large values are converted i...
Definition IRutils.cpp:238
uint8_t xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Calculate a rolling XOR of all the bytes of an array.
Definition IRutils.cpp:464
const uint8_t kLowNibble
Definition IRutils.h:18
String resultToTimingInfo(const decode_results *const results)
Dump out the decode_results structure.
Definition IRutils.cpp:346
Results returned from the decoder.
Definition IRrecv.h:101
Namespace for covering common functions & procedures for advancd protocol handlers.
Definition IRutils.cpp:531
String channelToString(const uint8_t channel)
Create a String of human output for the given channel e.g. "[CH#0]".
Definition IRutils.cpp:1030
String htmlEscape(const String unescaped)
Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.
Definition IRutils.cpp:1092
String msToString(uint32_t const msecs)
Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds...
Definition IRutils.cpp:1124
String irCommandTypeToString(uint8_t irCommandType, uint8_t acControlCmd, uint8_t iFeelReportCmd, uint8_t timerCmd, uint8_t configCmd)
Create a String of human output for the given command type e.g. "IFeel Report".
Definition IRutils.cpp:1048
bool getBit(const uint64_t data, const uint8_t position, const uint8_t size)
Return the value of positionth bit of an Integer.
Definition IRutils.cpp:1236
String dayToString(const uint8_t day_of_week, const int8_t offset)
Create a String of the 3-letter day of the week from a numerical day of the week. e....
Definition IRutils.cpp:824
String modelToStr(const decode_type_t protocol, const int16_t model)
Generate the model string for a given Protocol/Model pair.
Definition IRutils.cpp:601
uint8_t lowLevelSanityCheck(void)
Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler ope...
Definition IRutils.cpp:1410