IRremoteESP8266
ir_Carrier.h
Go to the documentation of this file.
1 // Copyright 2020 David Conran
6 
7 // Supports:
8 // Brand: Carrier/Surrey, Model: 42QG5A55970 remote
9 // Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C
10 // Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C
11 // Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C
12 // Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C
13 // Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter
14 
15 #ifndef IR_CARRIER_H_
16 #define IR_CARRIER_H_
17 
18 #define __STDC_LIMIT_MACROS
19 #include <stdint.h>
20 #ifndef UNIT_TEST
21 #include <Arduino.h>
22 #endif
23 #include "IRremoteESP8266.h"
24 #include "IRsend.h"
25 #ifdef UNIT_TEST
26 #include "IRsend_test.h"
27 #endif
28 
29 
30 // Constants
31 
32 // CARRIER_AC64
33 const uint8_t kCarrierAc64ChecksumOffset = 16;
34 const uint8_t kCarrierAc64ChecksumSize = 4;
37 const uint8_t kCarrierAc64ModeSize = 2;
38 const uint8_t kCarrierAc64Heat = 0b01; // 1
39 const uint8_t kCarrierAc64Cool = 0b10; // 2
40 const uint8_t kCarrierAc64Fan = 0b11; // 3
43 const uint8_t kCarrierAc64FanSize = 2;
44 const uint8_t kCarrierAc64FanAuto = 0b00; // 0
45 const uint8_t kCarrierAc64FanLow = 0b01; // 1
46 const uint8_t kCarrierAc64FanMedium = 0b10; // 2
47 const uint8_t kCarrierAc64FanHigh = 0b11; // 3
49  kCarrierAc64FanSize; // 24
50 const uint8_t kCarrierAc64TempSize = 4;
51 const uint8_t kCarrierAc64MinTemp = 16; // Celsius
52 const uint8_t kCarrierAc64MaxTemp = 30; // Celsius
54  kCarrierAc64TempSize + 1; // 29
55 const uint8_t kCarrierAc64PowerOffset = kCarrierAc64SwingVOffset + 6 + 1; // 36
57  kCarrierAc64PowerOffset + 1; // 37
60 const uint8_t kCarrierAc64SleepOffset =
62 const uint8_t kCarrierAc64TimerSize = 4;
63 const uint8_t kCarrierAc64TimerMax = 9; // Hours.
64 const uint8_t kCarrierAc64TimerMin = 1; // Hours.
66  kCarrierAc64SleepOffset + 12 + 1; // 52
68  kCarrierAc64TimerSize + 4; // 60
69 
70 
71 // Classes
72 
75  public:
76  explicit IRCarrierAc64(const uint16_t pin, const bool inverted = false,
77  const bool use_modulation = true);
78 
79  void stateReset();
80 #if SEND_CARRIER_AC64
81  void send(const uint16_t repeat = kCarrierAc64MinRepeat);
86  int8_t calibrate(void) { return _irsend.calibrate(); }
87 #endif // SEND_CARRIER_AC64
88  void begin();
89  static uint8_t calcChecksum(const uint64_t state);
90  static bool validChecksum(const uint64_t state);
91  void setPower(const bool on);
92  bool getPower();
93  void on();
94  void off();
95  void setTemp(const uint8_t temp);
96  uint8_t getTemp();
97  void setSwingV(const bool on);
98  bool getSwingV(void);
99  void setSleep(const bool on);
100  bool getSleep(void);
101  void setFan(const uint8_t speed);
102  uint8_t getFan();
103  void setMode(const uint8_t mode);
104  uint8_t getMode();
105  void setOnTimer(const uint16_t nr_of_mins);
106  uint16_t getOnTimer(void);
107  void setOffTimer(const uint16_t nr_of_mins);
108  uint16_t getOffTimer(void);
109  uint64_t getRaw();
110  void setRaw(const uint64_t state);
111  uint8_t convertMode(const stdAc::opmode_t mode);
112  uint8_t convertFan(const stdAc::fanspeed_t speed);
113  static stdAc::opmode_t toCommonMode(const uint8_t mode);
114  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
115  stdAc::state_t toCommon(void);
116  String toString();
117 #ifndef UNIT_TEST
118 
119  private:
121 #else
122  IRsendTest _irsend;
124 #endif
126  uint64_t remote_state;
127  void checksum(void);
128  void _cancelOnTimer(void);
129  void _cancelOffTimer(void);
130 };
131 #endif // IR_CARRIER_H_
kCarrierAc64MinTemp
const uint8_t kCarrierAc64MinTemp
Definition: ir_Carrier.h:51
kCarrierAc64TimerMin
const uint8_t kCarrierAc64TimerMin
Definition: ir_Carrier.h:64
IRCarrierAc64::off
void off()
Change the power setting to Off.
Definition: ir_Carrier.cpp:318
IRCarrierAc64::getOffTimer
uint16_t getOffTimer(void)
Get the current Off Timer time.
Definition: ir_Carrier.cpp:474
IRCarrierAc64::setPower
void setPower(const bool on)
Change the power setting.
Definition: ir_Carrier.cpp:304
IRCarrierAc64::checksum
void checksum(void)
Calculate and set the checksum values for the internal state.
Definition: ir_Carrier.cpp:259
IRCarrierAc64::getSwingV
bool getSwingV(void)
Get the Vertical Swing mode of the A/C.
Definition: ir_Carrier.cpp:412
IRCarrierAc64::IRCarrierAc64
IRCarrierAc64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: ir_Carrier.cpp:228
IRCarrierAc64::on
void on()
Change the power setting to On.
Definition: ir_Carrier.cpp:315
stdAc::fanspeed_t
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
kCarrierAc64SleepOffset
const uint8_t kCarrierAc64SleepOffset
Definition: ir_Carrier.h:60
IRCarrierAc64::toCommon
stdAc::state_t toCommon(void)
Convert the A/C state to it's common stdAc::state_t equivalent.
Definition: ir_Carrier.cpp:523
IRCarrierAc64::remote_state
uint64_t remote_state
The state of the IR remote.
Definition: ir_Carrier.h:126
kCarrierAc64Heat
const uint8_t kCarrierAc64Heat
Definition: ir_Carrier.h:38
IRsend.h
kCarrierAc64FanSize
const uint8_t kCarrierAc64FanSize
Definition: ir_Carrier.h:43
IRCarrierAc64::getRaw
uint64_t getRaw()
Get a copy of the internal state as a valid code for this protocol.
Definition: ir_Carrier.cpp:277
IRsend
Class for sending all basic IR protocols.
Definition: IRsend.h:176
IRCarrierAc64::_cancelOnTimer
void _cancelOnTimer(void)
Clear the On Timer enable bit.
Definition: ir_Carrier.cpp:436
IRCarrierAc64::begin
void begin()
Set up hardware to be able to send a message.
Definition: ir_Carrier.cpp:265
kCarrierAc64Cool
const uint8_t kCarrierAc64Cool
Definition: ir_Carrier.h:39
IRsend::calibrate
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
IRCarrierAc64::toCommonMode
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode to it's common stdAc::opmode_t equivalent.
Definition: ir_Carrier.cpp:355
IRCarrierAc64::getMode
uint8_t getMode()
Get the operating mode setting of the A/C.
Definition: ir_Carrier.cpp:322
IRCarrierAc64::getFan
uint8_t getFan()
Get the current fan speed setting.
Definition: ir_Carrier.cpp:365
kCarrierAc64OffTimerOffset
const uint8_t kCarrierAc64OffTimerOffset
Definition: ir_Carrier.h:67
String
std::string String
Definition: IRremoteESP8266.h:1128
kCarrierAc64OnTimerEnableOffset
const uint8_t kCarrierAc64OnTimerEnableOffset
Definition: ir_Carrier.h:58
IRCarrierAc64::setTemp
void setTemp(const uint8_t temp)
Set the temp in deg C.
Definition: ir_Carrier.cpp:288
kCarrierAc64OnTimerOffset
const uint8_t kCarrierAc64OnTimerOffset
Definition: ir_Carrier.h:65
IRCarrierAc64::getOnTimer
uint16_t getOnTimer(void)
Get the current On Timer time.
Definition: ir_Carrier.cpp:443
IRCarrierAc64::send
void send(const uint16_t repeat=kCarrierAc64MinRepeat)
Send the current internal state as an IR message.
Definition: ir_Carrier.cpp:270
IRCarrierAc64::convertFan
uint8_t convertFan(const stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Carrier.cpp:381
IRCarrierAc64::setOffTimer
void setOffTimer(const uint16_t nr_of_mins)
Set the Off Timer time.
Definition: ir_Carrier.cpp:486
kCarrierAc64TimerMax
const uint8_t kCarrierAc64TimerMax
Definition: ir_Carrier.h:63
kCarrierAc64FanHigh
const uint8_t kCarrierAc64FanHigh
Definition: ir_Carrier.h:47
IRremoteESP8266.h
IRCarrierAc64::validChecksum
static bool validChecksum(const uint64_t state)
Verify the checksum is valid for a given state.
Definition: ir_Carrier.cpp:252
IRCarrierAc64::getPower
bool getPower()
Get the value of the current power setting.
Definition: ir_Carrier.cpp:310
kCarrierAc64FanMedium
const uint8_t kCarrierAc64FanMedium
Definition: ir_Carrier.h:46
kCarrierAc64MaxTemp
const uint8_t kCarrierAc64MaxTemp
Definition: ir_Carrier.h:52
IRCarrierAc64
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:74
IRCarrierAc64::getTemp
uint8_t getTemp()
Get the current temperature from the internal state.
Definition: ir_Carrier.cpp:297
IRCarrierAc64::_irsend
IRsend _irsend
Instance of the IR send class.
Definition: ir_Carrier.h:120
IRCarrierAc64::stateReset
void stateReset()
Reset the internal state to a fixed known good state.
Definition: ir_Carrier.cpp:234
kCarrierAc64OffTimerEnableOffset
const uint8_t kCarrierAc64OffTimerEnableOffset
Definition: ir_Carrier.h:56
kCarrierAc64SwingVOffset
const uint8_t kCarrierAc64SwingVOffset
Definition: ir_Carrier.h:53
IRCarrierAc64::calcChecksum
static uint8_t calcChecksum(const uint64_t state)
Calculate the checksum for a given state.
Definition: ir_Carrier.cpp:239
IRCarrierAc64::calibrate
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Carrier.h:86
IRCarrierAc64::setRaw
void setRaw(const uint64_t state)
Set the internal state from a valid code for this protocol.
Definition: ir_Carrier.cpp:284
kCarrierAc64TimerSize
const uint8_t kCarrierAc64TimerSize
Definition: ir_Carrier.h:62
kCarrierAc64Fan
const uint8_t kCarrierAc64Fan
Definition: ir_Carrier.h:40
kCarrierAc64ChecksumSize
const uint8_t kCarrierAc64ChecksumSize
Definition: ir_Carrier.h:34
kCarrierAc64ModeOffset
const uint8_t kCarrierAc64ModeOffset
Definition: ir_Carrier.h:35
IRCarrierAc64::getSleep
bool getSleep(void)
Get the Sleep mode of the A/C.
Definition: ir_Carrier.cpp:431
IRCarrierAc64::setOnTimer
void setOnTimer(const uint16_t nr_of_mins)
Set the On Timer time.
Definition: ir_Carrier.cpp:455
IRCarrierAc64::convertMode
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a standard A/C mode into its native mode.
Definition: ir_Carrier.cpp:344
kCarrierAc64MinRepeat
const uint16_t kCarrierAc64MinRepeat
Definition: IRremoteESP8266.h:856
kCarrierAc64FanLow
const uint8_t kCarrierAc64FanLow
Definition: ir_Carrier.h:45
kCarrierAc64FanAuto
const uint8_t kCarrierAc64FanAuto
Definition: ir_Carrier.h:44
IRCarrierAc64::toCommonFanSpeed
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Carrier.cpp:395
IRCarrierAc64::setFan
void setFan(const uint8_t speed)
Set the speed of the fan.
Definition: ir_Carrier.cpp:371
IRCarrierAc64::setMode
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Carrier.cpp:328
IRCarrierAc64::setSwingV
void setSwingV(const bool on)
Set the Vertical Swing mode of the A/C.
Definition: ir_Carrier.cpp:406
IRCarrierAc64::setSleep
void setSleep(const bool on)
Set the Sleep mode of the A/C.
Definition: ir_Carrier.cpp:418
IRCarrierAc64::_cancelOffTimer
void _cancelOffTimer(void)
Clear the Off Timer enable bit.
Definition: ir_Carrier.cpp:467
IRCarrierAc64::toString
String toString()
Convert the internal state into a human readable string.
Definition: ir_Carrier.cpp:500
kCarrierAc64PowerOffset
const uint8_t kCarrierAc64PowerOffset
Definition: ir_Carrier.h:55
stdAc::state_t
Structure to hold a common A/C state.
Definition: IRsend.h:97
kCarrierAc64ModeSize
const uint8_t kCarrierAc64ModeSize
Definition: ir_Carrier.h:37
kCarrierAc64TempOffset
const uint8_t kCarrierAc64TempOffset
Definition: ir_Carrier.h:48
kCarrierAc64TempSize
const uint8_t kCarrierAc64TempSize
Definition: ir_Carrier.h:50
kCarrierAc64ChecksumOffset
const uint8_t kCarrierAc64ChecksumOffset
Definition: ir_Carrier.h:33
kCarrierAc64FanOffset
const uint8_t kCarrierAc64FanOffset
Definition: ir_Carrier.h:41
stdAc::opmode_t
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46