new send packet action. It for engineers only

This commit is contained in:
GrKoR
2022-05-22 23:53:03 +03:00
parent 47d6a427c8
commit aceec8dce6
5 changed files with 321 additions and 6 deletions

View File

@@ -17,7 +17,7 @@ namespace aux_ac {
protected:
AirCon *ac_;
};
};
template <typename... Ts>
class AirConDisplayOnAction : public Action<Ts...>
@@ -29,7 +29,37 @@ namespace aux_ac {
protected:
AirCon *ac_;
};
};
template <typename... Ts>
class AirConSendTestPacketAction : public Action<Ts...>
{
public:
explicit AirConSendTestPacketAction(AirCon *ac) : ac_(ac) {}
void set_data_template(std::function<std::vector<uint8_t>(Ts...)> func) {
this->data_func_ = func;
this->static_ = false;
}
void set_data_static(const std::vector<uint8_t> &data) {
this->data_static_ = data;
this->static_ = true;
}
void play(Ts... x) override {
if (this->static_) {
this->ac_->sendTestPacket(this->data_static_);
} else {
auto val = this->data_func_(x...);
this->ac_->sendTestPacket(val);
}
}
protected:
AirCon *ac_;
bool static_{false};
std::function<std::vector<uint8_t>(Ts...)> data_func_{};
std::vector<uint8_t> data_static_{};
};
} // namespace aux_ac
} // namespace esphome