Skip to content

Commit

Permalink
Merge branch 'master' into v2.8.7
Browse files Browse the repository at this point in the history
  • Loading branch information
shimmy-void committed Mar 15, 2024
2 parents cfa7fcd + d8aee22 commit bce5c0b
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 31 deletions.
10 changes: 6 additions & 4 deletions src/IRac.cpp
Expand Up @@ -1170,6 +1170,7 @@ void IRac::ecoclim(IREcoclimAc *ac,
/// @param[in] swingv The vertical swing setting.
/// @param[in] swingh The horizontal swing setting.
/// @param[in] iFeel Whether to enable iFeel (remote temp) mode on the A/C unit.
/// @param[in] quiet Run the device in quiet/silent mode.
/// @param[in] turbo Run the device in turbo/powerful mode.
/// @param[in] lighttoggle Should we toggle the LED/Display?
/// @param[in] clean Turn on the self-cleaning mode. e.g. Mould, dry filters etc
Expand All @@ -1178,7 +1179,8 @@ void IRac::electra(IRElectraAc *ac,
const float degrees, const float sensorTemp,
const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
const stdAc::swingh_t swingh, const bool iFeel,
const bool turbo, const bool lighttoggle, const bool clean) {
const bool quiet, const bool turbo, const bool lighttoggle,
const bool clean) {
ac->begin();
ac->setPower(on);
ac->setMode(ac->convertMode(mode));
Expand All @@ -1189,7 +1191,7 @@ void IRac::electra(IRElectraAc *ac,
ac->setFan(ac->convertFan(fan));
ac->setSwingV(swingv != stdAc::swingv_t::kOff);
ac->setSwingH(swingh != stdAc::swingh_t::kOff);
// No Quiet setting available.
ac->setQuiet(quiet);
ac->setTurbo(turbo);
ac->setLightToggle(lighttoggle);
// No Econo setting available.
Expand Down Expand Up @@ -3279,8 +3281,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
{
IRElectraAc ac(_pin, _inverted, _modulation);
electra(&ac, send.power, send.mode, degC, sensorTempC, send.fanspeed,
send.swingv, send.swingh, send.iFeel, send.turbo, send.light,
send.clean);
send.swingv, send.swingh, send.iFeel, send.quiet, send.turbo,
send.light, send.clean);
break;
}
#endif // SEND_ELECTRA_AC
Expand Down
4 changes: 2 additions & 2 deletions src/IRac.h
Expand Up @@ -264,8 +264,8 @@ void electra(IRElectraAc *ac,
const bool on, const stdAc::opmode_t mode,
const float degrees, const float sensorTemp,
const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
const stdAc::swingh_t swingh, const bool iFeel, const bool turbo,
const bool lighttoggle, const bool clean);
const stdAc::swingh_t swingh, const bool iFeel, const bool quiet,
const bool turbo, const bool lighttoggle, const bool clean);
#endif // SEND_ELECTRA_AC
#if SEND_FUJITSU_AC
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
Expand Down
15 changes: 8 additions & 7 deletions src/ir_Daikin.cpp
Expand Up @@ -46,6 +46,7 @@ using irutils::addModeToString;
using irutils::addSwingHToString;
using irutils::addSwingVToString;
using irutils::addTempToString;
using irutils::addTempFloatToString;
using irutils::addFanToString;
using irutils::bcdToUint8;
using irutils::minsToString;
Expand Down Expand Up @@ -221,15 +222,15 @@ bool IRDaikinESP::getPower(void) const {

/// Set the temperature.
/// @param[in] temp The temperature in degrees celsius.
void IRDaikinESP::setTemp(const uint8_t temp) {
uint8_t degrees = std::max(temp, kDaikinMinTemp);
degrees = std::min(degrees, kDaikinMaxTemp);
_.Temp = degrees;
void IRDaikinESP::setTemp(const float temp) {
float degrees = std::max(temp, static_cast<float>(kDaikinMinTemp));
degrees = std::min(degrees, static_cast<float>(kDaikinMaxTemp));
_.Temp = degrees * 2.0f;
}

/// Get the current temperature setting.
/// @return The current setting for temp. in degrees celsius.
uint8_t IRDaikinESP::getTemp(void) const { return _.Temp; }
float IRDaikinESP::getTemp(void) const { return _.Temp / 2.0f; }

/// Set the speed of the fan.
/// @param[in] fan The desired setting.
Expand Down Expand Up @@ -536,7 +537,7 @@ stdAc::state_t IRDaikinESP::toCommon(void) const {
result.power = _.Power;
result.mode = toCommonMode(_.Mode);
result.celsius = true;
result.degrees = _.Temp;
result.degrees = getTemp();
result.fanspeed = toCommonFanSpeed(getFan());
result.swingv = _.SwingV ? stdAc::swingv_t::kAuto :
stdAc::swingv_t::kOff;
Expand All @@ -563,7 +564,7 @@ String IRDaikinESP::toString(void) const {
result += addBoolToString(_.Power, kPowerStr, false);
result += addModeToString(_.Mode, kDaikinAuto, kDaikinCool, kDaikinHeat,
kDaikinDry, kDaikinFan);
result += addTempToString(_.Temp);
result += addTempFloatToString(getTemp());
result += addFanToString(getFan(), kDaikinFanMax, kDaikinFanMin,
kDaikinFanAuto, kDaikinFanQuiet, kDaikinFanMed);
result += addBoolToString(_.Powerful, kPowerfulStr);
Expand Down
7 changes: 3 additions & 4 deletions src/ir_Daikin.h
Expand Up @@ -99,8 +99,7 @@ union DaikinESPProtocol{
uint64_t Mode :3;
uint64_t :1;
// Byte 22
uint64_t :1;
uint64_t Temp :7; // Temp should be between 10 - 32
uint64_t Temp :8; // Temp should be between 20 - 64 (10 C - 32 C)
// Byte 23
uint64_t :8;

Expand Down Expand Up @@ -738,8 +737,8 @@ class IRDaikinESP {
void off(void);
void setPower(const bool on);
bool getPower(void) const;
void setTemp(const uint8_t temp);
uint8_t getTemp(void) const;
void setTemp(const float temp);
float getTemp(void) const;
void setFan(const uint8_t fan);
uint8_t getFan(void) const;
void setMode(const uint8_t mode);
Expand Down
15 changes: 14 additions & 1 deletion src/ir_Electra.cpp
Expand Up @@ -310,6 +310,18 @@ bool IRElectraAc::getTurbo(void) const {
return _.Turbo;
}

/// Set the Quiet/Silent'mode of the A/C.
/// @param[in] on true, the setting is on. false, the setting is off.
void IRElectraAc::setQuiet(const bool on) {
_.Quiet = on;
}

/// Get the Quiet/Silent mode of the A/C.
/// @return true, the setting is on. false, the setting is off.
bool IRElectraAc::getQuiet(void) const {
return _.Quiet;
}

/// Get the IFeel mode of the A/C.
/// @return true, the setting is on. false, the setting is off.
bool IRElectraAc::getIFeel(void) const { return _.IFeel; }
Expand Down Expand Up @@ -373,11 +385,11 @@ stdAc::state_t IRElectraAc::toCommon(void) const {
: stdAc::swingh_t::kOff;
result.light = getLightToggle();
result.turbo = _.Turbo;
result.quiet = _.Quiet;
result.clean = _.Clean;
result.iFeel = getIFeel();
// Not supported.
result.model = -1; // No models used.
result.quiet = false;
result.econo = false;
result.filter = false;
result.beep = false;
Expand All @@ -404,6 +416,7 @@ String IRElectraAc::toString(void) const {
result += addToggleToString(getLightToggle(), kLightStr);
result += addBoolToString(_.Clean, kCleanStr);
result += addBoolToString(_.Turbo, kTurboStr);
result += addBoolToString(_.Quiet, kQuietStr);
result += addBoolToString(_.IFeel, kIFeelStr);
}
if (_.IFeel || _.SensorUpdate) {
Expand Down
5 changes: 4 additions & 1 deletion src/ir_Electra.h
Expand Up @@ -15,6 +15,7 @@
// Brand: Centek, Model: YKR-P/002E remote
// Brand: AEG, Model: Chillflex Pro AXP26U338CW A/C
// Brand: Electrolux, Model: YKR-H/531E A/C
// Brand: Delonghi, Modell: PAC EM90

#ifndef IR_ELECTRA_H_
#define IR_ELECTRA_H_
Expand Down Expand Up @@ -52,7 +53,7 @@ union ElectraProtocol {
// Byte 5
uint8_t :6;
uint8_t Turbo :1;
uint8_t :1;
uint8_t Quiet :1;
// Byte 6
uint8_t :3;
uint8_t IFeel :1;
Expand Down Expand Up @@ -145,6 +146,8 @@ class IRElectraAc {
bool getLightToggle(void) const;
void setTurbo(const bool on);
bool getTurbo(void) const;
void setQuiet(const bool on);
bool getQuiet(void) const;
void setIFeel(const bool on);
bool getIFeel(void) const;
void setSensorUpdate(const bool on);
Expand Down
1 change: 1 addition & 0 deletions src/ir_Fujitsu.h
Expand Up @@ -42,6 +42,7 @@
// Brand: Fujitsu, Model: AR-REG1U remote (ARRAH2E)
// Brand: OGeneral, Model: AR-RCL1E remote (ARRAH2E)
// Brand: Fujitsu General, Model: AR-JW17 remote (ARDB1)
// Brand: Fujitsu General, Model: AR-JW19 remote (ARDB1)
// Brand: Fujitsu, Model: AS-AH402M A/C (FUJITSU_AC264 AR-RLB2J)

#ifndef IR_FUJITSU_H_
Expand Down
1 change: 1 addition & 0 deletions src/ir_Panasonic.h
Expand Up @@ -24,6 +24,7 @@
// Brand: Panasonic, Model: A75C2311 remote (PANASONIC_AC CKP/5)
// Brand: Panasonic, Model: A75C2616-1 remote (PANASONIC_AC DKE/3)
// Brand: Panasonic, Model: A75C3704 remote (PANASONIC_AC DKE/3)
// Brand: Panasonic, Model: PN1122V remote (PANASONIC_AC DKE/3)
// Brand: Panasonic, Model: A75C3747 remote (PANASONIC_AC JKE/4)
// Brand: Panasonic, Model: CS-E9CKP series A/C (PANASONIC_AC32)
// Brand: Panasonic, Model: A75C2295 remote (PANASONIC_AC32)
Expand Down
1 change: 0 additions & 1 deletion src/ir_RCMM.cpp
Expand Up @@ -35,7 +35,6 @@ const uint16_t kRcmmMinGapTicks = 120;
const uint32_t kRcmmMinGap = 3360;
// Use a tolerance of +/-10% when matching some data spaces.
const uint8_t kRcmmTolerance = 10;
const uint16_t kRcmmExcess = 50;

#if SEND_RCMM
/// Send a Philips RC-MM packet.
Expand Down
3 changes: 2 additions & 1 deletion test/IRac_test.cpp
Expand Up @@ -613,7 +613,7 @@ TEST(TestIRac, Electra) {
char expected[] =
"Power: On, Mode: 6 (Fan), Temp: 26C, Fan: 1 (High), "
"Swing(V): On, Swing(H): On, Light: Toggle, Clean: On, Turbo: On, "
"IFeel: Off";
"Quiet: On, IFeel: Off";

ac.begin();
irac.electra(&ac,
Expand All @@ -625,6 +625,7 @@ TEST(TestIRac, Electra) {
stdAc::swingv_t::kAuto, // Vertical swing
stdAc::swingh_t::kLeft, // Horizontal swing
false, // iFeel
true, // Quiet
true, // Turbo
true, // Light (toggle)
true); // Clean
Expand Down
20 changes: 10 additions & 10 deletions test/ir_Electra_test.cpp
Expand Up @@ -102,7 +102,7 @@ TEST(TestDecodeElectraAC, RealExampleDecode) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
IRAcUtils::resultAcToString(&irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p));
Expand Down Expand Up @@ -237,7 +237,7 @@ TEST(TestIRElectraAcClass, HumanReadable) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 32C, Fan: 5 (Auto), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
uint8_t on_cool_16C_auto_voff[13] = {
0xC3, 0x47, 0xE0, 0x00, 0xA0, 0x00, 0x20,
Expand All @@ -246,7 +246,7 @@ TEST(TestIRElectraAcClass, HumanReadable) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 16C, Fan: 5 (Auto), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
uint8_t on_cool_16C_low_voff[13] = {
0xC3, 0x47, 0xE0, 0x00, 0x60, 0x00, 0x20,
Expand All @@ -255,7 +255,7 @@ TEST(TestIRElectraAcClass, HumanReadable) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 16C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
}

Expand All @@ -280,7 +280,7 @@ TEST(TestIRElectraAcClass, Clean) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): Off, Light: Toggle, Clean: On, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
}

Expand All @@ -307,7 +307,7 @@ TEST(TestIRElectraAcClass, Turbo) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: On, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
}

Expand All @@ -332,7 +332,7 @@ TEST(TestIRElectraAcClass, LightToggle) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): Off, Light: Toggle, Clean: On, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
}

Expand Down Expand Up @@ -360,7 +360,7 @@ TEST(TestIRElectraAcClass, ConstructKnownState) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 3 (Low), "
"Swing(V): Off, Swing(H): Off, Light: Toggle, Clean: On, Turbo: Off, "
"IFeel: Off",
"Quiet: Off, IFeel: Off",
ac.toString());
EXPECT_STATE_EQ(on_cool_24C_fan1_swing_off_turbo_off_clean_on,
ac.getRaw(), kElectraAcBits);
Expand All @@ -379,7 +379,7 @@ TEST(TestIRElectraAcClass, IFeelAndSensor) {
EXPECT_EQ(
"Power: On, Mode: 1 (Cool), Temp: 21C, Fan: 5 (Auto), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, "
"IFeel: On, Sensor Temp: 26C",
"Quiet: Off, IFeel: On, Sensor Temp: 26C",
ac.toString());

ac.stateReset();
Expand Down Expand Up @@ -429,6 +429,6 @@ TEST(TestIRElectraAcClass, IFeelAndSensor) {
EXPECT_EQ(
"Power: On, Mode: 4 (Heat), Temp: 27C, Fan: 5 (Auto), "
"Swing(V): Off, Swing(H): Off, Light: -, Clean: Off, Turbo: Off, "
"IFeel: On, Sensor Temp: 28C",
"Quiet: Off, IFeel: On, Sensor Temp: 28C",
ac.toString());
}

0 comments on commit bce5c0b

Please sign in to comment.