#pragma once /* Handles reading data from Rainforest Automation RAVEn: http://rainforestautomation.com/wp-content/uploads/2014/02/raven_xml_api_r127.pdf Sample xml output: 0xFFFFFFFFFFFFFFFF 0xFFFFFFFFFFFFFFFF 0xFFFFFFFF 0x000320 0x00000001 0x000003e8 0x03 0x07 Y */ #include "DomoticzHardware.h" #include "ASyncSerial.h" #define MAX_BUFFER_LEN 10000 class RAVEn : public CDomoticzHardwareBase, public AsyncSerial { public: explicit RAVEn(int ID, const std::string &devname); ~RAVEn() override = default; bool WriteToHardware(const char *pdata, unsigned char length) override; private: bool StartHardware() override; bool StopHardware() override; void readCallback(const char *indata, size_t inlen); private: const std::string device_; std::shared_ptr m_thread; char m_buffer[MAX_BUFFER_LEN]; char *m_wptr; double m_currUsage; double m_totalUsage; };