42 #include <HardwareSerial.h> 72 IFd(
void *buffer,
int bufferSize)
73 : m_buffer((uint8_t *)buffer)
74 , m_bufferSize(bufferSize)
78 virtual ~
IFd() =
default;
102 int write(
const char *buf,
int size);
122 int run_rx(
const void *data,
int len);
146 int run_tx(
void *data,
int max_size);
196 m_onReceive = on_receive;
214 m_onConnectEvent = on_connect;
234 m_sendTimeout = timeout;
243 m_userData = userData;
270 virtual void onReceive(uint8_t addr, uint8_t *pdata,
int size)
272 IPacket pkt((
char *)pdata, size);
275 m_onReceive(m_userData, addr, pkt);
285 virtual void onSend(uint8_t addr,
const uint8_t *pdata,
int size)
287 IPacket pkt((
char *)pdata, size);
290 m_onSend(m_userData, addr, pkt);
301 if ( m_onConnectEvent )
302 m_onConnectEvent(m_userData, addr, connected);
310 uint8_t *m_buffer =
nullptr;
312 hdlc_crc_t m_crc = HDLC_CRC_DEFAULT;
315 int m_bufferSize = 0;
318 uint16_t m_sendTimeout = 0;
321 uint8_t m_window = 3;
324 void (*m_onReceive)(
void *userData, uint8_t addr,
IPacket &pkt) =
nullptr;
327 void (*m_onSend)(
void *userData, uint8_t addr,
IPacket &pkt) =
nullptr;
330 void (*m_onConnectEvent)(
void *userData, uint8_t addr,
bool connected) =
nullptr;
333 void *m_userData =
nullptr;
336 static void onReceiveInternal(
void *handle, uint8_t addr, uint8_t *pdata,
int size);
339 static void onSendInternal(
void *handle, uint8_t addr,
const uint8_t *pdata,
int size);
342 static void onConnectEventInternal(
void *handle, uint8_t addr,
bool connected);
348 template <
int S>
class Fd:
public IFd void begin()
Initializes protocol internal variables.
Definition: TinyProtocolFd.cpp:59
Definition: tiny_fd_int.h:114
int run_tx(write_block_cb_t write_func)
Attempts to send out data via write_func function.
Definition: TinyProtocolFd.cpp:116
void setConnectEventCallback(void(*on_connect)(void *userData, uint8_t addr, bool connected)=nullptr)
Sets connect/disconnect callback.
Definition: TinyProtocolFd.h:212
This is Tiny protocol implementation for microcontrollers.
Describes packet entity and provides API methods to manipulate the packet.
Definition: TinyPacket.h:56
#define TINY_ALIGNED_STRUCT
This macro is used internally for aligning the structures.
Definition: tiny_types.h:113
virtual void onReceive(uint8_t addr, uint8_t *pdata, int size)
Method called by hdlc protocol upon receiving new frame.
Definition: TinyProtocolFd.h:270
This is class, which allocates buffers statically.
Definition: TinyProtocolFd.h:348
bool enableCrc16()
Enables CRC 16-bit field in the protocol.
Definition: TinyProtocolFd.cpp:154
void end()
Resets protocol state.
Definition: TinyProtocolFd.cpp:78
int(* read_block_cb_t)(void *pdata, void *buffer, int size)
The function reads data from communication channel.
Definition: tiny_types.h:185
tiny_fd_handle_t getHandle()
Returns low-level handle for full duplex protocol.
Definition: TinyProtocolFd.h:249
FdD(int size)
Creates instance of Full duplex protocol with dynamically allocated buffer.
Definition: TinyProtocolFd.h:372
void disableCrc()
Disable CRC field in the protocol.
Definition: TinyProtocolFd.cpp:138
IFd class incapsulates Full Duplex Protocol functionality.
Definition: TinyProtocolFd.h:63
void setWindowSize(uint8_t window)
Sets desired window size.
Definition: TinyProtocolFd.h:223
void setReceiveCallback(void(*on_receive)(void *userData, uint8_t addr, IPacket &pkt)=nullptr)
Sets receive callback for incoming messages.
Definition: TinyProtocolFd.h:194
void setSendCallback(void(*on_send)(void *userData, uint8_t addr, IPacket &pkt)=nullptr)
Sets send callback for outgoing messages.
Definition: TinyProtocolFd.h:203
IFd(void *buffer, int bufferSize)
Initializes IFd object.
Definition: TinyProtocolFd.h:72
int(* write_block_cb_t)(void *pdata, const void *buffer, int size)
The function writes data to communication channel port.
Definition: tiny_types.h:174
This is special class for Full duplex protocol, which allocates buffers dynamically.
Definition: TinyProtocolFd.h:365
void setUserData(void *userData)
Sets user data to pass to callbacks.
Definition: TinyProtocolFd.h:241
virtual void onSend(uint8_t addr, const uint8_t *pdata, int size)
Method called by hdlc protocol upon sending next frame.
Definition: TinyProtocolFd.h:285
Definition: TinySerial.cpp:22
This is Tiny Full-Duplex protocol implementation for microcontrollers.
int write(const char *buf, int size)
Sends data block over communication channel.
Definition: TinyProtocolFd.cpp:85
int getStatus()
Returns status of the protocol.
Definition: TinyProtocolFd.h:257
void setSendTimeout(uint16_t timeout)
Sets send timeout in milliseconds.
Definition: TinyProtocolFd.h:232
bool enableCrc32()
Enables CRC 32-bit field in the protocol.
Definition: TinyProtocolFd.cpp:160
virtual void onConnectEvent(uint8_t addr, bool connected)
Method called by fd protocol when connect/disconnect event takes place.
Definition: TinyProtocolFd.h:299
bool enableCheckSum()
Enables CRC 8-bit field in the protocol.
Definition: TinyProtocolFd.cpp:148
#define TINY_ALIGN_STRUCT_VALUE
This macro is used internally for aligning the structures.
Definition: tiny_types.h:108
void enableCrc(hdlc_crc_t crc)
Enables CRC by specified bit-size.
Definition: TinyProtocolFd.cpp:143
int run_rx(const void *data, int len)
Processes incoming rx data, specified by a user.
Definition: TinyProtocolFd.cpp:95
int tiny_fd_get_status(tiny_fd_handle_t handle)
Returns status of the connection.
Definition: tiny_fd.c:914