MiLightRadioFactory.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <MiLightRadioFactory.h>
  2. MiLightRadioFactory* MiLightRadioFactory::fromSettings(const Settings& settings) {
  3. switch (settings.radioInterfaceType) {
  4. case nRF24:
  5. return new NRF24Factory(
  6. settings.csnPin,
  7. settings.cePin,
  8. settings.rf24PowerLevel,
  9. settings.rf24Channels,
  10. settings.rf24ListenChannel
  11. );
  12. case LT8900:
  13. return new LT8900Factory(settings.csnPin, settings.resetPin, settings.cePin);
  14. default:
  15. return NULL;
  16. }
  17. }
  18. NRF24Factory::NRF24Factory(
  19. uint8_t csnPin,
  20. uint8_t cePin,
  21. RF24PowerLevel rF24PowerLevel,
  22. const std::vector<RF24Channel>& channels,
  23. RF24Channel listenChannel
  24. )
  25. : rf24(RF24(cePin, csnPin)),
  26. channels(channels),
  27. listenChannel(listenChannel)
  28. {
  29. rf24.setPALevel(RF24PowerLevelHelpers::rf24ValueFromValue(rF24PowerLevel));
  30. }
  31. MiLightRadio* NRF24Factory::create(const MiLightRadioConfig &config) {
  32. return new NRF24MiLightRadio(rf24, config, channels, listenChannel);
  33. }
  34. LT8900Factory::LT8900Factory(uint8_t csPin, uint8_t resetPin, uint8_t pktFlag)
  35. : _csPin(csPin),
  36. _resetPin(resetPin),
  37. _pktFlag(pktFlag)
  38. { }
  39. MiLightRadio* LT8900Factory::create(const MiLightRadioConfig& config) {
  40. return new LT8900MiLightRadio(_csPin, _resetPin, _pktFlag, config);
  41. }