Make some Action methods protected

Apparently play()/stop() etc. are not meant to be called directly by
users of the class and if they're called directly that would not give
the expected result for the classes that have an empty play().

Make all methods except play_complex, stop_comples and is_running
protected.  While there also make RemoteTransmitterActionBase::encode
protected.
This commit is contained in:
Andrew Zaborowski
2020-05-01 12:38:34 +02:00
committed by Andrew Zaborowski
parent da390d32f8
commit a62b6548d2
42 changed files with 250 additions and 203 deletions
@@ -29,7 +29,9 @@ template<typename... Ts> class HomeAssistantServiceCallAction : public Action<Ts
template<typename T> void add_variable(std::string key, T value) {
this->variables_.push_back(TemplatableKeyValuePair<Ts...>(key, value));
}
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
HomeassistantServiceResponse resp;
resp.service = this->service_.value(x...);
resp.is_event = this->is_event_;
@@ -54,7 +56,6 @@ template<typename... Ts> class HomeAssistantServiceCallAction : public Action<Ts
this->parent_->send_homeassistant_service_call(resp);
}
protected:
APIServer *parent_;
bool is_event_;
std::vector<TemplatableKeyValuePair<Ts...>> data_;
@@ -137,12 +137,13 @@ template<typename... Ts> class BinarySensorPublishAction : public Action<Ts...>
public:
explicit BinarySensorPublishAction(BinarySensor *sensor) : sensor_(sensor) {}
TEMPLATABLE_VALUE(bool, state)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto val = this->state_.value(x...);
this->sensor_->publish_state(val);
}
protected:
BinarySensor *sensor_;
};
+2 -2
View File
@@ -18,7 +18,8 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
TEMPLATABLE_VALUE(ClimateFanMode, fan_mode)
TEMPLATABLE_VALUE(ClimateSwingMode, swing_mode)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto call = this->climate_->make_call();
call.set_mode(this->mode_.optional_value(x...));
call.set_target_temperature(this->target_temperature_.optional_value(x...));
@@ -30,7 +31,6 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
call.perform();
}
protected:
Climate *climate_;
};
+18 -18
View File
@@ -11,9 +11,9 @@ template<typename... Ts> class OpenAction : public Action<Ts...> {
public:
explicit OpenAction(Cover *cover) : cover_(cover) {}
void play(Ts... x) override { this->cover_->open(); }
protected:
void play_(Ts... x) override { this->cover_->open(); }
Cover *cover_;
};
@@ -21,9 +21,9 @@ template<typename... Ts> class CloseAction : public Action<Ts...> {
public:
explicit CloseAction(Cover *cover) : cover_(cover) {}
void play(Ts... x) override { this->cover_->close(); }
protected:
void play_(Ts... x) override { this->cover_->close(); }
Cover *cover_;
};
@@ -31,9 +31,9 @@ template<typename... Ts> class StopAction : public Action<Ts...> {
public:
explicit StopAction(Cover *cover) : cover_(cover) {}
void play(Ts... x) override { this->cover_->stop(); }
protected:
void play_(Ts... x) override { this->cover_->stop(); }
Cover *cover_;
};
@@ -41,7 +41,12 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
public:
explicit ControlAction(Cover *cover) : cover_(cover) {}
void play(Ts... x) override {
TEMPLATABLE_VALUE(bool, stop)
TEMPLATABLE_VALUE(float, position)
TEMPLATABLE_VALUE(float, tilt)
protected:
void play_(Ts... x) override {
auto call = this->cover_->make_call();
if (this->stop_.has_value())
call.set_stop(this->stop_.value(x...));
@@ -52,18 +57,18 @@ template<typename... Ts> class ControlAction : public Action<Ts...> {
call.perform();
}
TEMPLATABLE_VALUE(bool, stop)
TEMPLATABLE_VALUE(float, position)
TEMPLATABLE_VALUE(float, tilt)
protected:
Cover *cover_;
};
template<typename... Ts> class CoverPublishAction : public Action<Ts...> {
public:
CoverPublishAction(Cover *cover) : cover_(cover) {}
void play(Ts... x) override {
TEMPLATABLE_VALUE(float, position)
TEMPLATABLE_VALUE(float, tilt)
TEMPLATABLE_VALUE(CoverOperation, current_operation)
protected:
void play_(Ts... x) override {
if (this->position_.has_value())
this->cover_->position = this->position_.value(x...);
if (this->tilt_.has_value())
@@ -73,11 +78,6 @@ template<typename... Ts> class CoverPublishAction : public Action<Ts...> {
this->cover_->publish_state();
}
TEMPLATABLE_VALUE(float, position)
TEMPLATABLE_VALUE(float, tilt)
TEMPLATABLE_VALUE(CoverOperation, current_operation)
protected:
Cover *cover_;
};
@@ -85,9 +85,9 @@ template<typename... Ts> class EnterDeepSleepAction : public Action<Ts...> {
public:
EnterDeepSleepAction(DeepSleepComponent *deep_sleep) : deep_sleep_(deep_sleep) {}
void play(Ts... x) override { this->deep_sleep_->begin_sleep(true); }
protected:
void play_(Ts... x) override { this->deep_sleep_->begin_sleep(true); }
DeepSleepComponent *deep_sleep_;
};
@@ -95,9 +95,9 @@ template<typename... Ts> class PreventDeepSleepAction : public Action<Ts...> {
public:
PreventDeepSleepAction(DeepSleepComponent *deep_sleep) : deep_sleep_(deep_sleep) {}
void play(Ts... x) override { this->deep_sleep_->prevent_deep_sleep(); }
protected:
void play_(Ts... x) override { this->deep_sleep_->prevent_deep_sleep(); }
DeepSleepComponent *deep_sleep_;
};
+17 -7
View File
@@ -104,8 +104,8 @@ class DFPlayer : public uart::UARTDevice, public Component {
#define DFPLAYER_SIMPLE_ACTION(ACTION_CLASS, ACTION_METHOD) \
template<typename... Ts> class ACTION_CLASS : public Action<Ts...>, public Parented<DFPlayer> { \
public: \
void play(Ts... x) override { this->parent_->ACTION_METHOD(); } \
protected: \
void play_(Ts... x) override { this->parent_->ACTION_METHOD(); } \
};
DFPLAYER_SIMPLE_ACTION(NextAction, next)
@@ -115,7 +115,9 @@ template<typename... Ts> class PlayFileAction : public Action<Ts...>, public Par
public:
TEMPLATABLE_VALUE(uint16_t, file)
TEMPLATABLE_VALUE(boolean, loop)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto file = this->file_.value(x...);
auto loop = this->loop_.value(x...);
if (loop) {
@@ -131,7 +133,9 @@ template<typename... Ts> class PlayFolderAction : public Action<Ts...>, public P
TEMPLATABLE_VALUE(uint16_t, folder)
TEMPLATABLE_VALUE(uint16_t, file)
TEMPLATABLE_VALUE(boolean, loop)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto folder = this->folder_.value(x...);
auto file = this->file_.value(x...);
auto loop = this->loop_.value(x...);
@@ -146,7 +150,9 @@ template<typename... Ts> class PlayFolderAction : public Action<Ts...>, public P
template<typename... Ts> class SetDeviceAction : public Action<Ts...>, public Parented<DFPlayer> {
public:
TEMPLATABLE_VALUE(Device, device)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto device = this->device_.value(x...);
this->parent_->set_device(device);
}
@@ -155,7 +161,9 @@ template<typename... Ts> class SetDeviceAction : public Action<Ts...>, public Pa
template<typename... Ts> class SetVolumeAction : public Action<Ts...>, public Parented<DFPlayer> {
public:
TEMPLATABLE_VALUE(uint8_t, volume)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto volume = this->volume_.value(x...);
this->parent_->set_volume(volume);
}
@@ -164,7 +172,9 @@ template<typename... Ts> class SetVolumeAction : public Action<Ts...>, public Pa
template<typename... Ts> class SetEqAction : public Action<Ts...>, public Parented<DFPlayer> {
public:
TEMPLATABLE_VALUE(EqPreset, eq)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto eq = this->eq_.value(x...);
this->parent_->set_eq(eq);
}
+7 -3
View File
@@ -391,7 +391,9 @@ class Image {
template<typename... Ts> class DisplayPageShowAction : public Action<Ts...> {
public:
TEMPLATABLE_VALUE(DisplayPage *, page)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto *page = this->page_.value(x...);
if (page != nullptr) {
page->show();
@@ -402,18 +404,20 @@ template<typename... Ts> class DisplayPageShowAction : public Action<Ts...> {
template<typename... Ts> class DisplayPageShowNextAction : public Action<Ts...> {
public:
DisplayPageShowNextAction(DisplayBuffer *buffer) : buffer_(buffer) {}
void play(Ts... x) override { this->buffer_->show_next_page(); }
protected:
void play_(Ts... x) override { this->buffer_->show_next_page(); }
DisplayBuffer *buffer_;
};
template<typename... Ts> class DisplayPageShowPrevAction : public Action<Ts...> {
public:
DisplayPageShowPrevAction(DisplayBuffer *buffer) : buffer_(buffer) {}
void play(Ts... x) override { this->buffer_->show_prev_page(); }
protected:
void play_(Ts... x) override { this->buffer_->show_prev_page(); }
DisplayBuffer *buffer_;
};
+2 -2
View File
@@ -38,12 +38,12 @@ template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {
SetFrequencyAction(ESP8266PWM *parent) : parent_(parent) {}
TEMPLATABLE_VALUE(float, frequency);
void play(Ts... x) {
protected:
void play_(Ts... x) {
float freq = this->frequency_.value(x...);
this->parent_->update_frequency(freq);
}
protected:
ESP8266PWM *parent_;
};
+6 -6
View File
@@ -14,7 +14,8 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
TEMPLATABLE_VALUE(bool, oscillating)
TEMPLATABLE_VALUE(FanSpeed, speed)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto call = this->state_->turn_on();
if (this->oscillating_.has_value()) {
call.set_oscillating(this->oscillating_.value(x...));
@@ -25,7 +26,6 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
call.perform();
}
protected:
FanState *state_;
};
@@ -33,9 +33,9 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...> {
public:
explicit TurnOffAction(FanState *state) : state_(state) {}
void play(Ts... x) override { this->state_->turn_off().perform(); }
protected:
void play_(Ts... x) override { this->state_->turn_off().perform(); }
FanState *state_;
};
@@ -43,9 +43,9 @@ template<typename... Ts> class ToggleAction : public Action<Ts...> {
public:
explicit ToggleAction(FanState *state) : state_(state) {}
void play(Ts... x) override { this->state_->toggle().perform(); }
protected:
void play_(Ts... x) override { this->state_->toggle().perform(); }
FanState *state_;
};
@@ -59,9 +59,9 @@ template<class C, typename... Ts> class GlobalVarSetAction : public Action<Ts...
TEMPLATABLE_VALUE(T, value);
void play(Ts... x) override { this->parent_->value() = this->value_.value(x...); }
protected:
void play_(Ts... x) override { this->parent_->value() = this->value_.value(x...); }
C *parent_;
};
@@ -71,7 +71,8 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
void set_json(std::function<void(Ts..., JsonObject &)> json_func) { this->json_func_ = json_func; }
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
this->parent_->set_url(this->url_.value(x...));
this->parent_->set_method(this->method_.value(x...));
if (this->body_.has_value()) {
@@ -106,7 +107,6 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
this->parent_->close();
}
protected:
void encode_json_(Ts... x, JsonObject &root) {
for (const auto &item : this->json_) {
auto val = item.second;
@@ -76,9 +76,9 @@ template<typename... Ts> class ResetAction : public Action<Ts...> {
public:
explicit ResetAction(IntegrationSensor *parent) : parent_(parent) {}
void play(Ts... x) override { this->parent_->reset(); }
protected:
void play_(Ts... x) override { this->parent_->reset(); }
IntegrationSensor *parent_;
};
+2 -2
View File
@@ -43,12 +43,12 @@ template<typename... Ts> class SetFrequencyAction : public Action<Ts...> {
SetFrequencyAction(LEDCOutput *parent) : parent_(parent) {}
TEMPLATABLE_VALUE(float, frequency);
void play(Ts... x) {
protected:
void play_(Ts... x) {
float freq = this->frequency_.value(x...);
this->parent_->apply_frequency(freq);
}
protected:
LEDCOutput *parent_;
};
+8 -8
View File
@@ -13,13 +13,13 @@ template<typename... Ts> class ToggleAction : public Action<Ts...> {
TEMPLATABLE_VALUE(uint32_t, transition_length)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto call = this->state_->toggle();
call.set_transition_length(this->transition_length_.optional_value(x...));
call.perform();
}
protected:
LightState *state_;
};
@@ -38,7 +38,8 @@ template<typename... Ts> class LightControlAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, color_temperature)
TEMPLATABLE_VALUE(std::string, effect)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto call = this->parent_->make_call();
call.set_state(this->state_.optional_value(x...));
call.set_brightness(this->brightness_.optional_value(x...));
@@ -53,7 +54,6 @@ template<typename... Ts> class LightControlAction : public Action<Ts...> {
call.perform();
}
protected:
LightState *parent_;
};
@@ -64,7 +64,8 @@ template<typename... Ts> class DimRelativeAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, relative_brightness)
TEMPLATABLE_VALUE(uint32_t, transition_length)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto call = this->parent_->make_call();
float rel = this->relative_brightness_.value(x...);
float cur;
@@ -77,7 +78,6 @@ template<typename... Ts> class DimRelativeAction : public Action<Ts...> {
call.perform();
}
protected:
LightState *parent_;
};
@@ -143,7 +143,8 @@ template<typename... Ts> class AddressableSet : public Action<Ts...> {
TEMPLATABLE_VALUE(uint8_t, blue)
TEMPLATABLE_VALUE(uint8_t, white)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto *out = (AddressableLight *) this->parent_->get_output();
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;
@@ -159,7 +160,6 @@ template<typename... Ts> class AddressableSet : public Action<Ts...> {
out->schedule_show();
}
protected:
LightState *parent_;
};
+6 -3
View File
@@ -37,27 +37,30 @@ class MHZ19Component : public PollingComponent, public uart::UARTDevice {
template<typename... Ts> class MHZ19CalibrateZeroAction : public Action<Ts...> {
public:
MHZ19CalibrateZeroAction(MHZ19Component *mhz19) : mhz19_(mhz19) {}
void play(Ts... x) override { this->mhz19_->calibrate_zero(); }
protected:
void play_(Ts... x) override { this->mhz19_->calibrate_zero(); }
MHZ19Component *mhz19_;
};
template<typename... Ts> class MHZ19ABCEnableAction : public Action<Ts...> {
public:
MHZ19ABCEnableAction(MHZ19Component *mhz19) : mhz19_(mhz19) {}
void play(Ts... x) override { this->mhz19_->abc_enable(); }
protected:
void play_(Ts... x) override { this->mhz19_->abc_enable(); }
MHZ19Component *mhz19_;
};
template<typename... Ts> class MHZ19ABCDisableAction : public Action<Ts...> {
public:
MHZ19ABCDisableAction(MHZ19Component *mhz19) : mhz19_(mhz19) {}
void play(Ts... x) override { this->mhz19_->abc_disable(); }
protected:
void play_(Ts... x) override { this->mhz19_->abc_disable(); }
MHZ19Component *mhz19_;
};
+5 -5
View File
@@ -299,12 +299,12 @@ template<typename... Ts> class MQTTPublishAction : public Action<Ts...> {
TEMPLATABLE_VALUE(uint8_t, qos)
TEMPLATABLE_VALUE(bool, retain)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
this->parent_->publish(this->topic_.value(x...), this->payload_.value(x...), this->qos_.value(x...),
this->retain_.value(x...));
}
protected:
MQTTClientComponent *parent_;
};
@@ -316,15 +316,15 @@ template<typename... Ts> class MQTTPublishJsonAction : public Action<Ts...> {
TEMPLATABLE_VALUE(bool, retain)
void set_payload(std::function<void(Ts..., JsonObject &)> payload) { this->payload_ = payload; }
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto f = std::bind(&MQTTPublishJsonAction<Ts...>::encode_, this, x..., std::placeholders::_1);
auto topic = this->topic_.value(x...);
auto qos = this->qos_.value(x...);
auto retain = this->retain_.value(x...);
this->parent_->publish_json(topic, f, qos, retain);
}
protected:
void encode_(Ts... x, JsonObject &root) { this->payload_(x..., root); }
std::function<void(Ts..., JsonObject &)> payload_;
MQTTClientComponent *parent_;
+6 -5
View File
@@ -12,9 +12,9 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...> {
public:
TurnOffAction(BinaryOutput *output) : output_(output) {}
void play(Ts... x) override { this->output_->turn_off(); }
protected:
void play_(Ts... x) override { this->output_->turn_off(); }
BinaryOutput *output_;
};
@@ -22,9 +22,9 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
public:
TurnOnAction(BinaryOutput *output) : output_(output) {}
void play(Ts... x) override { this->output_->turn_on(); }
protected:
void play_(Ts... x) override { this->output_->turn_on(); }
BinaryOutput *output_;
};
@@ -33,9 +33,10 @@ template<typename... Ts> class SetLevelAction : public Action<Ts...> {
SetLevelAction(FloatOutput *output) : output_(output) {}
TEMPLATABLE_VALUE(float, level)
void play(Ts... x) override { this->output_->set_level(this->level_.value(x...)); }
protected:
void play_(Ts... x) override { this->output_->set_level(this->level_.value(x...)); }
FloatOutput *output_;
};
+6 -6
View File
@@ -71,7 +71,12 @@ template<typename... Ts> class PIDAutotuneAction : public Action<Ts...> {
public:
PIDAutotuneAction(PIDClimate *parent) : parent_(parent) {}
void play(Ts... x) {
void set_noiseband(float noiseband) { noiseband_ = noiseband; }
void set_positive_output(float positive_output) { positive_output_ = positive_output; }
void set_negative_output(float negative_output) { negative_output_ = negative_output; }
protected:
void play_(Ts... x) {
auto tuner = make_unique<PIDAutotuner>();
tuner->set_noiseband(this->noiseband_);
tuner->set_output_negative(this->negative_output_);
@@ -79,11 +84,6 @@ template<typename... Ts> class PIDAutotuneAction : public Action<Ts...> {
this->parent_->start_autotune(std::move(tuner));
}
void set_noiseband(float noiseband) { noiseband_ = noiseband; }
void set_positive_output(float positive_output) { positive_output_ = positive_output; }
void set_negative_output(float negative_output) { negative_output_ = negative_output; }
protected:
float noiseband_;
float positive_output_;
float negative_output_;
@@ -23,7 +23,9 @@ DECLARE_REMOTE_PROTOCOL(JVC)
template<typename... Ts> class JVCAction : public RemoteTransmitterActionBase<Ts...> {
public:
TEMPLATABLE_VALUE(uint32_t, data)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
JVCData data{};
data.data = this->data_.value(x...);
JVCProtocol().encode(dst, data);
+3 -1
View File
@@ -26,7 +26,9 @@ template<typename... Ts> class LGAction : public RemoteTransmitterActionBase<Ts.
public:
TEMPLATABLE_VALUE(uint32_t, data)
TEMPLATABLE_VALUE(uint8_t, nbits)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
LGData data{};
data.data = this->data_.value(x...);
data.nbits = this->nbits_.value(x...);
@@ -25,7 +25,9 @@ template<typename... Ts> class NECAction : public RemoteTransmitterActionBase<Ts
public:
TEMPLATABLE_VALUE(uint16_t, address)
TEMPLATABLE_VALUE(uint16_t, command)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
NECData data{};
data.address = this->address_.value(x...);
data.command = this->command_.value(x...);
@@ -26,7 +26,9 @@ template<typename... Ts> class PanasonicAction : public RemoteTransmitterActionB
public:
TEMPLATABLE_VALUE(uint16_t, address)
TEMPLATABLE_VALUE(uint32_t, command)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
PanasonicData data{};
data.address = this->address_.value(x...);
data.command = this->command_.value(x...);
@@ -25,7 +25,9 @@ template<typename... Ts> class PioneerAction : public RemoteTransmitterActionBas
public:
TEMPLATABLE_VALUE(uint16_t, rc_code_1)
TEMPLATABLE_VALUE(uint16_t, rc_code_2)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
PioneerData data{};
data.rc_code_1 = this->rc_code_1_.value(x...);
data.rc_code_2 = this->rc_code_2_.value(x...);
@@ -46,7 +46,8 @@ template<typename... Ts> class RawAction : public RemoteTransmitterActionBase<Ts
}
TEMPLATABLE_VALUE(uint32_t, carrier_frequency);
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
if (this->code_static_ != nullptr) {
for (size_t i = 0; i < this->code_static_len_; i++) {
auto val = this->code_static_[i];
@@ -61,7 +62,6 @@ template<typename... Ts> class RawAction : public RemoteTransmitterActionBase<Ts
dst->set_carrier_frequency(this->carrier_frequency_.value(x...));
}
protected:
std::function<std::vector<int32_t>(Ts...)> code_func_{};
const int32_t *code_static_{nullptr};
int32_t code_static_len_{0};
@@ -26,7 +26,9 @@ template<typename... Ts> class RC5Action : public RemoteTransmitterActionBase<Ts
public:
TEMPLATABLE_VALUE(uint8_t, address)
TEMPLATABLE_VALUE(uint8_t, command)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
RC5Data data{};
data.address = this->address_.value(x...);
data.command = this->command_.value(x...);
@@ -71,7 +71,8 @@ template<typename... Ts> class RCSwitchRawAction : public RemoteTransmitterActio
TEMPLATABLE_VALUE(RCSwitchBase, protocol);
TEMPLATABLE_VALUE(std::string, code);
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto code = this->code_.value(x...);
uint64_t the_code = decode_binary_string(code);
uint8_t nbits = code.size();
@@ -88,7 +89,8 @@ template<typename... Ts> class RCSwitchTypeAAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(std::string, device);
TEMPLATABLE_VALUE(bool, state);
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto group = this->group_.value(x...);
auto device = this->device_.value(x...);
auto state = this->state_.value(x...);
@@ -111,7 +113,8 @@ template<typename... Ts> class RCSwitchTypeBAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(uint8_t, channel);
TEMPLATABLE_VALUE(bool, state);
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto address = this->address_.value(x...);
auto channel = this->channel_.value(x...);
auto state = this->state_.value(x...);
@@ -133,7 +136,8 @@ template<typename... Ts> class RCSwitchTypeCAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(uint8_t, device);
TEMPLATABLE_VALUE(bool, state);
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto family = this->family_.value(x...);
auto group = this->group_.value(x...);
auto device = this->device_.value(x...);
@@ -156,7 +160,8 @@ template<typename... Ts> class RCSwitchTypeDAction : public RemoteTransmitterAct
TEMPLATABLE_VALUE(uint8_t, device);
TEMPLATABLE_VALUE(bool, state);
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
auto group = this->group_.value(x...);
auto device = this->device_.value(x...);
auto state = this->state_.value(x...);
+8 -8
View File
@@ -323,20 +323,20 @@ template<typename... Ts> class RemoteTransmitterActionBase : public Action<Ts...
public:
void set_parent(RemoteTransmitterBase *parent) { this->parent_ = parent; }
void play(Ts... x) override {
TEMPLATABLE_VALUE(uint32_t, send_times);
TEMPLATABLE_VALUE(uint32_t, send_wait);
protected:
virtual void encode_(RemoteTransmitData *dst, Ts... x) = 0;
void play_(Ts... x) override {
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_wait(this->send_wait_.value_or(x..., 0));
call.perform();
}
virtual void encode(RemoteTransmitData *dst, Ts... x) = 0;
TEMPLATABLE_VALUE(uint32_t, send_times);
TEMPLATABLE_VALUE(uint32_t, send_wait);
protected:
RemoteTransmitterBase *parent_{};
};
@@ -24,7 +24,9 @@ DECLARE_REMOTE_PROTOCOL(Samsung)
template<typename... Ts> class SamsungAction : public RemoteTransmitterActionBase<Ts...> {
public:
TEMPLATABLE_VALUE(uint32_t, data)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
SamsungData data{};
data.data = this->data_.value(x...);
SamsungProtocol().encode(dst, data);
@@ -26,7 +26,9 @@ template<typename... Ts> class SonyAction : public RemoteTransmitterActionBase<T
public:
TEMPLATABLE_VALUE(uint32_t, data)
TEMPLATABLE_VALUE(uint8_t, nbits)
void encode(RemoteTransmitData *dst, Ts... x) override {
protected:
void encode_(RemoteTransmitData *dst, Ts... x) override {
SonyData data{};
data.data = this->data_.value(x...);
data.nbits = this->nbits_.value(x...);
+4 -4
View File
@@ -68,7 +68,8 @@ template<typename... Ts> class RFBridgeSendCodeAction : public Action<Ts...> {
TEMPLATABLE_VALUE(uint16_t, high)
TEMPLATABLE_VALUE(uint32_t, code)
void play(Ts... x) {
protected:
void play_(Ts... x) {
RFBridgeData data{};
data.sync = this->sync_.value(x...);
data.low = this->low_.value(x...);
@@ -77,7 +78,6 @@ template<typename... Ts> class RFBridgeSendCodeAction : public Action<Ts...> {
this->parent_->send_code(data);
}
protected:
RFBridgeComponent *parent_;
};
@@ -85,9 +85,9 @@ template<typename... Ts> class RFBridgeLearnAction : public Action<Ts...> {
public:
RFBridgeLearnAction(RFBridgeComponent *parent) : parent_(parent) {}
void play(Ts... x) { this->parent_->learn(); }
protected:
void play_(Ts... x) { this->parent_->learn(); }
RFBridgeComponent *parent_;
};
@@ -74,9 +74,9 @@ template<typename... Ts> class RotaryEncoderSetValueAction : public Action<Ts...
public:
RotaryEncoderSetValueAction(RotaryEncoderSensor *encoder) : encoder_(encoder) {}
TEMPLATABLE_VALUE(int, value)
void play(Ts... x) override { this->encoder_->set_value(this->value_.value(x...)); }
protected:
void play_(Ts... x) override { this->encoder_->set_value(this->value_.value(x...)); }
RotaryEncoderSensor *encoder_;
};
+9 -9
View File
@@ -23,9 +23,9 @@ template<typename... Ts> class ScriptExecuteAction : public Action<Ts...> {
public:
ScriptExecuteAction(Script *script) : script_(script) {}
void play(Ts... x) override { this->script_->trigger(); }
protected:
void play_(Ts... x) override { this->script_->trigger(); }
Script *script_;
};
@@ -33,9 +33,9 @@ template<typename... Ts> class ScriptStopAction : public Action<Ts...> {
public:
ScriptStopAction(Script *script) : script_(script) {}
void play(Ts... x) override { this->script_->stop(); }
protected:
void play_(Ts... x) override { this->script_->stop(); }
Script *script_;
};
@@ -53,14 +53,11 @@ template<typename... Ts> class ScriptWaitAction : public Action<Ts...>, public C
public:
ScriptWaitAction(Script *script) : script_(script) {}
void play(Ts... x) override { /* ignore - see play_complex */
}
void play_complex(Ts... x) override {
this->num_running_++;
// Check if we can continue immediately.
if (!this->script_->is_running()) {
this->play_next(x...);
this->play_next_(x...);
return;
}
this->var_ = std::make_tuple(x...);
@@ -74,12 +71,15 @@ template<typename... Ts> class ScriptWaitAction : public Action<Ts...>, public C
if (this->script_->is_running())
return;
this->play_next_tuple(this->var_);
this->play_next_tuple_(this->var_);
}
float get_setup_priority() const override { return setup_priority::DATA; }
protected:
void play_(Ts... x) override { /* ignore - see play_complex */
}
Script *script_;
std::tuple<Ts...> var_{};
};
+1 -1
View File
@@ -25,9 +25,9 @@ template<typename... Ts> class SensorPublishAction : public Action<Ts...> {
public:
SensorPublishAction(Sensor *sensor) : sensor_(sensor) {}
TEMPLATABLE_VALUE(float, state)
void play(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
protected:
void play_(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
Sensor *sensor_;
};
+2 -2
View File
@@ -64,18 +64,18 @@ template<typename... Ts> class ServoWriteAction : public Action<Ts...> {
public:
ServoWriteAction(Servo *servo) : servo_(servo) {}
TEMPLATABLE_VALUE(float, value)
void play(Ts... x) override { this->servo_->write(this->value_.value(x...)); }
protected:
void play_(Ts... x) override { this->servo_->write(this->value_.value(x...)); }
Servo *servo_;
};
template<typename... Ts> class ServoDetachAction : public Action<Ts...> {
public:
ServoDetachAction(Servo *servo) : servo_(servo) {}
void play(Ts... x) override { this->servo_->detach(); }
protected:
void play_(Ts... x) override { this->servo_->detach(); }
Servo *servo_;
};
+2 -2
View File
@@ -78,13 +78,13 @@ template<typename... Ts> class Sim800LSendSmsAction : public Action<Ts...> {
TEMPLATABLE_VALUE(std::string, recipient)
TEMPLATABLE_VALUE(std::string, message)
void play(Ts... x) {
protected:
void play_(Ts... x) {
auto recipient = this->recipient_.value(x...);
auto message = this->message_.value(x...);
this->parent_->send_sms(recipient, message);
}
protected:
Sim800LComponent *parent_;
};
+6 -6
View File
@@ -43,9 +43,9 @@ template<typename... Ts> class SetTargetAction : public Action<Ts...> {
TEMPLATABLE_VALUE(int32_t, target)
void play(Ts... x) override { this->parent_->set_target(this->target_.value(x...)); }
protected:
void play_(Ts... x) override { this->parent_->set_target(this->target_.value(x...)); }
Stepper *parent_;
};
@@ -55,9 +55,9 @@ template<typename... Ts> class ReportPositionAction : public Action<Ts...> {
TEMPLATABLE_VALUE(int32_t, position)
void play(Ts... x) override { this->parent_->report_position(this->position_.value(x...)); }
protected:
void play_(Ts... x) override { this->parent_->report_position(this->position_.value(x...)); }
Stepper *parent_;
};
@@ -67,13 +67,13 @@ template<typename... Ts> class SetSpeedAction : public Action<Ts...> {
TEMPLATABLE_VALUE(float, speed);
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
float speed = this->speed_.value(x...);
this->parent_->set_max_speed(speed);
this->parent_->on_update_speed();
}
protected:
Stepper *parent_;
};
+7 -7
View File
@@ -11,9 +11,9 @@ template<typename... Ts> class TurnOnAction : public Action<Ts...> {
public:
explicit TurnOnAction(Switch *a_switch) : switch_(a_switch) {}
void play(Ts... x) override { this->switch_->turn_on(); }
protected:
void play_(Ts... x) override { this->switch_->turn_on(); }
Switch *switch_;
};
@@ -21,9 +21,9 @@ template<typename... Ts> class TurnOffAction : public Action<Ts...> {
public:
explicit TurnOffAction(Switch *a_switch) : switch_(a_switch) {}
void play(Ts... x) override { this->switch_->turn_off(); }
protected:
void play_(Ts... x) override { this->switch_->turn_off(); }
Switch *switch_;
};
@@ -31,9 +31,9 @@ template<typename... Ts> class ToggleAction : public Action<Ts...> {
public:
explicit ToggleAction(Switch *a_switch) : switch_(a_switch) {}
void play(Ts... x) override { this->switch_->toggle(); }
protected:
void play_(Ts... x) override { this->switch_->toggle(); }
Switch *switch_;
};
@@ -73,9 +73,9 @@ template<typename... Ts> class SwitchPublishAction : public Action<Ts...> {
public:
SwitchPublishAction(Switch *a_switch) : switch_(a_switch) {}
TEMPLATABLE_VALUE(bool, state)
void play(Ts... x) override { this->switch_->publish_state(this->state_.value(x...)); }
protected:
void play_(Ts... x) override { this->switch_->publish_state(this->state_.value(x...)); }
Switch *switch_;
};
+1 -1
View File
@@ -30,9 +30,9 @@ template<typename... Ts> class TextSensorPublishAction : public Action<Ts...> {
public:
TextSensorPublishAction(TextSensor *sensor) : sensor_(sensor) {}
TEMPLATABLE_VALUE(std::string, state)
void play(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
protected:
void play_(Ts... x) override { this->sensor_->publish_state(this->state_.value(x...)); }
TextSensor *sensor_;
};
+10 -7
View File
@@ -43,7 +43,8 @@ template<typename... Ts> class SetLevelPercentAction : public Action<Ts...>, pub
public:
TEMPLATABLE_VALUE(uint8_t, level_percent)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto level_percent = this->level_percent_.value(x...);
this->parent_->set_level_percent(level_percent);
}
@@ -53,7 +54,8 @@ template<typename... Ts> class SetLevelAction : public Action<Ts...>, public Par
public:
TEMPLATABLE_VALUE(uint8_t, level)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto level = this->level_.value(x...);
this->parent_->set_level(level);
}
@@ -63,20 +65,21 @@ template<typename... Ts> class SetBrightnessAction : public Action<Ts...>, publi
public:
TEMPLATABLE_VALUE(uint8_t, brightness)
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
auto brightness = this->brightness_.value(x...);
this->parent_->set_brightness(brightness);
}
};
template<typename... Ts> class TurnOnAction : public Action<Ts...>, public Parented<TM1651Display> {
public:
void play(Ts... x) override { this->parent_->turn_on(); }
protected:
void play_(Ts... x) override { this->parent_->turn_on(); }
};
template<typename... Ts> class TurnOffAction : public Action<Ts...>, public Parented<TM1651Display> {
public:
void play(Ts... x) override { this->parent_->turn_off(); }
protected:
void play_(Ts... x) override { this->parent_->turn_off(); }
};
} // namespace tm1651
+2 -3
View File
@@ -17,7 +17,8 @@ template<typename... Ts> class UARTWriteAction : public Action<Ts...>, public Pa
this->static_ = true;
}
void play(Ts... x) override {
protected:
void play_(Ts... x) override {
if (this->static_) {
this->parent_->write_array(this->data_static_);
} else {
@@ -25,8 +26,6 @@ template<typename... Ts> class UARTWriteAction : public Action<Ts...>, public Pa
this->parent_->write_array(val);
}
}
protected:
bool static_{false};
std::function<std::vector<uint8_t>(Ts...)> data_func_{};
std::vector<uint8_t> data_static_{};