IRremoteESP8266
ir_Samsung.h
Go to the documentation of this file.
1 // Copyright 2018-2021 David Conran
11 
12 // Supports:
13 // Brand: Samsung, Model: UA55H6300 TV (SAMSUNG)
14 // Brand: Samsung, Model: BN59-01178B TV remote (SAMSUNG)
15 // Brand: Samsung, Model: UE40K5510AUXRU TV (SAMSUNG)
16 // Brand: Samsung, Model: DB63-03556X003 remote
17 // Brand: Samsung, Model: DB93-16761C remote
18 // Brand: Samsung, Model: IEC-R03 remote
19 // Brand: Samsung, Model: AK59-00167A Bluray remote (SAMSUNG36)
20 // Brand: Samsung, Model: AH59-02692E Soundbar remote (SAMSUNG36)
21 // Brand: Samsung, Model: HW-J551 Soundbar (SAMSUNG36)
22 // Brand: Samsung, Model: AR09FSSDAWKNFA A/C (SAMSUNG_AC)
23 // Brand: Samsung, Model: AR09HSFSBWKN A/C (SAMSUNG_AC)
24 // Brand: Samsung, Model: AR12KSFPEWQNET A/C (SAMSUNG_AC)
25 // Brand: Samsung, Model: AR12HSSDBWKNEU A/C (SAMSUNG_AC)
26 // Brand: Samsung, Model: AR12NXCXAWKXEU A/C (SAMSUNG_AC)
27 // Brand: Samsung, Model: AR12TXEAAWKNEU A/C (SAMSUNG_AC)
28 // Brand: Samsung, Model: DB93-14195A remote (SAMSUNG_AC)
29 // Brand: Samsung, Model: DB96-24901C remote (SAMSUNG_AC)
30 
31 #ifndef IR_SAMSUNG_H_
32 #define IR_SAMSUNG_H_
33 
34 #define __STDC_LIMIT_MACROS
35 #include <stdint.h>
36 #ifndef UNIT_TEST
37 #include <Arduino.h>
38 #endif
39 #include "IRremoteESP8266.h"
40 #include "IRsend.h"
41 #ifdef UNIT_TEST
42 #include "IRsend_test.h"
43 #endif
44 
48  struct { // Standard message map
49  // Byte 0
50  uint8_t :8;
51  // Byte 1
52  uint8_t :4;
53  uint8_t :4; // Sum1Lower
54  // Byte 2
55  uint8_t :4; // Sum1Upper
56  uint8_t :4;
57  // Byte 3
58  uint8_t :8;
59  // Byte 4
60  uint8_t :8;
61  // Byte 5
62  uint8_t :4;
63  uint8_t Sleep5 :1;
64  uint8_t Quiet :1;
65  uint8_t :2;
66  // Byte 6
67  uint8_t :4;
68  uint8_t Power1 :2;
69  uint8_t :2;
70  // Byte 7
71  uint8_t :8;
72  // Byte 8
73  uint8_t :4;
74  uint8_t :4; // Sum2Lower
75  // Byte 9
76  uint8_t :4; // Sum1Upper
77  uint8_t Swing :3;
78  uint8_t :1;
79  // Byte 10
80  uint8_t :1;
81  uint8_t FanSpecial :3; // Powerful, Breeze/WindFree, Econo
82  uint8_t Display :1;
83  uint8_t :2;
84  uint8_t CleanToggle10 :1;
85  // Byte 11
86  uint8_t Ion :1;
87  uint8_t CleanToggle11 :1;
88  uint8_t :2;
89  uint8_t Temp :4;
90  // Byte 12
91  uint8_t :1;
92  uint8_t Fan :3;
93  uint8_t Mode :3;
94  uint8_t :1;
95  // Byte 13
96  uint8_t :2;
97  uint8_t BeepToggle :1;
98  uint8_t :1;
99  uint8_t Power2 :2;
100  uint8_t :2;
101  };
102  struct { // Extended message map
103  // 1st Section
104  // Byte 0
105  uint8_t :8;
106  // Byte 1
107  uint8_t :4;
108  uint8_t Sum1Lower :4;
109  // Byte 2
110  uint8_t Sum1Upper :4;
111  uint8_t :4;
112  // Byte 3
113  uint8_t :8;
114  // Byte 4
115  uint8_t :8;
116  // Byte 5
117  uint8_t :8;
118  // Byte 6
119  uint8_t :8;
120  // 2nd Section
121  // Byte 7
122  uint8_t :8;
123  // Byte 8
124  uint8_t :4;
125  uint8_t Sum2Lower :4;
126  // Byte 9
127  uint8_t Sum2Upper :4;
128  uint8_t OffTimeMins :3; // In units of 10's of mins
129  uint8_t OffTimeHrs1 :1; // LSB of the number of hours.
130  // Byte 10
131  uint8_t OffTimeHrs2 :4; // MSBs of the number of hours.
132  uint8_t OnTimeMins :3; // In units of 10's of mins
133  uint8_t OnTimeHrs1 :1; // LSB of the number of hours.
134  // Byte 11
135  uint8_t OnTimeHrs2 :4; // MSBs of the number of hours.
136  uint8_t :4;
137  // Byte 12
138  uint8_t OffTimeDay :1;
139  uint8_t OnTimerEnable :1;
140  uint8_t OffTimerEnable :1;
141  uint8_t Sleep12 :1;
142  uint8_t OnTimeDay :1;
143  uint8_t :3;
144  // Byte 13
145  uint8_t :8;
146  // 3rd Section
147  // Byte 14
148  uint8_t :8;
149  // Byte 15
150  uint8_t :4;
151  uint8_t Sum3Lower :4;
152  // Byte 16
153  uint8_t Sum3Upper :4;
154  uint8_t :4;
155  // Byte 17
156  uint8_t :8;
157  // Byte 18
158  uint8_t :8;
159  // Byte 19
160  uint8_t :8;
161  // Byte 20
162  uint8_t :8;
163  };
164 };
165 
166 // Constants
167 const uint8_t kSamsungAcMinTemp = 16; // C Mask 0b11110000
168 const uint8_t kSamsungAcMaxTemp = 30; // C Mask 0b11110000
169 const uint8_t kSamsungAcAutoTemp = 25; // C Mask 0b11110000
170 const uint8_t kSamsungAcAuto = 0;
171 const uint8_t kSamsungAcCool = 1;
172 const uint8_t kSamsungAcDry = 2;
173 const uint8_t kSamsungAcFan = 3;
174 const uint8_t kSamsungAcHeat = 4;
175 const uint8_t kSamsungAcFanAuto = 0;
176 const uint8_t kSamsungAcFanLow = 2;
177 const uint8_t kSamsungAcFanMed = 4;
178 const uint8_t kSamsungAcFanHigh = 5;
179 const uint8_t kSamsungAcFanAuto2 = 6;
180 const uint8_t kSamsungAcFanTurbo = 7;
181 const uint16_t kSamsungAcSectionLength = 7;
182 const uint64_t kSamsungAcPowerSection = 0x1D20F00000000;
183 
184 // Classes
186 class IRSamsungAc {
187  public:
188  explicit IRSamsungAc(const uint16_t pin, const bool inverted = false,
189  const bool use_modulation = true);
190  void stateReset(const bool extended = true, const bool initialPower = true);
191 #if SEND_SAMSUNG_AC
192  void send(const uint16_t repeat = kSamsungAcDefaultRepeat);
193  void sendExtended(const uint16_t repeat = kSamsungAcDefaultRepeat);
194  void sendOn(const uint16_t repeat = kSamsungAcDefaultRepeat);
195  void sendOff(const uint16_t repeat = kSamsungAcDefaultRepeat);
200  int8_t calibrate(void) { return _irsend.calibrate(); }
201 #endif // SEND_SAMSUNG_AC
202  void begin(void);
203  void on(void);
204  void off(void);
205  void setPower(const bool on);
206  bool getPower(void) const;
207  void setTemp(const uint8_t temp);
208  uint8_t getTemp(void) const;
209  void setFan(const uint8_t speed);
210  uint8_t getFan(void) const;
211  void setMode(const uint8_t mode);
212  uint8_t getMode(void) const;
213  void setSwing(const bool on);
214  bool getSwing(void) const;
215  void setSwingH(const bool on);
216  bool getSwingH(void) const;
217  void setBeep(const bool on);
218  bool getBeep(void) const;
219  void setClean(const bool on);
220  bool getClean(void) const;
221  void setQuiet(const bool on);
222  bool getQuiet(void) const;
223  void setPowerful(const bool on);
224  bool getPowerful(void) const;
225  void setBreeze(const bool on);
226  bool getBreeze(void) const;
227  void setEcono(const bool on);
228  bool getEcono(void) const;
229  void setDisplay(const bool on);
230  bool getDisplay(void) const;
231  void setIon(const bool on);
232  bool getIon(void) const;
233  uint16_t getOnTimer(void) const;
234  void setOnTimer(const uint16_t nr_of_mins);
235  uint16_t getOffTimer(void) const;
236  void setOffTimer(const uint16_t nr_of_mins);
237  uint16_t getSleepTimer(void) const;
238  void setSleepTimer(const uint16_t nr_of_mins);
239  uint8_t* getRaw(void);
240  void setRaw(const uint8_t new_code[],
241  const uint16_t length = kSamsungAcStateLength);
242  static uint8_t calcSectionChecksum(const uint8_t *section);
243  static uint8_t getSectionChecksum(const uint8_t *section);
244  static bool validChecksum(const uint8_t state[],
245  const uint16_t length = kSamsungAcStateLength);
246  static uint8_t convertMode(const stdAc::opmode_t mode);
247  static uint8_t convertFan(const stdAc::fanspeed_t speed);
248  static stdAc::opmode_t toCommonMode(const uint8_t mode);
249  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
250  stdAc::state_t toCommon(void) const;
251  String toString(void) const;
252 #ifndef UNIT_TEST
253 
254  private:
256 #else // UNIT_TEST
257  IRsendTest _irsend;
259 #endif // UNIT_TEST
266  bool _Sleep;
268  uint16_t _OnTimer;
269  uint16_t _OffTimer;
270  uint16_t _lastOnTimer;
271  uint16_t _lastOffTimer;
272  void checksum(void);
273  uint16_t _getOnTimer(void) const;
274  uint16_t _getOffTimer(void) const;
275  void _setOnTimer(void);
276  void _setOffTimer(void);
277  void _setSleepTimer(void);
278 };
279 
280 #endif // IR_SAMSUNG_H_
SamsungProtocol::OffTimeHrs1
uint8_t OffTimeHrs1
Definition: ir_Samsung.h:129
IRSamsungAc::toCommon
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition: ir_Samsung.cpp:869
IRSamsungAc::getOnTimer
uint16_t getOnTimer(void) const
Get the On Timer setting of the A/C.
Definition: ir_Samsung.cpp:761
kSamsungAcDry
const uint8_t kSamsungAcDry
Definition: ir_Samsung.h:172
IRSamsungAc
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:186
IRSamsungAc::_OnTimer
uint16_t _OnTimer
Definition: ir_Samsung.h:268
kSamsungAcCool
const uint8_t kSamsungAcCool
Definition: ir_Samsung.h:171
SamsungProtocol::OffTimerEnable
uint8_t OffTimerEnable
Definition: ir_Samsung.h:140
SamsungProtocol::Sum2Upper
uint8_t Sum2Upper
Definition: ir_Samsung.h:127
SamsungProtocol
Native representation of a Samsung A/C message.
Definition: ir_Samsung.h:46
IRSamsungAc::getSwingH
bool getSwingH(void) const
Get the horizontal swing setting of the A/C.
Definition: ir_Samsung.cpp:574
IRSamsungAc::getIon
bool getIon(void) const
Get the Ion (Filter) setting of the A/C.
Definition: ir_Samsung.cpp:703
IRSamsungAc::setQuiet
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition: ir_Samsung.cpp:622
IRSamsungAc::setSwingH
void setSwingH(const bool on)
Set the horizontal swing setting of the A/C.
Definition: ir_Samsung.cpp:584
kSamsungAcFanMed
const uint8_t kSamsungAcFanMed
Definition: ir_Samsung.h:177
kSamsungAcFanAuto2
const uint8_t kSamsungAcFanAuto2
Definition: ir_Samsung.h:179
IRSamsungAc::send
void send(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Samsung.cpp:375
kSamsungAcAuto
const uint8_t kSamsungAcAuto
Definition: ir_Samsung.h:170
IRSamsungAc::_irsend
IRsend _irsend
Instance of the IR send class.
Definition: ir_Samsung.h:255
IRSamsungAc::checksum
void checksum(void)
Update the checksum for the internal state.
Definition: ir_Samsung.cpp:358
IRSamsungAc::IRSamsungAc
IRSamsungAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Samsung.cpp:285
IRSamsungAc::getPowerful
bool getPowerful(void) const
Get the Powerful (Turbo) setting of the A/C.
Definition: ir_Samsung.cpp:633
kSamsungAcFanHigh
const uint8_t kSamsungAcFanHigh
Definition: ir_Samsung.h:178
IRSamsungAc::getClean
bool getClean(void) const
Get the Clean toggle setting of the A/C.
Definition: ir_Samsung.cpp:605
SamsungProtocol::Temp
uint8_t Temp
Definition: ir_Samsung.h:89
IRSamsungAc::setOffTimer
void setOffTimer(const uint16_t nr_of_mins)
Set the Off Timer value of the A/C.
Definition: ir_Samsung.cpp:795
stdAc::fanspeed_t
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:61
kSamsungAcFan
const uint8_t kSamsungAcFan
Definition: ir_Samsung.h:173
IRSamsungAc::setBreeze
void setBreeze(const bool on)
Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree.
Definition: ir_Samsung.cpp:662
SamsungProtocol::Swing
uint8_t Swing
Definition: ir_Samsung.h:77
SamsungProtocol::OffTimeHrs2
uint8_t OffTimeHrs2
Definition: ir_Samsung.h:131
IRSamsungAc::setOnTimer
void setOnTimer(const uint16_t nr_of_mins)
Set the On Timer value of the A/C.
Definition: ir_Samsung.cpp:784
IRSamsungAc::_Sleep
bool _Sleep
Definition: ir_Samsung.h:266
SamsungProtocol::Ion
uint8_t Ion
Definition: ir_Samsung.h:86
SamsungProtocol::OnTimeDay
uint8_t OnTimeDay
Definition: ir_Samsung.h:142
IRSamsungAc::sendExtended
void sendExtended(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the extended current internal state as an IR message.
Definition: ir_Samsung.cpp:389
SamsungProtocol::FanSpecial
uint8_t FanSpecial
Definition: ir_Samsung.h:81
kSamsungAcDefaultRepeat
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:1360
IRSamsungAc::getDisplay
bool getDisplay(void) const
Get the Display (Light/LED) setting of the A/C.
Definition: ir_Samsung.cpp:695
IRSamsungAc::stateReset
void stateReset(const bool extended=true, const bool initialPower=true)
Reset the internal state of the emulation.
Definition: ir_Samsung.cpp:295
IRSamsungAc::_
SamsungProtocol _
Definition: ir_Samsung.h:261
SamsungProtocol::BeepToggle
uint8_t BeepToggle
Definition: ir_Samsung.h:97
SamsungProtocol::OnTimeMins
uint8_t OnTimeMins
Definition: ir_Samsung.h:132
IRsend.h
IRSamsungAc::setSwing
void setSwing(const bool on)
Set the vertical swing setting of the A/C.
Definition: ir_Samsung.cpp:561
IRSamsungAc::getQuiet
bool getQuiet(void) const
Get the Quiet setting of the A/C.
Definition: ir_Samsung.cpp:618
SamsungProtocol::Sum3Upper
uint8_t Sum3Upper
Definition: ir_Samsung.h:153
kSamsungAcSectionLength
const uint16_t kSamsungAcSectionLength
Definition: ir_Samsung.h:181
IRSamsungAc::_getOffTimer
uint16_t _getOffTimer(void) const
Get the Off Timer setting of the A/C from a raw extended state.
Definition: ir_Samsung.cpp:732
IRSamsungAc::begin
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Samsung.cpp:311
IRsend
Class for sending all basic IR protocols.
Definition: IRsend.h:237
IRSamsungAc::setIon
void setIon(const bool on)
Set the Ion (Filter) setting of the A/C.
Definition: ir_Samsung.cpp:707
IRsend::calibrate
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
SamsungProtocol::OffTimeMins
uint8_t OffTimeMins
Definition: ir_Samsung.h:128
IRSamsungAc::getTemp
uint8_t getTemp(void) const
Get the current temperature setting.
Definition: ir_Samsung.cpp:495
IRSamsungAc::_lastOnTimer
uint16_t _lastOnTimer
Definition: ir_Samsung.h:270
IRSamsungAc::setRaw
void setRaw(const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)
Set the internal state from a valid code for this protocol.
Definition: ir_Samsung.cpp:452
SamsungProtocol::Sum1Lower
uint8_t Sum1Lower
Definition: ir_Samsung.h:108
String
std::string String
Definition: IRremoteESP8266.h:1521
IRSamsungAc::toString
String toString(void) const
Convert the current internal state into a human readable string.
Definition: ir_Samsung.cpp:895
IRSamsungAc::sendOff
void sendOff(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the special extended "Off" message as the library can't seem to reproduce this message automatic...
Definition: ir_Samsung.cpp:432
IRSamsungAc::getOffTimer
uint16_t getOffTimer(void) const
Get the Off Timer setting of the A/C.
Definition: ir_Samsung.cpp:766
IRSamsungAc::setSleepTimer
void setSleepTimer(const uint16_t nr_of_mins)
Set the Sleep Timer value of the A/C.
Definition: ir_Samsung.cpp:806
IRSamsungAc::on
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Samsung.cpp:468
IRSamsungAc::convertFan
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Samsung.cpp:830
IRSamsungAc::_setSleepTimer
void _setSleepTimer(void)
Definition: ir_Samsung.cpp:752
kSamsungAcStateLength
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:1356
IRSamsungAc::validChecksum
static bool validChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
Verify the checksum is valid for a given state.
Definition: ir_Samsung.cpp:344
IRSamsungAc::getBeep
bool getBeep(void) const
Get the Beep toggle setting of the A/C.
Definition: ir_Samsung.cpp:597
IRremoteESP8266.h
SamsungProtocol::Sum3Lower
uint8_t Sum3Lower
Definition: ir_Samsung.h:151
IRSamsungAc::setTemp
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Samsung.cpp:487
SamsungProtocol::OffTimeDay
uint8_t OffTimeDay
Definition: ir_Samsung.h:138
IRSamsungAc::getSleepTimer
uint16_t getSleepTimer(void) const
Get the Sleep Timer setting of the A/C.
Definition: ir_Samsung.cpp:773
kSamsungAcPowerSection
const uint64_t kSamsungAcPowerSection
Definition: ir_Samsung.h:182
IRSamsungAc::setPowerful
void setPowerful(const bool on)
Set the Powerful (Turbo) setting of the A/C.
Definition: ir_Samsung.cpp:640
SamsungProtocol::Sum2Lower
uint8_t Sum2Lower
Definition: ir_Samsung.h:125
kSamsungAcExtendedStateLength
const uint16_t kSamsungAcExtendedStateLength
Definition: IRremoteESP8266.h:1358
IRSamsungAc::_OffTimer
uint16_t _OffTimer
Definition: ir_Samsung.h:269
SamsungProtocol::Mode
uint8_t Mode
Definition: ir_Samsung.h:93
IRSamsungAc::setPower
void setPower(const bool on)
Change the power setting.
Definition: ir_Samsung.cpp:475
SamsungProtocol::Sum1Upper
uint8_t Sum1Upper
Definition: ir_Samsung.h:110
SamsungProtocol::Display
uint8_t Display
Definition: ir_Samsung.h:82
IRSamsungAc::setDisplay
void setDisplay(const bool on)
Set the Display (Light/LED) setting of the A/C.
Definition: ir_Samsung.cpp:699
IRSamsungAc::_lastSleep
bool _lastSleep
Definition: ir_Samsung.h:267
SamsungProtocol::Power2
uint8_t Power2
Definition: ir_Samsung.h:99
IRSamsungAc::_lastsentpowerstate
bool _lastsentpowerstate
Definition: ir_Samsung.h:263
kSamsungAcAutoTemp
const uint8_t kSamsungAcAutoTemp
Definition: ir_Samsung.h:169
IRSamsungAc::setMode
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Samsung.cpp:501
kSamsungAcFanLow
const uint8_t kSamsungAcFanLow
Definition: ir_Samsung.h:176
IRSamsungAc::setClean
void setClean(const bool on)
Set the Clean toggle setting of the A/C.
Definition: ir_Samsung.cpp:611
SamsungProtocol::CleanToggle11
uint8_t CleanToggle11
Definition: ir_Samsung.h:87
kSamsungAcHeat
const uint8_t kSamsungAcHeat
Definition: ir_Samsung.h:174
IRSamsungAc::setEcono
void setEcono(const bool on)
Set the current Economy (Eco) setting of the A/C.
Definition: ir_Samsung.cpp:682
IRSamsungAc::toCommonMode
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition: ir_Samsung.cpp:844
IRSamsungAc::sendOn
void sendOn(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the special extended "On" message as the library can't seem to reproduce this message automatica...
Definition: ir_Samsung.cpp:419
kSamsungAcFanAuto
const uint8_t kSamsungAcFanAuto
Definition: ir_Samsung.h:175
IRSamsungAc::setBeep
void setBeep(const bool on)
Set the Beep toggle setting of the A/C.
Definition: ir_Samsung.cpp:601
SamsungProtocol::Power1
uint8_t Power1
Definition: ir_Samsung.h:68
IRSamsungAc::_forceextended
bool _forceextended
Flag to know when we need to send an extended mesg.
Definition: ir_Samsung.h:262
SamsungProtocol::OnTimerEnable
uint8_t OnTimerEnable
Definition: ir_Samsung.h:139
IRSamsungAc::getSectionChecksum
static uint8_t getSectionChecksum(const uint8_t *section)
Get the existing checksum for a given state section.
Definition: ir_Samsung.cpp:317
IRSamsungAc::_getOnTimer
uint16_t _getOnTimer(void) const
Get the On Timer setting of the A/C from a raw extended state.
Definition: ir_Samsung.cpp:711
IRSamsungAc::_OnTimerEnable
bool _OnTimerEnable
Definition: ir_Samsung.h:264
IRSamsungAc::getSwing
bool getSwing(void) const
Get the vertical swing setting of the A/C.
Definition: ir_Samsung.cpp:551
SamsungProtocol::Sleep12
uint8_t Sleep12
Definition: ir_Samsung.h:141
IRSamsungAc::convertMode
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Samsung.cpp:817
IRSamsungAc::calibrate
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Samsung.h:200
SamsungProtocol::Fan
uint8_t Fan
Definition: ir_Samsung.h:92
IRSamsungAc::calcSectionChecksum
static uint8_t calcSectionChecksum(const uint8_t *section)
Calculate the checksum for a given state section.
Definition: ir_Samsung.cpp:326
IRSamsungAc::getEcono
bool getEcono(void) const
Get the current Economy (Eco) setting of the A/C.
Definition: ir_Samsung.cpp:675
SamsungProtocol::OnTimeHrs1
uint8_t OnTimeHrs1
Definition: ir_Samsung.h:133
IRSamsungAc::setFan
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Samsung.cpp:525
kSamsungAcMaxTemp
const uint8_t kSamsungAcMaxTemp
Definition: ir_Samsung.h:168
SamsungProtocol::Sleep5
uint8_t Sleep5
Definition: ir_Samsung.h:63
IRSamsungAc::_setOnTimer
void _setOnTimer(void)
Set the current On Timer value of the A/C into the raw extended state.
Definition: ir_Samsung.cpp:717
SamsungProtocol::CleanToggle10
uint8_t CleanToggle10
Definition: ir_Samsung.h:84
IRSamsungAc::off
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Samsung.cpp:471
IRSamsungAc::getBreeze
bool getBreeze(void) const
Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree.
Definition: ir_Samsung.cpp:654
IRSamsungAc::toCommonFanSpeed
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition: ir_Samsung.cpp:857
IRSamsungAc::_lastOffTimer
uint16_t _lastOffTimer
Definition: ir_Samsung.h:271
IRSamsungAc::_OffTimerEnable
bool _OffTimerEnable
Definition: ir_Samsung.h:265
IRSamsungAc::getPower
bool getPower(void) const
Get the value of the current power setting.
Definition: ir_Samsung.cpp:481
SamsungProtocol::Quiet
uint8_t Quiet
Definition: ir_Samsung.h:64
IRSamsungAc::_setOffTimer
void _setOffTimer(void)
Set the current Off Timer value of the A/C into the raw extended state.
Definition: ir_Samsung.cpp:738
IRSamsungAc::getRaw
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Samsung.cpp:444
SamsungProtocol::OnTimeHrs2
uint8_t OnTimeHrs2
Definition: ir_Samsung.h:135
kSamsungAcFanTurbo
const uint8_t kSamsungAcFanTurbo
Definition: ir_Samsung.h:180
stdAc::state_t
Structure to hold a common A/C state.
Definition: IRsend.h:114
IRSamsungAc::getFan
uint8_t getFan(void) const
Get the current fan speed setting.
Definition: ir_Samsung.cpp:545
SamsungProtocol::raw
uint8_t raw[kSamsungAcExtendedStateLength]
State in code form.
Definition: ir_Samsung.h:47
kSamsungAcMinTemp
const uint8_t kSamsungAcMinTemp
Definition: ir_Samsung.h:167
IRSamsungAc::getMode
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition: ir_Samsung.cpp:519
stdAc::opmode_t
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:49