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