53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
#include "ratgdo_output.h"
|
|
#include "../ratgdo_state.h"
|
|
#include "esphome/core/log.h"
|
|
|
|
namespace esphome {
|
|
namespace ratgdo {
|
|
|
|
static const char *TAG = "ratgdo.output";
|
|
|
|
void RATGDOOutput::setup(){
|
|
ESP_LOGD(TAG,"Output was setup");
|
|
|
|
if(this->output_type_ == OutputType::RATGDO_BEEPER){
|
|
this->beeper_->add_on_finished_playback_callback([=] { this->finished_playback(); });
|
|
|
|
this->parent_->subscribe_vehicle_arriving_state([=](VehicleArrivingState state) {
|
|
if(state == VehicleArrivingState::YES){
|
|
this->play();
|
|
}
|
|
});
|
|
|
|
this->parent_->subscribe_door_action_delayed([=](DoorActionDelayed state) {
|
|
if(state == DoorActionDelayed::YES){
|
|
this->play();
|
|
this->repeat_ = true;
|
|
} else if(state == DoorActionDelayed::NO) {
|
|
this->repeat_ = false;
|
|
}
|
|
});
|
|
|
|
}
|
|
}
|
|
|
|
void RATGDOOutput::play(){
|
|
this->beeper_->play(this->rtttlSong_);
|
|
}
|
|
|
|
void RATGDOOutput::finished_playback(){
|
|
if(this->repeat_) this->play();
|
|
}
|
|
|
|
void RATGDOOutput::dump_config() {
|
|
if (this->output_type_ == OutputType::RATGDO_BEEPER) {
|
|
ESP_LOGCONFIG(TAG, " Type: Beeper");
|
|
}
|
|
}
|
|
|
|
void RATGDOOutput::set_output_type(OutputType output_type_) {
|
|
this->output_type_ = output_type_;
|
|
}
|
|
|
|
} //namespace ratgdo
|
|
} //namespace esphome
|