all the prepared mini meterbus client stuff
This commit is contained in:
90
src/meterBusClient.h
Normal file
90
src/meterBusClient.h
Normal file
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* meterBusClient.h
|
||||
*
|
||||
* Created on: 08.03.2014
|
||||
* Author: wn
|
||||
*/
|
||||
|
||||
#ifndef METERBUSCLIENT_H_
|
||||
#define METERBUSCLIENT_H_
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const unsigned long RESPONSE_DELAY = 50;
|
||||
|
||||
|
||||
|
||||
struct MeterBusFrame {
|
||||
/*
|
||||
* Short Frame:
|
||||
* Start 10h
|
||||
* C-Field
|
||||
* A-Field
|
||||
* Check-Sum
|
||||
* Stop 16h
|
||||
*
|
||||
* Long Frame:
|
||||
* Start 68h
|
||||
* Length
|
||||
* Length
|
||||
* Start 68h
|
||||
* C-Field
|
||||
* A-Field
|
||||
* CI-Field
|
||||
* User-Data
|
||||
* Check-Sum
|
||||
* Stop 16h
|
||||
*
|
||||
*/
|
||||
unsigned char startDelimiter;
|
||||
unsigned char length;
|
||||
unsigned char cField;
|
||||
unsigned char aField;
|
||||
unsigned char ciField;
|
||||
unsigned char userData[64];
|
||||
unsigned char checksum;
|
||||
bool valid;
|
||||
};
|
||||
|
||||
|
||||
class MeterBusClient {
|
||||
public:
|
||||
MeterBusClient();
|
||||
void begin();
|
||||
void exec();
|
||||
private:
|
||||
unsigned char m_address;
|
||||
void setAddress(unsigned char address);
|
||||
unsigned char getAddress();
|
||||
bool handleFrame();
|
||||
MeterBusFrame m_frame;
|
||||
|
||||
unsigned char m_sendBuffer[64];
|
||||
unsigned int m_sendBufferLen;
|
||||
void aSB(unsigned char v); // append to send buffer
|
||||
void aSB(unsigned int v);
|
||||
void aSB(unsigned long v);
|
||||
void aSB(float v);
|
||||
unsigned char calcSendChecksum();
|
||||
void calcAndSetFrameLength();
|
||||
|
||||
unsigned long m_frameCnt;
|
||||
unsigned char m_accessCnt;
|
||||
unsigned long m_myFrameCnt;
|
||||
unsigned long m_invalidFrameCnt;
|
||||
unsigned long m_invalidChecksum;
|
||||
unsigned long m_collisionCnt;
|
||||
|
||||
unsigned char getAccessCnt();
|
||||
unsigned char getStatus();
|
||||
|
||||
void SND_NKE();
|
||||
void REQ_UD2();
|
||||
void SND_UD();
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* METERBUSCLIENT_H_ */
|
Reference in New Issue
Block a user