Go to the documentation of this file.
27 #define __STDC_LIMIT_MACROS
36 #include "IRsend_test.h"
78 #define FUJITSU_AC_MODE_AUTO kFujitsuAcModeAuto
79 #define FUJITSU_AC_MODE_COOL kFujitsuAcModeCool
80 #define FUJITSU_AC_MODE_DRY kFujitsuAcModeDry
81 #define FUJITSU_AC_MODE_FAN kFujitsuAcModeFan
82 #define FUJITSU_AC_MODE_HEAT kFujitsuAcModeHeat
83 #define FUJITSU_AC_CMD_STAY_ON kFujitsuAcCmdStayOn
84 #define FUJITSU_AC_CMD_TURN_ON kFujitsuAcCmdTurnOn
85 #define FUJITSU_AC_CMD_TURN_OFF kFujitsuAcCmdTurnOff
86 #define FUJITSU_AC_CMD_STEP_HORIZ kFujitsuAcCmdStepHoriz
87 #define FUJITSU_AC_CMD_STEP_VERT kFujitsuAcCmdStepVert
88 #define FUJITSU_AC_FAN_AUTO kFujitsuAcFanAuto
89 #define FUJITSU_AC_FAN_HIGH kFujitsuAcFanHigh
90 #define FUJITSU_AC_FAN_MED kFujitsuAcFanMed
91 #define FUJITSU_AC_FAN_LOW kFujitsuAcFanLow
92 #define FUJITSU_AC_FAN_QUIET kFujitsuAcFanQuiet
93 #define FUJITSU_AC_MIN_TEMP kFujitsuAcMinTemp
94 #define FUJITSU_AC_MAX_TEMP kFujitsuAcMaxTemp
95 #define FUJITSU_AC_SWING_OFF kFujitsuAcSwingOff
96 #define FUJITSU_AC_SWING_VERT kFujitsuAcSwingVert
97 #define FUJITSU_AC_SWING_HORIZ kFujitsuAcSwingHoriz
98 #define FUJITSU_AC_SWING_BOTH kFujitsuAcSwingBoth
105 const bool inverted =
false,
106 const bool use_modulation =
true);
117 #endif // SEND_FUJITSU_AC
123 void setCmd(
const uint8_t cmd);
124 uint8_t
getCmd(
const bool raw =
false);
125 void setTemp(
const uint8_t temp);
129 void setMode(
const uint8_t mode);
132 uint8_t
getSwing(
const bool raw =
false);
134 bool setRaw(
const uint8_t newState[],
const uint16_t length);
136 static bool validChecksum(uint8_t* state,
const uint16_t length);
142 bool getClean(
const bool raw =
false);
180 #endif // IR_FUJITSU_H_
bool _clean
Definition: ir_Fujitsu.h:174
const uint8_t kFujitsuAcCmdTurnOff
Definition: ir_Fujitsu.h:49
const uint16_t kFujitsuAcMinRepeat
Definition: IRremoteESP8266.h:899
uint8_t _cmd
Definition: ir_Fujitsu.h:169
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
const uint8_t kFujitsuAcFilterOffset
Definition: ir_Fujitsu.h:75
int8_t calibrate(void)
Run the calibration to calculate uSec timing offsets for this platform.
Definition: ir_Fujitsu.h:116
void setClean(const bool on)
Set the Clean mode of the A/C.
Definition: ir_Fujitsu.cpp:491
const uint8_t kFujitsuAcCmdToggleSwingVert
Definition: ir_Fujitsu.h:53
uint8_t _fanSpeed
Definition: ir_Fujitsu.h:166
uint8_t * getRaw(void)
Get a PTR to the internal state/code for this protocol.
Definition: ir_Fujitsu.cpp:229
bool _filter
Definition: ir_Fujitsu.h:175
void stepVert(void)
Request the A/C to step the Vertical Swing.
Definition: ir_Fujitsu.cpp:323
bool _outsideQuiet
Definition: ir_Fujitsu.h:173
void setTemp(const uint8_t temp)
Set the temperature.
Definition: ir_Fujitsu.cpp:418
Class for sending all basic IR protocols.
Definition: IRsend.h:176
uint8_t convertMode(const stdAc::opmode_t mode)
Convert a stdAc::opmode_t enum into its native mode.
Definition: ir_Fujitsu.cpp:559
void stateReset(void)
Reset the state of the remote to a known good state/sequence.
Definition: ir_Fujitsu.cpp:95
const uint8_t kFujitsuAcCleanOffset
Definition: ir_Fujitsu.h:74
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
const uint8_t kFujitsuAcFanAuto
Definition: ir_Fujitsu.h:57
bool setRaw(const uint8_t newState[], const uint16_t length)
Set the internal state from a valid code for this protocol.
Definition: ir_Fujitsu.cpp:298
std::string String
Definition: IRremoteESP8266.h:1128
const uint8_t kFujitsuAcOutsideQuietOffset
Definition: ir_Fujitsu.h:73
const uint8_t kFujitsuAcCmdTurnOn
Definition: ir_Fujitsu.h:48
uint8_t _state_length_short
Definition: ir_Fujitsu.h:172
const uint8_t kFujitsuAcMinTemp
Definition: ir_Fujitsu.h:64
const uint8_t kFujitsuAcFanHigh
Definition: ir_Fujitsu.h:58
const uint8_t kFujitsuAcModeHeat
Definition: ir_Fujitsu.h:45
void setFilter(const bool on)
Set the Filter mode status of the A/C.
Definition: ir_Fujitsu.cpp:512
uint8_t convertFan(stdAc::fanspeed_t speed)
Convert a stdAc::fanspeed_t enum into it's native speed.
Definition: ir_Fujitsu.cpp:572
void stepHoriz(void)
Request the A/C to step the Horizontal Swing.
Definition: ir_Fujitsu.cpp:311
fujitsu_ac_remote_model_t getModel(void)
Get the currently emulated/detected model of the A/C.
Definition: ir_Fujitsu.cpp:92
const uint8_t kFujitsuAcCmdToggleSwingHoriz
Definition: ir_Fujitsu.h:55
IRsend _irsend
Instance of the IR send class.
Definition: ir_Fujitsu.h:158
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
void setCmd(const uint8_t cmd)
Set the requested (special) command part for the A/C message.
Definition: ir_Fujitsu.cpp:336
void buildFromState(const uint16_t length)
Build the internal state/config from the current (raw) A/C message.
Definition: ir_Fujitsu.cpp:236
uint8_t _temp
Definition: ir_Fujitsu.h:165
uint8_t _swingMode
Definition: ir_Fujitsu.h:168
void begin(void)
Set up hardware to be able to send a message.
Definition: ir_Fujitsu.cpp:107
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:101
const uint8_t kFujitsuAcCmdStepVert
Definition: ir_Fujitsu.h:52
void setSwing(const uint8_t mode)
Set the requested swing operation mode of the A/C unit.
Definition: ir_Fujitsu.cpp:460
const uint16_t kFujitsuAcStateLength
Definition: IRremoteESP8266.h:900
const uint8_t kFujitsuAcCmdPowerful
Definition: ir_Fujitsu.h:51
static stdAc::opmode_t toCommonMode(const uint8_t mode)
Convert a native mode into its stdAc equivilant.
Definition: ir_Fujitsu.cpp:586
const uint8_t kFujitsuAcSwingSize
Definition: ir_Fujitsu.h:67
uint8_t _mode
Definition: ir_Fujitsu.h:167
stdAc::state_t toCommon(void)
Convert the current internal state into its stdAc::state_t equivilant.
Definition: ir_Fujitsu.cpp:611
const uint8_t kFujitsuAcCmdStepHoriz
Definition: ir_Fujitsu.h:54
void setMode(const uint8_t mode)
Set the operating mode of the A/C.
Definition: ir_Fujitsu.cpp:444
const uint8_t kFujitsuAcSwingHoriz
Definition: ir_Fujitsu.h:70
const uint8_t kFujitsuAcSwingVert
Definition: ir_Fujitsu.h:69
static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
Convert a native fan speed into its stdAc equivilant.
Definition: ir_Fujitsu.cpp:599
void toggleSwingVert(const bool update=true)
Request the A/C to toggle the Vertical Swing mode.
Definition: ir_Fujitsu.cpp:327
const uint8_t kFujitsuAcModeAuto
Definition: ir_Fujitsu.h:41
void setOutsideQuiet(const bool on)
Set the Outside Quiet mode of the A/C.
Definition: ir_Fujitsu.cpp:399
const uint8_t kFujitsuAcSwingOff
Definition: ir_Fujitsu.h:68
void setModel(const fujitsu_ac_remote_model_t model)
Set the currently emulated model of the A/C.
Definition: ir_Fujitsu.cpp:73
const uint8_t kFujitsuAcModeDry
Definition: ir_Fujitsu.h:43
@ ARRAH2E
Definition: IRsend.h:121
bool getFilter(const bool raw=false)
Get the Filter mode status of the A/C.
Definition: ir_Fujitsu.cpp:520
uint8_t getStateLength(void)
Get the length (size) of the state code for the current configuration.
Definition: ir_Fujitsu.cpp:214
const uint8_t kFujitsuAcFanSize
Definition: ir_Fujitsu.h:62
const uint8_t kFujitsuAcFanMed
Definition: ir_Fujitsu.h:59
IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)
Class Constructor.
Definition: ir_Fujitsu.cpp:63
const uint8_t kFujitsuAcSwingBoth
Definition: ir_Fujitsu.h:71
uint8_t getMode(void)
Get the operating mode setting of the A/C.
Definition: ir_Fujitsu.cpp:454
uint8_t getTemp(void)
Get the current temperature setting.
Definition: ir_Fujitsu.cpp:426
void buildState(void)
(Re)Build the state from the currently configured settings.
Definition: ir_Fujitsu.cpp:119
fujitsu_ac_remote_model_t _model
Definition: ir_Fujitsu.h:170
const uint8_t kFujitsuAcMaxTemp
Definition: ir_Fujitsu.h:65
const uint8_t kFujitsuAcCmdStayOn
Definition: ir_Fujitsu.h:47
bool getOutsideQuiet(const bool raw=false)
Get the Outside Quiet mode status of the A/C.
Definition: ir_Fujitsu.cpp:407
String toString(void)
Convert the current internal state into a human readable string.
Definition: ir_Fujitsu.cpp:654
uint8_t getFanSpeed(void)
Get the current fan speed setting.
Definition: ir_Fujitsu.cpp:440
uint8_t getCmd(const bool raw=false)
Set the requested (special) command part for the A/C message.
Definition: ir_Fujitsu.cpp:376
void setFanSpeed(const uint8_t fan)
Set the speed of the fan.
Definition: ir_Fujitsu.cpp:430
uint8_t getSwing(const bool raw=false)
Get the requested swing operation mode of the A/C unit.
Definition: ir_Fujitsu.cpp:483
void off(void)
Set the requested power state of the A/C to off.
Definition: ir_Fujitsu.cpp:388
void setPower(const bool on)
Change the power setting.
Definition: ir_Fujitsu.cpp:383
void on(void)
Set the requested power state of the A/C to on.
Definition: ir_Fujitsu.cpp:391
void send(const uint16_t repeat=kFujitsuAcMinRepeat)
Send the current internal state as an IR message.
Definition: ir_Fujitsu.cpp:112
bool getClean(const bool raw=false)
Get the Clean mode status of the A/C.
Definition: ir_Fujitsu.cpp:499
bool getPower(void)
Get the value of the current power setting.
Definition: ir_Fujitsu.cpp:395
static bool validChecksum(uint8_t *state, const uint16_t length)
Verify the checksum is valid for a given state.
Definition: ir_Fujitsu.cpp:535
uint8_t _state_length
Definition: ir_Fujitsu.h:171
void toggleSwingHoriz(const bool update=true)
Request the A/C to toggle the Horizontal Swing mode.
Definition: ir_Fujitsu.cpp:315
const uint8_t kFujitsuAcModeFan
Definition: ir_Fujitsu.h:44
Structure to hold a common A/C state.
Definition: IRsend.h:97
const uint8_t kFujitsuAcCmdEcono
Definition: ir_Fujitsu.h:50
uint8_t remote_state[kFujitsuAcStateLength]
The state of the IR remote.
Definition: ir_Fujitsu.h:164
const uint8_t kFujitsuAcFanQuiet
Definition: ir_Fujitsu.h:61
const uint8_t kFujitsuAcFanLow
Definition: ir_Fujitsu.h:60
const uint8_t kFujitsuAcModeCool
Definition: ir_Fujitsu.h:42
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46