Digi XBee(R) ANSI C Host Library
socket_frames.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019 Digi International Inc.,
3  * All rights not expressly granted are reserved.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
7  * You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * Digi International Inc., 9350 Excelsior Blvd., Suite 700, Hopkins, MN 55343
10  * ===========================================================================
11  */
12 
23 #ifndef XBEE_SOCKET_FRAMES_H
24 #define XBEE_SOCKET_FRAMES_H
25 
26 #include "xbee/platform.h"
27 
29 
31 #define XBEE_SOCK_STATUS_SUCCESS 0x00
32 #define XBEE_SOCK_STATUS_INVALID_PARAM 0x01
33 #define XBEE_SOCK_STATUS_FAILED_TO_READ 0x02
34 #define XBEE_SOCK_STATUS_IN_PROGRESS 0x03
35 #define XBEE_SOCK_STATUS_CONNECTED 0x04
36 #define XBEE_SOCK_STATUS_UNKNOWN 0x05
37 #define XBEE_SOCK_STATUS_BAD_SOCKET 0x20
38 #define XBEE_SOCK_STATUS_OFFLINE 0x22
39 #define XBEE_SOCK_STATUS_INTERNAL_ERR 0x31
40 #define XBEE_SOCK_STATUS_RESOURCE_ERR 0x32
41 #define XBEE_SOCK_STATUS_BAD_PROTOCOL 0x7B
42 // ^^^ Be sure to update xbee_sock_status_str() when adding to this macro list.
43 
46 #define XBEE_SOCK_SOCKET_ID_INVALID 0xFF
47 
49 #define XBEE_FRAME_SOCK_CREATE 0x40
50 typedef XBEE_PACKED(xbee_frame_sock_create_t, {
53  uint8_t frame_type;
54  uint8_t frame_id;
55  uint8_t protocol;
56 #define XBEE_SOCK_PROTOCOL_UDP 0
57 #define XBEE_SOCK_PROTOCOL_TCP 1
58 #define XBEE_SOCK_PROTOCOL_SSL 4
59 }) xbee_frame_sock_create_t;
60 
61 
63 #define XBEE_FRAME_SOCK_OPTION_REQ 0x41
64 typedef XBEE_PACKED(xbee_header_sock_option_req_t, {
68  uint8_t frame_type;
69  uint8_t frame_id;
70  uint8_t socket_id;
71  uint8_t option_id;
72 #define XBEE_SOCK_OPT_ID_TLS_PROFILE 0x00
74 
76 #define XBEE_FRAME_SOCK_OPTION_RESP 0xC1
77 typedef XBEE_PACKED(xbee_frame_sock_option_resp_t, {
80  uint8_t frame_type;
81  uint8_t frame_id;
82  uint8_t socket_id;
83  uint8_t option_id;
84  uint8_t status;
85  uint8_t option_data[1];
87 
88 
90 #define XBEE_FRAME_SOCK_CONNECT 0x42
91 typedef XBEE_PACKED(xbee_header_sock_connect_t, {
96  uint8_t frame_type;
97  uint8_t frame_id;
98  uint8_t socket_id;
99  uint16_t remote_port_be;
100  uint8_t addr_type;
101 #define XBEE_SOCK_ADDR_TYPE_IPV4 0
102 #define XBEE_SOCK_ADDR_TYPE_HOSTNAME 1
103 }) xbee_header_sock_connect_t;
104 
105 
107 #define XBEE_FRAME_SOCK_CLOSE 0x43
108 typedef XBEE_PACKED(xbee_frame_sock_close_t, {
111  uint8_t frame_type;
112  uint8_t frame_id;
113  uint8_t socket_id;
115 
116 
118 #define XBEE_FRAME_SOCK_SEND 0x44
119 typedef XBEE_PACKED(xbee_header_sock_send_t, {
123  uint8_t frame_type;
124  uint8_t frame_id;
125  uint8_t socket_id;
126  uint8_t options;
128 
129 
131 #define XBEE_FRAME_SOCK_SENDTO 0x45
132 typedef XBEE_PACKED(xbee_header_sock_sendto_t, {
136  uint8_t frame_type;
137  uint8_t frame_id;
138  uint8_t socket_id;
139  uint32_t remote_addr_be;
140  uint16_t remote_port_be;
141  uint8_t options;
143 
144 
146 #define XBEE_FRAME_SOCK_BIND_LISTEN 0x46
147 typedef XBEE_PACKED(xbee_frame_sock_bind_listen_t, {
153  uint8_t frame_type;
154  uint8_t frame_id;
155  uint8_t socket_id;
156  uint16_t local_port_be;
158 
159 
161 #define XBEE_FRAME_SOCK_CREATE_RESP 0xC0
162 
164 #define XBEE_FRAME_SOCK_CONNECT_RESP 0xC2
165 
167 #define XBEE_FRAME_SOCK_CLOSE_RESP 0xC3
168 
170 #define XBEE_FRAME_SOCK_LISTEN_RESP 0xC6
171 
177 typedef XBEE_PACKED(xbee_frame_sock_shared_resp_t, {
180  uint8_t frame_type;
181  uint8_t frame_id;
182  uint8_t socket_id;
183  uint8_t status;
185 
186 
188 #define XBEE_FRAME_SOCK_IPV4_CLIENT 0xCC
189 typedef XBEE_PACKED(xbee_frame_sock_ipv4_client_t, {
192  uint8_t frame_type;
193  uint8_t sock_listen_id;
194  uint8_t sock_client_id;
195  uint32_t remote_addr_be;
196  uint16_t remote_port_be;
198 
199 
201 #define XBEE_FRAME_SOCK_RECEIVE 0xCD
202 typedef XBEE_PACKED(xbee_frame_sock_receive_t, {
205  uint8_t frame_type;
206  uint8_t frame_id;
207  uint8_t socket_id;
208  uint8_t status;
209  uint8_t payload[1];
211 
212 
214 #define XBEE_FRAME_SOCK_RECEIVE_FROM 0xCE
215 typedef XBEE_PACKED(xbee_frame_sock_receive_from_t, {
218  uint8_t frame_type;
219  uint8_t frame_id;
220  uint8_t socket_id;
221  uint32_t remote_addr_be;
222  uint16_t remote_port_be;
223  uint8_t status;
224  uint8_t payload[1];
226 
227 
229 #define XBEE_FRAME_SOCK_STATE 0xCF
230 typedef XBEE_PACKED(xbee_frame_sock_state_t, {
235  uint8_t frame_type;
236  uint8_t socket_id;
237  uint8_t state;
238 #define XBEE_SOCK_STATE_CONNECTED 0x00
239 #define XBEE_SOCK_STATE_DNS_FAILED 0x01
240 #define XBEE_SOCK_STATE_CONNECTION_REFUSED 0x02
241 #define XBEE_SOCK_STATE_TRANSPORT_CLOSED 0x03
242 #define XBEE_SOCK_STATE_TIMED_OUT 0x04
243 #define XBEE_SOCK_STATE_INTERNAL_ERR 0x05
244 #define XBEE_SOCK_STATE_HOST_UNREACHABLE 0x06
245 #define XBEE_SOCK_STATE_CONNECTION_LOST 0x07
246 #define XBEE_SOCK_STATE_UNKNOWN_ERR 0x08
247 #define XBEE_SOCK_STATE_UNKNOWN_SERVER 0x09
248 #define XBEE_SOCK_STATE_RESOURCE_ERR 0x0A
249 #define XBEE_SOCK_STATE_LISTENER_CLOSED 0x0B
250 // ^^^ Be sure to update xbee_sock_state_str() when adding to this macro list.
251 
253 
255 #define XBEE_SOCK_STR_BUF_SIZE 40
256 
259 const char *xbee_sock_status_str(uint8_t status,
260  char buffer[XBEE_SOCK_STR_BUF_SIZE]);
261 
264 const char *xbee_sock_state_str(uint8_t state,
265  char buffer[XBEE_SOCK_STR_BUF_SIZE]);
266 
268 
269 #endif // XBEE_SOCKET_FRAMES_H
270 
unsigned long uint32_t
32-bit unsigned integer
Definition: platform_config.h:43
#define XBEE_SOCK_STR_BUF_SIZE
Buffer size used for xbee_sock_status_str() and xbee_sock_state_str().
Definition: socket_frames.h:255
const char * xbee_sock_state_str(uint8_t state, char buffer[XBEE_SOCK_STR_BUF_SIZE])
Get a description of an XBEE_SOCK_STATE_xxx value (returned in an XBEE_FRAME_SOCK_STATE) for error me...
Definition: xbee_socket_frames.c:51
Format of XBee API frame type 0x40 (XBEE_FRAME_SOCK_CREATE).
Definition: socket_frames.h:59
Format of XBee API frame type 0xCE (XBEE_FRAME_SOCK_RECEIVE_FROM); sent from XBee to host when a data...
Definition: socket_frames.h:225
#define XBEE_BEGIN_DECLS
Macro defined to.
Definition: platform.h:41
Common header for Hardware Abstraction Layer.
Format of XBee API frame type 0xCD (XBEE_FRAME_SOCK_RECEIVE); sent from XBee to host when data arrive...
Definition: socket_frames.h:210
Header of XBee API frame type 0x42 (XBEE_FRAME_SOCK_CONNECT); sent from host to XBee.
Definition: socket_frames.h:103
Format of XBee API frame type 0xCF (XBEE_FRAME_SOCK_STATE); sent from XBee to host when a socket's st...
Definition: socket_frames.h:252
Format of XBee API frame type 0x46 (XBEE_FRAME_SOCK_BIND_LISTEN).
Definition: socket_frames.h:157
Header of XBee API frame type 0x45 (XBEE_FRAME_SOCK_SENDTO); sent from host to XBee.
Definition: socket_frames.h:142
Format of XBee API frame type 0xCC (XBEE_FRAME_SOCK_IPV4_CLIENT); sent from XBee to host for new conn...
Definition: socket_frames.h:197
const char * xbee_sock_status_str(uint8_t status, char buffer[XBEE_SOCK_STR_BUF_SIZE])
Get a description of an XBEE_SOCK_STATUS_xxx value (returned in multiple socket response frame types)...
Definition: xbee_socket_frames.c:27
unsigned short uint16_t
16-bit unsigned integer
Definition: platform_config.h:41
unsigned char uint8_t
8-bit unsigned integer
Definition: platform_config.h:39
Header of XBee API frame type 0x44 (XBEE_FRAME_SOCK_SEND); sent from host to XBee.
Definition: socket_frames.h:127
Format of multiple XBee API frame types sent from XBee to host: 0xC0 (XBEE_FRAME_SOCK_CREATE_RESP) 0x...
Definition: socket_frames.h:184
Format of XBee API frame type 0x43 (XBEE_FRAME_SOCK_CLOSE).
Definition: socket_frames.h:114
#define XBEE_END_DECLS
Macro defined to.
Definition: platform.h:42
Header of XBee API frame type 0x41 (XBEE_FRAME_SOCK_OPTION_REQ); sent from host to XBee...
Definition: socket_frames.h:73
Format of XBee API frame type 0xC1 (XBEE_FRAME_SOCK_OPTION_RESP); sent from XBee to host...
Definition: socket_frames.h:86