IRremoteESP8266
Loading...
Searching...
No Matches
ir_MitsubishiHeavy.h
Go to the documentation of this file.
1// Copyright 2019 David Conran
2
12
13// Supports:
14// Brand: Mitsubishi Heavy Industries, Model: RLA502A700B remote (152 bit)
15// Brand: Mitsubishi Heavy Industries, Model: SRKxxZM-S A/C (152 bit)
16// Brand: Mitsubishi Heavy Industries, Model: SRKxxZMXA-S A/C (152 bit)
17// Brand: Mitsubishi Heavy Industries, Model: RKX502A001C remote (88 bit)
18// Brand: Mitsubishi Heavy Industries, Model: SRKxxZJ-S A/C (88 bit)
19
20#ifndef IR_MITSUBISHIHEAVY_H_
21#define IR_MITSUBISHIHEAVY_H_
22
23#ifndef UNIT_TEST
24#include <Arduino.h>
25#endif
26#include "IRremoteESP8266.h"
27#include "IRsend.h"
28#ifdef UNIT_TEST
29#include "IRsend_test.h"
30#endif
31
35 struct {
36 // Byte 0~4
37 uint8_t Sig[5];
38 // Byte 5
39 uint8_t Mode :3;
40 uint8_t Power :1;
41 uint8_t :1;
42 uint8_t Clean :1;
43 uint8_t Filter:1;
44 uint8_t :1;
45 // Byte 6
46 uint8_t :8;
47 // Byte 7
48 uint8_t Temp :4;
49 uint8_t :4;
50 // Byte 8
51 uint8_t :8;
52 // Byte 9
53 uint8_t Fan :4;
54 uint8_t :4;
55 // Byte 10
56 uint8_t :8;
57 // Byte 11
58 uint8_t :1;
59 uint8_t Three :1;
60 uint8_t :2;
61 uint8_t D :1; // binding with "Three"
62 uint8_t SwingV :3;
63 // Byte 12
64 uint8_t :8;
65 // Byte 13
66 uint8_t SwingH :4;
67 uint8_t :4;
68 // Byte 14
69 uint8_t :8;
70 // Byte 15
71 uint8_t :6;
72 uint8_t Night :1;
73 uint8_t Silent :1;
74 };
75};
76
77// Constants.
78const uint8_t kMitsubishiHeavySigLength = 5;
79
80// ZMS (152 bit)
82 0xAD, 0x51, 0x3C, 0xE5, 0x1A};
83
84const uint8_t kMitsubishiHeavyAuto = 0; // 0b000
85const uint8_t kMitsubishiHeavyCool = 1; // 0b001
86const uint8_t kMitsubishiHeavyDry = 2; // 0b010
87const uint8_t kMitsubishiHeavyFan = 3; // 0b011
88const uint8_t kMitsubishiHeavyHeat = 4; // 0b100
89
90const uint8_t kMitsubishiHeavyMinTemp = 17; // 17C
91const uint8_t kMitsubishiHeavyMaxTemp = 31; // 31C
92
93const uint8_t kMitsubishiHeavy152FanAuto = 0x0; // 0b0000
94const uint8_t kMitsubishiHeavy152FanLow = 0x1; // 0b0001
95const uint8_t kMitsubishiHeavy152FanMed = 0x2; // 0b0010
96const uint8_t kMitsubishiHeavy152FanHigh = 0x3; // 0b0011
97const uint8_t kMitsubishiHeavy152FanMax = 0x4; // 0b0100
98const uint8_t kMitsubishiHeavy152FanEcono = 0x6; // 0b0110
99const uint8_t kMitsubishiHeavy152FanTurbo = 0x8; // 0b1000
100
101const uint8_t kMitsubishiHeavy152SwingVAuto = 0; // 0b000
102const uint8_t kMitsubishiHeavy152SwingVHighest = 1; // 0b001
103const uint8_t kMitsubishiHeavy152SwingVHigh = 2; // 0b010
104const uint8_t kMitsubishiHeavy152SwingVMiddle = 3; // 0b011
105const uint8_t kMitsubishiHeavy152SwingVLow = 4; // 0b100
106const uint8_t kMitsubishiHeavy152SwingVLowest = 5; // 0b101
107const uint8_t kMitsubishiHeavy152SwingVOff = 6; // 0b110
108
109const uint8_t kMitsubishiHeavy152SwingHAuto = 0; // 0b0000
110const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1; // 0b0001
111const uint8_t kMitsubishiHeavy152SwingHLeft = 2; // 0b0010
112const uint8_t kMitsubishiHeavy152SwingHMiddle = 3; // 0b0011
113const uint8_t kMitsubishiHeavy152SwingHRight = 4; // 0b0100
114const uint8_t kMitsubishiHeavy152SwingHRightMax = 5; // 0b0101
115const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6; // 0b0110
116const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7; // 0b0111
117const uint8_t kMitsubishiHeavy152SwingHOff = 8; // 0b1000
118
122 struct {
123 // Byte 0~4
124 uint8_t Sig[5];
125 // Byte 5
126 uint8_t :1;
127 uint8_t SwingV5 :1;
128 uint8_t SwingH1 :2;
129 uint8_t :1;
130 uint8_t Clean :1;
131 uint8_t SwingH2 :2;
132 // Byte 6
133 uint8_t :8;
134 // Byte 7
135 uint8_t :3;
136 uint8_t SwingV7 :2;
137 uint8_t Fan :3;
138 // Byte 8
139 uint8_t :8;
140 // Byte 9
141 uint8_t Mode :3;
142 uint8_t Power :1;
143 uint8_t Temp :4;
144 };
145};
146
147// ZJS (88 bit)
149 0xAD, 0x51, 0x3C, 0xD9, 0x26};
150
151const uint8_t kMitsubishiHeavy88SwingHSize = 2; // Bits (per offset)
152const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000;
153const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000;
154const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001;
155const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101;
156const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001;
157const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101;
158const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010;
161const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110;
162
163const uint8_t kMitsubishiHeavy88FanAuto = 0; // 0b000
164const uint8_t kMitsubishiHeavy88FanLow = 2; // 0b010
165const uint8_t kMitsubishiHeavy88FanMed = 3; // 0b011
166const uint8_t kMitsubishiHeavy88FanHigh = 4; // 0b100
167const uint8_t kMitsubishiHeavy88FanTurbo = 6; // 0b110
168const uint8_t kMitsubishiHeavy88FanEcono = 7; // 0b111
170
171 // Mask 0b111
172const uint8_t kMitsubishiHeavy88SwingVOff = 0b000; // 0
173const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100; // 4
174const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110; // 6
175const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001; // 1
176const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011; // 3
177const uint8_t kMitsubishiHeavy88SwingVLow = 0b101; // 5
178const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111; // 7
179
180
181// Classes
182
185 public:
186 explicit IRMitsubishiHeavy152Ac(const uint16_t pin,
187 const bool inverted = false,
188 const bool use_modulation = true);
189 void stateReset(void);
190#if SEND_MITSUBISHIHEAVY
191 void send(const uint16_t repeat = kMitsubishiHeavy152MinRepeat);
196 int8_t calibrate(void) { return _irsend.calibrate(); }
197#endif // SEND_MITSUBISHIHEAVY
198 void begin(void);
199 void on(void);
200 void off(void);
201
202 void setPower(const bool on);
203 bool getPower(void) const;
204
205 void setTemp(const uint8_t temp);
206 uint8_t getTemp(void) const;
207
208 void setFan(const uint8_t fan);
209 uint8_t getFan(void) const;
210
211 void setMode(const uint8_t mode);
212 uint8_t getMode(void) const;
213
214 void setSwingVertical(const uint8_t pos);
215 uint8_t getSwingVertical(void) const;
216 void setSwingHorizontal(const uint8_t pos);
217 uint8_t getSwingHorizontal(void) const;
218
219 void setNight(const bool on);
220 bool getNight(void) const;
221
222 void set3D(const bool on);
223 bool get3D(void) const;
224
225 void setSilent(const bool on);
226 bool getSilent(void) const;
227
228 void setFilter(const bool on);
229 bool getFilter(void) const;
230
231 void setClean(const bool on);
232 bool getClean(void) const;
233
234 void setTurbo(const bool on);
235 bool getTurbo(void) const;
236
237 void setEcono(const bool on);
238 bool getEcono(void) const;
239
240 uint8_t* getRaw(void);
241 void setRaw(const uint8_t* data);
242
243 static bool checkZmsSig(const uint8_t *state);
244 static bool validChecksum(
245 const uint8_t *state,
246 const uint16_t length = kMitsubishiHeavy152StateLength);
247 static uint8_t convertMode(const stdAc::opmode_t mode);
248 static uint8_t convertFan(const stdAc::fanspeed_t speed);
249 static uint8_t convertSwingV(const stdAc::swingv_t position);
250 static uint8_t convertSwingH(const stdAc::swingh_t position);
251 static stdAc::opmode_t toCommonMode(const uint8_t mode);
252 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
253 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
254 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
255 stdAc::state_t toCommon(void) const;
256 String toString(void) const;
257#ifndef UNIT_TEST
258
259 private:
261#else // UNIT_TEST
263 IRsendTest _irsend;
265#endif // UNIT_TEST
267 void checksum(void);
268};
269
272 public:
273 explicit IRMitsubishiHeavy88Ac(const uint16_t pin,
274 const bool inverted = false,
275 const bool use_modulation = true);
276 void stateReset(void);
277#if SEND_MITSUBISHIHEAVY
278 void send(const uint16_t repeat = kMitsubishiHeavy88MinRepeat);
283 int8_t calibrate(void) { return _irsend.calibrate(); }
284#endif // SEND_MITSUBISHIHEAVY
285 void begin(void);
286 void on(void);
287 void off(void);
288
289 void setPower(const bool on);
290 bool getPower(void) const;
291
292 void setTemp(const uint8_t temp);
293 uint8_t getTemp(void) const;
294
295 void setFan(const uint8_t fan);
296 uint8_t getFan(void) const;
297
298 void setMode(const uint8_t mode);
299 uint8_t getMode(void) const;
300
301 void setSwingVertical(const uint8_t pos);
302 uint8_t getSwingVertical(void) const;
303 void setSwingHorizontal(const uint8_t pos);
304 uint8_t getSwingHorizontal(void) const;
305
306 void setTurbo(const bool on);
307 bool getTurbo(void) const;
308
309 void setEcono(const bool on);
310 bool getEcono(void) const;
311
312 void set3D(const bool on);
313 bool get3D(void) const;
314
315 void setClean(const bool on);
316 bool getClean(void) const;
317
318 uint8_t* getRaw(void);
319 void setRaw(const uint8_t* data);
320
321 static bool checkZjsSig(const uint8_t *state);
322 static bool validChecksum(
323 const uint8_t *state,
324 const uint16_t length = kMitsubishiHeavy88StateLength);
325 static uint8_t convertMode(const stdAc::opmode_t mode);
326 static uint8_t convertFan(const stdAc::fanspeed_t speed);
327 static uint8_t convertSwingV(const stdAc::swingv_t position);
328 static uint8_t convertSwingH(const stdAc::swingh_t position);
329 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
330 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
331 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
332 stdAc::state_t toCommon(void) const;
333 String toString(void) const;
334#ifndef UNIT_TEST
335
336 private:
338#else // UNIT_TEST
340 IRsendTest _irsend;
342#endif // UNIT_TEST
344 void checksum(void);
345};
346#endif // IR_MITSUBISHIHEAVY_H_
const uint16_t kMitsubishiHeavy152StateLength
Definition IRremoteESP8266.h:1356
const uint16_t kMitsubishiHeavy88StateLength
Definition IRremoteESP8266.h:1353
const uint16_t kMitsubishiHeavy152MinRepeat
Definition IRremoteESP8266.h:1358
const uint16_t kMitsubishiHeavy88MinRepeat
Definition IRremoteESP8266.h:1355
std::string String
Definition IRremoteESP8266.h:1564
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition ir_MitsubishiHeavy.h:184
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_MitsubishiHeavy.cpp:385
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_MitsubishiHeavy.cpp:342
void setPower(const bool on)
Change the power setting.
Definition ir_MitsubishiHeavy.cpp:125
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_MitsubishiHeavy.cpp:97
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:271
void checksum(void)
Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
Definition ir_MitsubishiHeavy.cpp:321
IRsend _irsend
Instance of the IR send class.
Definition ir_MitsubishiHeavy.h:260
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:284
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_MitsubishiHeavy.cpp:106
bool getSilent(void) const
Get the Silent (Quiet) mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:253
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_MitsubishiHeavy.cpp:456
bool getTurbo(void) const
Get the Turbo mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:292
static bool checkZmsSig(const uint8_t *state)
Verify the given state has a ZM-S signature.
Definition ir_MitsubishiHeavy.cpp:313
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:174
void on(void)
Set the requested power state of the A/C to on.
Definition ir_MitsubishiHeavy.cpp:118
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_MitsubishiHeavy.h:196
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_MitsubishiHeavy.cpp:413
void setNight(const bool on)
Set the Night (Sleep) mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:220
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_MitsubishiHeavy.cpp:482
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_MitsubishiHeavy.cpp:146
void setSwingHorizontal(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:208
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_MitsubishiHeavy.cpp:113
void off(void)
Set the requested power state of the A/C to off.
Definition ir_MitsubishiHeavy.cpp:121
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_MitsubishiHeavy.cpp:370
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_MitsubishiHeavy.cpp:190
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_MitsubishiHeavy.cpp:400
uint8_t getSwingHorizontal(void) const
Get the Horizontal Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:214
bool get3D(void) const
Get the 3D mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:241
void setFilter(const bool on)
Set the Filter mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:259
void set3D(const bool on)
Set the 3D mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:232
void setEcono(const bool on)
Set the Economical mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:298
void setSilent(const bool on)
Set the Silent (Quiet) mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:247
uint8_t getSwingVertical(void) const
Get the Vertical Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:202
Mitsubishi152Protocol _
Definition ir_MitsubishiHeavy.h:266
static bool validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)
Verify the checksum is valid for a given state.
Definition ir_MitsubishiHeavy.cpp:331
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition ir_MitsubishiHeavy.cpp:152
void send(const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
Send the current internal state as an IR message.
Definition ir_MitsubishiHeavy.cpp:90
bool getClean(void) const
Get the Clean mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:278
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_MitsubishiHeavy.cpp:137
bool getEcono(void) const
Get the Economical mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:306
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_MitsubishiHeavy.cpp:355
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_MitsubishiHeavy.cpp:442
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_MitsubishiHeavy.cpp:168
bool getNight(void) const
Get the Night (Sleep) mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:226
void setSwingVertical(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:196
bool getFilter(void) const
Get the Filter mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:265
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition ir_MitsubishiHeavy.cpp:427
bool getPower(void) const
Get the value of the current power setting.
Definition ir_MitsubishiHeavy.cpp:131
void begin(void)
Set up hardware to be able to send a message.
Definition ir_MitsubishiHeavy.cpp:85
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition ir_MitsubishiHeavy.h:271
Mitsubishi88Protocol _
Definition ir_MitsubishiHeavy.h:343
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_MitsubishiHeavy.h:283
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_MitsubishiHeavy.cpp:887
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_MitsubishiHeavy.cpp:901
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:653
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_MitsubishiHeavy.cpp:578
IRsend _irsend
Instance of the IR send class.
Definition ir_MitsubishiHeavy.h:337
bool getPower(void) const
Get the value of the current power setting.
Definition ir_MitsubishiHeavy.cpp:611
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:724
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_MitsubishiHeavy.cpp:647
void on(void)
Set the requested power state of the A/C to on.
Definition ir_MitsubishiHeavy.cpp:598
void off(void)
Set the requested power state of the A/C to off.
Definition ir_MitsubishiHeavy.cpp:601
bool getTurbo(void) const
Get the Turbo mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:732
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition ir_MitsubishiHeavy.cpp:632
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_MitsubishiHeavy.cpp:669
bool getEcono(void) const
Get the Economical mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:746
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:767
uint8_t getSwingVertical(void) const
Get the Vertical Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:692
static bool checkZjsSig(const uint8_t *state)
Verify the given state has a ZJ-S signature.
Definition ir_MitsubishiHeavy.cpp:780
bool getClean(void) const
Get the Clean mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:773
void send(const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
Send the current internal state as an IR message.
Definition ir_MitsubishiHeavy.cpp:571
void setEcono(const bool on)
Set the Economical mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:738
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_MitsubishiHeavy.cpp:843
uint8_t getSwingHorizontal(void) const
Get the Horizontal Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:718
void setSwingVertical(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:675
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_MitsubishiHeavy.cpp:927
void begin(void)
Set up hardware to be able to send a message.
Definition ir_MitsubishiHeavy.cpp:566
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_MitsubishiHeavy.cpp:617
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_MitsubishiHeavy.cpp:858
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_MitsubishiHeavy.cpp:626
static bool validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)
Verify the checksum is valid for a given state.
Definition ir_MitsubishiHeavy.cpp:798
void setSwingHorizontal(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:698
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_MitsubishiHeavy.cpp:828
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_MitsubishiHeavy.cpp:593
void setPower(const bool on)
Change the power setting.
Definition ir_MitsubishiHeavy.cpp:605
void checksum(void)
Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
Definition ir_MitsubishiHeavy.cpp:788
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_MitsubishiHeavy.cpp:813
bool get3D(void) const
Get the 3D mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:761
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_MitsubishiHeavy.cpp:806
void set3D(const bool on)
Set the 3D mode of the A/C.
Definition ir_MitsubishiHeavy.cpp:752
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition ir_MitsubishiHeavy.cpp:872
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_MitsubishiHeavy.cpp:586
Class for sending all basic IR protocols.
Definition IRsend.h:249
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:209
const uint8_t kMitsubishiHeavyZjsSig[kMitsubishiHeavySigLength]
Definition ir_MitsubishiHeavy.h:148
const uint8_t kMitsubishiHeavy152SwingVLowest
Definition ir_MitsubishiHeavy.h:106
const uint8_t kMitsubishiHeavyHeat
Definition ir_MitsubishiHeavy.h:88
const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength]
Definition ir_MitsubishiHeavy.h:81
const uint8_t kMitsubishiHeavy152SwingHLeft
Definition ir_MitsubishiHeavy.h:111
const uint8_t kMitsubishiHeavyAuto
Definition ir_MitsubishiHeavy.h:84
const uint8_t kMitsubishiHeavy152SwingHOff
Definition ir_MitsubishiHeavy.h:117
const uint8_t kMitsubishiHeavy152SwingHLeftRight
Definition ir_MitsubishiHeavy.h:116
const uint8_t kMitsubishiHeavy88FanTurbo
Definition ir_MitsubishiHeavy.h:167
const uint8_t kMitsubishiHeavy152SwingVAuto
Definition ir_MitsubishiHeavy.h:101
const uint8_t kMitsubishiHeavy88SwingHLeft
Definition ir_MitsubishiHeavy.h:155
const uint8_t kMitsubishiHeavy88SwingHRight
Definition ir_MitsubishiHeavy.h:157
const uint8_t kMitsubishiHeavy152SwingHRightLeft
Definition ir_MitsubishiHeavy.h:115
const uint8_t kMitsubishiHeavy88SwingHSize
Definition ir_MitsubishiHeavy.h:151
const uint8_t kMitsubishiHeavy152FanHigh
Definition ir_MitsubishiHeavy.h:96
const uint8_t kMitsubishiHeavyMaxTemp
Definition ir_MitsubishiHeavy.h:91
const uint8_t kMitsubishiHeavy88SwingHOff
Definition ir_MitsubishiHeavy.h:152
const uint8_t kMitsubishiHeavy152SwingVHighest
Definition ir_MitsubishiHeavy.h:102
const uint8_t kMitsubishiHeavyFan
Definition ir_MitsubishiHeavy.h:87
const uint8_t kMitsubishiHeavyCool
Definition ir_MitsubishiHeavy.h:85
const uint8_t kMitsubishiHeavy88FanAuto
Definition ir_MitsubishiHeavy.h:163
const uint8_t kMitsubishiHeavy88SwingVAuto
Definition ir_MitsubishiHeavy.h:173
const uint8_t kMitsubishiHeavy88SwingVLowest
Definition ir_MitsubishiHeavy.h:178
const uint8_t kMitsubishiHeavyDry
Definition ir_MitsubishiHeavy.h:86
const uint8_t kMitsubishiHeavy152FanTurbo
Definition ir_MitsubishiHeavy.h:99
const uint8_t kMitsubishiHeavy88SwingHMiddle
Definition ir_MitsubishiHeavy.h:156
const uint8_t kMitsubishiHeavy88SwingHLeftRight
Definition ir_MitsubishiHeavy.h:160
const uint8_t kMitsubishiHeavy88SwingHLeftMax
Definition ir_MitsubishiHeavy.h:154
const uint8_t kMitsubishiHeavy88SwingHRightMax
Definition ir_MitsubishiHeavy.h:158
const uint8_t kMitsubishiHeavy88FanLow
Definition ir_MitsubishiHeavy.h:164
const uint8_t kMitsubishiHeavy152SwingHLeftMax
Definition ir_MitsubishiHeavy.h:110
const uint8_t kMitsubishiHeavy152SwingVHigh
Definition ir_MitsubishiHeavy.h:103
const uint8_t kMitsubishiHeavy152FanMax
Definition ir_MitsubishiHeavy.h:97
const uint8_t kMitsubishiHeavy88FanHigh
Definition ir_MitsubishiHeavy.h:166
const uint8_t kMitsubishiHeavy88SwingHRightLeft
Definition ir_MitsubishiHeavy.h:159
const uint8_t kMitsubishiHeavy88FanMed
Definition ir_MitsubishiHeavy.h:165
const uint8_t kMitsubishiHeavy88FanEcono
Definition ir_MitsubishiHeavy.h:168
const uint8_t kMitsubishiHeavy152SwingVOff
Definition ir_MitsubishiHeavy.h:107
const uint8_t kMitsubishiHeavy152SwingHAuto
Definition ir_MitsubishiHeavy.h:109
const uint8_t kMitsubishiHeavy88SwingHAuto
Definition ir_MitsubishiHeavy.h:153
const uint8_t kMitsubishiHeavy152FanMed
Definition ir_MitsubishiHeavy.h:95
const uint8_t kMitsubishiHeavy152FanEcono
Definition ir_MitsubishiHeavy.h:98
const uint8_t kMitsubishiHeavy152FanLow
Definition ir_MitsubishiHeavy.h:94
const uint8_t kMitsubishiHeavy88SwingVOff
Definition ir_MitsubishiHeavy.h:172
const uint8_t kMitsubishiHeavy152SwingVLow
Definition ir_MitsubishiHeavy.h:105
const uint8_t kMitsubishiHeavy88SwingVLow
Definition ir_MitsubishiHeavy.h:177
const uint8_t kMitsubishiHeavy88SwingVHighest
Definition ir_MitsubishiHeavy.h:174
const uint8_t kMitsubishiHeavy88SwingH3D
Definition ir_MitsubishiHeavy.h:161
const uint8_t kMitsubishiHeavy88SwingVByte5Size
Definition ir_MitsubishiHeavy.h:169
const uint8_t kMitsubishiHeavy152FanAuto
Definition ir_MitsubishiHeavy.h:93
const uint8_t kMitsubishiHeavy152SwingVMiddle
Definition ir_MitsubishiHeavy.h:104
const uint8_t kMitsubishiHeavy152SwingHRightMax
Definition ir_MitsubishiHeavy.h:114
const uint8_t kMitsubishiHeavy88SwingVMiddle
Definition ir_MitsubishiHeavy.h:176
const uint8_t kMitsubishiHeavy152SwingHRight
Definition ir_MitsubishiHeavy.h:113
const uint8_t kMitsubishiHeavySigLength
Definition ir_MitsubishiHeavy.h:78
const uint8_t kMitsubishiHeavy152SwingHMiddle
Definition ir_MitsubishiHeavy.h:112
const uint8_t kMitsubishiHeavy88SwingVHigh
Definition ir_MitsubishiHeavy.h:175
const uint8_t kMitsubishiHeavyMinTemp
Definition ir_MitsubishiHeavy.h:90
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:61
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:49
swingh_t
Common A/C settings for Horizontal Swing.
Definition IRsend.h:100
swingv_t
Common A/C settings for Vertical Swing.
Definition IRsend.h:74
Structure to hold a common A/C state.
Definition IRsend.h:114
Native representation of a Mitsubishi Heavy 152-bit A/C message.
Definition ir_MitsubishiHeavy.h:33
uint8_t Temp
Definition ir_MitsubishiHeavy.h:48
uint8_t Night
Definition ir_MitsubishiHeavy.h:72
uint8_t Fan
Definition ir_MitsubishiHeavy.h:53
uint8_t Mode
Definition ir_MitsubishiHeavy.h:39
uint8_t SwingV
Definition ir_MitsubishiHeavy.h:62
uint8_t Sig[5]
Definition ir_MitsubishiHeavy.h:37
uint8_t SwingH
Definition ir_MitsubishiHeavy.h:66
uint8_t Power
Definition ir_MitsubishiHeavy.h:40
uint8_t Filter
Definition ir_MitsubishiHeavy.h:43
uint8_t D
Definition ir_MitsubishiHeavy.h:61
uint8_t Clean
Definition ir_MitsubishiHeavy.h:42
uint8_t raw[kMitsubishiHeavy152StateLength]
State in code form.
Definition ir_MitsubishiHeavy.h:34
uint8_t Silent
Definition ir_MitsubishiHeavy.h:73
uint8_t Three
Definition ir_MitsubishiHeavy.h:59
Native representation of a Mitsubishi Heavy 88-bit A/C message.
Definition ir_MitsubishiHeavy.h:120
uint8_t Fan
Definition ir_MitsubishiHeavy.h:137
uint8_t SwingH1
Definition ir_MitsubishiHeavy.h:128
uint8_t Clean
Definition ir_MitsubishiHeavy.h:130
uint8_t Power
Definition ir_MitsubishiHeavy.h:142
uint8_t Sig[5]
Definition ir_MitsubishiHeavy.h:124
uint8_t Mode
Definition ir_MitsubishiHeavy.h:141
uint8_t raw[kMitsubishiHeavy88StateLength]
State in code form.
Definition ir_MitsubishiHeavy.h:121
uint8_t SwingV7
Definition ir_MitsubishiHeavy.h:136
uint8_t SwingV5
Definition ir_MitsubishiHeavy.h:127
uint8_t Temp
Definition ir_MitsubishiHeavy.h:143
uint8_t SwingH2
Definition ir_MitsubishiHeavy.h:131