54 lines
1.3 KiB
C++
54 lines
1.3 KiB
C++
#ifndef HDLC_TNC_H
|
|
#define HDLC_TNC_H
|
|
|
|
#include "hdlcAfskRx.h"
|
|
#include "hdlcAfskTx.h"
|
|
#include "afskSampler.h"
|
|
|
|
#define DEFAULT_PERSISTENCE 63
|
|
#define DEFAULT_SLOT_TIME 100
|
|
|
|
#define RANDOM_VAL_LIMIT 256
|
|
|
|
#define HS_IDLE 0
|
|
#define HS_WAIT_FOR_FREE_CHANNEL 1
|
|
#define HS_RANDOM_WAIT 2
|
|
#define HS_TX_FRAME 3
|
|
|
|
class HdlcTnc {
|
|
public:
|
|
HdlcTnc(
|
|
int rxIndicationPin, int txIndicationPin, int rxOnlyPin, int pttPin,
|
|
int lowLevelSelectPin, int rxBufferSize, int txBufferSize
|
|
);
|
|
void hdlcTask();
|
|
void addByteToTxBuf(byte newByte);
|
|
void addFrameEndToTxBuf();
|
|
void resetTxFrame();
|
|
boolean getRxByte(byte* rxByte, boolean* frameEnd);
|
|
void setTxDelay(int val);
|
|
void setPersistence(byte val);
|
|
void setSlotTime(int val);
|
|
void setFullDuplex(boolean val);
|
|
void setLoopbackTest(boolean On);
|
|
private:
|
|
HdlcCrcTable* _crcTable;
|
|
HdlcFrameBuffer* _rxBuffer;
|
|
HdlcFrameBuffer* _txBuffer;
|
|
HdlcAfskRx* _afskRx;
|
|
HdlcAfskTx* _afskTx;
|
|
AfskSampler* _afskSampler;
|
|
int _rxIndicationPin = 0;
|
|
int _txIndicationPin = 0;
|
|
int _pttPin = 0;
|
|
int _rxOnlyPin = 0;
|
|
byte _persistence = DEFAULT_PERSISTENCE;
|
|
int _slotTime = DEFAULT_SLOT_TIME;
|
|
boolean _fullDuplex = false;
|
|
int _hdlcState = HS_IDLE;
|
|
unsigned long _randomWaitTimeOutTime = 0;
|
|
void setPtt(boolean on);
|
|
};
|
|
|
|
#endif
|