Files
esphome/components/cc1101/select/select.h
T
2025-05-18 13:01:10 +02:00

35 lines
1.6 KiB
C++

#pragma once
#include "esphome/components/select/select.h"
#include "../cc1101.h"
namespace esphome {
namespace cc1101 {
template<class T, void (CC1101Component::*F)(T)>
class Select : public select::Select, public Parented<CC1101Component> {
protected:
void control(const std::string &value) override {
this->publish_state(value);
if (auto index = this->active_index()) {
(this->parent_->*F)((T) *index);
}
}
};
using RxAttenuationSelect = Select<RxAttenuation, &CC1101Component::set_rx_attenuation>;
using TunerSyncModeSelect = Select<SyncMode, &CC1101Component::set_tuner_sync_mode>;
using TunerModulationSelect = Select<Modulation, &CC1101Component::set_tuner_modulation>;
using AgcMagnTargetSelect = Select<MagnTarget, &CC1101Component::set_agc_magn_target>;
using AgcMaxLnaGainSelect = Select<MaxLnaGain, &CC1101Component::set_agc_max_lna_gain>;
using AgcMaxDvgaGainSelect = Select<MaxDvgaGain, &CC1101Component::set_agc_max_dvga_gain>;
using AgcCarrierSenseRelThrSelect = Select<CarrierSenseRelThr, &CC1101Component::set_agc_carrier_sense_rel_thr>;
using AgcFilterLengthFskMskSelect = Select<FilterLengthFskMsk, &CC1101Component::set_agc_filter_length_fsk_msk>;
using AgcFilterLengthAskOokSelect = Select<FilterLengthAskOok, &CC1101Component::set_agc_filter_length_ask_ook>;
using AgcFreezeSelect = Select<Freeze, &CC1101Component::set_agc_freeze>;
using AgcWaitTimeSelect = Select<WaitTime, &CC1101Component::set_agc_wait_time>;
using AgcHystLevelSelect = Select<HystLevel, &CC1101Component::set_agc_hyst_level>;
} // namespace cc1101
} // namespace esphome