IRremoteIDF
Infrared send & receive for ESP-IDF
Loading...
Searching...
No Matches
ir_Mitsubishi.h
Go to the documentation of this file.
1// Copyright 2009 Ken Shirriff
2// Copyright 2017-2021 David Conran
3// Copyright 2019 Mark Kuchel
4
19
20// Supports:
21// Brand: Mitsubishi, Model: TV (MITSUBISHI)
22// Brand: Mitsubishi, Model: HC3000 Projector (MITSUBISHI2)
23// Brand: Mitsubishi, Model: MS-GK24VA A/C
24// Brand: Mitsubishi, Model: KM14A 0179213 remote
25// Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
26// Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote (MITSUBISHI136)
27// Brand: Mitsubishi Electric, Model: MSH-A24WV A/C (MITSUBISHI112)
28// Brand: Mitsubishi Electric, Model: MUH-A24WV A/C (MITSUBISHI112)
29// Brand: Mitsubishi Electric, Model: KPOA remote (MITSUBISHI112)
30// Brand: Mitsubishi Electric, Model: MLZ-RX5017AS A/C (MITSUBISHI_AC)
31// Brand: Mitsubishi Electric, Model: SG153/M21EDF426 remote (MITSUBISHI_AC)
32// Brand: Mitsubishi Electric, Model: MSZ-GV2519 A/C (MITSUBISHI_AC)
33// Brand: Mitsubishi Electric, Model: RH151/M21ED6426 remote (MITSUBISHI_AC)
34// Brand: Mitsubishi Electric, Model: MSZ-SF25VE3 A/C (MITSUBISHI_AC)
35// Brand: Mitsubishi Electric, Model: SG15D remote (MITSUBISHI_AC)
36// Brand: Mitsubishi Electric, Model: MSZ-ZW4017S A/C (MITSUBISHI_AC)
37// Brand: Mitsubishi Electric, Model: MSZ-FHnnVE A/C (MITSUBISHI_AC)
38// Brand: Mitsubishi Electric, Model: RH151 remote (MITSUBISHI_AC)
39// Brand: Mitsubishi Electric, Model: PAR-FA32MA remote (MITSUBISHI136)
40
41#ifndef IR_MITSUBISHI_H_
42#define IR_MITSUBISHI_H_
43
44#define __STDC_LIMIT_MACROS
45#include <stdint.h>
46#include "IRplatform.h"
47#include "IRremoteESP8266.h"
48#include "IRsend.h"
49#ifdef UNIT_TEST
50#include "IRsend_test.h"
51#endif
52
56 struct {
57 // Byte 0~4
58 uint8_t pad0[5];
59 // Byte 5
60 uint8_t :5;
61 uint8_t Power :1;
62 uint8_t :2;
63 // Byte 6
64 uint8_t :3;
65 uint8_t Mode :3;
66 uint8_t ISee : 1;
67 uint8_t :1;
68 // Byte 7
69 uint8_t Temp :4;
70 uint8_t HalfDegree :1;
71 uint8_t :3;
72 // Byte 8
73 uint8_t :4;
74 uint8_t WideVane:4; // SwingH
75 // Byte 9
76 uint8_t Fan :3;
77 uint8_t Vane :3; // SwingV or VaneRight
78 uint8_t VaneBit :1;
79 uint8_t FanAuto :1;
80 // Byte 10
81 uint8_t Clock :8;
82 // Byte 11
83 uint8_t StopClock :8;
84 // Byte 12
85 uint8_t StartClock:8;
86 // Byte 13
87 uint8_t Timer :3;
88 uint8_t WeeklyTimer :1;
89 uint8_t :4;
90 // Byte 14
91 uint8_t :5;
92 uint8_t Ecocool :1;
93 uint8_t :2;
94 // Byte 15
95 uint8_t DirectIndirect:2;
96 uint8_t AbsenseDetect :1;
97 uint8_t :2;
98 uint8_t iSave10C :1; // i-SAVE:mode=Heat & iSave=on AND 10C on remote
99 uint8_t :2;
100 // Byte 16
101 uint8_t :1;
102 uint8_t NaturalFlow :1;
103 uint8_t :1;
104 uint8_t VaneLeft :3; // SwingV(Left)
105 uint8_t :2;
106 // Byte 17
107 uint8_t Sum :8;
108 };
109};
110
111// Constants
112const uint8_t kMitsubishiAcAuto = 0b100;
113const uint8_t kMitsubishiAcCool = 0b011;
114const uint8_t kMitsubishiAcDry = 0b010;
115const uint8_t kMitsubishiAcHeat = 0b001;
116const uint8_t kMitsubishiAcFan = 0b111;
117const uint8_t kMitsubishiAcFanAuto = 0;
118const uint8_t kMitsubishiAcFanMax = 5;
119const uint8_t kMitsubishiAcFanRealMax = 4;
120const uint8_t kMitsubishiAcFanSilent = 6;
122const float kMitsubishiAcMinTemp = 16.0; // 16C
123const float kMitsubishiAcMaxTemp = 31.0; // 31C
124const uint8_t kMitsubishiAcVaneAuto = 0b000; // Vanes move when AC wants to.
125const uint8_t kMitsubishiAcVaneHighest = 0b001;
126const uint8_t kMitsubishiAcVaneHigh = 0b010;
127const uint8_t kMitsubishiAcVaneMiddle = 0b011;
128const uint8_t kMitsubishiAcVaneLow = 0b100;
129const uint8_t kMitsubishiAcVaneLowest = 0b101;
130const uint8_t kMitsubishiAcVaneSwing = 0b111; // Vanes move all the time.
132const uint8_t kMitsubishiAcWideVaneLeftMax = 0b0001; // 1
133const uint8_t kMitsubishiAcWideVaneLeft = 0b0010; // 2
134const uint8_t kMitsubishiAcWideVaneMiddle = 0b0011; // 3
135const uint8_t kMitsubishiAcWideVaneRight = 0b0100; // 4
136const uint8_t kMitsubishiAcWideVaneRightMax = 0b0101; // 5
137const uint8_t kMitsubishiAcWideVaneWide = 0b0110; // 6
138const uint8_t kMitsubishiAcWideVaneAuto = 0b1000; // 8
139const uint8_t kMitsubishiAcDirectOff = 0b00; // Vanes move when AC wants to.
140const uint8_t kMitsubishiAcIndirect = 0b01;
141const uint8_t kMitsubishiAcDirect = 0b11;
142const uint8_t kMitsubishiAcNoTimer = 0;
143const uint8_t kMitsubishiAcStartTimer = 5;
144const uint8_t kMitsubishiAcStopTimer = 3;
146
150 struct {
151 // Byte 0~4
152 uint8_t pad[5];
153 // Byte 5
154 uint8_t :6;
155 uint8_t Power :1;
156 uint8_t :1;
157 // Byte 6
158 uint8_t Mode :3;
159 uint8_t :1;
160 uint8_t Temp :4;
161 // Byte 7
162 uint8_t :1;
163 uint8_t Fan :2;
164 uint8_t :1;
165 uint8_t SwingV :4;
166 };
167};
168
169const uint8_t kMitsubishi136PowerByte = 5;
170const uint8_t kMitsubishi136MinTemp = 17; // 17C
171const uint8_t kMitsubishi136MaxTemp = 30; // 30C
172const uint8_t kMitsubishi136Fan = 0b000;
173const uint8_t kMitsubishi136Cool = 0b001;
174const uint8_t kMitsubishi136Heat = 0b010;
175const uint8_t kMitsubishi136Auto = 0b011;
176const uint8_t kMitsubishi136Dry = 0b101;
177const uint8_t kMitsubishi136SwingVLowest = 0b0000;
178const uint8_t kMitsubishi136SwingVLow = 0b0001;
179const uint8_t kMitsubishi136SwingVHigh = 0b0010;
180const uint8_t kMitsubishi136SwingVHighest = 0b0011;
181const uint8_t kMitsubishi136SwingVAuto = 0b1100;
182const uint8_t kMitsubishi136FanMin = 0b00;
183const uint8_t kMitsubishi136FanLow = 0b01;
184const uint8_t kMitsubishi136FanMed = 0b10;
185const uint8_t kMitsubishi136FanMax = 0b11;
187
191 struct {
192 // Byte 0~4
193 uint8_t pad0[5];
194 // Byte 5
195 uint8_t :2;
196 uint8_t Power :1;
197 uint8_t :5;
198 // Byte 6
199 uint8_t Mode :3;
200 uint8_t :5;
201 // Byte 7
202 uint8_t Temp :4;
203 uint8_t :4;
204 // Byte 8
205 uint8_t Fan :3;
206 uint8_t SwingV :3;
207 uint8_t :2;
208 // Byte 9~11
209 uint8_t pad1[3];
210 // Byte 12
211 uint8_t :2;
212 uint8_t SwingH :4;
213 uint8_t :2;
214 // Byte 13
215 uint8_t Sum :8;
216 };
217};
218
219const uint8_t kMitsubishi112Cool = 0b011;
220const uint8_t kMitsubishi112Heat = 0b001;
221const uint8_t kMitsubishi112Auto = 0b111;
222const uint8_t kMitsubishi112Dry = 0b010;
223
224const uint8_t kMitsubishi112MinTemp = 16; // 16C
225const uint8_t kMitsubishi112MaxTemp = 31; // 31C
226
227const uint8_t kMitsubishi112FanMin = 0b010;
228const uint8_t kMitsubishi112FanLow = 0b011;
229const uint8_t kMitsubishi112FanMed = 0b101;
230const uint8_t kMitsubishi112FanMax = 0b000;
232const uint8_t kMitsubishi112SwingVLowest = 0b101;
233const uint8_t kMitsubishi112SwingVLow = 0b100;
234const uint8_t kMitsubishi112SwingVMiddle = 0b011;
235const uint8_t kMitsubishi112SwingVHigh = 0b010;
236const uint8_t kMitsubishi112SwingVHighest = 0b001;
237const uint8_t kMitsubishi112SwingVAuto = 0b111;
238
239const uint8_t kMitsubishi112SwingHLeftMax = 0b0001;
240const uint8_t kMitsubishi112SwingHLeft = 0b0010;
241const uint8_t kMitsubishi112SwingHMiddle = 0b0011;
242const uint8_t kMitsubishi112SwingHRight = 0b0100;
243const uint8_t kMitsubishi112SwingHRightMax = 0b0101;
244const uint8_t kMitsubishi112SwingHWide = 0b1000;
245const uint8_t kMitsubishi112SwingHAuto = 0b1100;
246
247// Legacy defines (Deprecated)
248#define MITSUBISHI_AC_VANE_AUTO_MOVE kMitsubishiAcVaneAutoMove
249#define MITSUBISHI_AC_VANE_AUTO kMitsubishiAcVaneAuto
250#define MITSUBISHI_AC_MIN_TEMP kMitsubishiAcMinTemp
251#define MITSUBISHI_AC_MAX_TEMP kMitsubishiAcMaxTemp
252#define MITSUBISHI_AC_HEAT kMitsubishiAcHeat
253#define MITSUBISHI_AC_FAN_SILENT kMitsubishiAcFanSilent
254#define MITSUBISHI_AC_FAN_REAL_MAX kMitsubishiAcFanRealMax
255#define MITSUBISHI_AC_FAN_MAX kMitsubishiAcFanMax
256#define MITSUBISHI_AC_FAN_AUTO kMitsubishiAcFanAuto
257#define MITSUBISHI_AC_DRY kMitsubishiAcDry
258#define MITSUBISHI_AC_COOL kMitsubishiAcCool
259#define MITSUBISHI_AC_AUTO kMitsubishiAcAuto
260
261
266 public:
267 explicit IRMitsubishiAC(const uint16_t pin, const bool inverted = false,
268 const bool use_modulation = true);
269 void stateReset(void);
270 static bool validChecksum(const uint8_t* data);
271#if SEND_MITSUBISHI_AC
272 void send(const uint16_t repeat = kMitsubishiACMinRepeat);
277 int8_t calibrate(void) { return _irsend.calibrate(); }
278#endif // SEND_MITSUBISHI_AC
279 void begin(void);
280 void on(void);
281 void off(void);
282 void setPower(const bool on);
283 bool getPower(void) const;
284 void setTemp(const float degrees);
285 float getTemp(void) const;
286 void setFan(const uint8_t speed);
287 uint8_t getFan(void) const;
288 void setMode(const uint8_t mode);
289 uint8_t getMode(void) const;
290 void setISave10C(const bool state);
291 bool getISave10C(void) const;
292 void setISee(const bool state);
293 bool getISee(void) const;
294 void setDirectIndirect(const uint8_t position);
295 uint8_t getDirectIndirect(void) const;
296 void setEcocool(const bool state);
297 bool getEcocool(void) const;
298 void setAbsenseDetect(const bool state);
299 bool getAbsenseDetect(void) const;
300 void setNaturalFlow(const bool state);
301 bool getNaturalFlow(void) const;
302 void setVane(const uint8_t position); // controls RIGHT vane on some models
303 uint8_t getVane(void) const;
304 void setVaneLeft(const uint8_t position);
305 uint8_t getVaneLeft(void) const;
306 void setWideVane(const uint8_t position);
307 uint8_t getWideVane(void) const;
308 uint8_t* getRaw(void);
309 void setRaw(const uint8_t* data);
310 uint8_t getClock(void) const;
311 void setClock(const uint8_t clock);
312 uint8_t getStartClock(void) const;
313 void setStartClock(const uint8_t clock);
314 uint8_t getStopClock(void) const;
315 void setStopClock(const uint8_t clock);
316 uint8_t getTimer(void) const;
317 void setTimer(const uint8_t timer);
318 bool getWeeklyTimerEnabled(void) const;
319 void setWeeklyTimerEnabled(const bool on);
320 static uint8_t convertMode(const stdAc::opmode_t mode);
321 static uint8_t convertFan(const stdAc::fanspeed_t speed);
322 static uint8_t convertSwingV(const stdAc::swingv_t position);
323 static uint8_t convertSwingH(const stdAc::swingh_t position);
324 static stdAc::opmode_t toCommonMode(const uint8_t mode);
325 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
326 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
327 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
328 stdAc::state_t toCommon(void) const;
329 String toString(void) const;
330#ifndef UNIT_TEST
331
332 private:
334#else // UNIT_TEST
336 IRsendTest _irsend;
338#endif // UNIT_TEST
340 void checksum(void);
341 static uint8_t calculateChecksum(const uint8_t* data);
342};
343
346 public:
347 explicit IRMitsubishi136(const uint16_t pin, const bool inverted = false,
348 const bool use_modulation = true);
349 void stateReset(void);
350#if SEND_MITSUBISHI136
351 void send(const uint16_t repeat = kMitsubishi136MinRepeat);
356 int8_t calibrate(void) { return _irsend.calibrate(); }
357#endif // SEND_MITSUBISHI136
358 void begin(void);
359 static bool validChecksum(const uint8_t* data,
360 const uint16_t len = kMitsubishi136StateLength);
361 void on(void);
362 void off(void);
363 void setPower(const bool on);
364 bool getPower(void) const;
365 void setTemp(const uint8_t degrees);
366 uint8_t getTemp(void) const;
367 void setFan(const uint8_t speed);
368 uint8_t getFan(void) const;
369 void setMode(const uint8_t mode);
370 uint8_t getMode(void) const;
371 void setSwingV(const uint8_t position);
372 uint8_t getSwingV(void) const;
373 void setQuiet(const bool on);
374 bool getQuiet(void) const;
375 uint8_t* getRaw(void);
376 void setRaw(const uint8_t* data);
377 static uint8_t convertMode(const stdAc::opmode_t mode);
378 static uint8_t convertFan(const stdAc::fanspeed_t speed);
379 static uint8_t convertSwingV(const stdAc::swingv_t position);
380 static stdAc::opmode_t toCommonMode(const uint8_t mode);
381 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
382 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
383 stdAc::state_t toCommon(void) const;
384 String toString(void) const;
385#ifndef UNIT_TEST
386
387 private:
389#else // UNIT_TEST
391 IRsendTest _irsend;
393#endif // UNIT_TEST
395 void checksum(void);
396};
397
400 public:
401 explicit IRMitsubishi112(const uint16_t pin, const bool inverted = false,
402 const bool use_modulation = true);
403 void stateReset(void);
404#if SEND_MITSUBISHI112
405 void send(const uint16_t repeat = kMitsubishi112MinRepeat);
410 int8_t calibrate(void) { return _irsend.calibrate(); }
411#endif // SEND_MITSUBISHI112
412 void begin(void);
413 void on(void);
414 void off(void);
415 void setPower(const bool on);
416 bool getPower(void) const;
417 void setTemp(const uint8_t degrees);
418 uint8_t getTemp(void) const;
419 void setFan(const uint8_t speed);
420 uint8_t getFan(void) const;
421 void setMode(const uint8_t mode);
422 uint8_t getMode(void) const;
423 void setSwingV(const uint8_t position);
424 uint8_t getSwingV(void) const;
425 void setSwingH(const uint8_t position);
426 uint8_t getSwingH(void) const;
427 void setQuiet(const bool on);
428 bool getQuiet(void) const;
429 uint8_t* getRaw(void);
430 void setRaw(const uint8_t* data);
431 static uint8_t convertMode(const stdAc::opmode_t mode);
432 static uint8_t convertFan(const stdAc::fanspeed_t speed);
433 static uint8_t convertSwingV(const stdAc::swingv_t position);
434 static uint8_t convertSwingH(const stdAc::swingh_t position);
435 static stdAc::opmode_t toCommonMode(const uint8_t mode);
436 static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
437 static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
438 static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
439 stdAc::state_t toCommon(void) const;
440 String toString(void) const;
441#ifndef UNIT_TEST
442
443 private:
445#else // UNIT_TEST
447 IRsendTest _irsend;
449#endif // UNIT_TEST
451 void checksum(void);
452};
453
454#endif // IR_MITSUBISHI_H_
std::string String
The protocol code builds human readable output with String. On ESP-IDF that is just std::string.
Definition IRplatform.h:21
const uint16_t kMitsubishi136StateLength
Definition IRremoteESP8266.h:1346
const uint16_t kMitsubishiACMinRepeat
Definition IRremoteESP8266.h:1345
const uint16_t kMitsubishi136MinRepeat
Definition IRremoteESP8266.h:1348
const uint16_t kMitsubishi112StateLength
Definition IRremoteESP8266.h:1349
const uint16_t kMitsubishi112MinRepeat
Definition IRremoteESP8266.h:1351
const uint16_t kMitsubishiACStateLength
Definition IRremoteESP8266.h:1343
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition ir_Mitsubishi.h:399
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Mitsubishi.cpp:1434
void setTemp(const uint8_t degrees)
Set the temperature.
Definition ir_Mitsubishi.cpp:1426
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Mitsubishi.cpp:1420
void setPower(const bool on)
Change the power setting.
Definition ir_Mitsubishi.cpp:1414
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Mitsubishi.cpp:1690
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Mitsubishi.cpp:1467
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:1634
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:1648
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Mitsubishi.cpp:1455
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Mitsubishi.cpp:1383
bool getQuiet(void) const
Get the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1545
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Mitsubishi.cpp:1565
uint8_t getSwingV(void) const
Get the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1502
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_Mitsubishi.cpp:1402
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Mitsubishi.cpp:1395
Mitsubishi112Protocol _
Definition ir_Mitsubishi.h:450
void checksum(void)
Calculate the checksum for the current internal state of the remote.
Definition ir_Mitsubishi.cpp:1378
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1609
void send(const uint16_t repeat=kMitsubishi112MinRepeat)
Send the current internal state as an IR message.
Definition ir_Mitsubishi.cpp:1388
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:1579
void setSwingH(const uint8_t position)
Set the Horizontal Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1508
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Mitsubishi.cpp:1370
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1535
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Mitsubishi.cpp:1552
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1621
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:1593
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:1410
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Mitsubishi.cpp:1440
uint8_t getSwingH(void) const
Get the Horizontal Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1528
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Mitsubishi.cpp:1662
void on(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:1407
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Mitsubishi.h:410
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Mitsubishi.cpp:1461
void setSwingV(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1484
IRsend _irsend
Instance of the IR send class.
Definition ir_Mitsubishi.h:444
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition ir_Mitsubishi.h:345
void setSwingV(const uint8_t position)
Set the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1081
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1159
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Mitsubishi.cpp:1058
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Mitsubishi.cpp:1046
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Mitsubishi.cpp:1026
uint8_t getSwingV(void) const
Get the Vertical Swing mode of the A/C.
Definition ir_Mitsubishi.cpp:1098
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:1016
void send(const uint16_t repeat=kMitsubishi136MinRepeat)
Send the current internal state as an IR message.
Definition ir_Mitsubishi.cpp:994
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Mitsubishi.cpp:1119
void setPower(const bool on)
Change the power setting.
Definition ir_Mitsubishi.cpp:1020
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:1145
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Mitsubishi.cpp:1001
static bool validChecksum(const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)
Verify the checksum is valid for a given state.
Definition ir_Mitsubishi.cpp:976
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Mitsubishi.cpp:956
void setQuiet(const bool on)
Set the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1104
void on(void)
Set the requested power state of the A/C to on.
Definition ir_Mitsubishi.cpp:1013
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Mitsubishi.h:356
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Mitsubishi.cpp:1132
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Mitsubishi.cpp:1223
bool getQuiet(void) const
Get the Quiet mode of the A/C.
Definition ir_Mitsubishi.cpp:1112
void checksum(void)
Calculate the checksum for the current internal state of the remote.
Definition ir_Mitsubishi.cpp:966
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Mitsubishi.cpp:1064
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:1172
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Mitsubishi.cpp:1040
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Mitsubishi.cpp:989
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_Mitsubishi.cpp:1008
void setTemp(const uint8_t degrees)
Set the temperature.
Definition ir_Mitsubishi.cpp:1032
Mitsubishi136Protocol _
Definition ir_Mitsubishi.h:394
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:1185
IRsend _irsend
Instance of the IR send class.
Definition ir_Mitsubishi.h:388
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Mitsubishi.cpp:1197
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Mitsubishi.cpp:1052
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition ir_Mitsubishi.h:265
void setWideVane(const uint8_t position)
Set the requested wide-vane (Horizontal Swing) operation mode of the a/c.
Definition ir_Mitsubishi.cpp:583
void setTemp(const float degrees)
Set the temperature.
Definition ir_Mitsubishi.cpp:393
void setPower(const bool on)
Change the power setting.
Definition ir_Mitsubishi.cpp:380
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:747
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition ir_Mitsubishi.cpp:342
void setStopClock(const uint8_t clock)
Set the desired stop time of the A/C unit.
Definition ir_Mitsubishi.cpp:625
void setStartClock(const uint8_t clock)
Set the desired start time of the A/C unit.
Definition ir_Mitsubishi.cpp:613
void send(const uint16_t repeat=kMitsubishiACMinRepeat)
Send the current internal state as an IR message.
Definition ir_Mitsubishi.cpp:335
void on(void)
Set the requested power state of the A/C to on.
Definition ir_Mitsubishi.cpp:373
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Mitsubishi.cpp:443
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Mitsubishi.cpp:819
void setEcocool(const bool state)
Set the requested Ecocool mode.
Definition ir_Mitsubishi.cpp:504
Mitsubishi144Protocol _
Definition ir_Mitsubishi.h:339
uint8_t getVaneLeft(void) const
Get the Left Vane (Vertical Swing) mode of the A/C.
Definition ir_Mitsubishi.cpp:579
bool getAbsenseDetect(void) const
Get the Absense Detect mode of the A/C.
Definition ir_Mitsubishi.cpp:522
void setISave10C(const bool state)
Set the iSave10C (i-SAVE) mode of the A/C.
Definition ir_Mitsubishi.cpp:478
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition ir_Mitsubishi.cpp:415
void setNaturalFlow(const bool state)
Set the requested Natural Flow mode.
Definition ir_Mitsubishi.cpp:544
uint8_t getVane(void) const
Get the Vane (Vertical Swing) mode of the A/C.
Definition ir_Mitsubishi.cpp:567
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Mitsubishi.cpp:663
uint8_t getTimer(void) const
Get the timers active setting of the A/C.
Definition ir_Mitsubishi.cpp:634
void setVaneLeft(const uint8_t position)
Set the requested Left Vane (Vertical Swing) operation mode of the a/c unit.
Definition ir_Mitsubishi.cpp:573
IRsend _irsend
Instance of the IR send class.
Definition ir_Mitsubishi.h:333
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Mitsubishi.cpp:437
uint8_t getWideVane(void) const
Get the Wide Vane (Horizontal Swing) mode of the A/C.
Definition ir_Mitsubishi.cpp:589
bool getWeeklyTimerEnabled(void) const
Get the value of the WeeklyTimer Enabled setting.
Definition ir_Mitsubishi.cpp:815
void setClock(const uint8_t clock)
Set the clock time on the A/C unit.
Definition ir_Mitsubishi.cpp:601
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition ir_Mitsubishi.cpp:354
bool getEcocool(void) const
Get the Ecocool mode of the A/C.
Definition ir_Mitsubishi.cpp:510
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:718
bool getISave10C(void) const
Get the iSave10C (i-SAVE) mode of the A/C.
Definition ir_Mitsubishi.cpp:486
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:702
bool getNaturalFlow(void) const
Get the Natural Flow mode of the A/C.
Definition ir_Mitsubishi.cpp:550
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition ir_Mitsubishi.cpp:650
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition ir_Mitsubishi.cpp:320
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Mitsubishi.h:277
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Mitsubishi.cpp:330
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Mitsubishi.cpp:731
static uint8_t calculateChecksum(const uint8_t *data)
Calculate the checksum for a given state.
Definition ir_Mitsubishi.cpp:368
uint8_t getStartClock(void) const
Get the desired start time of the A/C unit.
Definition ir_Mitsubishi.cpp:608
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition ir_Mitsubishi.cpp:680
bool getISee(void) const
Get the iSee mode of the A/C.
Definition ir_Mitsubishi.cpp:498
void setVane(const uint8_t position)
Set the requested vane (Vertical Swing) operation mode of the a/c unit.
Definition ir_Mitsubishi.cpp:558
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Mitsubishi.cpp:386
void off(void)
Set the requested power state of the A/C to off.
Definition ir_Mitsubishi.cpp:376
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition ir_Mitsubishi.cpp:349
void setWeeklyTimerEnabled(const bool on)
Change the Weekly Timer Enabled setting.
Definition ir_Mitsubishi.cpp:809
void setTimer(const uint8_t timer)
Set the timers active setting of the A/C.
Definition ir_Mitsubishi.cpp:643
uint8_t getClock(void) const
Get the clock time of the A/C unit.
Definition ir_Mitsubishi.cpp:596
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition ir_Mitsubishi.cpp:769
static bool validChecksum(const uint8_t *data)
Verify the checksum is valid for a given state.
Definition ir_Mitsubishi.cpp:361
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Mitsubishi.cpp:429
uint8_t getDirectIndirect(void) const
Get the Direct/Indirect mode of the A/C.
Definition ir_Mitsubishi.cpp:538
void setAbsenseDetect(const bool state)
Set the requested Absense Detect mode.
Definition ir_Mitsubishi.cpp:516
float getTemp(void) const
Get the current temperature setting.
Definition ir_Mitsubishi.cpp:409
void setDirectIndirect(const uint8_t position)
Set the requested Direct/Indirect mode. Only works if I-See mode is ON.
Definition ir_Mitsubishi.cpp:528
void setISee(const bool state)
Set the requested iSee mode.
Definition ir_Mitsubishi.cpp:492
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition ir_Mitsubishi.cpp:783
uint8_t getStopClock(void) const
Get the desired stop time of the A/C unit.
Definition ir_Mitsubishi.cpp:620
Class for sending all basic IR protocols.
Definition IRsend.h:256
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:286
const uint8_t kMitsubishiAcVaneSwing
Definition ir_Mitsubishi.h:130
const uint8_t kMitsubishi112SwingVMiddle
Definition ir_Mitsubishi.h:234
const uint8_t kMitsubishiAcNoTimer
Definition ir_Mitsubishi.h:142
const uint8_t kMitsubishi136SwingVLow
Definition ir_Mitsubishi.h:178
const uint8_t kMitsubishiAcVaneAuto
Definition ir_Mitsubishi.h:124
const uint8_t kMitsubishi112SwingVHighest
Definition ir_Mitsubishi.h:236
const uint8_t kMitsubishi112SwingVAuto
Definition ir_Mitsubishi.h:237
const uint8_t kMitsubishiAcAuto
Definition ir_Mitsubishi.h:112
const uint8_t kMitsubishi112SwingHRightMax
Definition ir_Mitsubishi.h:243
const uint8_t kMitsubishiAcWideVaneAuto
Definition ir_Mitsubishi.h:138
const uint8_t kMitsubishiAcVaneMiddle
Definition ir_Mitsubishi.h:127
const uint8_t kMitsubishi112Heat
Definition ir_Mitsubishi.h:220
const uint8_t kMitsubishi136FanMin
Definition ir_Mitsubishi.h:182
const uint8_t kMitsubishi136MaxTemp
Definition ir_Mitsubishi.h:171
const uint8_t kMitsubishiAcVaneAutoMove
Definition ir_Mitsubishi.h:131
const uint8_t kMitsubishiAcIndirect
Definition ir_Mitsubishi.h:140
const uint8_t kMitsubishiAcFanAuto
Definition ir_Mitsubishi.h:117
const uint8_t kMitsubishi136SwingVHigh
Definition ir_Mitsubishi.h:179
const uint8_t kMitsubishiAcStartTimer
Definition ir_Mitsubishi.h:143
const uint8_t kMitsubishiAcCool
Definition ir_Mitsubishi.h:113
const uint8_t kMitsubishi136FanMax
Definition ir_Mitsubishi.h:185
const uint8_t kMitsubishi136Fan
Definition ir_Mitsubishi.h:172
const uint8_t kMitsubishi112SwingHLeftMax
Definition ir_Mitsubishi.h:239
const uint8_t kMitsubishi112Dry
Definition ir_Mitsubishi.h:222
const uint8_t kMitsubishi112FanLow
Definition ir_Mitsubishi.h:228
const uint8_t kMitsubishiAcDirectOff
Definition ir_Mitsubishi.h:139
const uint8_t kMitsubishi112SwingVLow
Definition ir_Mitsubishi.h:233
const uint8_t kMitsubishiAcWideVaneRight
Definition ir_Mitsubishi.h:135
const uint8_t kMitsubishi112FanMax
Definition ir_Mitsubishi.h:230
const uint8_t kMitsubishi136SwingVHighest
Definition ir_Mitsubishi.h:180
const uint8_t kMitsubishi136MinTemp
Definition ir_Mitsubishi.h:170
const uint8_t kMitsubishiAcStopTimer
Definition ir_Mitsubishi.h:144
const uint8_t kMitsubishiAcVaneHigh
Definition ir_Mitsubishi.h:126
const uint8_t kMitsubishiAcHeat
Definition ir_Mitsubishi.h:115
const uint8_t kMitsubishiAcWideVaneWide
Definition ir_Mitsubishi.h:137
const uint8_t kMitsubishi112Auto
Definition ir_Mitsubishi.h:221
const uint8_t kMitsubishiAcFanSilent
Definition ir_Mitsubishi.h:120
const uint8_t kMitsubishi136FanMed
Definition ir_Mitsubishi.h:184
const uint8_t kMitsubishi112SwingHRight
Definition ir_Mitsubishi.h:242
const uint8_t kMitsubishi112SwingHMiddle
Definition ir_Mitsubishi.h:241
const uint8_t kMitsubishiAcFan
Definition ir_Mitsubishi.h:116
const uint8_t kMitsubishiAcWideVaneLeft
Definition ir_Mitsubishi.h:133
const uint8_t kMitsubishi136SwingVAuto
Definition ir_Mitsubishi.h:181
const uint8_t kMitsubishi112SwingHLeft
Definition ir_Mitsubishi.h:240
const uint8_t kMitsubishiAcVaneHighest
Definition ir_Mitsubishi.h:125
const uint8_t kMitsubishiAcFanQuiet
Definition ir_Mitsubishi.h:121
const uint8_t kMitsubishi136Heat
Definition ir_Mitsubishi.h:174
const uint8_t kMitsubishi136Cool
Definition ir_Mitsubishi.h:173
const uint8_t kMitsubishiAcDry
Definition ir_Mitsubishi.h:114
const uint8_t kMitsubishiAcDirect
Definition ir_Mitsubishi.h:141
const uint8_t kMitsubishiAcFanRealMax
Definition ir_Mitsubishi.h:119
const float kMitsubishiAcMaxTemp
Definition ir_Mitsubishi.h:123
const uint8_t kMitsubishi112FanMed
Definition ir_Mitsubishi.h:229
const uint8_t kMitsubishi112Cool
Definition ir_Mitsubishi.h:219
const uint8_t kMitsubishi136SwingVLowest
Definition ir_Mitsubishi.h:177
const uint8_t kMitsubishiAcWideVaneMiddle
Definition ir_Mitsubishi.h:134
const uint8_t kMitsubishiAcWideVaneRightMax
Definition ir_Mitsubishi.h:136
const uint8_t kMitsubishi112SwingHAuto
Definition ir_Mitsubishi.h:245
const uint8_t kMitsubishi112SwingVHigh
Definition ir_Mitsubishi.h:235
const uint8_t kMitsubishiAcFanMax
Definition ir_Mitsubishi.h:118
const uint8_t kMitsubishi112SwingVLowest
Definition ir_Mitsubishi.h:232
const uint8_t kMitsubishi136PowerByte
Definition ir_Mitsubishi.h:169
const uint8_t kMitsubishiAcVaneLow
Definition ir_Mitsubishi.h:128
const uint8_t kMitsubishi112MinTemp
Definition ir_Mitsubishi.h:224
const uint8_t kMitsubishi136Dry
Definition ir_Mitsubishi.h:176
const uint8_t kMitsubishi112FanMin
Definition ir_Mitsubishi.h:227
const float kMitsubishiAcMinTemp
Definition ir_Mitsubishi.h:122
const uint8_t kMitsubishiAcWideVaneLeftMax
Definition ir_Mitsubishi.h:132
const uint8_t kMitsubishi112FanQuiet
Definition ir_Mitsubishi.h:231
const uint8_t kMitsubishi136Auto
Definition ir_Mitsubishi.h:175
const uint8_t kMitsubishiAcVaneLowest
Definition ir_Mitsubishi.h:129
const uint8_t kMitsubishiAcStartStopTimer
Definition ir_Mitsubishi.h:145
const uint8_t kMitsubishi136FanLow
Definition ir_Mitsubishi.h:183
const uint8_t kMitsubishi136FanQuiet
Definition ir_Mitsubishi.h:186
const uint8_t kMitsubishi112SwingHWide
Definition ir_Mitsubishi.h:244
const uint8_t kMitsubishi112MaxTemp
Definition ir_Mitsubishi.h:225
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:67
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:55
swingh_t
Common A/C settings for Horizontal Swing.
Definition IRsend.h:106
swingv_t
Common A/C settings for Vertical Swing.
Definition IRsend.h:80
Structure to hold a common A/C state.
Definition IRsend.h:120
Native representation of a Mitsubishi 112-bit A/C message.
Definition ir_Mitsubishi.h:189
uint8_t SwingH
Definition ir_Mitsubishi.h:212
uint8_t pad0[5]
Definition ir_Mitsubishi.h:193
uint8_t Sum
Definition ir_Mitsubishi.h:215
uint8_t SwingV
Definition ir_Mitsubishi.h:206
uint8_t Temp
Definition ir_Mitsubishi.h:202
uint8_t Power
Definition ir_Mitsubishi.h:196
uint8_t raw[kMitsubishi112StateLength]
The state in code form.
Definition ir_Mitsubishi.h:190
uint8_t Mode
Definition ir_Mitsubishi.h:199
uint8_t Fan
Definition ir_Mitsubishi.h:205
uint8_t pad1[3]
Definition ir_Mitsubishi.h:209
Native representation of a Mitsubishi 136-bit A/C message.
Definition ir_Mitsubishi.h:148
uint8_t SwingV
Definition ir_Mitsubishi.h:165
uint8_t Mode
Definition ir_Mitsubishi.h:158
uint8_t pad[5]
Definition ir_Mitsubishi.h:152
uint8_t Power
Definition ir_Mitsubishi.h:155
uint8_t Temp
Definition ir_Mitsubishi.h:160
uint8_t raw[kMitsubishi136StateLength]
The state in code form.
Definition ir_Mitsubishi.h:149
uint8_t Fan
Definition ir_Mitsubishi.h:163
Native representation of a Mitsubishi 144-bit A/C message.
Definition ir_Mitsubishi.h:54
uint8_t Fan
Definition ir_Mitsubishi.h:76
uint8_t ISee
Definition ir_Mitsubishi.h:66
uint8_t Temp
Definition ir_Mitsubishi.h:69
uint8_t Timer
Definition ir_Mitsubishi.h:87
uint8_t StartClock
Definition ir_Mitsubishi.h:85
uint8_t WeeklyTimer
Definition ir_Mitsubishi.h:88
uint8_t FanAuto
Definition ir_Mitsubishi.h:79
uint8_t Sum
Definition ir_Mitsubishi.h:107
uint8_t iSave10C
Definition ir_Mitsubishi.h:98
uint8_t HalfDegree
Definition ir_Mitsubishi.h:70
uint8_t Clock
Definition ir_Mitsubishi.h:81
uint8_t Ecocool
Definition ir_Mitsubishi.h:92
uint8_t pad0[5]
Definition ir_Mitsubishi.h:58
uint8_t NaturalFlow
Definition ir_Mitsubishi.h:102
uint8_t StopClock
Definition ir_Mitsubishi.h:83
uint8_t AbsenseDetect
Definition ir_Mitsubishi.h:96
uint8_t Mode
Definition ir_Mitsubishi.h:65
uint8_t raw[kMitsubishiACStateLength]
The state in code form.
Definition ir_Mitsubishi.h:55
uint8_t VaneBit
Definition ir_Mitsubishi.h:78
uint8_t WideVane
Definition ir_Mitsubishi.h:74
uint8_t DirectIndirect
Definition ir_Mitsubishi.h:95
uint8_t VaneLeft
Definition ir_Mitsubishi.h:104
uint8_t Vane
Definition ir_Mitsubishi.h:77
uint8_t Power
Definition ir_Mitsubishi.h:61