7#define __STDC_LIMIT_MACROS
19uint64_t
reverseBits(uint64_t input, uint16_t nbits);
23 const bool isRepeat =
false);
32uint8_t
sumBytes(
const uint8_t *
const start,
const uint16_t length,
33 const uint8_t init = 0);
34uint8_t
xorBytes(
const uint8_t *
const start,
const uint16_t length,
35 const uint8_t init = 0);
36uint16_t
countBits(
const uint8_t *
const start,
const uint16_t length,
37 const bool ones =
true,
const uint16_t init = 0);
38uint16_t
countBits(
const uint64_t data,
const uint8_t length,
39 const bool ones =
true,
const uint16_t init = 0);
40uint64_t
invertBits(
const uint64_t data,
const uint16_t nbits);
48 const bool precomma =
true);
50 const bool precomma =
true);
52 const bool precomma =
true);
54 const bool precomma =
true);
57 const bool precomma =
true);
59 const bool precomma =
true);
61 const bool precomma =
true,
62 const bool isSensorTemp =
false);
64 const bool precomma =
true,
65 const bool isSensorTemp =
false);
67 const uint8_t cool,
const uint8_t heat,
68 const uint8_t dry,
const uint8_t fan);
70 const uint8_t low,
const uint8_t automatic,
71 const uint8_t quiet,
const uint8_t medium,
72 const uint8_t maximum = 0xFF,
73 const uint8_t medium_high = 0xFF);
75 const uint8_t maxleft,
const uint8_t left,
77 const uint8_t right,
const uint8_t maxright,
79 const uint8_t leftright,
const uint8_t rightleft,
80 const uint8_t threed,
const uint8_t wide);
82 const uint8_t highest,
const uint8_t high,
83 const uint8_t uppermiddle,
85 const uint8_t lowermiddle,
86 const uint8_t low,
const uint8_t lowest,
87 const uint8_t off,
const uint8_t swing,
88 const uint8_t breeze,
const uint8_t circulate);
90 const bool precomma =
true);
92 const uint8_t delayTimer,
93 const uint8_t schedule1 = 0xFF,
94 const uint8_t schedule2 = 0xFF,
95 const uint8_t schedule3 = 0xFF,
96 const bool precomma =
true);
98 uint8_t iFeelReportCmd = 0xFF,
99 uint8_t timerCmd = 0xFF,
100 uint8_t configCmd = 0xFF);
107uint8_t
sumNibbles(
const uint8_t *
const start,
const uint16_t length,
108 const uint8_t init = 0);
109uint8_t
sumNibbles(
const uint64_t data,
const uint8_t count = 16,
110 const uint8_t init = 0,
const bool nibbleonly =
true);
111uint16_t
sumBytes(
const uint64_t data,
const uint8_t count = 8,
112 const uint8_t init = 0,
const bool byteonly =
true);
115bool getBit(
const uint64_t data,
const uint8_t position,
116 const uint8_t size = 64);
117bool getBit(
const uint8_t data,
const uint8_t position);
118#define GETBIT8(a, b) ((a) & (static_cast<uint8_t>(1) << (b)))
119#define GETBIT16(a, b) ((a) & (static_cast<uint16_t>(1) << (b)))
120#define GETBIT32(a, b) ((a) & (static_cast<uint32_t>(1) << (b)))
121#define GETBIT64(a, b) ((a) & (static_cast<uint64_t>(1) << (b)))
122#define GETBITS8(data, offset, size) \
123 (((data) & ((static_cast<uint8_t>(UINT8_MAX) >> (8 - (size))) << \
124 (offset))) >> (offset))
125#define GETBITS16(data, offset, size) \
126 (((data) & ((static_cast<uint16_t>(UINT16_MAX) >> (16 - (size))) << \
127 (offset))) >> (offset))
128#define GETBITS32(data, offset, size) \
129 (((data) & ((static_cast<uint32_t>(UINT32_MAX) >> (32 - (size))) << \
130 (offset))) >> (offset))
131#define GETBITS64(data, offset, size) \
132 (((data) & ((static_cast<uint64_t>(UINT64_MAX) >> (64 - (size))) << \
133 (offset))) >> (offset))
134uint64_t
setBit(
const uint64_t data,
const uint8_t position,
135 const bool on =
true,
const uint8_t size = 64);
136uint8_t
setBit(
const uint8_t data,
const uint8_t position,
137 const bool on =
true);
138void setBit(uint8_t *
const data,
const uint8_t position,
139 const bool on =
true);
140void setBit(uint32_t *
const data,
const uint8_t position,
141 const bool on =
true);
142void setBit(uint64_t *
const data,
const uint8_t position,
143 const bool on =
true);
144void setBits(uint8_t *
const dst,
const uint8_t offset,
const uint8_t nbits,
146void setBits(uint32_t *
const dst,
const uint8_t offset,
const uint8_t nbits,
147 const uint32_t data);
148void setBits(uint64_t *
const dst,
const uint8_t offset,
const uint8_t nbits,
149 const uint64_t data);
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition IRremoteESP8266.h:1035
String resultToHumanReadableBasic(const decode_results *const results)
Dump out the decode_results structure into a human readable format.
Definition IRutils.cpp:397
decode_type_t strToDecodeType(const char *str)
Convert a C-style string to a decode_type_t.
Definition IRutils.cpp:119
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:251
float celsiusToFahrenheit(const float deg)
Convert degrees Celsius to degrees Fahrenheit.
Definition IRutils.cpp:525
uint64_t invertBits(const uint64_t data, const uint16_t nbits)
Invert/Flip the bits in an Integer.
Definition IRutils.cpp:514
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:96
String resultToHexidecimal(const decode_results *const result)
Convert the decode_results structure's value/state to simple hexadecimal.
Definition IRutils.cpp:377
const uint8_t kHighNibble
Definition IRutils.h:17
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:477
void serialPrintUint64(uint64_t input, uint8_t base=10)
Print a uint64_t/unsigned long long to stdout (i.e. the console UART). printf() has no portable 64 bi...
Definition IRutils.cpp:111
uint64_t reverseBits(uint64_t input, uint16_t nbits)
Reverse the order of the requested least significant nr. of bits.
Definition IRutils.cpp:45
uint8_t sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Sum all the bytes of an array and return the least significant 8-bits of the result.
Definition IRutils.cpp:450
uint16_t * resultToRawArray(const decode_results *const decode)
Convert a decode_results into an array suitable for sendRaw().
Definition IRutils.cpp:426
const uint8_t kModeBitsSize
Definition IRutils.h:18
bool hasACState(const decode_type_t protocol)
Does the given protocol use a complex state as part of the decode?
Definition IRutils.cpp:166
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:65
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:140
float fahrenheitToCelsius(const float deg)
Convert degrees Fahrenheit to degrees Celsius.
Definition IRutils.cpp:528
const uint8_t kNibbleSize
Definition IRutils.h:15
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:237
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:463
const uint8_t kLowNibble
Definition IRutils.h:16
String resultToTimingInfo(const decode_results *const results)
Dump out the decode_results structure.
Definition IRutils.cpp:345
Results returned from the decoder.
Definition IRrecv.h:89
Namespace for covering common functions & procedures for advancd protocol handlers.
Definition IRutils.h:46
String addModelToString(const decode_type_t protocol, const int16_t model, const bool precomma=true)
Create a String of human output for a given protocol model number. e.g. "Model: JKE".
Definition IRutils.cpp:724
String addBoolToString(const bool value, const String label, const bool precomma=true)
Create a String with a colon separated flag suitable for Humans. e.g. "Power: On".
Definition IRutils.cpp:554
String addFanToString(const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum=0xFF, const uint8_t medium_high=0xFF)
Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)".
Definition IRutils.cpp:843
String channelToString(const uint8_t channel)
Create a String of human output for the given channel e.g. "[CH#0]".
Definition IRutils.cpp:1024
uint64_t setBit(const uint64_t data, const uint8_t position, const bool on=true, const uint8_t size=64)
Return the value of an Integer with the positionth bit changed.
Definition IRutils.cpp:1250
uint8_t sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Sum all the nibbles together in a series of bytes.
Definition IRutils.cpp:1170
String addSwingVToString(const uint8_t position, const uint8_t automatic, const uint8_t highest, const uint8_t high, const uint8_t uppermiddle, const uint8_t middle, const uint8_t lowermiddle, const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate)
Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)".
Definition IRutils.cpp:937
uint8_t uint8ToBcd(const uint8_t integer)
Convert an Integer into a byte of Binary Coded Decimal(BCD).
Definition IRutils.cpp:1220
String addTempToString(const uint16_t degrees, const bool celsius=true, const bool precomma=true, const bool isSensorTemp=false)
Create a String of human output for a given temperature. e.g. "Temp: 25C".
Definition IRutils.cpp:743
String addToggleToString(const bool toggle, const String label, const bool precomma=true)
Create a String with a colon separated toggle flag suitable for Humans. e.g. "Light: Toggle",...
Definition IRutils.cpp:565
String htmlEscape(const String unescaped)
Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.
Definition IRutils.cpp:1086
String addDayToString(const uint8_t day_of_week, const int8_t offset=0, const bool precomma=true)
Create a String of the 3-letter day of the week from a numerical day of the week. e....
Definition IRutils.cpp:806
String addIntToString(const uint16_t value, const String label, const bool precomma=true)
Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".
Definition IRutils.cpp:577
String addModeToString(const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)".
Definition IRutils.cpp:781
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:1118
String addTempFloatToString(const float degrees, const bool celsius=true, const bool precomma=true, const bool isSensorTemp=false)
Create a String of human output for a given temperature. e.g. "Temp: 25.5C".
Definition IRutils.cpp:759
String irCommandTypeToString(uint8_t commandType, uint8_t acControlCmd, uint8_t iFeelReportCmd=0xFF, uint8_t timerCmd=0xFF, uint8_t configCmd=0xFF)
Create a String of human output for the given command type e.g. "IFeel Report".
Definition IRutils.cpp:1042
bool checkInvertedBytePairs(const uint8_t *const ptr, const uint16_t length)
Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/prev...
Definition IRutils.cpp:1382
void setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
Alter an uint8_t value by overwriting an arbitrary given number of bits.
Definition IRutils.cpp:1315
String daysBitmaskToString(uint8_t daysBitmap, uint8_t offset=0)
Create a String of the 3-letter day of the week bitmap.
Definition IRutils.cpp:1068
bool getBit(const uint64_t data, const uint8_t position, const uint8_t size=64)
Return the value of positionth bit of an Integer.
Definition IRutils.cpp:1230
String addLabeledString(const String value, const String label, const bool precomma=true)
Create a String with a colon separated "label: value" pair suitable for Humans.
Definition IRutils.cpp:537
String addTimerModeToString(const uint8_t timerType, const uint8_t noTimer, const uint8_t delayTimer, const uint8_t schedule1=0xFF, const uint8_t schedule2=0xFF, const uint8_t schedule3=0xFF, const bool precomma=true)
Create a String of human output for the given timer setting. e.g. "Timer Mode: 2 (Schedule 1)".
Definition IRutils.cpp:993
String addSignedIntToString(const int16_t value, const String label, const bool precomma=true)
Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".
Definition IRutils.cpp:589
uint8_t * invertBytePairs(uint8_t *ptr, const uint16_t length)
Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previ...
Definition IRutils.cpp:1367
String dayToString(const uint8_t day_of_week, const int8_t offset=0)
Create a String of the 3-letter day of the week from a numerical day of the week. e....
Definition IRutils.cpp:823
String modelToStr(const decode_type_t protocol, const int16_t model)
Generate the model string for a given Protocol/Model pair.
Definition IRutils.cpp:600
String addSwingHToString(const uint8_t position, const uint8_t automatic, const uint8_t maxleft, const uint8_t left, const uint8_t middle, const uint8_t right, const uint8_t maxright, const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide)
Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)".
Definition IRutils.cpp:878
String minsToString(const uint16_t mins)
Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59".
Definition IRutils.cpp:1155
uint8_t bcdToUint8(const uint8_t bcd)
Convert a byte of Binary Coded Decimal(BCD) into an Integer.
Definition IRutils.cpp:1212
uint8_t lowLevelSanityCheck(void)
Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler ope...
Definition IRutils.cpp:1404