#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;
};