BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
FitpDeviceManager.h
1 #pragma once
2 
3 #include <Poco/Mutex.h>
4 #include <Poco/SharedPtr.h>
5 #include <Poco/Timer.h>
6 #include <Poco/Timestamp.h>
7 
8 #include <fitp/fitp.h>
9 
10 #include "core/DeviceManager.h"
11 #include "core/GatewayInfo.h"
12 #include "fitp/FitpDevice.h"
13 #include "model/DeviceID.h"
14 
15 namespace BeeeOn {
16 
52 public:
53  typedef Poco::SharedPtr<FitpDeviceManager> Ptr;
54  typedef uint32_t EDID;
55 
58 
59  void run() override;
60  void stop() override;
61 
67  void loadDeviceList();
68 
76  void setConfigPath(const std::string &configPath);
77 
83  void setNoiseMin(int min);
84 
90  void setNoiseMax(int max);
91 
104  void setBitrate(int bitrate);
105 
106 
116  void setBand(int band);
117 
129  void setChannel(int channel);
130 
149  void setPower(int power);
150 
156  void setTxRetries(int retries);
157 
158  void setGatewayInfo(Poco::SharedPtr<GatewayInfo> info);
159 
163  void initFitp();
164 
173  static DeviceID buildID(EDID edid);
174 
178  static EDID deriveEDID(const DeviceID &id);
179 
183  EDID parseEDID(const std::vector<uint8_t> &id);
184 
188  void processDataMsg(const std::vector<uint8_t> &data);
189 
193  void processJoinMsg(const std::vector<uint8_t> &data);
194 
195 protected:
196  void handleGeneric(const Command::Ptr cmd, Result::Ptr result) override;
197 
202  void doListenCommand(const GatewayListenCommand::Ptr cmd);
203 
210  void doDeviceAcceptCommand(const DeviceAcceptCommand::Ptr cmd);
211 
216  void doUnpairCommand(const DeviceUnpairCommand::Ptr cmd);
217 
221  void dispatchNewDevice(FitpDevice::Ptr device);
222 
223 private:
224  void stopListen(Poco::Timer &timer);
225  int channelCnt();
226 
227 private:
228  std::map<DeviceID, FitpDevice::Ptr> m_devices;
229  std::string m_configFile;
230  PHY_init_t m_phyParams;
231  LINK_init_t m_linkParams;
232  bool m_listening;
233  Poco::TimerCallback<FitpDeviceManager> m_listenCallback;
234  Poco::Timer m_listenTimer;
235  Poco::FastMutex m_lock;
236  Poco::SharedPtr<GatewayInfo> m_gatewayInfo;
237 };
238 
239 }
void setPower(int power)
Definition: FitpDeviceManager.cpp:273
void setTxRetries(int retries)
Definition: FitpDeviceManager.cpp:282
static EDID deriveEDID(const DeviceID &id)
Definition: FitpDeviceManager.cpp:335
void setChannel(int channel)
Definition: FitpDeviceManager.cpp:263
void loadDeviceList()
Definition: FitpDeviceManager.cpp:319
void setBand(int band)
Definition: FitpDeviceManager.cpp:246
void processJoinMsg(const std::vector< uint8_t > &data)
Definition: FitpDeviceManager.cpp:387
void setNoiseMin(int min)
Definition: FitpDeviceManager.cpp:219
void initFitp()
Definition: FitpDeviceManager.cpp:291
void setConfigPath(const std::string &configPath)
Definition: FitpDeviceManager.cpp:214
void setNoiseMax(int max)
Definition: FitpDeviceManager.cpp:228
void doListenCommand(const GatewayListenCommand::Ptr cmd)
Definition: FitpDeviceManager.cpp:81
Definition: FitpDeviceManager.h:51
EDID parseEDID(const std::vector< uint8_t > &id)
Definition: FitpDeviceManager.cpp:340
Definition: DeviceManager.h:48
void stop() override
Definition: FitpDeviceManager.cpp:496
void doUnpairCommand(const DeviceUnpairCommand::Ptr cmd)
Definition: FitpDeviceManager.cpp:153
void setBitrate(int bitrate)
Definition: FitpDeviceManager.cpp:237
static DeviceID buildID(EDID edid)
Definition: FitpDeviceManager.cpp:330
void dispatchNewDevice(FitpDevice::Ptr device)
Definition: FitpDeviceManager.cpp:197
void processDataMsg(const std::vector< uint8_t > &data)
Definition: FitpDeviceManager.cpp:353
void handleGeneric(const Command::Ptr cmd, Result::Ptr result) override
Definition: FitpDeviceManager.cpp:185
Definition: DeviceID.h:17
void doDeviceAcceptCommand(const DeviceAcceptCommand::Ptr cmd)
Definition: FitpDeviceManager.cpp:121