WISP ERT (Client)  1.0.0
The WISP Extended Runtime (WISP side)
transmission.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdbool.h>
4 #include <wio.h>
5 #include "defs.h"
6 
8 typedef struct wtp_tx_read_info {
10  uint8_t _size;
12  uint8_t _n_reads;
14 
16 typedef struct wtp_tx_fragment {
18  uint16_t _seq_num;
20  uint16_t _msg_size;
21 
23  uint8_t* _data;
25  uint8_t _size;
26 
28  bool _need_send;
30 
32 typedef struct wtp_tx_ctrl {
34  uint16_t _seq_num;
36  uint16_t _window_size;
38  uint16_t _timeout;
40  uint8_t _read_size;
41 
46 
48  uint16_t _pkt_begin;
50  uint8_t* _pkt_size;
51 
53  uint16_t _msg_begin_seq;
55  uint16_t _msg_begin_pos;
57  uint16_t _msg_fragmented;
58 
66 
68 typedef struct wtp_rx_fragment {
70  uint16_t _seq_num;
72  uint8_t* _data;
74  uint8_t _size;
75 
77  bool _assembled;
79  struct wtp_rx_fragment* _next;
81 
83 typedef struct wtp_rx_msg_info {
85  uint16_t _begin;
87  uint16_t _size;
88 
90  bool _in_use;
92  uint8_t _next;
94 
96 typedef struct wtp_rx_ctrl {
98  uint16_t _seq_num;
100  uint16_t _window_size;
101 
104 
109 
113  uint8_t _msg_info_size;
116 } wtp_rx_ctrl_t;
117 
132  wtp_tx_ctrl_t* self,
133  uint16_t window_size,
134  uint16_t timeout,
135  uint16_t read_size,
136  uint16_t pkt_buf_size,
137  uint16_t msg_buf_size,
138  uint8_t n_fragments,
139  uint8_t n_msgs
140 );
141 
149  wtp_tx_ctrl_t* self
150 );
151 
160  wtp_tx_ctrl_t* self,
161  wtp_pkt_t pkt_type
162 );
163 
171  wtp_tx_ctrl_t* self
172 );
173 
184  wtp_tx_ctrl_t* self,
185  uint8_t* data,
186  uint16_t size,
187  wtp_tx_read_info_t** _read_info
188 );
189 
199  wtp_tx_ctrl_t* self,
200  uint8_t avail_size,
201  wtp_tx_fragment_t** _fragment
202 );
203 
213  wtp_tx_ctrl_t* self,
214  uint16_t seq_num,
215  uint8_t* _n_msgs
216 );
217 
229  wtp_rx_ctrl_t* self,
230  uint16_t window_size,
231  uint16_t msg_data_size,
232  uint16_t fragments_size,
233  uint8_t n_msg_info
234 );
235 
243  wtp_rx_ctrl_t* self
244 );
245 
258  wtp_rx_ctrl_t* self,
259  uint16_t seq_num,
260  uint8_t* data,
261  uint16_t size,
262  uint16_t new_msg_size,
263  uint8_t* _n_msgs
264 );
wtp_rx_fragment_t * _fragments_begin
Begin of data fragments linked list.
Definition: transmission.h:108
wtp_status_t wtp_tx_init(wtp_tx_ctrl_t *self, uint16_t window_size, uint16_t timeout, uint16_t read_size, uint16_t pkt_buf_size, uint16_t msg_buf_size, uint8_t n_fragments, uint8_t n_msgs)
Initialize WTP transmit control type.
Definition: transmission.c:8
WTP READ OpSpec information type.
Definition: transmission.h:8
uint8_t _size
Fragment size.
Definition: transmission.h:25
bool _need_send
Need send flag.
Definition: transmission.h:28
uint16_t _timeout
Timeout.
Definition: transmission.h:38
wio_status_t wtp_status_t
WTP status type.
Definition: defs.h:7
uint16_t _size
Message size.
Definition: transmission.h:87
uint16_t _window_size
Sliding window size.
Definition: transmission.h:100
bool _assembled
Assembled flag.
Definition: transmission.h:77
wtp_status_t wtp_tx_add_msg(wtp_tx_ctrl_t *self, uint8_t *data, uint16_t size, wtp_tx_read_info_t **_read_info)
Add a new message to transmit control.
Definition: transmission.c:99
uint8_t _next
Index of next message.
Definition: transmission.h:92
WIO buffer type.
Definition: buf.h:6
wtp_status_t wtp_tx_make_fragment(wtp_tx_ctrl_t *self, uint8_t avail_size, wtp_tx_fragment_t **_fragment)
Make a new sending data fragment.
Definition: transmission.c:138
wtp_status_t wtp_tx_end_packet(wtp_tx_ctrl_t *self)
End construction of WTP packet.
Definition: transmission.c:85
uint16_t _pkt_begin
Current packet begin position.
Definition: transmission.h:48
uint16_t _seq_num
Sequence number.
Definition: transmission.h:18
WTP received message information type.
Definition: transmission.h:83
uint8_t wtp_pkt_t
WTP packet type.
Definition: defs.h:12
wtp_status_t wtp_tx_fini(wtp_tx_ctrl_t *self)
Finalize WTP transmit control type.
Definition: transmission.c:52
uint8_t _msg_info_size
Store size.
Definition: transmission.h:113
struct wtp_rx_fragment * _next
Next fragment.
Definition: transmission.h:79
uint16_t _msg_size
Message size (0 for WTP_PKT_CONT_MSG)
Definition: transmission.h:20
uint16_t _msg_fragmented
Fragmented position of next message.
Definition: transmission.h:57
uint8_t * _data
Data.
Definition: transmission.h:72
WTP received data fragment type.
Definition: transmission.h:68
WTP transmit data fragment type.
Definition: transmission.h:16
uint16_t _window_size
Sliding window size.
Definition: transmission.h:36
uint16_t _seq_num
Sequence number.
Definition: transmission.h:34
bool _in_use
In use flag.
Definition: transmission.h:90
wio_buf_t _fragments_buf
Data fragments buffer.
Definition: transmission.h:106
wtp_status_t wtp_tx_begin_packet(wtp_tx_ctrl_t *self, wtp_pkt_t pkt_type)
Begin construction of WTP packet.
Definition: transmission.c:66
wtp_status_t wtp_tx_handle_ack(wtp_tx_ctrl_t *self, uint16_t seq_num, uint8_t *_n_msgs)
Handle WTP acknowledgement.
Definition: transmission.c:227
wio_buf_t _msg_data_buf
Acknowledged message data buffer.
Definition: transmission.h:103
uint8_t _n_reads
Number of reads.
Definition: transmission.h:12
wio_queue_t _fragments_queue
Data fragments queue.
Definition: transmission.h:60
wio_buf_t _msg_buf
Send messages buffer.
Definition: transmission.h:45
uint8_t _size
Size.
Definition: transmission.h:74
uint16_t _msg_begin_pos
Begin position of next message (Buffer position)
Definition: transmission.h:55
wio_queue_t _read_info_queue
READ OpSpec information queue.
Definition: transmission.h:62
uint16_t _seq_num
Sequence number.
Definition: transmission.h:70
wtp_status_t wtp_rx_fini(wtp_rx_ctrl_t *self)
Finalize WTP receive control type.
Definition: transmission.c:351
WTP sliding window-based transmit control type.
Definition: transmission.h:32
uint8_t _size
Read size.
Definition: transmission.h:10
wtp_status_t wtp_rx_handle_packet(wtp_rx_ctrl_t *self, uint16_t seq_num, uint8_t *data, uint16_t size, uint16_t new_msg_size, uint8_t *_n_msgs)
Handle incoming data packet.
Definition: transmission.c:367
wio_buf_t _pkt_buf
Send packets buffer.
Definition: transmission.h:43
uint16_t _msg_begin_seq
Begin position of next message (Sequence number)
Definition: transmission.h:53
uint16_t _begin
Message begin.
Definition: transmission.h:85
uint8_t * _data
Fragment data.
Definition: transmission.h:23
uint8_t * _pkt_size
Pointer to current packet size.
Definition: transmission.h:50
uint8_t _msg_info_begin
Linked list begin index.
Definition: transmission.h:115
uint8_t _read_size
READ size.
Definition: transmission.h:40
wtp_rx_msg_info_t * _msg_info_store
Message information store.
Definition: transmission.h:111
uint16_t _seq_num
Sequence number.
Definition: transmission.h:98
wio_queue_t _msg_ends_queue
Message ends sequence number queue.
Definition: transmission.h:64
WTP sliding window-based receive control type.
Definition: transmission.h:96
WIO circular queue type.
Definition: queue.h:16
wtp_status_t wtp_rx_init(wtp_rx_ctrl_t *self, uint16_t window_size, uint16_t msg_data_size, uint16_t fragments_size, uint8_t n_msg_info)
Initialize WTP receive control type.
Definition: transmission.c:314