#pragma once #include "esphome/core/automation.h" #include "microphone.h" #include namespace esphome { namespace microphone { template class CaptureAction : public Action, public Parented { void play(Ts... x) override { this->parent_->start(); } }; template class StopCaptureAction : public Action, public Parented { void play(Ts... x) override { this->parent_->stop(); } }; template class MuteAction : public Action, public Parented { void play(Ts... x) override { this->parent_->set_mute_state(true); } }; template class UnmuteAction : public Action, public Parented { void play(Ts... x) override { this->parent_->set_mute_state(false); } }; class DataTrigger : public Trigger &> { public: explicit DataTrigger(Microphone *mic) { mic->add_data_callback([this](const std::vector &data) { this->trigger(data); }); } }; template class IsCapturingCondition : public Condition, public Parented { public: bool check(Ts... x) override { return this->parent_->is_running(); } }; template class IsMutedCondition : public Condition, public Parented { public: bool check(Ts... x) override { return this->parent_->get_mute_state(); } }; } // namespace microphone } // namespace esphome