Fix an Issue with IR Remote Climate and Whirlpool protocol toggle (#5447)

Co-authored-by: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
Avri Chen-Roth 2023-09-29 04:17:32 +03:00 committed by Jesse Hills
parent ec4777b8d0
commit e9bda2810f
No known key found for this signature in database
GPG key ID: BEAAE804EFD8E83A
2 changed files with 9 additions and 0 deletions

View file

@ -33,6 +33,7 @@ const uint8_t WHIRLPOOL_SWING_MASK = 128;
const uint8_t WHIRLPOOL_POWER = 0x04;
void WhirlpoolClimate::transmit_state() {
this->last_transmit_time_ = millis(); // setting the time of the last transmission.
uint8_t remote_state[WHIRLPOOL_STATE_LENGTH] = {0};
remote_state[0] = 0x83;
remote_state[1] = 0x06;
@ -149,6 +150,12 @@ void WhirlpoolClimate::transmit_state() {
}
bool WhirlpoolClimate::on_receive(remote_base::RemoteReceiveData data) {
// Check if the esp isn't currently transmitting.
if (millis() - this->last_transmit_time_ < 500) {
ESP_LOGV(TAG, "Blocked receive because of current trasmittion");
return false;
}
// Validate header
if (!data.expect_item(WHIRLPOOL_HEADER_MARK, WHIRLPOOL_HEADER_SPACE)) {
ESP_LOGV(TAG, "Header fail");

View file

@ -47,6 +47,8 @@ class WhirlpoolClimate : public climate_ir::ClimateIR {
void transmit_state() override;
/// Handle received IR Buffer
bool on_receive(remote_base::RemoteReceiveData data) override;
/// Set the time of the last transmission.
int32_t last_transmit_time_{};
bool send_swing_cmd_{false};
Model model_;