51 #include "proto/crc/tiny_crc.h" 80 #define TINY_FD_PRIMARY_ADDR (0) 178 tiny_fd_handle_t handle,
354 extern int tiny_fd_get_tx_data(tiny_fd_handle_t handle,
void *data,
int len, uint32_t timeout);
430 extern int tiny_fd_send_packet_to(tiny_fd_handle_t handle, uint8_t address,
const void *buf,
int len, uint32_t timeout);
482 extern int tiny_fd_send_to(tiny_fd_handle_t handle, uint8_t address,
const void *buf,
int len, uint32_t timeout);
519 extern int tiny_fd_send(tiny_fd_handle_t handle,
const void *buf,
int len, uint32_t timeout);
533 extern int tiny_fd_send_packet(tiny_fd_handle_t handle,
const void *buf,
int len, uint32_t timeout);
on_frame_send_cb_t on_send_cb
Callback to get notification of sent frames. Callback is called from tiny_fd_run_tx() context...
Definition: tiny_fd.h:203
Definition: tiny_fd_int.h:103
void(* tiny_fd_log_frame_cb_t)(void *udata, tiny_fd_handle_t handle, tiny_fd_frame_direction_t direction, tiny_fd_frame_type_t frame_type, tiny_fd_frame_subtype_t frame_subtype, uint8_t ns, uint8_t nr, const uint8_t *data, int len)
tiny_fd_log_frame_cb_t is a callback function, which is called every time frame is sent or received...
Definition: tiny_fd.h:177
on_frame_read_cb_t on_read_cb
callback function to process incoming frames. Callback is called from tiny_fd_run_rx() context...
Definition: tiny_fd.h:200
U-frame subtype DM.
Definition: tiny_fd.h:139
U-frame.
Definition: tiny_fd.h:123
S-frame.
Definition: tiny_fd.h:122
int tiny_fd_get_tx_data(tiny_fd_handle_t handle, void *data, int len, uint32_t timeout)
runs tx processing to fill specified buffer with data.
Definition: tiny_fd.c:665
int tiny_fd_buffer_size_by_mtu(int mtu, int window)
Returns minimum required buffer size for specified parameters.
Definition: tiny_fd.c:921
U-frame subtype DISC.
Definition: tiny_fd.h:144
Frame is outgoing.
Definition: tiny_fd.h:154
U-frame subtype SNRM.
Definition: tiny_fd.h:143
int tiny_fd_register_peer(tiny_fd_handle_t handle, uint8_t address)
Registers remote peer with specified address.
Definition: tiny_fd.c:1043
struct tiny_fd_init_t_ tiny_fd_init_t
This structure is used for initialization of Tiny Full Duplex protocol.
int mtu
Maximum transmission unit in bytes.
Definition: tiny_fd.h:250
int tiny_fd_disconnect(tiny_fd_handle_t handle)
Sends DISC command to remote side.
Definition: tiny_fd.c:1016
void(* on_connect_event_cb_t)(void *udata, uint8_t address, bool connected)
on_connect_event_cb_t is a callback function, which is called every time connection is established or...
Definition: tiny_types.h:232
void(* on_frame_send_cb_t)(void *udata, uint8_t address, const uint8_t *pdata, int size)
on_frame_send_cb_t is a callback function, which is called every time new frame is sent...
Definition: tiny_types.h:223
struct tiny_fd_data_t * tiny_fd_handle_t
This handle points to service data, required for full-duplex functioning.
Definition: tiny_fd.h:114
uint16_t buffer_size
maximum input buffer size, see tiny_fd_buffer_size_by_mtu()
Definition: tiny_fd.h:212
Frame is incoming.
Definition: tiny_fd.h:153
int tiny_fd_send_packet(tiny_fd_handle_t handle, const void *buf, int len, uint32_t timeout)
Sends packet to primary station.
Definition: tiny_fd.c:869
on_connect_event_cb_t on_connect_event_cb
Callback to get the notification when connect or disconnect event takes place.
Definition: tiny_fd.h:256
uint8_t window_frames
Number of frames in window, which confirmation may be deferred for.
Definition: tiny_fd.h:244
tiny_fd_log_frame_cb_t log_frame_cb
Callback to log frames.
Definition: tiny_fd.h:263
int tiny_fd_send_packet_to(tiny_fd_handle_t handle, uint8_t address, const void *buf, int len, uint32_t timeout)
Sends userdata over full-duplex protocol.
Definition: tiny_fd.c:792
uint16_t retry_timeout
timeout for retry operation.
Definition: tiny_fd.h:224
int(* read_block_cb_t)(void *pdata, void *buffer, int size)
The function reads data from communication channel.
Definition: tiny_types.h:185
on_frame_read_cb_t on_read_ui_cb
Callback to process incoming UI (Unnumbered Information) frames.
Definition: tiny_fd.h:293
uint16_t send_timeout
timeout.
Definition: tiny_fd.h:218
int tiny_fd_get_mtu(tiny_fd_handle_t handle)
returns max packet size in bytes.
Definition: tiny_fd.c:962
Normal Response Mode allows the primary station to control communication with one or more secondary s...
Definition: tiny_fd.h:97
uint8_t peers_count
Maximum number of peers supported by the local station.
Definition: tiny_fd.h:281
This is Tiny HAL implementation for microcontrollers.
U-frame subtype FRMR.
Definition: tiny_fd.h:140
hdlc_crc_t crc_type
crc field type to use on hdlc level.
Definition: tiny_fd.h:236
uint8_t mode
Communication link mode.
Definition: tiny_fd.h:286
I-frame.
Definition: tiny_fd.h:121
void * buffer
buffer to store data during full-duplex protocol operating.
Definition: tiny_fd.h:209
Asynchronous balanced mode - the default mode of HDLC protocol.
Definition: tiny_fd.h:88
U-frame subtype UI (Unnumbered Information)
Definition: tiny_fd.h:145
U-frame subtype SABM.
Definition: tiny_fd.h:142
U-frame subtype UA.
Definition: tiny_fd.h:138
S-frame subtype RNR.
Definition: tiny_fd.h:134
int tiny_fd_send_to(tiny_fd_handle_t handle, uint8_t address, const void *buf, int len, uint32_t timeout)
Sends userdata over full-duplex protocol.
Definition: tiny_fd.c:969
void(* on_frame_read_cb_t)(void *udata, uint8_t address, uint8_t *pdata, int size)
on_frame_read_cb_t is a callback function, which is called every time new frame is received...
Definition: tiny_types.h:213
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
Asynchronous response mode.
Definition: tiny_fd.h:102
int tiny_fd_run_tx(tiny_fd_handle_t handle, write_block_cb_t write_func)
sends tx data to the communication channel via user callback write_func().
Definition: tiny_fd.c:768
void tiny_fd_close(tiny_fd_handle_t handle)
stops Tiny Full Duplex state machine
Definition: tiny_fd.c:418
uint8_t addr
Local station address.
Definition: tiny_fd.h:272
void * pdata
user data for block read/write functions
Definition: tiny_fd.h:197
int tiny_fd_init(tiny_fd_handle_t *handle, tiny_fd_init_t *init)
Initialized communication for Tiny Full Duplex protocol.
Definition: tiny_fd.c:293
int tiny_fd_send_ui_packet_to(tiny_fd_handle_t handle, uint8_t address, const void *buf, int len)
Sends UI (Unnumbered Information) frame over full-duplex protocol.
Definition: tiny_fd.c:876
S-frame subtype RR.
Definition: tiny_fd.h:133
int tiny_fd_send_ui_packet(tiny_fd_handle_t handle, const void *buf, int len)
Sends UI (Unnumbered Information) frame to primary station.
Definition: tiny_fd.c:914
void tiny_fd_set_ka_timeout(tiny_fd_handle_t handle, uint32_t keep_alive)
Sets keep alive timeout in milliseconds.
Definition: tiny_fd.c:955
int tiny_fd_on_rx_data(tiny_fd_handle_t handle, const void *data, int len)
runs rx bytes processing for specified buffer.
Definition: tiny_fd.c:431
tiny_fd_frame_subtype_t
Enumeration of frame subtypes used in Tiny Full Duplex protocol.
Definition: tiny_fd.h:131
U-frame subtype RSET.
Definition: tiny_fd.h:141
tiny_fd_frame_type_t
Enumeration of frame types used in Tiny Full Duplex protocol.
Definition: tiny_fd.h:119
int tiny_fd_buffer_size_by_mtu_ex(uint8_t peers_count, int mtu, int tx_window, hdlc_crc_t crc_type, int rx_window)
Returns minimum required buffer size for specified parameters.
Definition: tiny_fd.c:928
uint8_t retries
number retries to perform before timeout takes place
Definition: tiny_fd.h:229
int tiny_fd_run_rx(tiny_fd_handle_t handle, read_block_cb_t read_func)
reads rx data from the communication channel via user callback read_func()
Definition: tiny_fd.c:450
This structure is used for initialization of Tiny Full Duplex protocol.
Definition: tiny_fd.h:194
S-frame subtype REJ.
Definition: tiny_fd.h:135
int tiny_fd_send(tiny_fd_handle_t handle, const void *buf, int len, uint32_t timeout)
Sends userdata over full-duplex protocol to primary station.
Definition: tiny_fd.c:990
S-frame subtype SREJ (Selective Reject)
Definition: tiny_fd.h:136
tiny_fd_frame_direction_t
Enumeration of frame directions used in Tiny Full Duplex protocol.
Definition: tiny_fd.h:151
int tiny_fd_get_status(tiny_fd_handle_t handle)
Returns status of the connection.
Definition: tiny_fd.c:997