#include #include #include #include #include #include #include #include #include #include #include #ifndef _MILIGHT_RADIO_FACTORY_H #define _MILIGHT_RADIO_FACTORY_H class MiLightRadioFactory { public: virtual ~MiLightRadioFactory() { }; virtual std::shared_ptr create(const MiLightRadioConfig& config) = 0; static std::shared_ptr fromSettings(const Settings& settings); }; class NRF24Factory : public MiLightRadioFactory { public: NRF24Factory( uint8_t cePin, uint8_t csnPin, RF24PowerLevel rF24PowerLevel, const std::vector& channels, RF24Channel listenChannel ); virtual std::shared_ptr create(const MiLightRadioConfig& config); protected: RF24 rf24; const std::vector& channels; const RF24Channel listenChannel; }; class LT8900Factory : public MiLightRadioFactory { public: LT8900Factory(uint8_t csPin, uint8_t resetPin, uint8_t pktFlag); virtual std::shared_ptr create(const MiLightRadioConfig& config); protected: uint8_t _csPin; uint8_t _resetPin; uint8_t _pktFlag; }; #endif