46 #include "proto/crc/tiny_crc.h" 57 #define TINY_FD_PRIMARY_ADDR (0) 150 tiny_fd_handle_t handle,
315 extern int tiny_fd_get_tx_data(tiny_fd_handle_t handle,
void *data,
int len, uint32_t timeout);
391 extern int tiny_fd_send_packet_to(tiny_fd_handle_t handle, uint8_t address,
const void *buf,
int len, uint32_t timeout);
443 extern int tiny_fd_send_to(tiny_fd_handle_t handle, uint8_t address,
const void *buf,
int len, uint32_t timeout);
480 extern int tiny_fd_send(tiny_fd_handle_t handle,
const void *buf,
int len, uint32_t timeout);
494 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:171
Definition: tiny_fd_int.h:114
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:149
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:168
U-frame.
Definition: tiny_fd.h:99
S-frame.
Definition: tiny_fd.h:98
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:625
int tiny_fd_buffer_size_by_mtu(int mtu, int window)
Returns minimum required buffer size for specified parameters.
Definition: tiny_fd.c:838
U-frame subtype DISC.
Definition: tiny_fd.h:117
Frame is outgoing.
Definition: tiny_fd.h:126
U-frame subtype SNRM.
Definition: tiny_fd.h:116
int tiny_fd_register_peer(tiny_fd_handle_t handle, uint8_t address)
Registers remote peer with specified address.
Definition: tiny_fd.c:960
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:218
int tiny_fd_disconnect(tiny_fd_handle_t handle)
Sends DISC command to remote side.
Definition: tiny_fd.c:933
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:90
uint16_t buffer_size
maximum input buffer size, see tiny_fd_buffer_size_by_mtu()
Definition: tiny_fd.h:180
Frame is incoming.
Definition: tiny_fd.h:125
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:831
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:224
uint8_t window_frames
Number of frames in window, which confirmation may be deferred for.
Definition: tiny_fd.h:212
tiny_fd_log_frame_cb_t log_frame_cb
Callback to log frames.
Definition: tiny_fd.h:231
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:752
uint16_t retry_timeout
timeout for retry operation.
Definition: tiny_fd.h:192
int(* read_block_cb_t)(void *pdata, void *buffer, int size)
The function reads data from communication channel.
Definition: tiny_types.h:185
uint16_t send_timeout
timeout.
Definition: tiny_fd.h:186
int tiny_fd_get_mtu(tiny_fd_handle_t handle)
returns max packet size in bytes.
Definition: tiny_fd.c:879
Normal response mode allows the secondary-to-primary link to be shared without contention, because it has the primary give the secondaries permission to transmit one at a time.
Definition: tiny_fd.h:73
uint8_t peers_count
Maximum number of peers supported by the local station.
Definition: tiny_fd.h:249
This is Tiny HAL implementation for microcontrollers.
U-frame subtype FRMR.
Definition: tiny_fd.h:113
hdlc_crc_t crc_type
crc field type to use on hdlc level.
Definition: tiny_fd.h:204
uint8_t mode
Communication link mode.
Definition: tiny_fd.h:254
I-frame.
Definition: tiny_fd.h:97
void * buffer
buffer to store data during full-duplex protocol operating.
Definition: tiny_fd.h:177
Asynchronous balanced mode - the default mode of HDLC protocol.
Definition: tiny_fd.h:65
U-frame subtype SABM.
Definition: tiny_fd.h:115
U-frame subtype UA.
Definition: tiny_fd.h:112
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:886
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:78
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:728
void tiny_fd_close(tiny_fd_handle_t handle)
stops Tiny Full Duplex state machine
Definition: tiny_fd.c:428
uint8_t addr
Local station address.
Definition: tiny_fd.h:240
void * pdata
user data for block read/write functions
Definition: tiny_fd.h:165
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:304
S-frame subtype RR.
Definition: tiny_fd.h:109
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:872
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:441
tiny_fd_frame_subtype_t
Enumeration of frame subtypes used in Tiny Full Duplex protocol.
Definition: tiny_fd.h:107
U-frame subtype RSET.
Definition: tiny_fd.h:114
tiny_fd_frame_type_t
Enumeration of frame types used in Tiny Full Duplex protocol.
Definition: tiny_fd.h:95
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:845
uint8_t retries
number retries to perform before timeout takes place
Definition: tiny_fd.h:197
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:460
This structure is used for initialization of Tiny Full Duplex protocol.
Definition: tiny_fd.h:162
S-frame subtype REJ.
Definition: tiny_fd.h:110
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:907
tiny_fd_frame_direction_t
Enumeration of frame directions used in Tiny Full Duplex protocol.
Definition: tiny_fd.h:123
int tiny_fd_get_status(tiny_fd_handle_t handle)
Returns status of the connection.
Definition: tiny_fd.c:914