all the prepared mini meterbus client stuff

This commit is contained in:
hg
2014-06-05 21:17:41 +02:00
parent 7802282906
commit a27d27a827
9 changed files with 693 additions and 43 deletions

90
src/meterBusClient.h Normal file
View 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_ */