IRremoteESP8266: src/ir_Samsung.h Source File (original) (raw)
Go to the documentation of this file.
1
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
41 #ifdef UNIT_TEST
42 #include "IRsend_test.h"
43 #endif
44
48 struct {
49
50 uint8_t :8;
51
52 uint8_t :4;
53 uint8_t :4;
54
55 uint8_t :4;
56 uint8_t :4;
57
58 uint8_t :8;
59
60 uint8_t :8;
61
62 uint8_t :4;
65 uint8_t :2;
66
67 uint8_t :4;
69 uint8_t :2;
70
71 uint8_t :8;
72
73 uint8_t :4;
74 uint8_t :4;
75
76 uint8_t :4;
78 uint8_t :1;
79
80 uint8_t :1;
81 uint8_t FanSpecial :3;
83 uint8_t :2;
85
88 uint8_t :2;
90
91 uint8_t :1;
94 uint8_t :1;
95
96 uint8_t :2;
98 uint8_t :1;
100 uint8_t :2;
101 };
102 struct {
103
104
105 uint8_t :8;
106
107 uint8_t :4;
109
111 uint8_t :4;
112
113 uint8_t :8;
114
115 uint8_t :8;
116
117 uint8_t :8;
118
119 uint8_t :8;
120
121
122 uint8_t :8;
123
124 uint8_t :4;
126
129 uint8_t OffTimeHrs1 :1;
130
131 uint8_t OffTimeHrs2 :4;
132 uint8_t OnTimeMins :3;
133 uint8_t OnTimeHrs1 :1;
134
135 uint8_t OnTimeHrs2 :4;
136 uint8_t :4;
137
143 uint8_t :3;
144
145 uint8_t :8;
146
147
148 uint8_t :8;
149
150 uint8_t :4;
152
154 uint8_t :4;
155
156 uint8_t :8;
157
158 uint8_t :8;
159
160 uint8_t :8;
161
162 uint8_t :8;
163 };
164 };
165
166
183
184
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
201 #endif // SEND_SAMSUNG_AC
202 void begin(void);
203 void on(void);
204 void off(void);
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;
218 bool getBeep(void) const;
232 bool getIon(void) const;
234 void setOnTimer(const uint16_t nr_of_mins);
236 void setOffTimer(const uint16_t nr_of_mins);
239 uint8_t* getRaw(void);
240 void setRaw(const uint8_t new_code[],
252 #ifndef UNIT_TEST
253
254 private:
256 #else // UNIT_TEST
259 #endif // UNIT_TEST
278 };
279
280 #endif // IR_SAMSUNG_H_
uint8_t OffTimeHrs1
Definition: ir_Samsung.h:129
stdAc::state_t toCommon(void) const
Convert the current internal state into its stdAc::state_t equivalent.
Definition: ir_Samsung.cpp:869
uint16_t getOnTimer(void) const
Get the On Timer setting of the A/C.
Definition: ir_Samsung.cpp:761
const uint8_t kSamsungAcDry
Definition: ir_Samsung.h:172
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:186
uint16_t _OnTimer
Definition: ir_Samsung.h:268
const uint8_t kSamsungAcCool
Definition: ir_Samsung.h:171
uint8_t OffTimerEnable
Definition: ir_Samsung.h:140
uint8_t Sum2Upper
Definition: ir_Samsung.h:127
Native representation of a Samsung A/C message.
Definition: ir_Samsung.h:46
bool getSwingH(void) const
Get the horizontal swing setting of the A/C.
Definition: ir_Samsung.cpp:574
bool getIon(void) const
Get the Ion (Filter) setting of the A/C.
Definition: ir_Samsung.cpp:703
void setQuiet(const bool on)
Set the Quiet setting of the A/C.
Definition: ir_Samsung.cpp:622
void setSwingH(const bool on)
Set the horizontal swing setting of the A/C.
Definition: ir_Samsung.cpp:584
const uint8_t kSamsungAcFanMed
Definition: ir_Samsung.h:177
const uint8_t kSamsungAcFanAuto2
Definition: ir_Samsung.h:179
void send(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the current internal state as an IR message.
Definition: ir_Samsung.cpp:375
const uint8_t kSamsungAcAuto
Definition: ir_Samsung.h:170
IRsend _irsend
Instance of the IR send class.
Definition: ir_Samsung.h:255
void checksum(void)
Update the checksum for the internal state.
Definition: ir_Samsung.cpp:358
IRSamsungAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Samsung.cpp:285
bool getPowerful(void) const
Get the Powerful (Turbo) setting of the A/C.
Definition: ir_Samsung.cpp:633
const uint8_t kSamsungAcFanHigh
Definition: ir_Samsung.h:178
bool getClean(void) const
Get the Clean toggle setting of the A/C.
Definition: ir_Samsung.cpp:605
uint8_t Temp
Definition: ir_Samsung.h:89
void setOffTimer(const uint16_t nr_of_mins)
Set the Off Timer value of the A/C.
Definition: ir_Samsung.cpp:795
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:61
const uint8_t kSamsungAcFan
Definition: ir_Samsung.h:173
void setBreeze(const bool on)
Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree.
Definition: ir_Samsung.cpp:662
uint8_t Swing
Definition: ir_Samsung.h:77
uint8_t OffTimeHrs2
Definition: ir_Samsung.h:131
void setOnTimer(const uint16_t nr_of_mins)
Set the On Timer value of the A/C.
Definition: ir_Samsung.cpp:784
bool _Sleep
Definition: ir_Samsung.h:266
uint8_t Ion
Definition: ir_Samsung.h:86
uint8_t OnTimeDay
Definition: ir_Samsung.h:142
void sendExtended(const uint16_t repeat=kSamsungAcDefaultRepeat)
Send the extended current internal state as an IR message.
Definition: ir_Samsung.cpp:389
uint8_t FanSpecial
Definition: ir_Samsung.h:81
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:1360
bool getDisplay(void) const
Get the Display (Light/LED) setting of the A/C.
Definition: ir_Samsung.cpp:695
void stateReset(const bool extended=true, const bool initialPower=true)
Reset the internal state of the emulation.
Definition: ir_Samsung.cpp:295
SamsungProtocol _
Definition: ir_Samsung.h:261
uint8_t BeepToggle
Definition: ir_Samsung.h:97
uint8_t OnTimeMins
Definition: ir_Samsung.h:132
void setSwing(const bool on)
Set the vertical swing setting of the A/C.
Definition: ir_Samsung.cpp:561
bool getQuiet(void) const
Get the Quiet setting of the A/C.
Definition: ir_Samsung.cpp:618
uint8_t Sum3Upper
Definition: ir_Samsung.h:153
const uint16_t kSamsungAcSectionLength
Definition: ir_Samsung.h:181
uint16_t _getOffTimer(void) const
Get the Off Timer setting of the A/C from a raw extended state.
Definition: ir_Samsung.cpp:732
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Samsung.cpp:311
Class for sending all basic IR protocols.
Definition: IRsend.h:237
void setIon(const bool on)
Set the Ion (Filter) setting of the A/C.
Definition: ir_Samsung.cpp:707
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
uint8_t OffTimeMins
Definition: ir_Samsung.h:128
uint8_t getTemp(void) const
Get the current temperature setting.
Definition: ir_Samsung.cpp:495
uint16_t _lastOnTimer
Definition: ir_Samsung.h:270
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
uint8_t Sum1Lower
Definition: ir_Samsung.h:108
std::string String
Definition: IRremoteESP8266.h:1521
String toString(void) const
Convert the current internal state into a human readable string.
Definition: ir_Samsung.cpp:895
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
uint16_t getOffTimer(void) const
Get the Off Timer setting of the A/C.
Definition: ir_Samsung.cpp:766
void setSleepTimer(const uint16_t nr_of_mins)
Set the Sleep Timer value of the A/C.
Definition: ir_Samsung.cpp:806
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Samsung.cpp:468
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
void _setSleepTimer(void)
Definition: ir_Samsung.cpp:752
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:1356
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
bool getBeep(void) const
Get the Beep toggle setting of the A/C.
Definition: ir_Samsung.cpp:597
uint8_t Sum3Lower
Definition: ir_Samsung.h:151
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Samsung.cpp:487
uint8_t OffTimeDay
Definition: ir_Samsung.h:138
uint16_t getSleepTimer(void) const
Get the Sleep Timer setting of the A/C.
Definition: ir_Samsung.cpp:773
const uint64_t kSamsungAcPowerSection
Definition: ir_Samsung.h:182
void setPowerful(const bool on)
Set the Powerful (Turbo) setting of the A/C.
Definition: ir_Samsung.cpp:640
uint8_t Sum2Lower
Definition: ir_Samsung.h:125
const uint16_t kSamsungAcExtendedStateLength
Definition: IRremoteESP8266.h:1358
uint16_t _OffTimer
Definition: ir_Samsung.h:269
uint8_t Mode
Definition: ir_Samsung.h:93
void setPower(const bool on)
Change the power setting.
Definition: ir_Samsung.cpp:475
uint8_t Sum1Upper
Definition: ir_Samsung.h:110
uint8_t Display
Definition: ir_Samsung.h:82
void setDisplay(const bool on)
Set the Display (Light/LED) setting of the A/C.
Definition: ir_Samsung.cpp:699
bool _lastSleep
Definition: ir_Samsung.h:267
uint8_t Power2
Definition: ir_Samsung.h:99
bool _lastsentpowerstate
Definition: ir_Samsung.h:263
const uint8_t kSamsungAcAutoTemp
Definition: ir_Samsung.h:169
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Samsung.cpp:501
const uint8_t kSamsungAcFanLow
Definition: ir_Samsung.h:176
void setClean(const bool on)
Set the Clean toggle setting of the A/C.
Definition: ir_Samsung.cpp:611
uint8_t CleanToggle11
Definition: ir_Samsung.h:87
const uint8_t kSamsungAcHeat
Definition: ir_Samsung.h:174
void setEcono(const bool on)
Set the current Economy (Eco) setting of the A/C.
Definition: ir_Samsung.cpp:682
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivalent.
Definition: ir_Samsung.cpp:844
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
const uint8_t kSamsungAcFanAuto
Definition: ir_Samsung.h:175
void setBeep(const bool on)
Set the Beep toggle setting of the A/C.
Definition: ir_Samsung.cpp:601
uint8_t Power1
Definition: ir_Samsung.h:68
bool _forceextended
Flag to know when we need to send an extended mesg.
Definition: ir_Samsung.h:262
uint8_t OnTimerEnable
Definition: ir_Samsung.h:139
static uint8_t getSectionChecksum(const uint8_t *section)
Get the existing checksum for a given state section.
Definition: ir_Samsung.cpp:317
uint16_t _getOnTimer(void) const
Get the On Timer setting of the A/C from a raw extended state.
Definition: ir_Samsung.cpp:711
bool _OnTimerEnable
Definition: ir_Samsung.h:264
bool getSwing(void) const
Get the vertical swing setting of the A/C.
Definition: ir_Samsung.cpp:551
uint8_t Sleep12
Definition: ir_Samsung.h:141
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Samsung.cpp:817
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Samsung.h:200
uint8_t Fan
Definition: ir_Samsung.h:92
static uint8_t calcSectionChecksum(const uint8_t *section)
Calculate the checksum for a given state section.
Definition: ir_Samsung.cpp:326
bool getEcono(void) const
Get the current Economy (Eco) setting of the A/C.
Definition: ir_Samsung.cpp:675
uint8_t OnTimeHrs1
Definition: ir_Samsung.h:133
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Samsung.cpp:525
const uint8_t kSamsungAcMaxTemp
Definition: ir_Samsung.h:168
uint8_t Sleep5
Definition: ir_Samsung.h:63
void _setOnTimer(void)
Set the current On Timer value of the A/C into the raw extended state.
Definition: ir_Samsung.cpp:717
uint8_t CleanToggle10
Definition: ir_Samsung.h:84
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Samsung.cpp:471
bool getBreeze(void) const
Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree.
Definition: ir_Samsung.cpp:654
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition: ir_Samsung.cpp:857
uint16_t _lastOffTimer
Definition: ir_Samsung.h:271
bool _OffTimerEnable
Definition: ir_Samsung.h:265
bool getPower(void) const
Get the value of the current power setting.
Definition: ir_Samsung.cpp:481
uint8_t Quiet
Definition: ir_Samsung.h:64
void _setOffTimer(void)
Set the current Off Timer value of the A/C into the raw extended state.
Definition: ir_Samsung.cpp:738
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Samsung.cpp:444
uint8_t OnTimeHrs2
Definition: ir_Samsung.h:135
const uint8_t kSamsungAcFanTurbo
Definition: ir_Samsung.h:180
Structure to hold a common A/C state.
Definition: IRsend.h:114
uint8_t getFan(void) const
Get the current fan speed setting.
Definition: ir_Samsung.cpp:545
uint8_t raw[kSamsungAcExtendedStateLength]
State in code form.
Definition: ir_Samsung.h:47
const uint8_t kSamsungAcMinTemp
Definition: ir_Samsung.h:167
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition: ir_Samsung.cpp:519
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:49