KissTncAX25/Arduino/hdlcFramesBuffer.h
2022-08-24 07:32:07 +02:00

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