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

Hdlc class incapsulates hdlc Protocol 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 incapsulates hdlc Protocol functionality.

hdlc version of the Protocol allows to send messages with confirmation. Remember that you may use always C-style API functions instead C++. Please refer to documentation.

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: