Mistake on this page?
Report an issue in GitHub or email us
nsapi_types.h
1 
2 /** \addtogroup netsocket */
3 /** @{*/
4 /* nsapi.h - The network socket API
5  * Copyright (c) 2015 ARM Limited
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 
20 #ifndef NSAPI_TYPES_H
21 #define NSAPI_TYPES_H
22 
23 #include <stdint.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 
30 /** Enum of standardized error codes
31  *
32  * Valid error codes have negative values and may
33  * be returned by any network operation.
34  *
35  * @enum nsapi_error
36  */
38  NSAPI_ERROR_OK = 0, /*!< no error */
39  NSAPI_ERROR_WOULD_BLOCK = -3001, /*!< no data is not available but call is non-blocking */
40  NSAPI_ERROR_UNSUPPORTED = -3002, /*!< unsupported functionality */
41  NSAPI_ERROR_PARAMETER = -3003, /*!< invalid configuration */
42  NSAPI_ERROR_NO_CONNECTION = -3004, /*!< not connected to a network */
43  NSAPI_ERROR_NO_SOCKET = -3005, /*!< socket not available for use */
44  NSAPI_ERROR_NO_ADDRESS = -3006, /*!< IP address is not known */
45  NSAPI_ERROR_NO_MEMORY = -3007, /*!< memory resource not available */
46  NSAPI_ERROR_NO_SSID = -3008, /*!< ssid not found */
47  NSAPI_ERROR_DNS_FAILURE = -3009, /*!< DNS failed to complete successfully */
48  NSAPI_ERROR_DHCP_FAILURE = -3010, /*!< DHCP failed to complete successfully */
49  NSAPI_ERROR_AUTH_FAILURE = -3011, /*!< connection to access point failed */
50  NSAPI_ERROR_DEVICE_ERROR = -3012, /*!< failure interfacing with the network processor */
51  NSAPI_ERROR_IN_PROGRESS = -3013, /*!< operation (eg connect) in progress */
52  NSAPI_ERROR_ALREADY = -3014, /*!< operation (eg connect) already in progress */
53  NSAPI_ERROR_IS_CONNECTED = -3015, /*!< socket is already connected */
54  NSAPI_ERROR_CONNECTION_LOST = -3016, /*!< connection lost */
55  NSAPI_ERROR_CONNECTION_TIMEOUT = -3017, /*!< connection timed out */
56  NSAPI_ERROR_ADDRESS_IN_USE = -3018, /*!< Address already in use */
57  NSAPI_ERROR_TIMEOUT = -3019, /*!< operation timed out */
58  NSAPI_ERROR_BUSY = -3020, /*!< device is busy and cannot accept new operation */
59 };
60 
61 
62 /** Enum of connection status types
63  *
64  * Valid error codes have negative values.
65  *
66  * @enum nsapi_connection_status
67  */
69  NSAPI_STATUS_LOCAL_UP = 0, /*!< local IP address set */
70  NSAPI_STATUS_GLOBAL_UP = 1, /*!< global IP address set */
71  NSAPI_STATUS_DISCONNECTED = 2, /*!< no connection to network */
72  NSAPI_STATUS_CONNECTING = 3, /*!< connecting to network */
73  NSAPI_STATUS_ERROR_UNSUPPORTED = NSAPI_ERROR_UNSUPPORTED
74 } nsapi_connection_status_t;
75 
76 
77 /** Enum of event types
78  *
79  * Event callbacks are accompanied with an event-dependent parameter passed as an intptr_t.
80  *
81  * @enum nsapi_event
82  */
83 typedef enum nsapi_event {
84  NSAPI_EVENT_CONNECTION_STATUS_CHANGE = 0, /*!< network connection status has changed, the parameter = new status (nsapi_connection_status_t) */
85  NSAPI_EVENT_CELLULAR_STATUS_BASE = 0x1000, /*!< Cellular modem status has changed, See the enum values from enum cellular_connection_status_t in /features/cellular/framework/common/CellularCommon.h */
86  NSAPI_EVENT_CELLULAR_STATUS_END = 0x1FFF /*!< cellular modem status has changed, See the enum values from enum cellular_connection_status_t in /features/cellular/framework/common/CellularCommon.h */
87 } nsapi_event_t;
88 
89 
90 /** Type used to represent error codes
91  *
92  * This is a separate type from enum nsapi_error to avoid breaking
93  * compatibility in type-sensitive overloads
94  */
95 typedef signed int nsapi_error_t;
96 
97 /** Type used to represent the size of data passed through sockets
98  */
99 typedef unsigned int nsapi_size_t;
100 
101 /** Type used to represent either a size or error passed through sockets
102  *
103  * A valid nsapi_size_or_error_t is either a non-negative size or a
104  * negative error code from the nsapi_error_t
105  */
106 typedef signed int nsapi_size_or_error_t;
107 
108 /** Type used to represent either a value or error
109  *
110  * A valid nsapi_value_or_error_t is either a non-negative value or a
111  * negative error code from the nsapi_error_t
112  */
113 typedef signed int nsapi_value_or_error_t;
114 
115 /** Enum of encryption types
116  *
117  * The security type specifies a particular security to use when
118  * connected to a WiFi network
119  */
120 typedef enum nsapi_security {
121  NSAPI_SECURITY_NONE = 0x0, /*!< open access point */
122  NSAPI_SECURITY_WEP = 0x1, /*!< phrase conforms to WEP */
123  NSAPI_SECURITY_WPA = 0x2, /*!< phrase conforms to WPA */
124  NSAPI_SECURITY_WPA2 = 0x3, /*!< phrase conforms to WPA2 */
125  NSAPI_SECURITY_WPA_WPA2 = 0x4, /*!< phrase conforms to WPA/WPA2 */
126  NSAPI_SECURITY_PAP = 0x5, /*!< phrase conforms to PPP authentication context */
127  NSAPI_SECURITY_CHAP = 0x6, /*!< phrase conforms to PPP authentication context */
128  NSAPI_SECURITY_EAP_TLS = 0x7, /*!< phrase conforms to EAP-TLS */
129  NSAPI_SECURITY_PEAP = 0x8, /*!< phrase conforms to PEAP */
130  NSAPI_SECURITY_UNKNOWN = 0xFF, /*!< unknown/unsupported security in scan results */
132 
133 /** Size of 2 char network interface name from driver
134  */
135 #define NSAPI_INTERFACE_PREFIX_SIZE 2
136 
137 /** Maximum size of network interface name
138  */
139 #define NSAPI_INTERFACE_NAME_MAX_SIZE 6
140 
141 /** Maximum size of IP address representation
142  */
143 #define NSAPI_IP_SIZE NSAPI_IPv6_SIZE
144 
145 /** Maximum number of bytes for IP address
146  */
147 #define NSAPI_IP_BYTES NSAPI_IPv6_BYTES
148 
149 /** Maximum size of MAC address representation
150  */
151 #define NSAPI_MAC_SIZE 18
152 
153 /** Maximum number of bytes for MAC address
154  */
155 #define NSAPI_MAC_BYTES 6
156 
157 /** Size of IPv4 representation
158  */
159 #define NSAPI_IPv4_SIZE 16
160 
161 /** Number of bytes in IPv4 address
162  */
163 #define NSAPI_IPv4_BYTES 4
164 
165 /** Size of IPv6 representation
166  */
167 #define NSAPI_IPv6_SIZE 40
168 
169 /** Number of bytes in IPv6 address
170  */
171 #define NSAPI_IPv6_BYTES 16
172 
173 /** Enum of IP address versions
174  *
175  * The IP version specifies the type of an IP address.
176  *
177  * @enum nsapi_version
178  */
179 typedef enum nsapi_version {
180  NSAPI_UNSPEC, /*!< Address is unspecified */
181  NSAPI_IPv4, /*!< Address is IPv4 */
182  NSAPI_IPv6, /*!< Address is IPv6 */
183 } nsapi_version_t;
184 
185 /** IP address structure for passing IP addresses by value
186  */
187 typedef struct nsapi_addr {
188  /** IP version
189  * - NSAPI_IPv4
190  * - NSAPI_IPv6
191  * - NSAPI_UNSPEC
192  */
193  nsapi_version_t version;
194 
195  /** IP address
196  * The raw bytes of the IP address stored in big-endian format
197  */
199 } nsapi_addr_t;
200 
201 
202 /** Opaque handle for network sockets
203  */
204 typedef void *nsapi_socket_t;
205 
206 
207 /** Enum of socket protocols
208  *
209  * The socket protocol specifies a particular protocol to
210  * be used with a newly created socket.
211  *
212  * @enum nsapi_protocol
213  */
214 typedef enum nsapi_protocol {
215  NSAPI_TCP, /*!< Socket is of TCP type */
216  NSAPI_UDP, /*!< Socket is of UDP type */
217 } nsapi_protocol_t;
218 
219 /** Enum of standardized stack option levels
220  * for use with NetworkStack::setstackopt and getstackopt.
221  *
222  * @enum nsapi_stack_level
223  */
224 typedef enum nsapi_stack_level {
225  NSAPI_STACK = 5000, /*!< Stack option level - see nsapi_stack_option_t for options */
226 } nsapi_stack_level_t;
227 
228 /** Enum of standardized stack option names for level NSAPI_STACK
229  * of NetworkStack::setstackopt and getstackopt.
230  *
231  * These options may not be supported on all stacks, in which
232  * case NSAPI_ERROR_UNSUPPORTED may be returned.
233  *
234  * @enum nsapi_stack_option
235  */
236 typedef enum nsapi_stack_option {
237  NSAPI_IPV4_MRU, /*!< Sets/gets size of largest IPv4 fragmented datagram to reassemble */
238  NSAPI_IPV6_MRU, /*!< Sets/gets size of largest IPv6 fragmented datagram to reassemble */
239 } nsapi_stack_option_t;
240 
241 /** Enum of standardized socket option levels
242  * for use with Socket::setsockopt and getsockopt.
243  *
244  * @enum nsapi_socket_level
245  */
246 typedef enum nsapi_socket_level {
247  NSAPI_SOCKET = 7000, /*!< Socket option level - see nsapi_socket_option_t for options */
248 } nsapi_socket_level_t;
249 
250 /** Enum of standardized socket option names for level NSAPI_SOCKET
251  * of Socket::setsockopt and getsockopt.
252  *
253  * These options may not be supported on all stacks, in which
254  * case NSAPI_ERROR_UNSUPPORTED may be returned.
255  *
256  * @enum nsapi_socket_option
257  */
258 typedef enum nsapi_socket_option {
259  NSAPI_REUSEADDR, /*!< Allow bind to reuse local addresses */
260  NSAPI_KEEPALIVE, /*!< Enables sending of keepalive messages */
261  NSAPI_KEEPIDLE, /*!< Sets timeout value to initiate keepalive */
262  NSAPI_KEEPINTVL, /*!< Sets timeout value for keepalive */
263  NSAPI_LINGER, /*!< Keeps close from returning until queues empty */
264  NSAPI_SNDBUF, /*!< Sets send buffer size */
265  NSAPI_RCVBUF, /*!< Sets recv buffer size */
266  NSAPI_ADD_MEMBERSHIP, /*!< Add membership to multicast address */
267  NSAPI_DROP_MEMBERSHIP, /*!< Drop membership to multicast address */
268  NSAPI_BIND_TO_DEVICE, /*!< Bind socket network interface name*/
269 } nsapi_socket_option_t;
270 
271 /** Supported IP protocol versions of IP stack
272  *
273  * @enum nsapi_ip_stack
274  */
275 typedef enum nsapi_ip_stack {
276  DEFAULT_STACK = 0,
277  IPV4_STACK,
278  IPV6_STACK,
279  IPV4V6_STACK
280 } nsapi_ip_stack_t;
281 
282 /* Backwards compatibility - previously didn't distinguish stack and socket options */
283 typedef nsapi_socket_level_t nsapi_level_t;
284 typedef nsapi_socket_option_t nsapi_option_t;
285 
286 /** nsapi_wifi_ap structure
287  *
288  * Structure representing a WiFi Access Point
289  */
290 typedef struct nsapi_wifi_ap {
291  char ssid[33]; /* 32 is what 802.11 defines as longest possible name; +1 for the \0 */
292  uint8_t bssid[6];
293  nsapi_security_t security;
294  int8_t rssi;
295  uint8_t channel;
297 
298 
299 /** nsapi_stack structure
300  *
301  * Stack structure representing a specific instance of a stack.
302  */
303 typedef struct nsapi_stack {
304  /** Network stack operation table
305  *
306  * Provides access to the underlying api of the stack. This is not
307  * flattened into the nsapi_stack to allow allocation in read-only
308  * memory.
309  */
310  const struct nsapi_stack_api *stack_api;
311 
312  /** Opaque handle for network stacks
313  */
314  void *stack;
315 
316  // Internal nsapi buffer
317  unsigned _stack_buffer[16];
318 } nsapi_stack_t;
319 
320 /** nsapi_ip_mreq structure
321  */
322 typedef struct nsapi_ip_mreq {
323  nsapi_addr_t imr_multiaddr; /* IP multicast address of group */
324  nsapi_addr_t imr_interface; /* local IP address of interface */
326 
327 /** nsapi_stack_api structure
328  *
329  * Common api structure for network stack operations. A network stack
330  * can provide a nsapi_stack_api structure filled out with the
331  * appropriate implementation.
332  *
333  * Unsupported operations can be left as null pointers.
334  */
335 typedef struct nsapi_stack_api {
336  /** Get the local IP address
337  *
338  * @param stack Stack handle
339  * @return Local IP Address or null address if not connected
340  */
341  nsapi_addr_t (*get_ip_address)(nsapi_stack_t *stack);
342 
343  /** Translates a hostname to an IP address
344  *
345  * The hostname may be either a domain name or an IP address. If the
346  * hostname is an IP address, no network transactions will be performed.
347  *
348  * If no stack-specific DNS resolution is provided, the hostname
349  * will be resolve using a UDP socket on the stack.
350  *
351  * @param stack Stack handle
352  * @param addr Destination for the host IP address
353  * @param host Hostname to resolve
354  * @param version Address family
355  * @return 0 on success, negative error code on failure
356  */
357  nsapi_error_t (*gethostbyname)(nsapi_stack_t *stack, const char *host, nsapi_addr_t *addr, nsapi_version_t version);
358 
359  /** Add a domain name server to list of servers to query
360  *
361  * @param addr Destination for the host address
362  * @return 0 on success, negative error code on failure
363  */
364  nsapi_error_t (*add_dns_server)(nsapi_stack_t *stack, nsapi_addr_t addr);
365 
366  /** Set stack-specific stack options
367  *
368  * The setstackopt allow an application to pass stack-specific hints
369  * to the underlying stack. For unsupported options,
370  * NSAPI_ERROR_UNSUPPORTED is returned and the stack is unmodified.
371  *
372  * @param stack Stack handle
373  * @param level Stack-specific protocol level
374  * @param optname Stack-specific option identifier
375  * @param optval Option value
376  * @param optlen Length of the option value
377  * @return 0 on success, negative error code on failure
378  */
379  nsapi_error_t (*setstackopt)(nsapi_stack_t *stack, int level,
380  int optname, const void *optval, unsigned optlen);
381 
382  /** Get stack-specific stack options
383  *
384  * The getstackopt allow an application to retrieve stack-specific hints
385  * from the underlying stack. For unsupported options,
386  * NSAPI_ERROR_UNSUPPORTED is returned and optval is unmodified.
387  *
388  * @param stack Stack handle
389  * @param level Stack-specific protocol level
390  * @param optname Stack-specific option identifier
391  * @param optval Destination for option value
392  * @param optlen Length of the option value
393  * @return 0 on success, negative error code on failure
394  */
395  nsapi_error_t (*getstackopt)(nsapi_stack_t *stack, int level,
396  int optname, void *optval, unsigned *optlen);
397 
398  /** Opens a socket
399  *
400  * Creates a network socket and stores it in the specified handle.
401  * The handle must be passed to following calls on the socket.
402  *
403  * A stack may have a finite number of sockets, in this case
404  * NSAPI_ERROR_NO_SOCKET is returned if no socket is available.
405  *
406  * @param stack Stack context
407  * @param socket Destination for the handle to a newly created socket
408  * @param proto Protocol of socket to open, NSAPI_TCP or NSAPI_UDP
409  * @return 0 on success, negative error code on failure
410  */
411  nsapi_error_t (*socket_open)(nsapi_stack_t *stack, nsapi_socket_t *socket,
412  nsapi_protocol_t proto);
413 
414  /** Close the socket
415  *
416  * Closes any open connection and deallocates any memory associated
417  * with the socket.
418  *
419  * @param stack Stack handle
420  * @param socket Socket handle
421  * @return 0 on success, negative error code on failure
422  */
423  nsapi_error_t (*socket_close)(nsapi_stack_t *stack, nsapi_socket_t socket);
424 
425  /** Bind a specific address to a socket
426  *
427  * Binding a socket specifies the address and port on which to receive
428  * data. If the IP address is zeroed, only the port is bound.
429  *
430  * @param stack Stack handle
431  * @param socket Socket handle
432  * @param addr Local address to bind, may be null
433  * @param port Local port to bind
434  * @return 0 on success, negative error code on failure.
435  */
436  nsapi_error_t (*socket_bind)(nsapi_stack_t *stack, nsapi_socket_t socket,
437  nsapi_addr_t addr, uint16_t port);
438 
439  /** Listen for connections on a TCP socket
440  *
441  * Marks the socket as a passive socket that can be used to accept
442  * incoming connections.
443  *
444  * @param stack Stack handle
445  * @param socket Socket handle
446  * @param backlog Number of pending connections that can be queued
447  * simultaneously
448  * @return 0 on success, negative error code on failure
449  */
450  nsapi_error_t (*socket_listen)(nsapi_stack_t *stack, nsapi_socket_t socket, int backlog);
451 
452  /** Connects TCP socket to a remote host
453  *
454  * Initiates a connection to a remote server specified by the
455  * indicated address.
456  *
457  * @param stack Stack handle
458  * @param socket Socket handle
459  * @param addr The address of the remote host
460  * @param port The port of the remote host
461  * @return 0 on success, negative error code on failure
462  */
463  nsapi_error_t (*socket_connect)(nsapi_stack_t *stack, nsapi_socket_t socket,
464  nsapi_addr_t addr, uint16_t port);
465 
466  /** Accepts a connection on a TCP socket
467  *
468  * The server socket must be bound and set to listen for connections.
469  * On a new connection, creates a network socket and stores it in the
470  * specified handle. The handle must be passed to following calls on
471  * the socket.
472  *
473  * A stack may have a finite number of sockets, in this case
474  * NSAPI_ERROR_NO_SOCKET is returned if no socket is available.
475  *
476  * This call is non-blocking. If accept would block,
477  * NSAPI_ERROR_WOULD_BLOCK is returned immediately.
478  *
479  * @param stack Stack handle
480  * @param server Socket handle to server to accept from
481  * @param socket Destination for a handle to the newly created socket
482  * @param addr Destination for the address of the remote host
483  * @param port Destination for the port of the remote host
484  * @return 0 on success, negative error code on failure
485  */
486  nsapi_error_t (*socket_accept)(nsapi_stack_t *stack, nsapi_socket_t server,
487  nsapi_socket_t *socket, nsapi_addr_t *addr, uint16_t *port);
488 
489  /** Send data over a TCP socket
490  *
491  * The socket must be connected to a remote host. Returns the number of
492  * bytes sent from the buffer.
493  *
494  * This call is non-blocking. If send would block,
495  * NSAPI_ERROR_WOULD_BLOCK is returned immediately.
496  *
497  * @param stack Stack handle
498  * @param socket Socket handle
499  * @param data Buffer of data to send to the host
500  * @param size Size of the buffer in bytes
501  * @return Number of sent bytes on success, negative error
502  * code on failure
503  */
504  nsapi_size_or_error_t (*socket_send)(nsapi_stack_t *stack, nsapi_socket_t socket,
505  const void *data, nsapi_size_t size);
506 
507  /** Receive data over a TCP socket
508  *
509  * The socket must be connected to a remote host. Returns the number of
510  * bytes received into the buffer.
511  *
512  * This call is non-blocking. If recv would block,
513  * NSAPI_ERROR_WOULD_BLOCK is returned immediately.
514  *
515  * @param stack Stack handle
516  * @param socket Socket handle
517  * @param data Destination buffer for data received from the host
518  * @param size Size of the buffer in bytes
519  * @return Number of received bytes on success, negative error
520  * code on failure
521  */
522  nsapi_size_or_error_t (*socket_recv)(nsapi_stack_t *stack, nsapi_socket_t socket,
523  void *data, nsapi_size_t size);
524 
525  /** Send a packet over a UDP socket
526  *
527  * Sends data to the specified address. Returns the number of bytes
528  * sent from the buffer.
529  *
530  * This call is non-blocking. If sendto would block,
531  * NSAPI_ERROR_WOULD_BLOCK is returned immediately.
532  *
533  * @param stack Stack handle
534  * @param socket Socket handle
535  * @param addr The address of the remote host
536  * @param port The port of the remote host
537  * @param data Buffer of data to send to the host
538  * @param size Size of the buffer in bytes
539  * @return Number of sent bytes on success, negative error
540  * code on failure
541  */
542  nsapi_size_or_error_t (*socket_sendto)(nsapi_stack_t *stack, nsapi_socket_t socket,
543  nsapi_addr_t addr, uint16_t port, const void *data, nsapi_size_t size);
544 
545  /** Receive a packet over a UDP socket
546  *
547  * Receives data and stores the source address in address if address
548  * is not NULL. Returns the number of bytes received into the buffer.
549  *
550  * This call is non-blocking. If recvfrom would block,
551  * NSAPI_ERROR_WOULD_BLOCK is returned immediately.
552  *
553  * @param stack Stack handle
554  * @param socket Socket handle
555  * @param addr Destination for the address of the remote host
556  * @param port Destination for the port of the remote host
557  * @param data Destination buffer for data received from the host
558  * @param size Size of the buffer in bytes
559  * @return Number of received bytes on success, negative error
560  * code on failure
561  */
562  nsapi_size_or_error_t (*socket_recvfrom)(nsapi_stack_t *stack, nsapi_socket_t socket,
563  nsapi_addr_t *addr, uint16_t *port, void *buffer, nsapi_size_t size);
564 
565  /** Register a callback on state change of the socket
566  *
567  * The specified callback will be called on state changes such as when
568  * the socket can recv/send/accept successfully and on when an error
569  * occurs. The callback may also be called spuriously without reason.
570  *
571  * The callback may be called in an interrupt context and should not
572  * perform expensive operations such as recv/send calls.
573  *
574  * @param stack Stack handle
575  * @param socket Socket handle
576  * @param callback Function to call on state change
577  * @param data Argument to pass to callback
578  */
579  void (*socket_attach)(nsapi_stack_t *stack, nsapi_socket_t socket,
580  void (*callback)(void *), void *data);
581 
582  /** Set stack-specific socket options
583  *
584  * The setsockopt allow an application to pass stack-specific hints
585  * to the underlying stack. For unsupported options,
586  * NSAPI_ERROR_UNSUPPORTED is returned and the socket is unmodified.
587  *
588  * @param stack Stack handle
589  * @param socket Socket handle
590  * @param level Stack-specific protocol level
591  * @param optname Stack-specific option identifier
592  * @param optval Option value
593  * @param optlen Length of the option value
594  * @return 0 on success, negative error code on failure
595  */
596  nsapi_error_t (*setsockopt)(nsapi_stack_t *stack, nsapi_socket_t socket, int level,
597  int optname, const void *optval, unsigned optlen);
598 
599  /** Get stack-specific socket options
600  *
601  * The getstackopt allow an application to retrieve stack-specific hints
602  * from the underlying stack. For unsupported options,
603  * NSAPI_ERROR_UNSUPPORTED is returned and optval is unmodified.
604  *
605  * @param stack Stack handle
606  * @param socket Socket handle
607  * @param level Stack-specific protocol level
608  * @param optname Stack-specific option identifier
609  * @param optval Destination for option value
610  * @param optlen Length of the option value
611  * @return 0 on success, negative error code on failure
612  */
613  nsapi_error_t (*getsockopt)(nsapi_stack_t *stack, nsapi_socket_t socket, int level,
614  int optname, void *optval, unsigned *optlen);
616 
617 
618 #ifdef __cplusplus
619 }
620 #endif
621 
622 #endif
623 
624 /** @}*/
nsapi_stack structure
Definition: nsapi_types.h:303
nsapi_stack_option
Enum of standardized stack option names for level NSAPI_STACK of NetworkStack::setstackopt and getsta...
Definition: nsapi_types.h:236
const struct nsapi_stack_api * stack_api
Network stack operation table.
Definition: nsapi_types.h:310
void * nsapi_socket_t
Opaque handle for network sockets.
Definition: nsapi_types.h:204
void * stack
Opaque handle for network stacks.
Definition: nsapi_types.h:314
nsapi_security
Enum of encryption types.
Definition: nsapi_types.h:120
nsapi_stack_api structure
Definition: nsapi_types.h:335
signed int nsapi_error_t
Type used to represent error codes.
Definition: nsapi_types.h:95
struct nsapi_stack_api nsapi_stack_api_t
nsapi_stack_api structure
nsapi_stack_level
Enum of standardized stack option levels for use with NetworkStack::setstackopt and getstackopt...
Definition: nsapi_types.h:224
nsapi_ip_stack
Supported IP protocol versions of IP stack.
Definition: nsapi_types.h:275
signed int nsapi_size_or_error_t
Type used to represent either a size or error passed through sockets.
Definition: nsapi_types.h:106
Callback< R()> callback(R(*func)()=0)
Create a callback class with type inferred from the arguments.
Definition: Callback.h:3848
#define NSAPI_IP_BYTES
Maximum number of bytes for IP address.
Definition: nsapi_types.h:147
nsapi_socket_level
Enum of standardized socket option levels for use with Socket::setsockopt and getsockopt.
Definition: nsapi_types.h:246
signed int nsapi_value_or_error_t
Type used to represent either a value or error.
Definition: nsapi_types.h:113
struct nsapi_addr nsapi_addr_t
IP address structure for passing IP addresses by value.
nsapi_wifi_ap structure
Definition: nsapi_types.h:290
nsapi_event
Enum of event types.
Definition: nsapi_types.h:83
struct nsapi_wifi_ap nsapi_wifi_ap_t
nsapi_wifi_ap structure
uint8_t bytes[16]
IP address The raw bytes of the IP address stored in big-endian format.
Definition: nsapi_types.h:198
nsapi_version_t version
IP version.
Definition: nsapi_types.h:193
nsapi_connection_status
Enum of connection status types.
Definition: nsapi_types.h:68
unsigned int nsapi_size_t
Type used to represent the size of data passed through sockets.
Definition: nsapi_types.h:99
IP address structure for passing IP addresses by value.
Definition: nsapi_types.h:187
enum nsapi_security nsapi_security_t
Enum of encryption types.
struct nsapi_ip_mreq nsapi_ip_mreq_t
nsapi_ip_mreq structure
nsapi_error
Enum of standardized error codes.
Definition: nsapi_types.h:37
struct nsapi_stack nsapi_stack_t
nsapi_stack structure
nsapi_ip_mreq structure
Definition: nsapi_types.h:322
nsapi_protocol
Enum of socket protocols.
Definition: nsapi_types.h:214
nsapi_socket_option
Enum of standardized socket option names for level NSAPI_SOCKET of Socket::setsockopt and getsockopt...
Definition: nsapi_types.h:258
nsapi_version
Enum of IP address versions.
Definition: nsapi_types.h:179
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.