MiLightRadioFactory.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <RF24.h>
  2. #include <PL1167_nRF24.h>
  3. #include <MiLightRadioConfig.h>
  4. #include <MiLightRadio.h>
  5. #include <NRF24MiLightRadio.h>
  6. #include <LT8900MiLightRadio.h>
  7. #include <RF24PowerLevel.h>
  8. #include <RF24Channel.h>
  9. #include <Settings.h>
  10. #include <vector>
  11. #include <memory>
  12. #ifndef _MILIGHT_RADIO_FACTORY_H
  13. #define _MILIGHT_RADIO_FACTORY_H
  14. class MiLightRadioFactory {
  15. public:
  16. virtual ~MiLightRadioFactory() { };
  17. virtual std::shared_ptr<MiLightRadio> create(const MiLightRadioConfig& config) = 0;
  18. static std::shared_ptr<MiLightRadioFactory> fromSettings(const Settings& settings);
  19. };
  20. class NRF24Factory : public MiLightRadioFactory {
  21. public:
  22. NRF24Factory(
  23. uint8_t cePin,
  24. uint8_t csnPin,
  25. RF24PowerLevel rF24PowerLevel,
  26. const std::vector<RF24Channel>& channels,
  27. RF24Channel listenChannel
  28. );
  29. virtual std::shared_ptr<MiLightRadio> create(const MiLightRadioConfig& config);
  30. protected:
  31. RF24 rf24;
  32. const std::vector<RF24Channel>& channels;
  33. const RF24Channel listenChannel;
  34. };
  35. class LT8900Factory : public MiLightRadioFactory {
  36. public:
  37. LT8900Factory(uint8_t csPin, uint8_t resetPin, uint8_t pktFlag);
  38. virtual std::shared_ptr<MiLightRadio> create(const MiLightRadioConfig& config);
  39. protected:
  40. uint8_t _csPin;
  41. uint8_t _resetPin;
  42. uint8_t _pktFlag;
  43. };
  44. #endif