37 lines
841 B
C++
37 lines
841 B
C++
#ifndef HDLC_FRAMES_BUFFER_H
|
|
#define HDLC_FRAMES_BUFFER_H
|
|
|
|
#include "hdlcCrc.h"
|
|
|
|
#define HDLC_FLAG 0x7e
|
|
|
|
#define BUFFER_SIZE 500
|
|
|
|
class HdlcFrameBuffer {
|
|
public:
|
|
HdlcFrameBuffer(boolean tx, HdlcCrcTable* crcTable, int bufferSize);
|
|
boolean push(byte in);
|
|
boolean pop(byte* out, boolean* frameEnd);
|
|
boolean more();
|
|
void frameReset();
|
|
void frameEnd();
|
|
private:
|
|
HdlcCrc* _crc;
|
|
byte* _bufferData;
|
|
boolean _tx;
|
|
int _pushFrameSizeHPos = 0;
|
|
int _pushFrameSizeLPos = 1;
|
|
int _pushPosition = 2;
|
|
int _pushFrameDataCounter = 0;
|
|
int _popFrameSizeHPos = 0;
|
|
int _popFrameSizeLPos = 1;
|
|
int _popPosition = 0;
|
|
int _popFrameSize = 0;
|
|
void startNewFrame();
|
|
void incrementPushPosition();
|
|
void incrementPopPosition(int count);
|
|
boolean spaceAvailable();
|
|
};
|
|
|
|
#endif
|