tinyproto
Public Member Functions | Protected Member Functions | List of all members
tinyproto::Hdlc Class Reference

Hdlc class encapsulates HDLC low-level framing functionality. More...

#include <TinyProtocolHdlc.h>

Public Member Functions

 Hdlc (void *buffer, int bufferSize)
 Initializes Hdlc object. More...
 
void begin (write_block_cb_t writecb, read_block_cb_t readcb)
 Initializes protocol internal variables. More...
 
void begin ()
 Initializes protocol internal variables. More...
 
void end ()
 Resets protocol state.
 
int write (const char *buf, int size)
 Sends data block over communication channel. More...
 
int write (const IPacket &pkt)
 Sends packet over communication channel. More...
 
int run_rx (const void *data, int len)
 Processes incoming rx data, specified by a user. More...
 
int run_tx (void *data, int max_len)
 Generates data for tx channel. More...
 
void disableCrc ()
 Disable CRC field in the protocol. More...
 
void enableCrc (hdlc_crc_t crc)
 Enables CRC by specified bit-size. More...
 
bool enableCheckSum ()
 Enables CRC 8-bit field in the protocol. More...
 
bool enableCrc16 ()
 Enables CRC 16-bit field in the protocol. More...
 
bool enableCrc32 ()
 Enables CRC 32-bit field in the protocol. More...
 
void setReceiveCallback (void(*on_receive)(IPacket &pkt)=nullptr)
 Sets receive callback for incoming messages. More...
 
void setSendCallback (void(*on_send)(IPacket &pkt)=nullptr)
 Sets send callback for outgoing messages. More...
 

Protected Member Functions

virtual void onReceive (uint8_t *pdata, int size)
 Method called by hdlc protocol upon receiving new frame. More...
 
virtual void onSend (const uint8_t *pdata, int size)
 Method called by hdlc protocol upon sending next frame. More...
 

Detailed Description

Hdlc class encapsulates HDLC low-level framing functionality.

It handles flag bytes (0x7E), byte stuffing, and CRC validation. This class provides raw HDLC framing — it does not perform acknowledgments or retransmission. For reliable delivery, use the Full Duplex protocol (IFd / Fd<N> / FdD).

You may also use the C-style API functions (hdlc_*) directly.

Constructor & Destructor Documentation

◆ Hdlc()

tinyproto::Hdlc::Hdlc ( void *  buffer,
int  bufferSize 
)
inline

Initializes Hdlc object.

Parameters
buffer- buffer to store the frames being received.
bufferSize- size of the buffer

Member Function Documentation

◆ begin() [1/2]

void Hdlc::begin ( write_block_cb_t  writecb,
read_block_cb_t  readcb 
)

Initializes protocol internal variables.

If you need to switch communication with other destination point, you can call this method one again after calling end().

Parameters
writecb- write function to some physical channel
readcb- read function from some physical channel
Returns
None

◆ begin() [2/2]

void Hdlc::begin ( )

Initializes protocol internal variables.

If you need to switch communication with other destination point, you can call this method one again after calling end().

Returns
None

◆ disableCrc()

void Hdlc::disableCrc ( )

Disable CRC field in the protocol.

If CRC field is OFF, then the frame looks like this: 0x7E databytes 0x7E.

◆ enableCheckSum()

bool Hdlc::enableCheckSum ( )

Enables CRC 8-bit field in the protocol.

This field contains sum of all data bytes in the packet. 8-bit field is supported by Nano version of Tiny library.

Returns
true if successful false in case of error.

◆ enableCrc()

void Hdlc::enableCrc ( hdlc_crc_t  crc)

Enables CRC by specified bit-size.

8-bit is supported by Nano version of Tiny library.

Parameters
crccrc type

◆ enableCrc16()

bool Hdlc::enableCrc16 ( )

Enables CRC 16-bit field in the protocol.

This field contains FCS 16-bit CCITT like defined in RFC 1662. 16-bit field is not supported by Nano version of Tiny library.

Returns
true if successful false in case of error.

◆ enableCrc32()

bool Hdlc::enableCrc32 ( )

Enables CRC 32-bit field in the protocol.

This field contains FCS 32-bit CCITT like defined in RFC 1662. 32-bit field is not supported by Nano version of Tiny library.

Returns
true if successful false in case of error.

◆ onReceive()

virtual void tinyproto::Hdlc::onReceive ( uint8_t *  pdata,
int  size 
)
inlineprotectedvirtual

Method called by hdlc protocol upon receiving new frame.

Can be redefined in derived classes.

Parameters
pdatapointer to received data
sizesize of received payload in bytes

◆ onSend()

virtual void tinyproto::Hdlc::onSend ( const uint8_t *  pdata,
int  size 
)
inlineprotectedvirtual

Method called by hdlc protocol upon sending next frame.

Can be redefined in derived classes.

Parameters
pdatapointer to sent data
sizesize of sent payload in bytes

◆ run_rx()

int Hdlc::run_rx ( const void *  data,
int  len 
)

Processes incoming rx data, specified by a user.

Returns
TINY_SUCCESS
Remarks
if Packet is receive during run execution callback is called.

◆ run_tx()

int Hdlc::run_tx ( void *  data,
int  max_len 
)

Generates data for tx channel.

Parameters
databuffer to fill
max_lenlength of buffer
Returns
number of bytes generated

◆ setReceiveCallback()

void tinyproto::Hdlc::setReceiveCallback ( void(*)(IPacket &pkt)  on_receive = nullptr)
inline

Sets receive callback for incoming messages.

Parameters
on_receiveuser callback to process incoming messages. The processing must be non-blocking

◆ setSendCallback()

void tinyproto::Hdlc::setSendCallback ( void(*)(IPacket &pkt)  on_send = nullptr)
inline

Sets send callback for outgoing messages.

Parameters
on_senduser callback to process outgoing messages. The processing must be non-blocking

◆ write() [1/2]

int Hdlc::write ( const char *  buf,
int  size 
)

Sends data block over communication channel.

Parameters
buf- data to send
size- length of the data in bytes
Returns
negative value in case of error zero if nothing is sent positive - should be equal to size parameter

◆ write() [2/2]

int Hdlc::write ( const IPacket pkt)

Sends packet over communication channel.

Parameters
pkt- Packet to send
See also
Packet
Returns
negative value in case of error zero if nothing is sent positive - Packet is successfully sent

The documentation for this class was generated from the following files: