WORKS
Dependencies: MAX44000 PWM_Tone_Library nexpaq_mdk
Fork of LED_Demo by
socket_types.h
00001 /* 00002 * PackageLicenseDeclared: Apache-2.0 00003 * Copyright (c) 2015 ARM Limited 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 */ 00017 #ifndef __MBED_NET_SOCKET_ABSTRACT_SOCKET_TYPES_H__ 00018 #define __MBED_NET_SOCKET_ABSTRACT_SOCKET_TYPES_H__ 00019 00020 #include <stddef.h> 00021 #include <stdint.h> 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 #ifndef MBED_NET_LWIP 00028 #define MBED_NET_LWIP 1 00029 #endif 00030 00031 typedef enum { 00032 SOCKET_ERROR_NONE = 0, 00033 SOCKET_ERROR_UNKNOWN, 00034 SOCKET_ERROR_UNIMPLEMENTED, 00035 SOCKET_ERROR_BUSY, 00036 SOCKET_ERROR_NULL_PTR, 00037 SOCKET_ERROR_BAD_FAMILY, 00038 SOCKET_ERROR_TIMEOUT, 00039 SOCKET_ERROR_BAD_ALLOC, 00040 SOCKET_ERROR_NO_CONNECTION, 00041 SOCKET_ERROR_SIZE, 00042 SOCKET_ERROR_STACK_EXISTS, 00043 SOCKET_ERROR_STACKS, 00044 SOCKET_ERROR_BAD_STACK, 00045 SOCKET_ERROR_BAD_ADDRESS, 00046 SOCKET_ERROR_DNS_FAILED, 00047 SOCKET_ERROR_WOULD_BLOCK, 00048 SOCKET_ERROR_CLOSED, 00049 SOCKET_ERROR_VALUE, 00050 SOCKET_ERROR_ADDRESS_IN_USE, 00051 SOCKET_ERROR_ALREADY_CONNECTED, 00052 SOCKET_ERROR_ABORT, 00053 SOCKET_ERROR_RESET, 00054 SOCKET_ERROR_BAD_ARGUMENT, 00055 SOCKET_ERROR_INTERFACE_ERROR, 00056 SOCKET_ERROR_API_VERSION, 00057 SOCKET_ERROR_NOT_BOUND, 00058 00059 } socket_error_t; 00060 00061 typedef enum { 00062 SOCKET_ALLOC_HEAP = 0, 00063 SOCKET_ALLOC_POOL_BEST, 00064 } socket_alloc_pool_t; 00065 00066 typedef enum { 00067 SOCKET_AF_UNINIT, 00068 SOCKET_AF_INET4, 00069 SOCKET_AF_INET6, 00070 SOCKET_AF_MAX, 00071 } socket_address_family_t; 00072 00073 typedef enum { 00074 SOCKET_PROTO_UNINIT = 0, 00075 SOCKET_DGRAM, 00076 SOCKET_STREAM, 00077 SOCKET_PROTO_MAX, 00078 } socket_proto_family_t; 00079 00080 typedef enum { 00081 SOCKET_EVENT_NONE = 0, 00082 SOCKET_EVENT_ERROR, 00083 SOCKET_EVENT_RX_DONE, 00084 SOCKET_EVENT_TX_DONE, 00085 SOCKET_EVENT_RX_ERROR, 00086 SOCKET_EVENT_TX_ERROR, 00087 SOCKET_EVENT_CONNECT, 00088 SOCKET_EVENT_DISCONNECT, 00089 SOCKET_EVENT_DNS, 00090 SOCKET_EVENT_ACCEPT, 00091 } event_flag_t; 00092 00093 typedef enum { 00094 SOCKET_STATUS_IDLE = 0, 00095 SOCKET_STATUS_RX_BUSY = 1 << 0, 00096 SOCKET_STATUS_TX_BUSY = 1 << 1, 00097 SOCKET_STATUS_CONNECTED = 1 << 2, 00098 SOCKET_STATUS_BOUND = 1 << 3, 00099 } socket_status_t; 00100 00101 typedef enum { 00102 SOCKET_STACK_UNINIT = 0, 00103 SOCKET_STACK_LWIP_IPV4, 00104 SOCKET_STACK_LWIP_IPV6, 00105 SOCKET_STACK_RESERVED, 00106 SOCKET_STACK_NANOSTACK_IPV6, 00107 SOCKET_STACK_PICOTCP, 00108 SOCKET_STACK_MAX, 00109 } socket_stack_t; 00110 00111 typedef enum { 00112 SOCKET_BUFFER_UNINITIALISED = 0, 00113 SOCKET_BUFFER_RAW, 00114 SOCKET_BUFFER_LWIP_PBUF, 00115 SOCKET_BUFFER_NANOSTACK_PBUF, 00116 } socket_buffer_type_t; 00117 00118 struct socket_addr { 00119 uint32_t ipv6be[4]; 00120 }; 00121 00122 struct socket_buffer { 00123 socket_buffer_type_t type; 00124 const struct socket_buf_api *api; 00125 void *impl; 00126 }; 00127 00128 struct socket_rawbuf { 00129 void * buf; 00130 size_t size; 00131 size_t pos; 00132 }; 00133 00134 typedef void (*socket_api_handler_t)(void); 00135 typedef struct { 00136 void * (*alloc)(void *,const size_t); 00137 void (*dealloc)(void *, void *); 00138 void *context; 00139 } socket_allocator_t; 00140 00141 struct socket_tx_info { 00142 uint16_t sentbytes; 00143 }; 00144 00145 struct socket_dns_info { 00146 struct socket_addr addr; // A stack-specific socket address struct 00147 const char *domain; 00148 }; 00149 00150 struct socket_accept_info { 00151 void * newimpl; 00152 uint8_t reject; 00153 }; 00154 00155 struct socket_event { 00156 event_flag_t event; 00157 struct socket *sock; 00158 union { 00159 struct socket_tx_info t; 00160 socket_error_t e; 00161 struct socket_dns_info d; 00162 struct socket_accept_info a; 00163 } i; 00164 }; 00165 typedef struct socket_event socket_event_t; 00166 00167 struct socket { 00168 socket_api_handler_t handler; 00169 socket_event_t *event; // TODO: (CThunk upgrade/Alpha3) 00170 const struct socket_api *api; 00171 void *impl; 00172 socket_status_t status; 00173 uint8_t family; 00174 socket_stack_t stack; 00175 void *rxBufChain; // TODO: Only required in some stacks, which do not support BSD-style buffering 00176 }; 00177 00178 #ifdef __cplusplus 00179 } 00180 #endif 00181 #endif /* __MBED_NET_SOCKET_ABSTRACT_SOCKET_TYPES_H__ */
Generated on Tue Jul 12 2022 12:28:49 by
1.7.2
