Wirepas SDK
dsap_frames.h
Go to the documentation of this file.
1/* Copyright 2017 Wirepas Ltd. All Rights Reserved.
2 *
3 * See file LICENSE.txt for full license details.
4 *
5 */
6
7#ifndef DSAP_FRAMES_H_
8#define DSAP_FRAMES_H_
9
25
31
40
41// Offset for hop limit
42#define TX_OPTS_HOPLIMIT_OFFSET 2
43
51
52/* WAPS-DSAP-DATA_TX-REQUEST */
53
54typedef struct __attribute__ ((__packed__))
55{
60 uint8_t qos;
61 uint8_t tx_opts;
62 uint8_t apdu_len;
63 uint8_t apdu[APDU_MAX_SIZE];
65
66#define FRAME_DSAP_DATA_TX_REQ_HEADER_SIZE \
67 (sizeof(dsap_data_tx_req_t) - APDU_MAX_SIZE)
68
69/* WAPS-DSAP-DATA_TX_TT-REQUEST */
70
71typedef struct __attribute__ ((__packed__))
72{
77 uint8_t qos;
78 uint8_t tx_opts;
79 uint32_t reserved;
80 uint8_t apdu_len;
81 uint8_t apdu[APDU_MAX_SIZE];
83
84#define FRAME_DSAP_DATA_TX_TT_REQ_HEADER_SIZE \
85 (sizeof(dsap_data_tx_tt_req_t) - APDU_MAX_SIZE)
86
87typedef struct __attribute__ ((__packed__))
88{
93 uint8_t qos;
94 uint8_t tx_opts;
95 uint32_t reserved;
96 uint16_t full_packet_id : 12;
97 // Fragment offset + flag
99 uint8_t apdu_len;
100 uint8_t apdu[APDU_MAX_SIZE];
102
103#define FRAME_DSAP_DATA_TX_FRAG_REQ_HEADER_SIZE \
104 (sizeof(dsap_data_tx_frag_req_t) - APDU_MAX_SIZE)
105/* WAPS-DSAP-DATA_RX-INDICATION */
106
107// info field masks and offsets
108
109// Qos: Lowest 2 bits
110#define RX_IND_INFO_QOS_MASK 0x3
111#define RX_IND_INFO_QOS_OFFSET 0
112// Hop count, 6 next LSB bits
113#define RX_IND_INFO_HOPCOUNT_MASK 0xfc
114#define RX_IND_INFO_HOPCOUNT_OFFSET 2
115#define RX_IND_INFO_MAX_HOPCOUNT \
116 (RX_IND_INFO_HOPCOUNT_MASK >> RX_IND_INFO_HOPCOUNT_OFFSET)
117
118// fragment_offset_flag field access
119
120// Fragment offset: Lowest 12 bits
121#define DSAP_FRAG_LENGTH_MASK 0x0fff
122
123// Last fragment: Highest bit
124#define DSAP_FRAG_LAST_FLAG_MASK 0x8000
125
126typedef struct __attribute__ ((__packed__))
127{
133 // Qos + hop count
134 uint8_t info;
135 uint32_t delay;
136 uint8_t apdu_len;
137 uint8_t apdu[APDU_MAX_SIZE];
139
140#define FRAME_DSAP_DATA_RX_IND_HEADER_SIZE \
141 (sizeof(dsap_data_rx_ind_t) - APDU_MAX_SIZE)
142
143
144/* WAPS-DSAP-DATA_RX_FRAG-INDICATION */
145
146typedef struct __attribute__ ((__packed__))
147{
153 // Qos + hop count
154 uint8_t info;
155 uint32_t delay;
157 // Fragment offset + flag
159 uint8_t apdu_len;
160 uint8_t apdu[APDU_MAX_SIZE];
162
163#define FRAME_DSAP_DATA_RX_FRAG_IND_HEADER_SIZE \
164 (sizeof(dsap_data_rx_frag_ind_t) - APDU_MAX_SIZE)
165
166/* WAPS-DSAP-DATA_TX-INDICATION */
167
168typedef struct __attribute__ ((__packed__))
169{
175 uint32_t queue_delay;
176 uint8_t result;
178
179/* WAPS-DSAP-DATA_TX-CONFIRMATION */
180
181typedef struct __attribute__ ((__packed__))
182{
184 uint8_t result;
185 uint8_t buff_cap;
187
198
199
200#endif /* DSAP_FRAMES_H_ */
dsap_data_rx_frag_ind_t data_rx_frag_ind
dsap_qos_e
Definition dsap_frames.h:46
@ DSAP_QOS_UNACKED
Definition dsap_frames.h:49
@ DSAP_QOS_NORMAL
Definition dsap_frames.h:47
@ DSAP_QOS_HIGH
Definition dsap_frames.h:48
dsap_data_tx_ind_t data_tx_ind
dsap_data_tx_cnf_t data_tx_cnf
uint8_t queued_indications
dsap_indication_e
Definition dsap_frames.h:27
@ DSAP_IND_TIMEOUT
Definition dsap_frames.h:29
@ DSAP_IND_SUCCESS
Definition dsap_frames.h:28
dsap_data_tx_frag_req_t data_tx_frag_req
dsap_tx_result_e
Definition dsap_frames.h:12
@ DSAP_TX_INV_OPTS_PARAM
Definition dsap_frames.h:16
@ DSAP_TX_INV_PDU_ID
Definition dsap_frames.h:21
@ DSAP_TX_STACK_STOPPED
Definition dsap_frames.h:14
@ DSAP_TX_INV_QOS_PARAM
Definition dsap_frames.h:15
@ DSAP_TX_OUT_OF_MEMORY
Definition dsap_frames.h:17
@ DSAP_TX_RESV_EP
Definition dsap_frames.h:22
@ DSAP_TX_SUCCESS
Definition dsap_frames.h:13
@ DSAP_TX_INV_LEN
Definition dsap_frames.h:19
@ DSAP_TX_UNKNOWN_DST
Definition dsap_frames.h:18
@ DSAP_TX_ACCESS_DENIED
Definition dsap_frames.h:23
@ DSAP_TX_IND_FULL
Definition dsap_frames.h:20
dsap_tx_options_e
Definition dsap_frames.h:34
@ TX_OPTS_UNACK_CSMA_CA
Definition dsap_frames.h:37
@ TX_OPTS_IND_REQ
Definition dsap_frames.h:36
@ TX_OPTS_NO_IND_REQ
Definition dsap_frames.h:35
@ TX_OPTS_HOPLIMIT_MASK
Definition dsap_frames.h:38
dsap_data_tx_tt_req_t data_tx_tt_req
dsap_data_rx_ind_t data_rx_ind
dsap_data_tx_req_t data_tx_req
uint32_t w_addr_t
Definition waps_frames.h:17
uint16_t pduid_t
Definition waps_frames.h:23
uint8_t ep_t
Definition waps_frames.h:14