#pragma once #include "micro_wake_word.h" #include "streaming_model.h" #ifdef USE_ESP_IDF namespace esphome { namespace micro_wake_word { template class StartAction : public Action, public Parented { public: void play(Ts... x) override { this->parent_->start(); } }; template class StopAction : public Action, public Parented { public: void play(Ts... x) override { this->parent_->stop(); } }; template class IsRunningCondition : public Condition, public Parented { public: bool check(Ts... x) override { return this->parent_->is_running(); } }; template class EnableModelAction : public Action { public: explicit EnableModelAction(WakeWordModel *wake_word_model) : wake_word_model_(wake_word_model) {} void play(Ts... x) override { this->wake_word_model_->enable(); } protected: WakeWordModel *wake_word_model_; }; template class DisableModelAction : public Action { public: explicit DisableModelAction(WakeWordModel *wake_word_model) : wake_word_model_(wake_word_model) {} void play(Ts... x) override { this->wake_word_model_->disable(); } protected: WakeWordModel *wake_word_model_; }; template class ModelIsEnabledCondition : public Condition { public: explicit ModelIsEnabledCondition(WakeWordModel *wake_word_model) : wake_word_model_(wake_word_model) {} bool check(Ts... x) override { return this->wake_word_model_->is_enabled(); } protected: WakeWordModel *wake_word_model_; }; } // namespace micro_wake_word } // namespace esphome #endif