This commit is contained in:
Guillermo Ruffino 2020-05-24 23:27:28 -03:00
parent a62b6548d2
commit 1bec1faf6d
42 changed files with 151 additions and 176 deletions

View file

@ -30,8 +30,7 @@ template<typename... Ts> class HomeAssistantServiceCallAction : public Action<Ts
this->variables_.push_back(TemplatableKeyValuePair<Ts...>(key, value)); this->variables_.push_back(TemplatableKeyValuePair<Ts...>(key, value));
} }
protected: void play(Ts... x) override {
void play_(Ts... x) override {
HomeassistantServiceResponse resp; HomeassistantServiceResponse resp;
resp.service = this->service_.value(x...); resp.service = this->service_.value(x...);
resp.is_event = this->is_event_; resp.is_event = this->is_event_;
@ -56,6 +55,7 @@ template<typename... Ts> class HomeAssistantServiceCallAction : public Action<Ts
this->parent_->send_homeassistant_service_call(resp); this->parent_->send_homeassistant_service_call(resp);
} }
protected:
APIServer *parent_; APIServer *parent_;
bool is_event_; bool is_event_;
std::vector<TemplatableKeyValuePair<Ts...>> data_; std::vector<TemplatableKeyValuePair<Ts...>> data_;

View file

@ -138,12 +138,12 @@ template<typename... Ts> class BinarySensorPublishAction : public Action<Ts...>
explicit BinarySensorPublishAction(BinarySensor *sensor) : sensor_(sensor) {} explicit BinarySensorPublishAction(BinarySensor *sensor) : sensor_(sensor) {}
TEMPLATABLE_VALUE(bool, state) TEMPLATABLE_VALUE(bool, state)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto val = this->state_.value(x...); auto val = this->state_.value(x...);
this->sensor_->publish_state(val); this->sensor_->publish_state(val);
} }
protected:
BinarySensor *sensor_; BinarySensor *sensor_;
}; };

View file

@ -18,8 +18,7 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
TEMPLATABLE_VALUE(ClimateFanMode, fan_mode) TEMPLATABLE_VALUE(ClimateFanMode, fan_mode)
TEMPLATABLE_VALUE(ClimateSwingMode, swing_mode) TEMPLATABLE_VALUE(ClimateSwingMode, swing_mode)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto call = this->climate_->make_call(); auto call = this->climate_->make_call();
call.set_mode(this->mode_.optional_value(x...)); call.set_mode(this->mode_.optional_value(x...));
call.set_target_temperature(this->target_temperature_.optional_value(x...)); call.set_target_temperature(this->target_temperature_.optional_value(x...));
@ -31,6 +30,7 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
call.perform(); call.perform();
} }
protected:
Climate *climate_; Climate *climate_;
}; };

View file

@ -11,9 +11,9 @@ template<typename... Ts> class OpenAction : public Action<Ts...> {
public: public:
explicit OpenAction(Cover *cover) : cover_(cover) {} explicit OpenAction(Cover *cover) : cover_(cover) {}
protected: void play(Ts... x) override { this->cover_->open(); }
void play_(Ts... x) override { this->cover_->open(); }
protected:
Cover *cover_; Cover *cover_;
}; };
@ -21,9 +21,9 @@ template<typename... Ts> class CloseAction : public Action<Ts...> {
public: public:
explicit CloseAction(Cover *cover) : cover_(cover) {} explicit CloseAction(Cover *cover) : cover_(cover) {}
protected: void play(Ts... x) override { this->cover_->close(); }
void play_(Ts... x) override { this->cover_->close(); }
protected:
Cover *cover_; Cover *cover_;
}; };
@ -31,9 +31,9 @@ template<typename... Ts> class StopAction : public Action<Ts...> {
public: public:
explicit StopAction(Cover *cover) : cover_(cover) {} explicit StopAction(Cover *cover) : cover_(cover) {}
protected: void play(Ts... x) override { this->cover_->stop(); }
void play_(Ts... x) override { this->cover_->stop(); }
protected:
Cover *cover_; Cover *cover_;
}; };
@ -45,8 +45,7 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, position) TEMPLATABLE_VALUE(float, position)
TEMPLATABLE_VALUE(float, tilt) TEMPLATABLE_VALUE(float, tilt)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto call = this->cover_->make_call(); auto call = this->cover_->make_call();
if (this->stop_.has_value()) if (this->stop_.has_value())
call.set_stop(this->stop_.value(x...)); call.set_stop(this->stop_.value(x...));
@ -57,6 +56,7 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
call.perform(); call.perform();
} }
protected:
Cover *cover_; Cover *cover_;
}; };
@ -67,8 +67,7 @@ template<typename... Ts> class CoverPublishAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, tilt) TEMPLATABLE_VALUE(float, tilt)
TEMPLATABLE_VALUE(CoverOperation, current_operation) TEMPLATABLE_VALUE(CoverOperation, current_operation)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
if (this->position_.has_value()) if (this->position_.has_value())
this->cover_->position = this->position_.value(x...); this->cover_->position = this->position_.value(x...);
if (this->tilt_.has_value()) if (this->tilt_.has_value())
@ -78,6 +77,7 @@ template<typename... Ts> class CoverPublishAction : public Action<Ts...> {
this->cover_->publish_state(); this->cover_->publish_state();
} }
protected:
Cover *cover_; Cover *cover_;
}; };

View file

@ -85,9 +85,9 @@ template<typename... Ts> class EnterDeepSleepAction : public Action<Ts...> {
public: public:
EnterDeepSleepAction(DeepSleepComponent *deep_sleep) : deep_sleep_(deep_sleep) {} EnterDeepSleepAction(DeepSleepComponent *deep_sleep) : deep_sleep_(deep_sleep) {}
protected: void play(Ts... x) override { this->deep_sleep_->begin_sleep(true); }
void play_(Ts... x) override { this->deep_sleep_->begin_sleep(true); }
protected:
DeepSleepComponent *deep_sleep_; DeepSleepComponent *deep_sleep_;
}; };
@ -95,9 +95,9 @@ template<typename... Ts> class PreventDeepSleepAction : public Action<Ts...> {
public: public:
PreventDeepSleepAction(DeepSleepComponent *deep_sleep) : deep_sleep_(deep_sleep) {} PreventDeepSleepAction(DeepSleepComponent *deep_sleep) : deep_sleep_(deep_sleep) {}
protected: void play(Ts... x) override { this->deep_sleep_->prevent_deep_sleep(); }
void play_(Ts... x) override { this->deep_sleep_->prevent_deep_sleep(); }
protected:
DeepSleepComponent *deep_sleep_; DeepSleepComponent *deep_sleep_;
}; };

View file

@ -104,8 +104,7 @@ class DFPlayer : public uart::UARTDevice, public Component {
#define DFPLAYER_SIMPLE_ACTION(ACTION_CLASS, ACTION_METHOD) \ #define DFPLAYER_SIMPLE_ACTION(ACTION_CLASS, ACTION_METHOD) \
template<typename... Ts> class ACTION_CLASS : public Action<Ts...>, public Parented<DFPlayer> { \ template<typename... Ts> class ACTION_CLASS : public Action<Ts...>, public Parented<DFPlayer> { \
protected: \ void play(Ts... x) override { this->parent_->ACTION_METHOD(); } \
void play_(Ts... x) override { this->parent_->ACTION_METHOD(); } \
}; };
DFPLAYER_SIMPLE_ACTION(NextAction, next) DFPLAYER_SIMPLE_ACTION(NextAction, next)
@ -116,8 +115,7 @@ template<typename... Ts> class PlayFileAction : public Action<Ts...>, public Par
TEMPLATABLE_VALUE(uint16_t, file) TEMPLATABLE_VALUE(uint16_t, file)
TEMPLATABLE_VALUE(boolean, loop) TEMPLATABLE_VALUE(boolean, loop)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto file = this->file_.value(x...); auto file = this->file_.value(x...);
auto loop = this->loop_.value(x...); auto loop = this->loop_.value(x...);
if (loop) { if (loop) {
@ -134,8 +132,7 @@ template<typename... Ts> class PlayFolderAction : public Action<Ts...>, public P
TEMPLATABLE_VALUE(uint16_t, file) TEMPLATABLE_VALUE(uint16_t, file)
TEMPLATABLE_VALUE(boolean, loop) TEMPLATABLE_VALUE(boolean, loop)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto folder = this->folder_.value(x...); auto folder = this->folder_.value(x...);
auto file = this->file_.value(x...); auto file = this->file_.value(x...);
auto loop = this->loop_.value(x...); auto loop = this->loop_.value(x...);
@ -151,8 +148,7 @@ template<typename... Ts> class SetDeviceAction : public Action<Ts...>, public Pa
public: public:
TEMPLATABLE_VALUE(Device, device) TEMPLATABLE_VALUE(Device, device)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto device = this->device_.value(x...); auto device = this->device_.value(x...);
this->parent_->set_device(device); this->parent_->set_device(device);
} }
@ -162,8 +158,7 @@ template<typename... Ts> class SetVolumeAction : public Action<Ts...>, public Pa
public: public:
TEMPLATABLE_VALUE(uint8_t, volume) TEMPLATABLE_VALUE(uint8_t, volume)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto volume = this->volume_.value(x...); auto volume = this->volume_.value(x...);
this->parent_->set_volume(volume); this->parent_->set_volume(volume);
} }
@ -173,8 +168,7 @@ template<typename... Ts> class SetEqAction : public Action<Ts...>, public Parent
public: public:
TEMPLATABLE_VALUE(EqPreset, eq) TEMPLATABLE_VALUE(EqPreset, eq)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto eq = this->eq_.value(x...); auto eq = this->eq_.value(x...);
this->parent_->set_eq(eq); this->parent_->set_eq(eq);
} }

View file

@ -392,8 +392,7 @@ template<typename... Ts> class DisplayPageShowAction : public Action<Ts...> {
public: public:
TEMPLATABLE_VALUE(DisplayPage *, page) TEMPLATABLE_VALUE(DisplayPage *, page)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto *page = this->page_.value(x...); auto *page = this->page_.value(x...);
if (page != nullptr) { if (page != nullptr) {
page->show(); page->show();
@ -405,8 +404,7 @@ template<typename... Ts> class DisplayPageShowNextAction : public Action<Ts...>
public: public:
DisplayPageShowNextAction(DisplayBuffer *buffer) : buffer_(buffer) {} DisplayPageShowNextAction(DisplayBuffer *buffer) : buffer_(buffer) {}
protected: void play(Ts... x) override { this->buffer_->show_next_page(); }
void play_(Ts... x) override { this->buffer_->show_next_page(); }
DisplayBuffer *buffer_; DisplayBuffer *buffer_;
}; };
@ -415,8 +413,7 @@ template<typename... Ts> class DisplayPageShowPrevAction : public Action<Ts...>
public: public:
DisplayPageShowPrevAction(DisplayBuffer *buffer) : buffer_(buffer) {} DisplayPageShowPrevAction(DisplayBuffer *buffer) : buffer_(buffer) {}
protected: void play(Ts... x) override { this->buffer_->show_prev_page(); }
void play_(Ts... x) override { this->buffer_->show_prev_page(); }
DisplayBuffer *buffer_; DisplayBuffer *buffer_;
}; };

View file

@ -38,8 +38,7 @@ template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {
SetFrequencyAction(ESP8266PWM *parent) : parent_(parent) {} SetFrequencyAction(ESP8266PWM *parent) : parent_(parent) {}
TEMPLATABLE_VALUE(float, frequency); TEMPLATABLE_VALUE(float, frequency);
protected: void play(Ts... x) {
void play_(Ts... x) {
float freq = this->frequency_.value(x...); float freq = this->frequency_.value(x...);
this->parent_->update_frequency(freq); this->parent_->update_frequency(freq);
} }

View file

@ -14,8 +14,7 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
TEMPLATABLE_VALUE(bool, oscillating) TEMPLATABLE_VALUE(bool, oscillating)
TEMPLATABLE_VALUE(FanSpeed, speed) TEMPLATABLE_VALUE(FanSpeed, speed)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto call = this->state_->turn_on(); auto call = this->state_->turn_on();
if (this->oscillating_.has_value()) { if (this->oscillating_.has_value()) {
call.set_oscillating(this->oscillating_.value(x...)); call.set_oscillating(this->oscillating_.value(x...));
@ -33,8 +32,7 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...> {
public: public:
explicit TurnOffAction(FanState *state) : state_(state) {} explicit TurnOffAction(FanState *state) : state_(state) {}
protected: void play(Ts... x) override { this->state_->turn_off().perform(); }
void play_(Ts... x) override { this->state_->turn_off().perform(); }
FanState *state_; FanState *state_;
}; };
@ -43,8 +41,7 @@ template<typename... Ts> class ToggleAction : public Action<Ts...> {
public: public:
explicit ToggleAction(FanState *state) : state_(state) {} explicit ToggleAction(FanState *state) : state_(state) {}
protected: void play(Ts... x) override { this->state_->toggle().perform(); }
void play_(Ts... x) override { this->state_->toggle().perform(); }
FanState *state_; FanState *state_;
}; };

View file

@ -59,9 +59,9 @@ template<class C, typename... Ts> class GlobalVarSetAction : public Action<Ts...
TEMPLATABLE_VALUE(T, value); TEMPLATABLE_VALUE(T, value);
protected: void play(Ts... x) override { this->parent_->value() = this->value_.value(x...); }
void play_(Ts... x) override { this->parent_->value() = this->value_.value(x...); }
protected:
C *parent_; C *parent_;
}; };

View file

@ -71,8 +71,7 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
void set_json(std::function<void(Ts..., JsonObject &)> json_func) { this->json_func_ = json_func; } void set_json(std::function<void(Ts..., JsonObject &)> json_func) { this->json_func_ = json_func; }
protected: void play(Ts... x) override {
void play_(Ts... x) override {
this->parent_->set_url(this->url_.value(x...)); this->parent_->set_url(this->url_.value(x...));
this->parent_->set_method(this->method_.value(x...)); this->parent_->set_method(this->method_.value(x...));
if (this->body_.has_value()) { if (this->body_.has_value()) {
@ -107,6 +106,7 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
this->parent_->close(); this->parent_->close();
} }
protected:
void encode_json_(Ts... x, JsonObject &root) { void encode_json_(Ts... x, JsonObject &root) {
for (const auto &item : this->json_) { for (const auto &item : this->json_) {
auto val = item.second; auto val = item.second;

View file

@ -76,9 +76,9 @@ template<typename... Ts> class ResetAction : public Action<Ts...> {
public: public:
explicit ResetAction(IntegrationSensor *parent) : parent_(parent) {} explicit ResetAction(IntegrationSensor *parent) : parent_(parent) {}
protected: void play(Ts... x) override { this->parent_->reset(); }
void play_(Ts... x) override { this->parent_->reset(); }
protected:
IntegrationSensor *parent_; IntegrationSensor *parent_;
}; };

View file

@ -43,12 +43,12 @@ template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {
SetFrequencyAction(LEDCOutput *parent) : parent_(parent) {} SetFrequencyAction(LEDCOutput *parent) : parent_(parent) {}
TEMPLATABLE_VALUE(float, frequency); TEMPLATABLE_VALUE(float, frequency);
protected: void play(Ts... x) {
void play_(Ts... x) {
float freq = this->frequency_.value(x...); float freq = this->frequency_.value(x...);
this->parent_->apply_frequency(freq); this->parent_->apply_frequency(freq);
} }
protected:
LEDCOutput *parent_; LEDCOutput *parent_;
}; };

View file

@ -13,13 +13,13 @@ template<typename... Ts> class ToggleAction : public Action<Ts...> {
TEMPLATABLE_VALUE(uint32_t, transition_length) TEMPLATABLE_VALUE(uint32_t, transition_length)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto call = this->state_->toggle(); auto call = this->state_->toggle();
call.set_transition_length(this->transition_length_.optional_value(x...)); call.set_transition_length(this->transition_length_.optional_value(x...));
call.perform(); call.perform();
} }
protected:
LightState *state_; LightState *state_;
}; };
@ -38,8 +38,7 @@ template<typename... Ts> class LightControlAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, color_temperature) TEMPLATABLE_VALUE(float, color_temperature)
TEMPLATABLE_VALUE(std::string, effect) TEMPLATABLE_VALUE(std::string, effect)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto call = this->parent_->make_call(); auto call = this->parent_->make_call();
call.set_state(this->state_.optional_value(x...)); call.set_state(this->state_.optional_value(x...));
call.set_brightness(this->brightness_.optional_value(x...)); call.set_brightness(this->brightness_.optional_value(x...));
@ -54,6 +53,7 @@ template<typename... Ts> class LightControlAction : public Action<Ts...> {
call.perform(); call.perform();
} }
protected:
LightState *parent_; LightState *parent_;
}; };
@ -64,8 +64,7 @@ template<typename... Ts> class DimRelativeAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, relative_brightness) TEMPLATABLE_VALUE(float, relative_brightness)
TEMPLATABLE_VALUE(uint32_t, transition_length) TEMPLATABLE_VALUE(uint32_t, transition_length)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto call = this->parent_->make_call(); auto call = this->parent_->make_call();
float rel = this->relative_brightness_.value(x...); float rel = this->relative_brightness_.value(x...);
float cur; float cur;
@ -78,6 +77,7 @@ template<typename... Ts> class DimRelativeAction : public Action<Ts...> {
call.perform(); call.perform();
} }
protected:
LightState *parent_; LightState *parent_;
}; };
@ -143,8 +143,7 @@ template<typename... Ts> class AddressableSet : public Action<Ts...> {
TEMPLATABLE_VALUE(uint8_t, blue) TEMPLATABLE_VALUE(uint8_t, blue)
TEMPLATABLE_VALUE(uint8_t, white) TEMPLATABLE_VALUE(uint8_t, white)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto *out = (AddressableLight *) this->parent_->get_output(); auto *out = (AddressableLight *) this->parent_->get_output();
int32_t range_from = this->range_from_.value_or(x..., 0); int32_t range_from = this->range_from_.value_or(x..., 0);
int32_t range_to = this->range_to_.value_or(x..., out->size() - 1) + 1; int32_t range_to = this->range_to_.value_or(x..., out->size() - 1) + 1;
@ -160,6 +159,7 @@ template<typename... Ts> class AddressableSet : public Action<Ts...> {
out->schedule_show(); out->schedule_show();
} }
protected:
LightState *parent_; LightState *parent_;
}; };

View file

@ -38,9 +38,9 @@ template<typename... Ts> class MHZ19CalibrateZeroAction : public Action<Ts...> {
public: public:
MHZ19CalibrateZeroAction(MHZ19Component *mhz19) : mhz19_(mhz19) {} MHZ19CalibrateZeroAction(MHZ19Component *mhz19) : mhz19_(mhz19) {}
protected: void play(Ts... x) override { this->mhz19_->calibrate_zero(); }
void play_(Ts... x) override { this->mhz19_->calibrate_zero(); }
protected:
MHZ19Component *mhz19_; MHZ19Component *mhz19_;
}; };
@ -48,9 +48,9 @@ template<typename... Ts> class MHZ19ABCEnableAction : public Action<Ts...> {
public: public:
MHZ19ABCEnableAction(MHZ19Component *mhz19) : mhz19_(mhz19) {} MHZ19ABCEnableAction(MHZ19Component *mhz19) : mhz19_(mhz19) {}
protected: void play(Ts... x) override { this->mhz19_->abc_enable(); }
void play_(Ts... x) override { this->mhz19_->abc_enable(); }
protected:
MHZ19Component *mhz19_; MHZ19Component *mhz19_;
}; };
@ -58,9 +58,9 @@ template<typename... Ts> class MHZ19ABCDisableAction : public Action<Ts...> {
public: public:
MHZ19ABCDisableAction(MHZ19Component *mhz19) : mhz19_(mhz19) {} MHZ19ABCDisableAction(MHZ19Component *mhz19) : mhz19_(mhz19) {}
protected: void play(Ts... x) override { this->mhz19_->abc_disable(); }
void play_(Ts... x) override { this->mhz19_->abc_disable(); }
protected:
MHZ19Component *mhz19_; MHZ19Component *mhz19_;
}; };

View file

@ -299,12 +299,12 @@ template<typename... Ts> class MQTTPublishAction : public Action<Ts...> {
TEMPLATABLE_VALUE(uint8_t, qos) TEMPLATABLE_VALUE(uint8_t, qos)
TEMPLATABLE_VALUE(bool, retain) TEMPLATABLE_VALUE(bool, retain)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
this->parent_->publish(this->topic_.value(x...), this->payload_.value(x...), this->qos_.value(x...), this->parent_->publish(this->topic_.value(x...), this->payload_.value(x...), this->qos_.value(x...),
this->retain_.value(x...)); this->retain_.value(x...));
} }
protected:
MQTTClientComponent *parent_; MQTTClientComponent *parent_;
}; };
@ -317,14 +317,15 @@ template<typename... Ts> class MQTTPublishJsonAction : public Action<Ts...> {
void set_payload(std::function<void(Ts..., JsonObject &)> payload) { this->payload_ = payload; } void set_payload(std::function<void(Ts..., JsonObject &)> payload) { this->payload_ = payload; }
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto f = std::bind(&MQTTPublishJsonAction<Ts...>::encode_, this, x..., std::placeholders::_1); auto f = std::bind(&MQTTPublishJsonAction<Ts...>::encode_, this, x..., std::placeholders::_1);
auto topic = this->topic_.value(x...); auto topic = this->topic_.value(x...);
auto qos = this->qos_.value(x...); auto qos = this->qos_.value(x...);
auto retain = this->retain_.value(x...); auto retain = this->retain_.value(x...);
this->parent_->publish_json(topic, f, qos, retain); this->parent_->publish_json(topic, f, qos, retain);
} }
protected:
void encode_(Ts... x, JsonObject &root) { this->payload_(x..., root); } void encode_(Ts... x, JsonObject &root) { this->payload_(x..., root); }
std::function<void(Ts..., JsonObject &)> payload_; std::function<void(Ts..., JsonObject &)> payload_;
MQTTClientComponent *parent_; MQTTClientComponent *parent_;

View file

@ -12,9 +12,9 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...> {
public: public:
TurnOffAction(BinaryOutput *output) : output_(output) {} TurnOffAction(BinaryOutput *output) : output_(output) {}
protected: void play(Ts... x) override { this->output_->turn_off(); }
void play_(Ts... x) override { this->output_->turn_off(); }
protected:
BinaryOutput *output_; BinaryOutput *output_;
}; };
@ -22,9 +22,9 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
public: public:
TurnOnAction(BinaryOutput *output) : output_(output) {} TurnOnAction(BinaryOutput *output) : output_(output) {}
protected: void play(Ts... x) override { this->output_->turn_on(); }
void play_(Ts... x) override { this->output_->turn_on(); }
protected:
BinaryOutput *output_; BinaryOutput *output_;
}; };
@ -34,9 +34,9 @@ template<typename... Ts> class SetLevelAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, level) TEMPLATABLE_VALUE(float, level)
protected: void play(Ts... x) override { this->output_->set_level(this->level_.value(x...)); }
void play_(Ts... x) override { this->output_->set_level(this->level_.value(x...)); }
protected:
FloatOutput *output_; FloatOutput *output_;
}; };

View file

@ -75,8 +75,7 @@ template<typename... Ts> class PIDAutotuneAction : public Action<Ts...> {
void set_positive_output(float positive_output) { positive_output_ = positive_output; } void set_positive_output(float positive_output) { positive_output_ = positive_output; }
void set_negative_output(float negative_output) { negative_output_ = negative_output; } void set_negative_output(float negative_output) { negative_output_ = negative_output; }
protected: void play(Ts... x) {
void play_(Ts... x) {
auto tuner = make_unique<PIDAutotuner>(); auto tuner = make_unique<PIDAutotuner>();
tuner->set_noiseband(this->noiseband_); tuner->set_noiseband(this->noiseband_);
tuner->set_output_negative(this->negative_output_); tuner->set_output_negative(this->negative_output_);
@ -84,6 +83,7 @@ template<typename... Ts> class PIDAutotuneAction : public Action<Ts...> {
this->parent_->start_autotune(std::move(tuner)); this->parent_->start_autotune(std::move(tuner));
} }
protected:
float noiseband_; float noiseband_;
float positive_output_; float positive_output_;
float negative_output_; float negative_output_;

View file

@ -24,8 +24,7 @@ template<typename... Ts> class JVCAction : public RemoteTransmitterActionBase<Ts
public: public:
TEMPLATABLE_VALUE(uint32_t, data) TEMPLATABLE_VALUE(uint32_t, data)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
JVCData data{}; JVCData data{};
data.data = this->data_.value(x...); data.data = this->data_.value(x...);
JVCProtocol().encode(dst, data); JVCProtocol().encode(dst, data);

View file

@ -27,8 +27,7 @@ template<typename... Ts> class LGAction : public RemoteTransmitterActionBase<Ts.
TEMPLATABLE_VALUE(uint32_t, data) TEMPLATABLE_VALUE(uint32_t, data)
TEMPLATABLE_VALUE(uint8_t, nbits) TEMPLATABLE_VALUE(uint8_t, nbits)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
LGData data{}; LGData data{};
data.data = this->data_.value(x...); data.data = this->data_.value(x...);
data.nbits = this->nbits_.value(x...); data.nbits = this->nbits_.value(x...);

View file

@ -26,8 +26,7 @@ template<typename... Ts> class NECAction : public RemoteTransmitterActionBase<Ts
TEMPLATABLE_VALUE(uint16_t, address) TEMPLATABLE_VALUE(uint16_t, address)
TEMPLATABLE_VALUE(uint16_t, command) TEMPLATABLE_VALUE(uint16_t, command)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
NECData data{}; NECData data{};
data.address = this->address_.value(x...); data.address = this->address_.value(x...);
data.command = this->command_.value(x...); data.command = this->command_.value(x...);

View file

@ -27,8 +27,7 @@ template<typename... Ts> class PanasonicAction : public RemoteTransmitterActionB
TEMPLATABLE_VALUE(uint16_t, address) TEMPLATABLE_VALUE(uint16_t, address)
TEMPLATABLE_VALUE(uint32_t, command) TEMPLATABLE_VALUE(uint32_t, command)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
PanasonicData data{}; PanasonicData data{};
data.address = this->address_.value(x...); data.address = this->address_.value(x...);
data.command = this->command_.value(x...); data.command = this->command_.value(x...);

View file

@ -26,8 +26,7 @@ template<typename... Ts> class PioneerAction : public RemoteTransmitterActionBas
TEMPLATABLE_VALUE(uint16_t, rc_code_1) TEMPLATABLE_VALUE(uint16_t, rc_code_1)
TEMPLATABLE_VALUE(uint16_t, rc_code_2) TEMPLATABLE_VALUE(uint16_t, rc_code_2)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
PioneerData data{}; PioneerData data{};
data.rc_code_1 = this->rc_code_1_.value(x...); data.rc_code_1 = this->rc_code_1_.value(x...);
data.rc_code_2 = this->rc_code_2_.value(x...); data.rc_code_2 = this->rc_code_2_.value(x...);

View file

@ -46,8 +46,7 @@ template<typename... Ts> class RawAction : public RemoteTransmitterActionBase<Ts
} }
TEMPLATABLE_VALUE(uint32_t, carrier_frequency); TEMPLATABLE_VALUE(uint32_t, carrier_frequency);
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
if (this->code_static_ != nullptr) { if (this->code_static_ != nullptr) {
for (size_t i = 0; i < this->code_static_len_; i++) { for (size_t i = 0; i < this->code_static_len_; i++) {
auto val = this->code_static_[i]; auto val = this->code_static_[i];
@ -62,6 +61,7 @@ template<typename... Ts> class RawAction : public RemoteTransmitterActionBase<Ts
dst->set_carrier_frequency(this->carrier_frequency_.value(x...)); dst->set_carrier_frequency(this->carrier_frequency_.value(x...));
} }
protected:
std::function<std::vector<int32_t>(Ts...)> code_func_{}; std::function<std::vector<int32_t>(Ts...)> code_func_{};
const int32_t *code_static_{nullptr}; const int32_t *code_static_{nullptr};
int32_t code_static_len_{0}; int32_t code_static_len_{0};

View file

@ -27,8 +27,7 @@ template<typename... Ts> class RC5Action : public RemoteTransmitterActionBase<Ts
TEMPLATABLE_VALUE(uint8_t, address) TEMPLATABLE_VALUE(uint8_t, address)
TEMPLATABLE_VALUE(uint8_t, command) TEMPLATABLE_VALUE(uint8_t, command)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
RC5Data data{}; RC5Data data{};
data.address = this->address_.value(x...); data.address = this->address_.value(x...);
data.command = this->command_.value(x...); data.command = this->command_.value(x...);

View file

@ -71,8 +71,7 @@ template<typename... Ts> class RCSwitchRawAction : public RemoteTransmitterActio
TEMPLATABLE_VALUE(RCSwitchBase, protocol); TEMPLATABLE_VALUE(RCSwitchBase, protocol);
TEMPLATABLE_VALUE(std::string, code); TEMPLATABLE_VALUE(std::string, code);
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto code = this->code_.value(x...); auto code = this->code_.value(x...);
uint64_t the_code = decode_binary_string(code); uint64_t the_code = decode_binary_string(code);
uint8_t nbits = code.size(); uint8_t nbits = code.size();
@ -89,8 +88,7 @@ template<typename... Ts> class RCSwitchTypeAAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(std::string, device); TEMPLATABLE_VALUE(std::string, device);
TEMPLATABLE_VALUE(bool, state); TEMPLATABLE_VALUE(bool, state);
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto group = this->group_.value(x...); auto group = this->group_.value(x...);
auto device = this->device_.value(x...); auto device = this->device_.value(x...);
auto state = this->state_.value(x...); auto state = this->state_.value(x...);
@ -113,8 +111,7 @@ template<typename... Ts> class RCSwitchTypeBAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(uint8_t, channel); TEMPLATABLE_VALUE(uint8_t, channel);
TEMPLATABLE_VALUE(bool, state); TEMPLATABLE_VALUE(bool, state);
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto address = this->address_.value(x...); auto address = this->address_.value(x...);
auto channel = this->channel_.value(x...); auto channel = this->channel_.value(x...);
auto state = this->state_.value(x...); auto state = this->state_.value(x...);
@ -136,8 +133,7 @@ template<typename... Ts> class RCSwitchTypeCAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(uint8_t, device); TEMPLATABLE_VALUE(uint8_t, device);
TEMPLATABLE_VALUE(bool, state); TEMPLATABLE_VALUE(bool, state);
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto family = this->family_.value(x...); auto family = this->family_.value(x...);
auto group = this->group_.value(x...); auto group = this->group_.value(x...);
auto device = this->device_.value(x...); auto device = this->device_.value(x...);
@ -160,8 +156,7 @@ template<typename... Ts> class RCSwitchTypeDAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(uint8_t, device); TEMPLATABLE_VALUE(uint8_t, device);
TEMPLATABLE_VALUE(bool, state); TEMPLATABLE_VALUE(bool, state);
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto group = this->group_.value(x...); auto group = this->group_.value(x...);
auto device = this->device_.value(x...); auto device = this->device_.value(x...);
auto state = this->state_.value(x...); auto state = this->state_.value(x...);

View file

@ -326,17 +326,17 @@ template<typename... Ts> class RemoteTransmitterActionBase : public Action<Ts...
TEMPLATABLE_VALUE(uint32_t, send_times); TEMPLATABLE_VALUE(uint32_t, send_times);
TEMPLATABLE_VALUE(uint32_t, send_wait); TEMPLATABLE_VALUE(uint32_t, send_wait);
protected: void play(Ts... x) override {
virtual void encode_(RemoteTransmitData *dst, Ts... x) = 0;
void play_(Ts... x) override {
auto call = this->parent_->transmit(); auto call = this->parent_->transmit();
this->encode_(call.get_data(), x...); this->encode(call.get_data(), x...);
call.set_send_times(this->send_times_.value_or(x..., 1)); call.set_send_times(this->send_times_.value_or(x..., 1));
call.set_send_wait(this->send_wait_.value_or(x..., 0)); call.set_send_wait(this->send_wait_.value_or(x..., 0));
call.perform(); call.perform();
} }
protected:
virtual void encode(RemoteTransmitData *dst, Ts... x) = 0;
RemoteTransmitterBase *parent_{}; RemoteTransmitterBase *parent_{};
}; };

View file

@ -25,8 +25,7 @@ template<typename... Ts> class SamsungAction : public RemoteTransmitterActionBas
public: public:
TEMPLATABLE_VALUE(uint32_t, data) TEMPLATABLE_VALUE(uint32_t, data)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
SamsungData data{}; SamsungData data{};
data.data = this->data_.value(x...); data.data = this->data_.value(x...);
SamsungProtocol().encode(dst, data); SamsungProtocol().encode(dst, data);

View file

@ -27,8 +27,7 @@ template<typename... Ts> class SonyAction : public RemoteTransmitterActionBase<T
TEMPLATABLE_VALUE(uint32_t, data) TEMPLATABLE_VALUE(uint32_t, data)
TEMPLATABLE_VALUE(uint8_t, nbits) TEMPLATABLE_VALUE(uint8_t, nbits)
protected: void encode(RemoteTransmitData *dst, Ts... x) override {
void encode_(RemoteTransmitData *dst, Ts... x) override {
SonyData data{}; SonyData data{};
data.data = this->data_.value(x...); data.data = this->data_.value(x...);
data.nbits = this->nbits_.value(x...); data.nbits = this->nbits_.value(x...);

View file

@ -68,8 +68,7 @@ template<typename... Ts> class RFBridgeSendCodeAction : public Action<Ts...> {
TEMPLATABLE_VALUE(uint16_t, high) TEMPLATABLE_VALUE(uint16_t, high)
TEMPLATABLE_VALUE(uint32_t, code) TEMPLATABLE_VALUE(uint32_t, code)
protected: void play(Ts... x) {
void play_(Ts... x) {
RFBridgeData data{}; RFBridgeData data{};
data.sync = this->sync_.value(x...); data.sync = this->sync_.value(x...);
data.low = this->low_.value(x...); data.low = this->low_.value(x...);
@ -78,6 +77,7 @@ template<typename... Ts> class RFBridgeSendCodeAction : public Action<Ts...> {
this->parent_->send_code(data); this->parent_->send_code(data);
} }
protected:
RFBridgeComponent *parent_; RFBridgeComponent *parent_;
}; };
@ -85,9 +85,9 @@ template<typename... Ts> class RFBridgeLearnAction : public Action<Ts...> {
public: public:
RFBridgeLearnAction(RFBridgeComponent *parent) : parent_(parent) {} RFBridgeLearnAction(RFBridgeComponent *parent) : parent_(parent) {}
protected: void play(Ts... x) { this->parent_->learn(); }
void play_(Ts... x) { this->parent_->learn(); }
protected:
RFBridgeComponent *parent_; RFBridgeComponent *parent_;
}; };

View file

@ -75,8 +75,9 @@ template<typename... Ts> class RotaryEncoderSetValueAction : public Action<Ts...
RotaryEncoderSetValueAction(RotaryEncoderSensor *encoder) : encoder_(encoder) {} RotaryEncoderSetValueAction(RotaryEncoderSensor *encoder) : encoder_(encoder) {}
TEMPLATABLE_VALUE(int, value) TEMPLATABLE_VALUE(int, value)
void play(Ts... x) override { this->encoder_->set_value(this->value_.value(x...)); }
protected: protected:
void play_(Ts... x) override { this->encoder_->set_value(this->value_.value(x...)); }
RotaryEncoderSensor *encoder_; RotaryEncoderSensor *encoder_;
}; };

View file

@ -23,9 +23,9 @@ template<typename... Ts> class ScriptExecuteAction : public Action<Ts...> {
public: public:
ScriptExecuteAction(Script *script) : script_(script) {} ScriptExecuteAction(Script *script) : script_(script) {}
protected: void play(Ts... x) override { this->script_->trigger(); }
void play_(Ts... x) override { this->script_->trigger(); }
protected:
Script *script_; Script *script_;
}; };
@ -33,9 +33,9 @@ template<typename... Ts> class ScriptStopAction : public Action<Ts...> {
public: public:
ScriptStopAction(Script *script) : script_(script) {} ScriptStopAction(Script *script) : script_(script) {}
protected: void play(Ts... x) override { this->script_->stop(); }
void play_(Ts... x) override { this->script_->stop(); }
protected:
Script *script_; Script *script_;
}; };
@ -76,10 +76,10 @@ template<typename... Ts> class ScriptWaitAction : public Action<Ts...>, public C
float get_setup_priority() const override { return setup_priority::DATA; } float get_setup_priority() const override { return setup_priority::DATA; }
protected: void play(Ts... x) override { /* ignore - see play_complex */
void play_(Ts... x) override { /* ignore - see play_complex */
} }
protected:
Script *script_; Script *script_;
std::tuple<Ts...> var_{}; std::tuple<Ts...> var_{};
}; };

View file

@ -26,8 +26,9 @@ template<typename... Ts> class SensorPublishAction : public Action<Ts...> {
SensorPublishAction(Sensor *sensor) : sensor_(sensor) {} SensorPublishAction(Sensor *sensor) : sensor_(sensor) {}
TEMPLATABLE_VALUE(float, state) TEMPLATABLE_VALUE(float, state)
void play(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
protected: protected:
void play_(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
Sensor *sensor_; Sensor *sensor_;
}; };

View file

@ -65,8 +65,9 @@ template<typename... Ts> class ServoWriteAction : public Action<Ts...> {
ServoWriteAction(Servo *servo) : servo_(servo) {} ServoWriteAction(Servo *servo) : servo_(servo) {}
TEMPLATABLE_VALUE(float, value) TEMPLATABLE_VALUE(float, value)
void play(Ts... x) override { this->servo_->write(this->value_.value(x...)); }
protected: protected:
void play_(Ts... x) override { this->servo_->write(this->value_.value(x...)); }
Servo *servo_; Servo *servo_;
}; };
@ -74,8 +75,9 @@ template<typename... Ts> class ServoDetachAction : public Action<Ts...> {
public: public:
ServoDetachAction(Servo *servo) : servo_(servo) {} ServoDetachAction(Servo *servo) : servo_(servo) {}
void play(Ts... x) override { this->servo_->detach(); }
protected: protected:
void play_(Ts... x) override { this->servo_->detach(); }
Servo *servo_; Servo *servo_;
}; };

View file

@ -78,13 +78,13 @@ template<typename... Ts> class Sim800LSendSmsAction : public Action<Ts...> {
TEMPLATABLE_VALUE(std::string, recipient) TEMPLATABLE_VALUE(std::string, recipient)
TEMPLATABLE_VALUE(std::string, message) TEMPLATABLE_VALUE(std::string, message)
protected: void play(Ts... x) {
void play_(Ts... x) {
auto recipient = this->recipient_.value(x...); auto recipient = this->recipient_.value(x...);
auto message = this->message_.value(x...); auto message = this->message_.value(x...);
this->parent_->send_sms(recipient, message); this->parent_->send_sms(recipient, message);
} }
protected:
Sim800LComponent *parent_; Sim800LComponent *parent_;
}; };

View file

@ -43,9 +43,9 @@ template<typename... Ts> class SetTargetAction : public Action<Ts...> {
TEMPLATABLE_VALUE(int32_t, target) TEMPLATABLE_VALUE(int32_t, target)
protected: void play(Ts... x) override { this->parent_->set_target(this->target_.value(x...)); }
void play_(Ts... x) override { this->parent_->set_target(this->target_.value(x...)); }
protected:
Stepper *parent_; Stepper *parent_;
}; };
@ -55,9 +55,9 @@ template<typename... Ts> class ReportPositionAction : public Action<Ts...> {
TEMPLATABLE_VALUE(int32_t, position) TEMPLATABLE_VALUE(int32_t, position)
protected: void play(Ts... x) override { this->parent_->report_position(this->position_.value(x...)); }
void play_(Ts... x) override { this->parent_->report_position(this->position_.value(x...)); }
protected:
Stepper *parent_; Stepper *parent_;
}; };
@ -67,13 +67,13 @@ template<typename... Ts> class SetSpeedAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, speed); TEMPLATABLE_VALUE(float, speed);
protected: void play(Ts... x) override {
void play_(Ts... x) override {
float speed = this->speed_.value(x...); float speed = this->speed_.value(x...);
this->parent_->set_max_speed(speed); this->parent_->set_max_speed(speed);
this->parent_->on_update_speed(); this->parent_->on_update_speed();
} }
protected:
Stepper *parent_; Stepper *parent_;
}; };

View file

@ -11,9 +11,9 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
public: public:
explicit TurnOnAction(Switch *a_switch) : switch_(a_switch) {} explicit TurnOnAction(Switch *a_switch) : switch_(a_switch) {}
protected: void play(Ts... x) override { this->switch_->turn_on(); }
void play_(Ts... x) override { this->switch_->turn_on(); }
protected:
Switch *switch_; Switch *switch_;
}; };
@ -21,9 +21,9 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...> {
public: public:
explicit TurnOffAction(Switch *a_switch) : switch_(a_switch) {} explicit TurnOffAction(Switch *a_switch) : switch_(a_switch) {}
protected: void play(Ts... x) override { this->switch_->turn_off(); }
void play_(Ts... x) override { this->switch_->turn_off(); }
protected:
Switch *switch_; Switch *switch_;
}; };
@ -31,9 +31,9 @@ template<typename... Ts> class ToggleAction : public Action<Ts...> {
public: public:
explicit ToggleAction(Switch *a_switch) : switch_(a_switch) {} explicit ToggleAction(Switch *a_switch) : switch_(a_switch) {}
protected: void play(Ts... x) override { this->switch_->toggle(); }
void play_(Ts... x) override { this->switch_->toggle(); }
protected:
Switch *switch_; Switch *switch_;
}; };
@ -74,8 +74,9 @@ template<typename... Ts> class SwitchPublishAction : public Action<Ts...> {
SwitchPublishAction(Switch *a_switch) : switch_(a_switch) {} SwitchPublishAction(Switch *a_switch) : switch_(a_switch) {}
TEMPLATABLE_VALUE(bool, state) TEMPLATABLE_VALUE(bool, state)
void play(Ts... x) override { this->switch_->publish_state(this->state_.value(x...)); }
protected: protected:
void play_(Ts... x) override { this->switch_->publish_state(this->state_.value(x...)); }
Switch *switch_; Switch *switch_;
}; };

View file

@ -31,8 +31,9 @@ template<typename... Ts> class TextSensorPublishAction : public Action<Ts...> {
TextSensorPublishAction(TextSensor *sensor) : sensor_(sensor) {} TextSensorPublishAction(TextSensor *sensor) : sensor_(sensor) {}
TEMPLATABLE_VALUE(std::string, state) TEMPLATABLE_VALUE(std::string, state)
void play(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
protected: protected:
void play_(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
TextSensor *sensor_; TextSensor *sensor_;
}; };

View file

@ -43,8 +43,7 @@ template<typename... Ts> class SetLevelPercentAction : public Action<Ts...>, pub
public: public:
TEMPLATABLE_VALUE(uint8_t, level_percent) TEMPLATABLE_VALUE(uint8_t, level_percent)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto level_percent = this->level_percent_.value(x...); auto level_percent = this->level_percent_.value(x...);
this->parent_->set_level_percent(level_percent); this->parent_->set_level_percent(level_percent);
} }
@ -54,8 +53,7 @@ template<typename... Ts> class SetLevelAction : public Action<Ts...>, public Par
public: public:
TEMPLATABLE_VALUE(uint8_t, level) TEMPLATABLE_VALUE(uint8_t, level)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto level = this->level_.value(x...); auto level = this->level_.value(x...);
this->parent_->set_level(level); this->parent_->set_level(level);
} }
@ -65,21 +63,20 @@ template<typename... Ts> class SetBrightnessAction : public Action<Ts...>, publi
public: public:
TEMPLATABLE_VALUE(uint8_t, brightness) TEMPLATABLE_VALUE(uint8_t, brightness)
protected: void play(Ts... x) override {
void play_(Ts... x) override {
auto brightness = this->brightness_.value(x...); auto brightness = this->brightness_.value(x...);
this->parent_->set_brightness(brightness); this->parent_->set_brightness(brightness);
} }
}; };
template<typename... Ts> class TurnOnAction : public Action<Ts...>, public Parented<TM1651Display> { template<typename... Ts> class TurnOnAction : public Action<Ts...>, public Parented<TM1651Display> {
protected: public:
void play_(Ts... x) override { this->parent_->turn_on(); } void play(Ts... x) override { this->parent_->turn_on(); }
}; };
template<typename... Ts> class TurnOffAction : public Action<Ts...>, public Parented<TM1651Display> { template<typename... Ts> class TurnOffAction : public Action<Ts...>, public Parented<TM1651Display> {
protected: public:
void play_(Ts... x) override { this->parent_->turn_off(); } void play(Ts... x) override { this->parent_->turn_off(); }
}; };
} // namespace tm1651 } // namespace tm1651

View file

@ -17,8 +17,7 @@ template<typename... Ts> class UARTWriteAction : public Action<Ts...>, public Pa
this->static_ = true; this->static_ = true;
} }
protected: void play(Ts... x) override {
void play_(Ts... x) override {
if (this->static_) { if (this->static_) {
this->parent_->write_array(this->data_static_); this->parent_->write_array(this->data_static_);
} else { } else {
@ -26,6 +25,7 @@ template<typename... Ts> class UARTWriteAction : public Action<Ts...>, public Pa
this->parent_->write_array(val); this->parent_->write_array(val);
} }
} }
protected:
bool static_{false}; bool static_{false};
std::function<std::vector<uint8_t>(Ts...)> data_func_{}; std::function<std::vector<uint8_t>(Ts...)> data_func_{};
std::vector<uint8_t> data_static_{}; std::vector<uint8_t> data_static_{};

View file

@ -77,12 +77,12 @@ template<typename... Ts> class Action {
public: public:
virtual void play_complex(Ts... x) { virtual void play_complex(Ts... x) {
this->num_running_++; this->num_running_++;
this->play_(x...); this->play(x...);
this->play_next_(x...); this->play_next_(x...);
} }
virtual void stop_complex() { virtual void stop_complex() {
if (num_running_) { if (num_running_) {
this->stop_(); this->stop();
this->num_running_ = 0; this->num_running_ = 0;
} }
this->stop_next_(); this->stop_next_();
@ -92,7 +92,7 @@ template<typename... Ts> class Action {
protected: protected:
friend ActionList<Ts...>; friend ActionList<Ts...>;
virtual void play_(Ts... x) = 0; virtual void play(Ts... x) = 0;
void play_next_(Ts... x) { void play_next_(Ts... x) {
if (this->num_running_ > 0) { if (this->num_running_ > 0) {
this->num_running_--; this->num_running_--;
@ -108,7 +108,7 @@ template<typename... Ts> class Action {
this->play_next_tuple_(tuple, typename gens<sizeof...(Ts)>::type()); this->play_next_tuple_(tuple, typename gens<sizeof...(Ts)>::type());
} }
virtual void stop_() {} virtual void stop() {}
void stop_next_() { void stop_next_() {
if (this->next_ != nullptr) { if (this->next_ != nullptr) {
this->next_->stop_complex(); this->next_->stop_complex();

View file

@ -115,22 +115,19 @@ template<typename... Ts> class DelayAction : public Action<Ts...>, public Compon
} }
float get_setup_priority() const override { return setup_priority::HARDWARE; } float get_setup_priority() const override { return setup_priority::HARDWARE; }
protected: void play(Ts... x) override { /* ignore - see play_complex */
void play_(Ts... x) override { /* ignore - see play_complex */
} }
void stop_() override { void stop() override { this->cancel_timeout(""); }
this->cancel_timeout("");
}
}; };
template<typename... Ts> class LambdaAction : public Action<Ts...> { template<typename... Ts> class LambdaAction : public Action<Ts...> {
public: public:
explicit LambdaAction(std::function<void(Ts...)> &&f) : f_(std::move(f)) {} explicit LambdaAction(std::function<void(Ts...)> &&f) : f_(std::move(f)) {}
protected: void play(Ts... x) override { this->f_(x...); }
void play_(Ts... x) override { this->f_(x...); }
protected:
std::function<void(Ts...)> f_; std::function<void(Ts...)> f_;
}; };
@ -166,15 +163,15 @@ template<typename... Ts> class IfAction : public Action<Ts...> {
} }
} }
protected: void play(Ts... x) override { /* ignore - see play_complex */
void play_(Ts... x) override { /* ignore - see play_complex */
} }
void stop_() override { void stop() override {
this->then_.stop(); this->then_.stop();
this->else_.stop(); this->else_.stop();
} }
protected:
Condition<Ts...> *condition_; Condition<Ts...> *condition_;
ActionList<Ts...> then_; ActionList<Ts...> then_;
ActionList<Ts...> else_; ActionList<Ts...> else_;
@ -216,12 +213,12 @@ template<typename... Ts> class WhileAction : public Action<Ts...> {
} }
} }
protected: void play(Ts... x) override { /* ignore - see play_complex */
void play_(Ts... x) override { /* ignore - see play_complex */
} }
void stop_() override { this->then_.stop(); } void stop() override { this->then_.stop(); }
protected:
Condition<Ts...> *condition_; Condition<Ts...> *condition_;
ActionList<Ts...> then_; ActionList<Ts...> then_;
std::tuple<Ts...> var_{}; std::tuple<Ts...> var_{};
@ -257,10 +254,10 @@ template<typename... Ts> class WaitUntilAction : public Action<Ts...>, public Co
float get_setup_priority() const override { return setup_priority::DATA; } float get_setup_priority() const override { return setup_priority::DATA; }
protected: void play(Ts... x) override { /* ignore - see play_complex */
void play_(Ts... x) override { /* ignore - see play_complex */
} }
protected:
Condition<Ts...> *condition_; Condition<Ts...> *condition_;
std::tuple<Ts...> var_{}; std::tuple<Ts...> var_{};
}; };
@ -269,9 +266,9 @@ template<typename... Ts> class UpdateComponentAction : public Action<Ts...> {
public: public:
UpdateComponentAction(PollingComponent *component) : component_(component) {} UpdateComponentAction(PollingComponent *component) : component_(component) {}
protected: void play(Ts... x) override { this->component_->update(); }
void play_(Ts... x) override { this->component_->update(); }
protected:
PollingComponent *component_; PollingComponent *component_;
}; };