IRremoteESP8266
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 
32 // Constants.
33 const uint8_t kMitsubishiHeavySigLength = 5;
34 
35 // ZMS (152 bit)
37  0xAD, 0x51, 0x3C, 0xE5, 0x1A};
38 // Byte[5]
39 const uint8_t kMitsubishiHeavyModeOffset = 0;
40 // Mode Mask = 0b00000111; // Byte 9 on ZJS
41 const uint8_t kMitsubishiHeavyAuto = 0; // 0b000
42 const uint8_t kMitsubishiHeavyCool = 1; // 0b001
43 const uint8_t kMitsubishiHeavyDry = 2; // 0b010
44 const uint8_t kMitsubishiHeavyFan = 3; // 0b011
45 const uint8_t kMitsubishiHeavyHeat = 4; // 0b100
46 const uint8_t kMitsubishiHeavyPowerOffset = 3; // Byte 9 on ZJS
47 const uint8_t kMitsubishiHeavyCleanOffset = 5;
48 const uint8_t kMitsubishiHeavyFilterOffset = 6;
49 // Byte[7]
50 const uint8_t kMitsubishiHeavyMinTemp = 17; // 17C
51 const uint8_t kMitsubishiHeavyMaxTemp = 31; // 31C
52 // Byte[9]
53 // FanMask = 0b00001111; // ~Byte 7 on ZJS.
54 const uint8_t kMitsubishiHeavy152FanAuto = 0x0; // 0b0000
55 const uint8_t kMitsubishiHeavy152FanLow = 0x1; // 0b0001
56 const uint8_t kMitsubishiHeavy152FanMed = 0x2; // 0b0010
57 const uint8_t kMitsubishiHeavy152FanHigh = 0x3; // 0b0011
58 const uint8_t kMitsubishiHeavy152FanMax = 0x4; // 0b0100
59 const uint8_t kMitsubishiHeavy152FanEcono = 0x6; // 0b0110
60 const uint8_t kMitsubishiHeavy152FanTurbo = 0x8; // 0b1000
61 // Byte[11]
62 const uint8_t kMitsubishiHeavy3DMask = 0b00010010;
64 const uint8_t kMitsubishiHeavy152SwingVSize = 3; // Bits
65 const uint8_t kMitsubishiHeavy152SwingVAuto = 0; // 0b000
66 const uint8_t kMitsubishiHeavy152SwingVHighest = 1; // 0b001
67 const uint8_t kMitsubishiHeavy152SwingVHigh = 2; // 0b010
68 const uint8_t kMitsubishiHeavy152SwingVMiddle = 3; // 0b011
69 const uint8_t kMitsubishiHeavy152SwingVLow = 4; // 0b100
70 const uint8_t kMitsubishiHeavy152SwingVLowest = 5; // 0b101
71 const uint8_t kMitsubishiHeavy152SwingVOff = 6; // 0b110
72 // Byte[13]
73 const uint8_t kMitsubishiHeavy152SwingHAuto = 0; // 0b0000
74 const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1; // 0b0001
75 const uint8_t kMitsubishiHeavy152SwingHLeft = 2; // 0b0010
76 const uint8_t kMitsubishiHeavy152SwingHMiddle = 3; // 0b0011
77 const uint8_t kMitsubishiHeavy152SwingHRight = 4; // 0b0100
78 const uint8_t kMitsubishiHeavy152SwingHRightMax = 5; // 0b0101
79 const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6; // 0b0110
80 const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7; // 0b0111
81 const uint8_t kMitsubishiHeavy152SwingHOff = 8; // 0b1000
82 // Byte[15]
83 const uint8_t kMitsubishiHeavyNightOffset = 6;
84 const uint8_t kMitsubishiHeavySilentOffset = 7;
85 
86 
87 // ZJS (88 bit)
89  0xAD, 0x51, 0x3C, 0xD9, 0x26};
90 // Byte [5]
94 const uint8_t kMitsubishiHeavy88SwingHSize = 2; // Bits (per offset)
95 const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000;
96 const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000;
97 const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001;
98 const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101;
99 const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001;
100 const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101;
101 const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010;
102 const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010;
103 const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110;
104 const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110;
105 // Byte[7]
106 const uint8_t kMitsubishiHeavy88FanOffset = 5;
107 const uint8_t kMitsubishiHeavy88FanSize = 3; // Bits
108 const uint8_t kMitsubishiHeavy88FanAuto = 0; // 0b000
109 const uint8_t kMitsubishiHeavy88FanLow = 2; // 0b010
110 const uint8_t kMitsubishiHeavy88FanMed = 3; // 0b011
111 const uint8_t kMitsubishiHeavy88FanHigh = 4; // 0b100
112 const uint8_t kMitsubishiHeavy88FanTurbo = 6; // 0b110
113 const uint8_t kMitsubishiHeavy88FanEcono = 7; // 0b111
118 
119  // Mask 0b111
120 const uint8_t kMitsubishiHeavy88SwingVOff = 0b000; // 0
121 const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100; // 4
122 const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110; // 6
123 const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001; // 1
124 const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011; // 3
125 const uint8_t kMitsubishiHeavy88SwingVLow = 0b101; // 5
126 const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111; // 7
127 // Byte[9] is Power & Mode & Temp.
128 
129 
130 // Classes
131 
134  public:
135  explicit IRMitsubishiHeavy152Ac(const uint16_t pin,
136  const bool inverted = false,
137  const bool use_modulation = true);
138  void stateReset(void);
139 #if SEND_MITSUBISHIHEAVY
140  void send(const uint16_t repeat = kMitsubishiHeavy152MinRepeat);
145  int8_t calibrate(void) { return _irsend.calibrate(); }
146 #endif // SEND_MITSUBISHIHEAVY
147  void begin(void);
148  void on(void);
149  void off(void);
150 
151  void setPower(const bool on);
152  bool getPower(void);
153 
154  void setTemp(const uint8_t temp);
155  uint8_t getTemp(void);
156 
157  void setFan(const uint8_t fan);
158  uint8_t getFan(void);
159 
160  void setMode(const uint8_t mode);
161  uint8_t getMode(void);
162 
163  void setSwingVertical(const uint8_t pos);
164  uint8_t getSwingVertical(void);
165  void setSwingHorizontal(const uint8_t pos);
166  uint8_t getSwingHorizontal(void);
167 
168  void setNight(const bool on);
169  bool getNight(void);
170 
171  void set3D(const bool on);
172  bool get3D(void);
173 
174  void setSilent(const bool on);
175  bool getSilent(void);
176 
177  void setFilter(const bool on);
178  bool getFilter(void);
179 
180  void setClean(const bool on);
181  bool getClean(void);
182 
183  void setTurbo(const bool on);
184  bool getTurbo(void);
185 
186  void setEcono(const bool on);
187  bool getEcono(void);
188 
189  uint8_t* getRaw(void);
190  void setRaw(const uint8_t* data);
191 
192  static bool checkZmsSig(const uint8_t *state);
193  static bool validChecksum(
194  const uint8_t *state,
195  const uint16_t length = kMitsubishiHeavy152StateLength);
196  static uint8_t convertMode(const stdAc::opmode_t mode);
197  static uint8_t convertFan(const stdAc::fanspeed_t speed);
198  static uint8_t convertSwingV(const stdAc::swingv_t position);
199  static uint8_t convertSwingH(const stdAc::swingh_t position);
200  static stdAc::opmode_t toCommonMode(const uint8_t mode);
201  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
202  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
203  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
204  stdAc::state_t toCommon(void);
205  String toString(void);
206 #ifndef UNIT_TEST
207 
208  private:
210 #else // UNIT_TEST
211  IRsendTest _irsend;
213 #endif // UNIT_TEST
216  void checksum(void);
217 };
218 
221  public:
222  explicit IRMitsubishiHeavy88Ac(const uint16_t pin,
223  const bool inverted = false,
224  const bool use_modulation = true);
225  void stateReset(void);
226 #if SEND_MITSUBISHIHEAVY
227  void send(const uint16_t repeat = kMitsubishiHeavy88MinRepeat);
232  int8_t calibrate(void) { return _irsend.calibrate(); }
233 #endif // SEND_MITSUBISHIHEAVY
234  void begin(void);
235  void on(void);
236  void off(void);
237 
238  void setPower(const bool on);
239  bool getPower(void);
240 
241  void setTemp(const uint8_t temp);
242  uint8_t getTemp(void);
243 
244  void setFan(const uint8_t fan);
245  uint8_t getFan(void);
246 
247  void setMode(const uint8_t mode);
248  uint8_t getMode(void);
249 
250  void setSwingVertical(const uint8_t pos);
251  uint8_t getSwingVertical(void);
252  void setSwingHorizontal(const uint8_t pos);
253  uint8_t getSwingHorizontal(void);
254 
255  void setTurbo(const bool on);
256  bool getTurbo(void);
257 
258  void setEcono(const bool on);
259  bool getEcono(void);
260 
261  void set3D(const bool on);
262  bool get3D(void);
263 
264  void setClean(const bool on);
265  bool getClean(void);
266 
267  uint8_t* getRaw(void);
268  void setRaw(const uint8_t* data);
269 
270  static bool checkZjsSig(const uint8_t *state);
271  static bool validChecksum(
272  const uint8_t *state,
273  const uint16_t length = kMitsubishiHeavy88StateLength);
274  static uint8_t convertMode(const stdAc::opmode_t mode);
275  static uint8_t convertFan(const stdAc::fanspeed_t speed);
276  static uint8_t convertSwingV(const stdAc::swingv_t position);
277  static uint8_t convertSwingH(const stdAc::swingh_t position);
278  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
279  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
280  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
281  stdAc::state_t toCommon(void);
282  String toString(void);
283 #ifndef UNIT_TEST
284 
285  private:
287 #else // UNIT_TEST
288  IRsendTest _irsend;
290 #endif // UNIT_TEST
293  void checksum(void);
294 };
295 #endif // IR_MITSUBISHIHEAVY_H_
IRMitsubishiHeavy88Ac::toCommon
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_MitsubishiHeavy.cpp:968
IRMitsubishiHeavy88Ac::setFan
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_MitsubishiHeavy.cpp:682
IRMitsubishiHeavy88Ac::off
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_MitsubishiHeavy.cpp:649
kMitsubishiHeavy88SwingVByte5Size
const uint8_t kMitsubishiHeavy88SwingVByte5Size
Definition: ir_MitsubishiHeavy.h:115
kMitsubishiHeavy152StateLength
const uint16_t kMitsubishiHeavy152StateLength
Definition: IRremoteESP8266.h:969
IRMitsubishiHeavy152Ac::calibrate
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_MitsubishiHeavy.h:145
IRMitsubishiHeavy152Ac
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:133
IRMitsubishiHeavy88Ac::stateReset
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_MitsubishiHeavy.cpp:626
IRMitsubishiHeavy88Ac::toString
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_MitsubishiHeavy.cpp:994
IRMitsubishiHeavy152Ac::checksum
void checksum(void)
Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
Definition: ir_MitsubishiHeavy.cpp:327
kMitsubishiHeavy152SwingVHigh
const uint8_t kMitsubishiHeavy152SwingVHigh
Definition: ir_MitsubishiHeavy.h:67
IRMitsubishiHeavy152Ac::convertSwingH
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:392
kMitsubishiHeavy152SwingHRightLeft
const uint8_t kMitsubishiHeavy152SwingHRightLeft
Definition: ir_MitsubishiHeavy.h:79
IRMitsubishiHeavy152Ac::convertMode
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_MitsubishiHeavy.cpp:349
IRMitsubishiHeavy88Ac::getPower
bool getPower(void)
Get the value of the current power setting.
Definition: ir_MitsubishiHeavy.cpp:659
kMitsubishiHeavy3DMask
const uint8_t kMitsubishiHeavy3DMask
Definition: ir_MitsubishiHeavy.h:62
IRMitsubishiHeavy88Ac::toCommonFanSpeed
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_MitsubishiHeavy.cpp:925
IRMitsubishiHeavy152Ac::getEcono
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:312
IRMitsubishiHeavy152Ac::setPower
void setPower(const bool on)
Change the power setting.
Definition: ir_MitsubishiHeavy.cpp:125
IRMitsubishiHeavy88Ac::set3D
void set3D(const bool on)
Set the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:818
stdAc::swingv_t
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
kMitsubishiHeavy152FanMed
const uint8_t kMitsubishiHeavy152FanMed
Definition: ir_MitsubishiHeavy.h:56
kMitsubishiHeavyCleanOffset
const uint8_t kMitsubishiHeavyCleanOffset
Definition: ir_MitsubishiHeavy.h:47
IRMitsubishiHeavy88Ac::setSwingHorizontal
void setSwingHorizontal(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:757
IRMitsubishiHeavy152Ac::_irsend
IRsend _irsend
Instance of the IR send class.
Definition: ir_MitsubishiHeavy.h:209
kMitsubishiHeavy152FanAuto
const uint8_t kMitsubishiHeavy152FanAuto
Definition: ir_MitsubishiHeavy.h:54
IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac
IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_MitsubishiHeavy.cpp:79
stdAc::fanspeed_t
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
kMitsubishiHeavy152SwingVAuto
const uint8_t kMitsubishiHeavy152SwingVAuto
Definition: ir_MitsubishiHeavy.h:65
IRMitsubishiHeavy88Ac::setMode
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:705
kMitsubishiHeavy88FanTurbo
const uint8_t kMitsubishiHeavy88FanTurbo
Definition: ir_MitsubishiHeavy.h:112
IRMitsubishiHeavy88Ac::convertFan
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_MitsubishiHeavy.cpp:880
kMitsubishiHeavy88SwingHLeftMax
const uint8_t kMitsubishiHeavy88SwingHLeftMax
Definition: ir_MitsubishiHeavy.h:97
kMitsubishiHeavy152SwingVHighest
const uint8_t kMitsubishiHeavy152SwingVHighest
Definition: ir_MitsubishiHeavy.h:66
kMitsubishiHeavy88SwingH3D
const uint8_t kMitsubishiHeavy88SwingH3D
Definition: ir_MitsubishiHeavy.h:104
kMitsubishiHeavy88SwingHLeft
const uint8_t kMitsubishiHeavy88SwingHLeft
Definition: ir_MitsubishiHeavy.h:98
kMitsubishiHeavy152SwingVLow
const uint8_t kMitsubishiHeavy152SwingVLow
Definition: ir_MitsubishiHeavy.h:69
kMitsubishiHeavyNightOffset
const uint8_t kMitsubishiHeavyNightOffset
Definition: ir_MitsubishiHeavy.h:83
kMitsubishiHeavy152SwingHOff
const uint8_t kMitsubishiHeavy152SwingHOff
Definition: ir_MitsubishiHeavy.h:81
kMitsubishiHeavy88SwingHOffset1
const uint8_t kMitsubishiHeavy88SwingHOffset1
Definition: ir_MitsubishiHeavy.h:92
IRMitsubishiHeavy152Ac::getPower
bool getPower(void)
Get the value of the current power setting.
Definition: ir_MitsubishiHeavy.cpp:131
IRMitsubishiHeavy152Ac::stateReset
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_MitsubishiHeavy.cpp:97
IRsend.h
kMitsubishiHeavy152SwingHLeftRight
const uint8_t kMitsubishiHeavy152SwingHLeftRight
Definition: ir_MitsubishiHeavy.h:80
IRMitsubishiHeavy88Ac::checksum
void checksum(void)
Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
Definition: ir_MitsubishiHeavy.cpp:854
kMitsubishiHeavy88SwingHMiddle
const uint8_t kMitsubishiHeavy88SwingHMiddle
Definition: ir_MitsubishiHeavy.h:99
IRMitsubishiHeavy152Ac::toCommonFanSpeed
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_MitsubishiHeavy.cpp:420
IRMitsubishiHeavy88Ac::on
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_MitsubishiHeavy.cpp:646
IRMitsubishiHeavy152Ac::getTurbo
bool getTurbo(void)
Get the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:298
kMitsubishiHeavy88SwingVAuto
const uint8_t kMitsubishiHeavy88SwingVAuto
Definition: ir_MitsubishiHeavy.h:121
IRMitsubishiHeavy152Ac::toString
String toString(void)
Convert the internal state into a human readable string.
Definition: ir_MitsubishiHeavy.cpp:489
IRMitsubishiHeavy88Ac::setClean
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:833
IRMitsubishiHeavy152Ac::setSilent
void setSilent(const bool on)
Set the Silent (Quiet) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:253
IRsend
Class for sending all basic IR protocols.
Definition: IRsend.h:176
kMitsubishiHeavy88FanEcono
const uint8_t kMitsubishiHeavy88FanEcono
Definition: ir_MitsubishiHeavy.h:113
IRMitsubishiHeavy88Ac::setSwingVertical
void setSwingVertical(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:727
IRsend::calibrate
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
IRMitsubishiHeavy152Ac::getTemp
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_MitsubishiHeavy.cpp:147
kMitsubishiHeavy88SwingHSize
const uint8_t kMitsubishiHeavy88SwingHSize
Definition: ir_MitsubishiHeavy.h:94
IRMitsubishiHeavy152Ac::setClean
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:277
IRMitsubishiHeavy152Ac::setTemp
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_MitsubishiHeavy.cpp:137
kMitsubishiHeavyPowerOffset
const uint8_t kMitsubishiHeavyPowerOffset
Definition: ir_MitsubishiHeavy.h:46
IRMitsubishiHeavy152Ac::on
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_MitsubishiHeavy.cpp:118
String
std::string String
Definition: IRremoteESP8266.h:1128
IRMitsubishiHeavy152Ac::begin
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_MitsubishiHeavy.cpp:85
IRMitsubishiHeavy88Ac::getSwingVertical
uint8_t getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:747
kMitsubishiHeavyFilterOffset
const uint8_t kMitsubishiHeavyFilterOffset
Definition: ir_MitsubishiHeavy.h:48
IRMitsubishiHeavy88Ac::convertSwingV
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:895
IRMitsubishiHeavy152Ac::setNight
void setNight(const bool on)
Set the Night (Sleep) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:226
kMitsubishiHeavy88SwingHOffset2
const uint8_t kMitsubishiHeavy88SwingHOffset2
Definition: ir_MitsubishiHeavy.h:93
IRMitsubishiHeavy88Ac::_irsend
IRsend _irsend
Instance of the IR send class.
Definition: ir_MitsubishiHeavy.h:286
kMitsubishiHeavy152SwingVSize
const uint8_t kMitsubishiHeavy152SwingVSize
Definition: ir_MitsubishiHeavy.h:64
kMitsubishiHeavySigLength
const uint8_t kMitsubishiHeavySigLength
Definition: ir_MitsubishiHeavy.h:33
IRMitsubishiHeavy152Ac::getSwingVertical
uint8_t getSwingVertical(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:206
IRMitsubishiHeavy152Ac::off
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_MitsubishiHeavy.cpp:121
IRMitsubishiHeavy152Ac::setSwingVertical
void setSwingVertical(const uint8_t pos)
Set the Vertical Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:198
kMitsubishiHeavy88SwingHRightLeft
const uint8_t kMitsubishiHeavy88SwingHRightLeft
Definition: ir_MitsubishiHeavy.h:102
IRMitsubishiHeavy88Ac::remote_state
uint8_t remote_state[kMitsubishiHeavy88StateLength]
State in code form.
Definition: ir_MitsubishiHeavy.h:292
kMitsubishiHeavy152SwingHRight
const uint8_t kMitsubishiHeavy152SwingHRight
Definition: ir_MitsubishiHeavy.h:77
IRMitsubishiHeavy88Ac::getSwingHorizontal
uint8_t getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:780
kMitsubishiHeavyHeat
const uint8_t kMitsubishiHeavyHeat
Definition: ir_MitsubishiHeavy.h:45
IRMitsubishiHeavy152Ac::getSwingHorizontal
uint8_t getSwingHorizontal(void)
Get the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:220
IRMitsubishiHeavy88Ac::setTurbo
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:790
IRMitsubishiHeavy152Ac::getNight
bool getNight(void)
Get the Night (Sleep) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:232
IRMitsubishiHeavy88Ac::getFan
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_MitsubishiHeavy.cpp:698
IRremoteESP8266.h
stdAc::swingh_t
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
kMitsubishiHeavy152SwingHLeftMax
const uint8_t kMitsubishiHeavy152SwingHLeftMax
Definition: ir_MitsubishiHeavy.h:74
IRMitsubishiHeavy152Ac::getClean
bool getClean(void)
Get the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:284
kMitsubishiHeavyZmsSig
const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength]
Definition: ir_MitsubishiHeavy.h:36
IRMitsubishiHeavy88Ac::getEcono
bool getEcono(void)
Get the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:812
kMitsubishiHeavy152MinRepeat
const uint16_t kMitsubishiHeavy152MinRepeat
Definition: IRremoteESP8266.h:971
IRMitsubishiHeavy88Ac::calibrate
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_MitsubishiHeavy.h:232
kMitsubishiHeavy88SwingVByte5Offset
const uint8_t kMitsubishiHeavy88SwingVByte5Offset
Definition: ir_MitsubishiHeavy.h:114
IRMitsubishiHeavy88Ac::checkZjsSig
static bool checkZjsSig(const uint8_t *state)
Verify the given state has a ZJ-S signature.
Definition: ir_MitsubishiHeavy.cpp:846
IRMitsubishiHeavy88Ac::setTemp
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_MitsubishiHeavy.cpp:665
IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac
IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_MitsubishiHeavy.cpp:608
kMitsubishiHeavy88FanOffset
const uint8_t kMitsubishiHeavy88FanOffset
Definition: ir_MitsubishiHeavy.h:106
kMitsubishiHeavyMaxTemp
const uint8_t kMitsubishiHeavyMaxTemp
Definition: ir_MitsubishiHeavy.h:51
IRMitsubishiHeavy88Ac::setRaw
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:641
kMitsubishiHeavy88StateLength
const uint16_t kMitsubishiHeavy88StateLength
Definition: IRremoteESP8266.h:966
kMitsubishiHeavy88SwingVMiddle
const uint8_t kMitsubishiHeavy88SwingVMiddle
Definition: ir_MitsubishiHeavy.h:124
IRMitsubishiHeavy152Ac::convertFan
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_MitsubishiHeavy.cpp:362
kMitsubishiHeavyZjsSig
const uint8_t kMitsubishiHeavyZjsSig[kMitsubishiHeavySigLength]
Definition: ir_MitsubishiHeavy.h:88
kMitsubishiHeavy152FanLow
const uint8_t kMitsubishiHeavy152FanLow
Definition: ir_MitsubishiHeavy.h:55
kMitsubishiHeavy88FanHigh
const uint8_t kMitsubishiHeavy88FanHigh
Definition: ir_MitsubishiHeavy.h:111
IRMitsubishiHeavy152Ac::toCommonMode
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_MitsubishiHeavy.cpp:407
IRMitsubishiHeavy152Ac::getRaw
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:106
kMitsubishiHeavyMinTemp
const uint8_t kMitsubishiHeavyMinTemp
Definition: ir_MitsubishiHeavy.h:50
kMitsubishiHeavyCool
const uint8_t kMitsubishiHeavyCool
Definition: ir_MitsubishiHeavy.h:42
IRMitsubishiHeavy152Ac::setEcono
void setEcono(const bool on)
Set the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:304
IRMitsubishiHeavy88Ac::getTemp
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_MitsubishiHeavy.cpp:675
IRMitsubishiHeavy152Ac::getSilent
bool getSilent(void)
Get the Silent (Quiet) mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:259
IRMitsubishiHeavy88Ac::getRaw
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:634
kMitsubishiHeavy88FanLow
const uint8_t kMitsubishiHeavy88FanLow
Definition: ir_MitsubishiHeavy.h:109
kMitsubishiHeavy88SwingVLow
const uint8_t kMitsubishiHeavy88SwingVLow
Definition: ir_MitsubishiHeavy.h:125
IRMitsubishiHeavy152Ac::checkZmsSig
static bool checkZmsSig(const uint8_t *state)
Verify the given state has a ZM-S signature.
Definition: ir_MitsubishiHeavy.cpp:319
kMitsubishiHeavy152SwingVMiddle
const uint8_t kMitsubishiHeavy152SwingVMiddle
Definition: ir_MitsubishiHeavy.h:68
kMitsubishiHeavy88SwingHRight
const uint8_t kMitsubishiHeavy88SwingHRight
Definition: ir_MitsubishiHeavy.h:100
kMitsubishiHeavy88SwingVHighest
const uint8_t kMitsubishiHeavy88SwingVHighest
Definition: ir_MitsubishiHeavy.h:122
kMitsubishiHeavyModeOffset
const uint8_t kMitsubishiHeavyModeOffset
Definition: ir_MitsubishiHeavy.h:39
kMitsubishiHeavy88SwingVOff
const uint8_t kMitsubishiHeavy88SwingVOff
Definition: ir_MitsubishiHeavy.h:120
IRMitsubishiHeavy88Ac::getTurbo
bool getTurbo(void)
Get the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:798
IRMitsubishiHeavy88Ac::setEcono
void setEcono(const bool on)
Set the Economical mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:804
kMitsubishiHeavy88SwingVLowest
const uint8_t kMitsubishiHeavy88SwingVLowest
Definition: ir_MitsubishiHeavy.h:126
kMitsubishiHeavy152SwingHAuto
const uint8_t kMitsubishiHeavy152SwingHAuto
Definition: ir_MitsubishiHeavy.h:73
IRMitsubishiHeavy152Ac::getMode
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_MitsubishiHeavy.cpp:192
kMitsubishiHeavy152SwingHLeft
const uint8_t kMitsubishiHeavy152SwingHLeft
Definition: ir_MitsubishiHeavy.h:75
IRMitsubishiHeavy152Ac::setFan
void setFan(const uint8_t fan)
Set the speed of the fan.
Definition: ir_MitsubishiHeavy.cpp:154
IRMitsubishiHeavy152Ac::toCommon
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_MitsubishiHeavy.cpp:463
kMitsubishiHeavySilentOffset
const uint8_t kMitsubishiHeavySilentOffset
Definition: ir_MitsubishiHeavy.h:84
IRMitsubishiHeavy88Ac::getClean
bool getClean(void)
Get the Clean mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:839
IRMitsubishiHeavy88Ac::convertMode
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_MitsubishiHeavy.cpp:873
kMitsubishiHeavy88SwingHAuto
const uint8_t kMitsubishiHeavy88SwingHAuto
Definition: ir_MitsubishiHeavy.h:96
kMitsubishiHeavyFan
const uint8_t kMitsubishiHeavyFan
Definition: ir_MitsubishiHeavy.h:44
kMitsubishiHeavy88MinRepeat
const uint16_t kMitsubishiHeavy88MinRepeat
Definition: IRremoteESP8266.h:968
kMitsubishiHeavy88SwingHOff
const uint8_t kMitsubishiHeavy88SwingHOff
Definition: ir_MitsubishiHeavy.h:95
IRMitsubishiHeavy152Ac::setSwingHorizontal
void setSwingHorizontal(const uint8_t pos)
Set the Horizontal Swing mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:213
IRMitsubishiHeavy152Ac::validChecksum
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:338
kMitsubishiHeavy152SwingVOff
const uint8_t kMitsubishiHeavy152SwingVOff
Definition: ir_MitsubishiHeavy.h:71
kMitsubishiHeavy152SwingVLowest
const uint8_t kMitsubishiHeavy152SwingVLowest
Definition: ir_MitsubishiHeavy.h:70
IRMitsubishiHeavy152Ac::setRaw
void setRaw(const uint8_t *data)
Set the internal state from a valid code for this protocol.
Definition: ir_MitsubishiHeavy.cpp:113
kMitsubishiHeavy88SwingHLeftRight
const uint8_t kMitsubishiHeavy88SwingHLeftRight
Definition: ir_MitsubishiHeavy.h:103
kMitsubishiHeavy88FanAuto
const uint8_t kMitsubishiHeavy88FanAuto
Definition: ir_MitsubishiHeavy.h:108
IRMitsubishiHeavy152Ac::setMode
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:176
IRMitsubishiHeavy152Ac::toCommonSwingH
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:434
kMitsubishiHeavy88FanMed
const uint8_t kMitsubishiHeavy88FanMed
Definition: ir_MitsubishiHeavy.h:110
IRMitsubishiHeavy152Ac::setTurbo
void setTurbo(const bool on)
Set the Turbo mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:290
IRMitsubishiHeavy152Ac::remote_state
uint8_t remote_state[kMitsubishiHeavy152StateLength]
State in code form.
Definition: ir_MitsubishiHeavy.h:215
IRMitsubishiHeavy152Ac::getFilter
bool getFilter(void)
Get the Filter mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:271
IRMitsubishiHeavy88Ac::get3D
bool get3D(void)
Get the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:827
kMitsubishiHeavy88SwingHRightMax
const uint8_t kMitsubishiHeavy88SwingHRightMax
Definition: ir_MitsubishiHeavy.h:101
kMitsubishiHeavy152SwingVOffset
const uint8_t kMitsubishiHeavy152SwingVOffset
Definition: ir_MitsubishiHeavy.h:63
IRMitsubishiHeavy88Ac::setPower
void setPower(const bool on)
Change the power setting.
Definition: ir_MitsubishiHeavy.cpp:653
kMitsubishiHeavy88SwingVByte7Size
const uint8_t kMitsubishiHeavy88SwingVByte7Size
Definition: ir_MitsubishiHeavy.h:117
kMitsubishiHeavy152FanHigh
const uint8_t kMitsubishiHeavy152FanHigh
Definition: ir_MitsubishiHeavy.h:57
IRMitsubishiHeavy152Ac::setFilter
void setFilter(const bool on)
Set the Filter mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:265
IRMitsubishiHeavy88Ac::validChecksum
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:865
IRMitsubishiHeavy88Ac::begin
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_MitsubishiHeavy.cpp:614
kMitsubishiHeavy152SwingHRightMax
const uint8_t kMitsubishiHeavy152SwingHRightMax
Definition: ir_MitsubishiHeavy.h:78
IRMitsubishiHeavy152Ac::set3D
void set3D(const bool on)
Set the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:238
kMitsubishiHeavy152SwingHMiddle
const uint8_t kMitsubishiHeavy152SwingHMiddle
Definition: ir_MitsubishiHeavy.h:76
IRMitsubishiHeavy152Ac::convertSwingV
static uint8_t convertSwingV(const stdAc::swingv_t position)
Convert a stdAc::swingv_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:377
IRMitsubishiHeavy88Ac
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:220
kMitsubishiHeavy152FanTurbo
const uint8_t kMitsubishiHeavy152FanTurbo
Definition: ir_MitsubishiHeavy.h:60
IRMitsubishiHeavy152Ac::toCommonSwingV
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:449
IRMitsubishiHeavy88Ac::convertSwingH
static uint8_t convertSwingH(const stdAc::swingh_t position)
Convert a stdAc::swingh_t enum into it's native setting.
Definition: ir_MitsubishiHeavy.cpp:910
kMitsubishiHeavyDry
const uint8_t kMitsubishiHeavyDry
Definition: ir_MitsubishiHeavy.h:43
IRMitsubishiHeavy152Ac::getFan
uint8_t getFan(void)
Get the current fan speed setting.
Definition: ir_MitsubishiHeavy.cpp:170
IRMitsubishiHeavy88Ac::toCommonSwingH
static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
Convert a native horizontal swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:939
stdAc::state_t
Structure to hold a common A/C state.
Definition: IRsend.h:97
kMitsubishiHeavy88FanSize
const uint8_t kMitsubishiHeavy88FanSize
Definition: ir_MitsubishiHeavy.h:107
kMitsubishiHeavy88SwingVByte7Offset
const uint8_t kMitsubishiHeavy88SwingVByte7Offset
Definition: ir_MitsubishiHeavy.h:116
kMitsubishiHeavy88SwingVHigh
const uint8_t kMitsubishiHeavy88SwingVHigh
Definition: ir_MitsubishiHeavy.h:123
IRMitsubishiHeavy88Ac::toCommonSwingV
static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
Convert a native vertical swing postion to it's common equivalent.
Definition: ir_MitsubishiHeavy.cpp:954
IRMitsubishiHeavy88Ac::send
void send(const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
Send the current internal state as an IR message.
Definition: ir_MitsubishiHeavy.cpp:619
IRMitsubishiHeavy152Ac::send
void send(const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
Send the current internal state as an IR message.
Definition: ir_MitsubishiHeavy.cpp:90
kMitsubishiHeavy88CleanOffset
const uint8_t kMitsubishiHeavy88CleanOffset
Definition: ir_MitsubishiHeavy.h:91
IRMitsubishiHeavy88Ac::getMode
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_MitsubishiHeavy.cpp:721
kMitsubishiHeavyAuto
const uint8_t kMitsubishiHeavyAuto
Definition: ir_MitsubishiHeavy.h:41
kMitsubishiHeavy152FanEcono
const uint8_t kMitsubishiHeavy152FanEcono
Definition: ir_MitsubishiHeavy.h:59
IRMitsubishiHeavy152Ac::get3D
bool get3D(void)
Get the 3D mode of the A/C.
Definition: ir_MitsubishiHeavy.cpp:247
kMitsubishiHeavy152FanMax
const uint8_t kMitsubishiHeavy152FanMax
Definition: ir_MitsubishiHeavy.h:58
stdAc::opmode_t
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46