34#define __STDC_LIMIT_MACROS
42#include "IRsend_test.h"
160 explicit IRCoolixAC(
const uint16_t pin,
const bool inverted =
false,
161 const bool use_modulation =
true);
178 void setTemp(
const uint8_t temp);
183 void setFan(
const uint8_t speed,
const bool modecheck =
true);
184 uint8_t
getFan(
void)
const;
185 void setMode(
const uint8_t mode);
200 uint32_t
getRaw(
void)
const;
201 void setRaw(
const uint32_t new_code);
const uint16_t kCoolixDefaultRepeat
Definition IRremoteESP8266.h:1201
std::string String
Definition IRremoteESP8266.h:1564
Class for handling detailed Coolix A/C messages.
Definition ir_Coolix.h:158
void stateReset(void)
Reset the internal state to a fixed known good state.
Definition ir_Coolix.cpp:92
bool ledFlag
Definition ir_Coolix.h:226
void begin(void)
Set up hardware to be able to send a message.
Definition ir_Coolix.cpp:107
void setZoneFollow(const bool on)
Change the Zone Follow setting.
Definition ir_Coolix.cpp:433
void recoverSavedState(void)
Restore the current internal state from backup as long as it isn't a special state.
Definition ir_Coolix.cpp:252
void on(void)
Change the power setting to On.
Definition ir_Coolix.cpp:357
void clearSensorTemp(void)
Clear the Sensor Temperature setting..
Definition ir_Coolix.cpp:440
void setTemp(const uint8_t temp)
Set the temperature.
Definition ir_Coolix.cpp:284
CoolixProtocol _saved
Copy of the state if we required a special mode.
Definition ir_Coolix.h:221
bool sleepFlag
Definition ir_Coolix.h:228
void updateAndSaveState(const uint32_t raw_state)
Backup the current internal state as long as it isn't a special state and set the new state.
Definition ir_Coolix.cpp:245
uint8_t getFan(void) const
Get the current fan speed setting.
Definition ir_Coolix.cpp:484
bool getTurbo(void) const
Get the Turbo setting of the A/C.
Definition ir_Coolix.cpp:394
CoolixProtocol _
The state of the IR remote in IR code form.
Definition ir_Coolix.h:220
bool getSleep(void) const
Get the Sleep setting of the A/C.
Definition ir_Coolix.cpp:384
void setSensorTempRaw(const uint8_t code)
Set the raw (native) sensor temperature value.
Definition ir_Coolix.cpp:324
uint32_t getNormalState(void)
void setClean(void)
Toggle the Clean mode of the A/C.
Definition ir_Coolix.cpp:419
stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
Convert the A/C state to it's common stdAc::state_t equivalent.
Definition ir_Coolix.cpp:581
uint8_t savedFan
Definition ir_Coolix.h:232
uint8_t getTemp(void) const
Get the current temperature setting.
Definition ir_Coolix.cpp:306
bool powerFlag
Definition ir_Coolix.h:224
bool getSwing(void) const
Get the Swing setting of the A/C.
Definition ir_Coolix.cpp:364
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition ir_Coolix.cpp:447
bool getLed(void) const
Get the Led (light) setting of the A/C.
Definition ir_Coolix.cpp:405
bool turboFlag
Definition ir_Coolix.h:225
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivalent.
Definition ir_Coolix.cpp:569
IRsend _irsend
Instance of the IR send class.
Definition ir_Coolix.h:214
bool swingFlag
Definition ir_Coolix.h:229
bool getPower(void) const
Get the value of the current power setting.
Definition ir_Coolix.cpp:342
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's common stdAc::opmode_t equivalent.
Definition ir_Coolix.cpp:556
void setTempFRange(const bool high=false)
Set the fahrenheit temperature range.
Definition ir_Coolix.cpp:271
void off(void)
Change the power setting to Off.
Definition ir_Coolix.cpp:360
void clearTempFRange()
Definition ir_Coolix.cpp:277
bool getClean(void) const
Get the Clean setting of the A/C.
Definition ir_Coolix.cpp:416
static uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition ir_Coolix.cpp:542
uint8_t getTempRaw(void) const
Get the raw (native) temperature value.
Definition ir_Coolix.cpp:267
void setTurbo(void)
Toggle the Turbo mode of the A/C.
Definition ir_Coolix.cpp:397
void setSwing(void)
Toggle the Swing mode of the A/C.
Definition ir_Coolix.cpp:367
uint8_t getMode(void) const
Get the operating mode setting of the A/C.
Definition ir_Coolix.cpp:475
bool cleanFlag
Definition ir_Coolix.h:227
void setPower(const bool on)
Change the power setting.
Definition ir_Coolix.cpp:346
void setSensorTemp(const uint8_t temp)
Set the sensor temperature.
Definition ir_Coolix.cpp:330
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition ir_Coolix.h:169
bool isSpecialState(void) const
Is the current state is a special state?
Definition ir_Coolix.cpp:194
void send(const uint16_t repeat=kCoolixDefaultRepeat)
Send the current internal state as an IR message.
Definition ir_Coolix.cpp:112
uint8_t getSensorTemp(void) const
Get the sensor temperature setting.
Definition ir_Coolix.cpp:337
bool tempLowF
Definition ir_Coolix.h:230
bool getZoneFollow(void) const
Get the Zone Follow setting of the A/C.
Definition ir_Coolix.cpp:426
static uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode into its native mode.
Definition ir_Coolix.cpp:529
void setRawFromCoolix48(const uint64_t new_code)
Definition ir_Coolix.cpp:172
uint32_t getRaw(void) const
Get a copy of the internal state as a valid code for this protocol.
Definition ir_Coolix.cpp:153
void setTempRaw(const uint8_t code)
Set the raw (native) temperature value.
Definition ir_Coolix.cpp:263
void setRaw(const uint32_t new_code)
Set the internal state from a valid code for this protocol.
Definition ir_Coolix.cpp:157
void setLed(void)
Toggle the Led (light) mode of the A/C.
Definition ir_Coolix.cpp:408
void setSleep(void)
Toggle the Sleep mode of the A/C.
Definition ir_Coolix.cpp:387
void setSwingVStep(void)
Set the Vertical Swing Step setting of the A/C.
Definition ir_Coolix.cpp:378
bool getSwingVStep(void) const
Get the Vertical Swing Step setting of the A/C.
Definition ir_Coolix.cpp:375
String toString(void) const
Convert the internal state into a human readable string.
Definition ir_Coolix.cpp:645
bool handleSpecialState(const uint32_t data)
Adjust any internal settings based on the type of special state we are supplied. Does nothing if it i...
Definition ir_Coolix.cpp:214
bool tempHighF
Definition ir_Coolix.h:231
void setFan(const uint8_t speed, const bool modecheck=true)
Set the speed of the fan.
Definition ir_Coolix.cpp:489
Class for sending all basic IR protocols.
Definition IRsend.h:249
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition IRsend.cpp:209
const uint8_t kCoolixTempHighFMax
Definition ir_Coolix.h:88
const uint8_t kCoolixTempMapLowF[kCoolixTempLowFRange]
Definition ir_Coolix.h:91
const uint8_t kCoolixTempHighFMin
Definition ir_Coolix.h:87
const uint8_t kCoolixHeat
Definition ir_Coolix.h:50
const uint8_t kCoolixFanMed
Definition ir_Coolix.h:56
const uint8_t kCoolixFan
Definition ir_Coolix.h:51
const uint8_t kCoolixFanFixed
Definition ir_Coolix.h:61
const uint8_t kCoolixFanAuto0
Definition ir_Coolix.h:59
const uint8_t kCoolixTempLowFRange
Definition ir_Coolix.h:85
const uint8_t kCoolixFanZoneFollow
Definition ir_Coolix.h:60
const uint32_t kCoolixClean
Definition ir_Coolix.h:130
const uint32_t kCoolixLed
Definition ir_Coolix.h:129
const uint8_t kCoolixFanMin
Definition ir_Coolix.h:55
const uint8_t kCoolixFanTempCode
Definition ir_Coolix.h:66
const uint8_t kCoolixSensorTempMax
Definition ir_Coolix.h:119
const uint8_t kCoolixAuto
Definition ir_Coolix.h:49
const uint8_t kCoolixTempRange
Definition ir_Coolix.h:65
const uint32_t kCoolixSwing
Definition ir_Coolix.h:124
const uint32_t kCoolixCmdFan
Definition ir_Coolix.h:131
const uint32_t kCoolixSwingH
Definition ir_Coolix.h:125
const uint8_t kCoolixTempHighFRange
Definition ir_Coolix.h:89
const uint8_t kCoolixDry
Definition ir_Coolix.h:48
const uint8_t kCoolixTempMap[kCoolixTempRange]
Definition ir_Coolix.h:67
const uint8_t kCoolixTempLowFMin
Definition ir_Coolix.h:83
const uint32_t kCoolixSleep
Definition ir_Coolix.h:127
const uint8_t kCoolixFanMax
Definition ir_Coolix.h:57
const uint32_t kCoolixSwingV
Definition ir_Coolix.h:126
const uint8_t kCoolixFanAuto
Definition ir_Coolix.h:58
const uint8_t kCoolixTempMapHighF[kCoolixTempHighFRange]
Definition ir_Coolix.h:106
const uint8_t kCoolixTempLowFMax
Definition ir_Coolix.h:84
const uint8_t kCoolixTempMin
Definition ir_Coolix.h:63
const uint32_t kCoolixDefaultState
Definition ir_Coolix.h:133
const uint32_t kCoolixTurbo
Definition ir_Coolix.h:128
const uint8_t kCoolixCool
Definition ir_Coolix.h:47
const uint8_t kCoolixSensorTempIgnoreCode
Definition ir_Coolix.h:120
const uint32_t kCoolixOff
Definition ir_Coolix.h:123
const uint8_t kCoolixTempMax
Definition ir_Coolix.h:64
fanspeed_t
Common A/C settings for Fan Speeds.
Definition IRsend.h:61
opmode_t
Common A/C settings for A/C operating modes.
Definition IRsend.h:49
Structure to hold a common A/C state.
Definition IRsend.h:114
Native representation of a Coolix A/C message.
Definition ir_Coolix.h:136
uint32_t SensorTemp
The temperature sensor in the IR remote.
Definition ir_Coolix.h:145
uint32_t Temp
Desired temperature (Celsius)
Definition ir_Coolix.h:143
uint32_t raw
The state in IR code form.
Definition ir_Coolix.h:137
uint32_t ZoneFollow1
Control bit for Zone Follow mode.
Definition ir_Coolix.h:141
uint32_t Mode
Operation mode.
Definition ir_Coolix.h:142
uint32_t Fan
Fan speed.
Definition ir_Coolix.h:146
uint32_t ZoneFollow2
Additional control bit for Zone Follow mode.
Definition ir_Coolix.h:149