CC3000HostDriver for device TI CC3000 some changes were made due to mbed compiler and the use of void*
socket.h@0:9cb694f00b7b, 2013-08-02 (annotated)
- Committer:
- dflet
- Date:
- Fri Aug 02 15:06:15 2013 +0000
- Revision:
- 0:9cb694f00b7b
First commit TI CC3000HostDriver library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dflet | 0:9cb694f00b7b | 1 | /***************************************************************************** |
dflet | 0:9cb694f00b7b | 2 | * |
dflet | 0:9cb694f00b7b | 3 | * socket.h - CC3000 Host Driver Implementation. |
dflet | 0:9cb694f00b7b | 4 | * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ |
dflet | 0:9cb694f00b7b | 5 | * |
dflet | 0:9cb694f00b7b | 6 | * Redistribution and use in source and binary forms, with or without |
dflet | 0:9cb694f00b7b | 7 | * modification, are permitted provided that the following conditions |
dflet | 0:9cb694f00b7b | 8 | * are met: |
dflet | 0:9cb694f00b7b | 9 | * |
dflet | 0:9cb694f00b7b | 10 | * Redistributions of source code must retain the above copyright |
dflet | 0:9cb694f00b7b | 11 | * notice, this list of conditions and the following disclaimer. |
dflet | 0:9cb694f00b7b | 12 | * |
dflet | 0:9cb694f00b7b | 13 | * Redistributions in binary form must reproduce the above copyright |
dflet | 0:9cb694f00b7b | 14 | * notice, this list of conditions and the following disclaimer in the |
dflet | 0:9cb694f00b7b | 15 | * documentation and/or other materials provided with the |
dflet | 0:9cb694f00b7b | 16 | * distribution. |
dflet | 0:9cb694f00b7b | 17 | * |
dflet | 0:9cb694f00b7b | 18 | * Neither the name of Texas Instruments Incorporated nor the names of |
dflet | 0:9cb694f00b7b | 19 | * its contributors may be used to endorse or promote products derived |
dflet | 0:9cb694f00b7b | 20 | * from this software without specific prior written permission. |
dflet | 0:9cb694f00b7b | 21 | * |
dflet | 0:9cb694f00b7b | 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
dflet | 0:9cb694f00b7b | 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
dflet | 0:9cb694f00b7b | 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
dflet | 0:9cb694f00b7b | 25 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
dflet | 0:9cb694f00b7b | 26 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
dflet | 0:9cb694f00b7b | 27 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
dflet | 0:9cb694f00b7b | 28 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
dflet | 0:9cb694f00b7b | 29 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
dflet | 0:9cb694f00b7b | 30 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
dflet | 0:9cb694f00b7b | 31 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
dflet | 0:9cb694f00b7b | 32 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
dflet | 0:9cb694f00b7b | 33 | * |
dflet | 0:9cb694f00b7b | 34 | *****************************************************************************/ |
dflet | 0:9cb694f00b7b | 35 | #ifndef __SOCKET_H__ |
dflet | 0:9cb694f00b7b | 36 | #define __SOCKET_H__ |
dflet | 0:9cb694f00b7b | 37 | |
dflet | 0:9cb694f00b7b | 38 | |
dflet | 0:9cb694f00b7b | 39 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 40 | // |
dflet | 0:9cb694f00b7b | 41 | //! \addtogroup socket_api |
dflet | 0:9cb694f00b7b | 42 | //! @{ |
dflet | 0:9cb694f00b7b | 43 | // |
dflet | 0:9cb694f00b7b | 44 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 45 | |
dflet | 0:9cb694f00b7b | 46 | |
dflet | 0:9cb694f00b7b | 47 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 48 | // |
dflet | 0:9cb694f00b7b | 49 | // If building with a C++ compiler, make all of the definitions in this header |
dflet | 0:9cb694f00b7b | 50 | // have a C binding. |
dflet | 0:9cb694f00b7b | 51 | // |
dflet | 0:9cb694f00b7b | 52 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 53 | #ifdef __cplusplus |
dflet | 0:9cb694f00b7b | 54 | extern "C" { |
dflet | 0:9cb694f00b7b | 55 | #endif |
dflet | 0:9cb694f00b7b | 56 | |
dflet | 0:9cb694f00b7b | 57 | #define HOSTNAME_MAX_LENGTH (230) // 230 bytes + header shouldn't exceed 8 bit value |
dflet | 0:9cb694f00b7b | 58 | |
dflet | 0:9cb694f00b7b | 59 | //--------- Address Families -------- |
dflet | 0:9cb694f00b7b | 60 | |
dflet | 0:9cb694f00b7b | 61 | #define AF_INET 2 |
dflet | 0:9cb694f00b7b | 62 | #define AF_INET6 23 |
dflet | 0:9cb694f00b7b | 63 | |
dflet | 0:9cb694f00b7b | 64 | //------------ Socket Types ------------ |
dflet | 0:9cb694f00b7b | 65 | |
dflet | 0:9cb694f00b7b | 66 | #define SOCK_STREAM 1 |
dflet | 0:9cb694f00b7b | 67 | #define SOCK_DGRAM 2 |
dflet | 0:9cb694f00b7b | 68 | #define SOCK_RAW 3 // Raw sockets allow new IPv4 protocols to be implemented in user space. A raw socket receives or sends the raw datagram not including link level headers |
dflet | 0:9cb694f00b7b | 69 | #define SOCK_RDM 4 |
dflet | 0:9cb694f00b7b | 70 | #define SOCK_SEQPACKET 5 |
dflet | 0:9cb694f00b7b | 71 | |
dflet | 0:9cb694f00b7b | 72 | //----------- Socket Protocol ---------- |
dflet | 0:9cb694f00b7b | 73 | |
dflet | 0:9cb694f00b7b | 74 | #define IPPROTO_IP 0 // dummy for IP |
dflet | 0:9cb694f00b7b | 75 | #define IPPROTO_ICMP 1 // control message protocol |
dflet | 0:9cb694f00b7b | 76 | #define IPPROTO_IPV4 IPPROTO_IP // IP inside IP |
dflet | 0:9cb694f00b7b | 77 | #define IPPROTO_TCP 6 // tcp |
dflet | 0:9cb694f00b7b | 78 | #define IPPROTO_UDP 17 // user datagram protocol |
dflet | 0:9cb694f00b7b | 79 | #define IPPROTO_IPV6 41 // IPv6 in IPv6 |
dflet | 0:9cb694f00b7b | 80 | #define IPPROTO_NONE 59 // No next header |
dflet | 0:9cb694f00b7b | 81 | #define IPPROTO_RAW 255 // raw IP packet |
dflet | 0:9cb694f00b7b | 82 | #define IPPROTO_MAX 256 |
dflet | 0:9cb694f00b7b | 83 | |
dflet | 0:9cb694f00b7b | 84 | //----------- Socket retunr codes ----------- |
dflet | 0:9cb694f00b7b | 85 | |
dflet | 0:9cb694f00b7b | 86 | #define SOC_ERROR (-1) // error |
dflet | 0:9cb694f00b7b | 87 | #define SOC_IN_PROGRESS (-2) // socket in progress |
dflet | 0:9cb694f00b7b | 88 | |
dflet | 0:9cb694f00b7b | 89 | //----------- Socket Options ----------- |
dflet | 0:9cb694f00b7b | 90 | #define SOL_SOCKET 0xffff // socket level |
dflet | 0:9cb694f00b7b | 91 | #define SOCKOPT_RECV_NONBLOCK 0 // recv non block mode, set SOCK_ON or SOCK_OFF (default block mode) |
dflet | 0:9cb694f00b7b | 92 | #define SOCKOPT_RECV_TIMEOUT 1 // optname to configure recv and recvfromtimeout |
dflet | 0:9cb694f00b7b | 93 | #define SOCKOPT_ACCEPT_NONBLOCK 2 // accept non block mode, set SOCK_ON or SOCK_OFF (default block mode) |
dflet | 0:9cb694f00b7b | 94 | #define SOCK_ON 0 // socket non-blocking mode is enabled |
dflet | 0:9cb694f00b7b | 95 | #define SOCK_OFF 1 // socket blocking mode is enabled |
dflet | 0:9cb694f00b7b | 96 | |
dflet | 0:9cb694f00b7b | 97 | #define TCP_NODELAY 0x0001 |
dflet | 0:9cb694f00b7b | 98 | #define TCP_BSDURGENT 0x7000 |
dflet | 0:9cb694f00b7b | 99 | |
dflet | 0:9cb694f00b7b | 100 | #define MAX_PACKET_SIZE 1500 |
dflet | 0:9cb694f00b7b | 101 | #define MAX_LISTEN_QUEUE 4 |
dflet | 0:9cb694f00b7b | 102 | |
dflet | 0:9cb694f00b7b | 103 | #define IOCTL_SOCKET_EVENTMASK |
dflet | 0:9cb694f00b7b | 104 | |
dflet | 0:9cb694f00b7b | 105 | #define ENOBUFS 55 // No buffer space available |
dflet | 0:9cb694f00b7b | 106 | |
dflet | 0:9cb694f00b7b | 107 | #define __FD_SETSIZE 32 |
dflet | 0:9cb694f00b7b | 108 | |
dflet | 0:9cb694f00b7b | 109 | #define ASIC_ADDR_LEN 8 |
dflet | 0:9cb694f00b7b | 110 | |
dflet | 0:9cb694f00b7b | 111 | #define NO_QUERY_RECIVED -3 |
dflet | 0:9cb694f00b7b | 112 | |
dflet | 0:9cb694f00b7b | 113 | |
dflet | 0:9cb694f00b7b | 114 | typedef struct _in_addr_t |
dflet | 0:9cb694f00b7b | 115 | { |
dflet | 0:9cb694f00b7b | 116 | unsigned long s_addr; // load with inet_aton() |
dflet | 0:9cb694f00b7b | 117 | } in_addr; |
dflet | 0:9cb694f00b7b | 118 | |
dflet | 0:9cb694f00b7b | 119 | typedef struct _sockaddr_t |
dflet | 0:9cb694f00b7b | 120 | { |
dflet | 0:9cb694f00b7b | 121 | unsigned short int sa_family; |
dflet | 0:9cb694f00b7b | 122 | unsigned char sa_data[14]; |
dflet | 0:9cb694f00b7b | 123 | } sockaddr; |
dflet | 0:9cb694f00b7b | 124 | |
dflet | 0:9cb694f00b7b | 125 | typedef struct _sockaddr_in_t |
dflet | 0:9cb694f00b7b | 126 | { |
dflet | 0:9cb694f00b7b | 127 | short sin_family; // e.g. AF_INET |
dflet | 0:9cb694f00b7b | 128 | unsigned short sin_port; // e.g. htons(3490) |
dflet | 0:9cb694f00b7b | 129 | in_addr sin_addr; // see struct in_addr, below |
dflet | 0:9cb694f00b7b | 130 | char sin_zero[8]; // zero this if you want to |
dflet | 0:9cb694f00b7b | 131 | } sockaddr_in; |
dflet | 0:9cb694f00b7b | 132 | |
dflet | 0:9cb694f00b7b | 133 | typedef unsigned long socklen_t; |
dflet | 0:9cb694f00b7b | 134 | |
dflet | 0:9cb694f00b7b | 135 | // The fd_set member is required to be an array of longs. |
dflet | 0:9cb694f00b7b | 136 | typedef long int __fd_mask; |
dflet | 0:9cb694f00b7b | 137 | |
dflet | 0:9cb694f00b7b | 138 | // It's easier to assume 8-bit bytes than to get CHAR_BIT. |
dflet | 0:9cb694f00b7b | 139 | #define __NFDBITS (8 * sizeof (__fd_mask)) |
dflet | 0:9cb694f00b7b | 140 | #define __FDELT(d) ((d) / __NFDBITS) |
dflet | 0:9cb694f00b7b | 141 | #define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS)) |
dflet | 0:9cb694f00b7b | 142 | |
dflet | 0:9cb694f00b7b | 143 | // fd_set for select and pselect. |
dflet | 0:9cb694f00b7b | 144 | typedef struct |
dflet | 0:9cb694f00b7b | 145 | { |
dflet | 0:9cb694f00b7b | 146 | __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; |
dflet | 0:9cb694f00b7b | 147 | #define __FDS_BITS(set) ((set)->fds_bits) |
dflet | 0:9cb694f00b7b | 148 | } fd_set; |
dflet | 0:9cb694f00b7b | 149 | |
dflet | 0:9cb694f00b7b | 150 | // We don't use `memset' because this would require a prototype and |
dflet | 0:9cb694f00b7b | 151 | // the array isn't too big. |
dflet | 0:9cb694f00b7b | 152 | #define __FD_ZERO(set) \ |
dflet | 0:9cb694f00b7b | 153 | do { \ |
dflet | 0:9cb694f00b7b | 154 | unsigned int __i; \ |
dflet | 0:9cb694f00b7b | 155 | fd_set *__arr = (set); \ |
dflet | 0:9cb694f00b7b | 156 | for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ |
dflet | 0:9cb694f00b7b | 157 | __FDS_BITS (__arr)[__i] = 0; \ |
dflet | 0:9cb694f00b7b | 158 | } while (0) |
dflet | 0:9cb694f00b7b | 159 | #define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) |
dflet | 0:9cb694f00b7b | 160 | #define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d)) |
dflet | 0:9cb694f00b7b | 161 | #define __FD_ISSET(d, set) (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) |
dflet | 0:9cb694f00b7b | 162 | |
dflet | 0:9cb694f00b7b | 163 | // Access macros for 'fd_set'. |
dflet | 0:9cb694f00b7b | 164 | #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp) |
dflet | 0:9cb694f00b7b | 165 | #define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp) |
dflet | 0:9cb694f00b7b | 166 | #define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp) |
dflet | 0:9cb694f00b7b | 167 | #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) |
dflet | 0:9cb694f00b7b | 168 | |
dflet | 0:9cb694f00b7b | 169 | //Use in case of Big Endian only |
dflet | 0:9cb694f00b7b | 170 | |
dflet | 0:9cb694f00b7b | 171 | #define htonl(A) ((((unsigned long)(A) & 0xff000000) >> 24) | \ |
dflet | 0:9cb694f00b7b | 172 | (((unsigned long)(A) & 0x00ff0000) >> 8) | \ |
dflet | 0:9cb694f00b7b | 173 | (((unsigned long)(A) & 0x0000ff00) << 8) | \ |
dflet | 0:9cb694f00b7b | 174 | (((unsigned long)(A) & 0x000000ff) << 24)) |
dflet | 0:9cb694f00b7b | 175 | |
dflet | 0:9cb694f00b7b | 176 | #define ntohl htonl |
dflet | 0:9cb694f00b7b | 177 | |
dflet | 0:9cb694f00b7b | 178 | //Use in case of Big Endian only |
dflet | 0:9cb694f00b7b | 179 | #define htons(A) ((((unsigned long)(A) & 0xff00) >> 8) | \ |
dflet | 0:9cb694f00b7b | 180 | (((unsigned long)(A) & 0x00ff) << 8)) |
dflet | 0:9cb694f00b7b | 181 | |
dflet | 0:9cb694f00b7b | 182 | |
dflet | 0:9cb694f00b7b | 183 | #define ntohs htons |
dflet | 0:9cb694f00b7b | 184 | |
dflet | 0:9cb694f00b7b | 185 | // mDNS port - 5353 mDNS multicast address - 224.0.0.251 |
dflet | 0:9cb694f00b7b | 186 | #define SET_mDNS_ADD(sockaddr) sockaddr.sa_data[0] = 0x14; \ |
dflet | 0:9cb694f00b7b | 187 | sockaddr.sa_data[1] = 0xe9; \ |
dflet | 0:9cb694f00b7b | 188 | sockaddr.sa_data[2] = 0xe0; \ |
dflet | 0:9cb694f00b7b | 189 | sockaddr.sa_data[3] = 0x0; \ |
dflet | 0:9cb694f00b7b | 190 | sockaddr.sa_data[4] = 0x0; \ |
dflet | 0:9cb694f00b7b | 191 | sockaddr.sa_data[5] = 0xfb; |
dflet | 0:9cb694f00b7b | 192 | |
dflet | 0:9cb694f00b7b | 193 | |
dflet | 0:9cb694f00b7b | 194 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 195 | // |
dflet | 0:9cb694f00b7b | 196 | // Prototypes for the APIs. |
dflet | 0:9cb694f00b7b | 197 | // |
dflet | 0:9cb694f00b7b | 198 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 199 | |
dflet | 0:9cb694f00b7b | 200 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 201 | // |
dflet | 0:9cb694f00b7b | 202 | //! socket |
dflet | 0:9cb694f00b7b | 203 | //! |
dflet | 0:9cb694f00b7b | 204 | //! @param domain selects the protocol family which will be used for |
dflet | 0:9cb694f00b7b | 205 | //! communication. On this version only AF_INET is supported |
dflet | 0:9cb694f00b7b | 206 | //! @param type specifies the communication semantics. On this version |
dflet | 0:9cb694f00b7b | 207 | //! only SOCK_STREAM, SOCK_DGRAM, SOCK_RAW are supported |
dflet | 0:9cb694f00b7b | 208 | //! @param protocol specifies a particular protocol to be used with the |
dflet | 0:9cb694f00b7b | 209 | //! socket IPPROTO_TCP, IPPROTO_UDP or IPPROTO_RAW are |
dflet | 0:9cb694f00b7b | 210 | //! supported. |
dflet | 0:9cb694f00b7b | 211 | //! |
dflet | 0:9cb694f00b7b | 212 | //! @return On success, socket handle that is used for consequent socket |
dflet | 0:9cb694f00b7b | 213 | //! operations. On error, -1 is returned. |
dflet | 0:9cb694f00b7b | 214 | //! |
dflet | 0:9cb694f00b7b | 215 | //! @brief create an endpoint for communication |
dflet | 0:9cb694f00b7b | 216 | //! The socket function creates a socket that is bound to a specific |
dflet | 0:9cb694f00b7b | 217 | //! transport service provider. This function is called by the |
dflet | 0:9cb694f00b7b | 218 | //! application layer to obtain a socket handle. |
dflet | 0:9cb694f00b7b | 219 | // |
dflet | 0:9cb694f00b7b | 220 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 221 | extern int socket(long domain, long type, long protocol); |
dflet | 0:9cb694f00b7b | 222 | |
dflet | 0:9cb694f00b7b | 223 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 224 | // |
dflet | 0:9cb694f00b7b | 225 | //! closesocket |
dflet | 0:9cb694f00b7b | 226 | //! |
dflet | 0:9cb694f00b7b | 227 | //! @param sd socket handle. |
dflet | 0:9cb694f00b7b | 228 | //! |
dflet | 0:9cb694f00b7b | 229 | //! @return On success, zero is returned. On error, -1 is returned. |
dflet | 0:9cb694f00b7b | 230 | //! |
dflet | 0:9cb694f00b7b | 231 | //! @brief The socket function closes a created socket. |
dflet | 0:9cb694f00b7b | 232 | // |
dflet | 0:9cb694f00b7b | 233 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 234 | extern long closesocket(long sd); |
dflet | 0:9cb694f00b7b | 235 | |
dflet | 0:9cb694f00b7b | 236 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 237 | // |
dflet | 0:9cb694f00b7b | 238 | //! accept |
dflet | 0:9cb694f00b7b | 239 | //! |
dflet | 0:9cb694f00b7b | 240 | //! @param[in] sd socket descriptor (handle) |
dflet | 0:9cb694f00b7b | 241 | //! @param[out] addr the argument addr is a pointer to a sockaddr structure |
dflet | 0:9cb694f00b7b | 242 | //! This structure is filled in with the address of the |
dflet | 0:9cb694f00b7b | 243 | //! peer socket, as known to the communications layer. |
dflet | 0:9cb694f00b7b | 244 | //! determined. The exact format of the address returned |
dflet | 0:9cb694f00b7b | 245 | //! addr is by the socket's address sockaddr. |
dflet | 0:9cb694f00b7b | 246 | //! On this version only AF_INET is supported. |
dflet | 0:9cb694f00b7b | 247 | //! This argument returns in network order. |
dflet | 0:9cb694f00b7b | 248 | //! @param[out] addrlen the addrlen argument is a value-result argument: |
dflet | 0:9cb694f00b7b | 249 | //! it should initially contain the size of the structure |
dflet | 0:9cb694f00b7b | 250 | //! pointed to by addr. |
dflet | 0:9cb694f00b7b | 251 | //! |
dflet | 0:9cb694f00b7b | 252 | //! @return For socket in blocking mode: |
dflet | 0:9cb694f00b7b | 253 | //! On success, socket handle. on failure negative |
dflet | 0:9cb694f00b7b | 254 | //! For socket in non-blocking mode: |
dflet | 0:9cb694f00b7b | 255 | //! - On connection establishment, socket handle |
dflet | 0:9cb694f00b7b | 256 | //! - On connection pending, SOC_IN_PROGRESS (-2) |
dflet | 0:9cb694f00b7b | 257 | //! - On failure, SOC_ERROR (-1) |
dflet | 0:9cb694f00b7b | 258 | //! |
dflet | 0:9cb694f00b7b | 259 | //! @brief accept a connection on a socket: |
dflet | 0:9cb694f00b7b | 260 | //! This function is used with connection-based socket types |
dflet | 0:9cb694f00b7b | 261 | //! (SOCK_STREAM). It extracts the first connection request on the |
dflet | 0:9cb694f00b7b | 262 | //! queue of pending connections, creates a new connected socket, and |
dflet | 0:9cb694f00b7b | 263 | //! returns a new file descriptor referring to that socket. |
dflet | 0:9cb694f00b7b | 264 | //! The newly created socket is not in the listening state. |
dflet | 0:9cb694f00b7b | 265 | //! The original socket sd is unaffected by this call. |
dflet | 0:9cb694f00b7b | 266 | //! The argument sd is a socket that has been created with socket(), |
dflet | 0:9cb694f00b7b | 267 | //! bound to a local address with bind(), and is listening for |
dflet | 0:9cb694f00b7b | 268 | //! connections after a listen(). The argument addr is a pointer |
dflet | 0:9cb694f00b7b | 269 | //! to a sockaddr structure. This structure is filled in with the |
dflet | 0:9cb694f00b7b | 270 | //! address of the peer socket, as known to the communications layer. |
dflet | 0:9cb694f00b7b | 271 | //! The exact format of the address returned addr is determined by the |
dflet | 0:9cb694f00b7b | 272 | //! socket's address family. The addrlen argument is a value-result |
dflet | 0:9cb694f00b7b | 273 | //! argument: it should initially contain the size of the structure |
dflet | 0:9cb694f00b7b | 274 | //! pointed to by addr, on return it will contain the actual |
dflet | 0:9cb694f00b7b | 275 | //! length (in bytes) of the address returned. |
dflet | 0:9cb694f00b7b | 276 | //! |
dflet | 0:9cb694f00b7b | 277 | //! @sa socket ; bind ; listen |
dflet | 0:9cb694f00b7b | 278 | // |
dflet | 0:9cb694f00b7b | 279 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 280 | extern long accept(long sd, sockaddr *addr, socklen_t *addrlen); |
dflet | 0:9cb694f00b7b | 281 | |
dflet | 0:9cb694f00b7b | 282 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 283 | // |
dflet | 0:9cb694f00b7b | 284 | //! bind |
dflet | 0:9cb694f00b7b | 285 | //! |
dflet | 0:9cb694f00b7b | 286 | //! @param[in] sd socket descriptor (handle) |
dflet | 0:9cb694f00b7b | 287 | //! @param[out] addr specifies the destination address. On this version |
dflet | 0:9cb694f00b7b | 288 | //! only AF_INET is supported. |
dflet | 0:9cb694f00b7b | 289 | //! @param[out] addrlen contains the size of the structure pointed to by addr. |
dflet | 0:9cb694f00b7b | 290 | //! |
dflet | 0:9cb694f00b7b | 291 | //! @return On success, zero is returned. On error, -1 is returned. |
dflet | 0:9cb694f00b7b | 292 | //! |
dflet | 0:9cb694f00b7b | 293 | //! @brief assign a name to a socket |
dflet | 0:9cb694f00b7b | 294 | //! This function gives the socket the local address addr. |
dflet | 0:9cb694f00b7b | 295 | //! addr is addrlen bytes long. Traditionally, this is called when a |
dflet | 0:9cb694f00b7b | 296 | //! socket is created with socket, it exists in a name space (address |
dflet | 0:9cb694f00b7b | 297 | //! family) but has no name assigned. |
dflet | 0:9cb694f00b7b | 298 | //! It is necessary to assign a local address before a SOCK_STREAM |
dflet | 0:9cb694f00b7b | 299 | //! socket may receive connections. |
dflet | 0:9cb694f00b7b | 300 | //! |
dflet | 0:9cb694f00b7b | 301 | //! @sa socket ; accept ; listen |
dflet | 0:9cb694f00b7b | 302 | // |
dflet | 0:9cb694f00b7b | 303 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 304 | extern long bind(long sd, const sockaddr *addr, long addrlen); |
dflet | 0:9cb694f00b7b | 305 | |
dflet | 0:9cb694f00b7b | 306 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 307 | // |
dflet | 0:9cb694f00b7b | 308 | //! listen |
dflet | 0:9cb694f00b7b | 309 | //! |
dflet | 0:9cb694f00b7b | 310 | //! @param[in] sd socket descriptor (handle) |
dflet | 0:9cb694f00b7b | 311 | //! @param[in] backlog specifies the listen queue depth. On this version |
dflet | 0:9cb694f00b7b | 312 | //! backlog is not supported. |
dflet | 0:9cb694f00b7b | 313 | //! @return On success, zero is returned. On error, -1 is returned. |
dflet | 0:9cb694f00b7b | 314 | //! |
dflet | 0:9cb694f00b7b | 315 | //! @brief listen for connections on a socket |
dflet | 0:9cb694f00b7b | 316 | //! The willingness to accept incoming connections and a queue |
dflet | 0:9cb694f00b7b | 317 | //! limit for incoming connections are specified with listen(), |
dflet | 0:9cb694f00b7b | 318 | //! and then the connections are accepted with accept. |
dflet | 0:9cb694f00b7b | 319 | //! The listen() call applies only to sockets of type SOCK_STREAM |
dflet | 0:9cb694f00b7b | 320 | //! The backlog parameter defines the maximum length the queue of |
dflet | 0:9cb694f00b7b | 321 | //! pending connections may grow to. |
dflet | 0:9cb694f00b7b | 322 | //! |
dflet | 0:9cb694f00b7b | 323 | //! @sa socket ; accept ; bind |
dflet | 0:9cb694f00b7b | 324 | //! |
dflet | 0:9cb694f00b7b | 325 | //! @note On this version, backlog is not supported |
dflet | 0:9cb694f00b7b | 326 | // |
dflet | 0:9cb694f00b7b | 327 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 328 | extern long listen(long sd, long backlog); |
dflet | 0:9cb694f00b7b | 329 | |
dflet | 0:9cb694f00b7b | 330 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 331 | // |
dflet | 0:9cb694f00b7b | 332 | //! gethostbyname |
dflet | 0:9cb694f00b7b | 333 | //! |
dflet | 0:9cb694f00b7b | 334 | //! @param[in] hostname host name |
dflet | 0:9cb694f00b7b | 335 | //! @param[in] usNameLen name length |
dflet | 0:9cb694f00b7b | 336 | //! @param[out] out_ip_addr This parameter is filled in with host IP address. |
dflet | 0:9cb694f00b7b | 337 | //! In case that host name is not resolved, |
dflet | 0:9cb694f00b7b | 338 | //! out_ip_addr is zero. |
dflet | 0:9cb694f00b7b | 339 | //! @return On success, positive is returned. On error, negative is returned |
dflet | 0:9cb694f00b7b | 340 | //! |
dflet | 0:9cb694f00b7b | 341 | //! @brief Get host IP by name. Obtain the IP Address of machine on network, |
dflet | 0:9cb694f00b7b | 342 | //! by its name. |
dflet | 0:9cb694f00b7b | 343 | //! |
dflet | 0:9cb694f00b7b | 344 | //! @note On this version, only blocking mode is supported. Also note that |
dflet | 0:9cb694f00b7b | 345 | //! the function requires DNS server to be configured prior to its usage. |
dflet | 0:9cb694f00b7b | 346 | // |
dflet | 0:9cb694f00b7b | 347 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 348 | #ifndef CC3000_TINY_DRIVER |
dflet | 0:9cb694f00b7b | 349 | extern int gethostbyname(char * hostname, unsigned short usNameLen, unsigned long* out_ip_addr); |
dflet | 0:9cb694f00b7b | 350 | #endif |
dflet | 0:9cb694f00b7b | 351 | |
dflet | 0:9cb694f00b7b | 352 | |
dflet | 0:9cb694f00b7b | 353 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 354 | // |
dflet | 0:9cb694f00b7b | 355 | //! connect |
dflet | 0:9cb694f00b7b | 356 | //! |
dflet | 0:9cb694f00b7b | 357 | //! @param[in] sd socket descriptor (handle) |
dflet | 0:9cb694f00b7b | 358 | //! @param[in] addr specifies the destination addr. On this version |
dflet | 0:9cb694f00b7b | 359 | //! only AF_INET is supported. |
dflet | 0:9cb694f00b7b | 360 | //! @param[out] addrlen contains the size of the structure pointed to by addr |
dflet | 0:9cb694f00b7b | 361 | //! @return On success, zero is returned. On error, -1 is returned |
dflet | 0:9cb694f00b7b | 362 | //! |
dflet | 0:9cb694f00b7b | 363 | //! @brief initiate a connection on a socket |
dflet | 0:9cb694f00b7b | 364 | //! Function connects the socket referred to by the socket descriptor |
dflet | 0:9cb694f00b7b | 365 | //! sd, to the address specified by addr. The addrlen argument |
dflet | 0:9cb694f00b7b | 366 | //! specifies the size of addr. The format of the address in addr is |
dflet | 0:9cb694f00b7b | 367 | //! determined by the address space of the socket. If it is of type |
dflet | 0:9cb694f00b7b | 368 | //! SOCK_DGRAM, this call specifies the peer with which the socket is |
dflet | 0:9cb694f00b7b | 369 | //! to be associated; this address is that to which datagrams are to be |
dflet | 0:9cb694f00b7b | 370 | //! sent, and the only address from which datagrams are to be received. |
dflet | 0:9cb694f00b7b | 371 | //! If the socket is of type SOCK_STREAM, this call attempts to make a |
dflet | 0:9cb694f00b7b | 372 | //! connection to another socket. The other socket is specified by |
dflet | 0:9cb694f00b7b | 373 | //! address, which is an address in the communications space of the |
dflet | 0:9cb694f00b7b | 374 | //! socket. Note that the function implements only blocking behavior |
dflet | 0:9cb694f00b7b | 375 | //! thus the caller will be waiting either for the connection |
dflet | 0:9cb694f00b7b | 376 | //! establishment or for the connection establishment failure. |
dflet | 0:9cb694f00b7b | 377 | //! |
dflet | 0:9cb694f00b7b | 378 | //! @sa socket |
dflet | 0:9cb694f00b7b | 379 | // |
dflet | 0:9cb694f00b7b | 380 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 381 | extern long connect(long sd, const sockaddr *addr, long addrlen); |
dflet | 0:9cb694f00b7b | 382 | |
dflet | 0:9cb694f00b7b | 383 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 384 | // |
dflet | 0:9cb694f00b7b | 385 | //! select |
dflet | 0:9cb694f00b7b | 386 | //! |
dflet | 0:9cb694f00b7b | 387 | //! @param[in] nfds the highest-numbered file descriptor in any of the |
dflet | 0:9cb694f00b7b | 388 | //! three sets, plus 1. |
dflet | 0:9cb694f00b7b | 389 | //! @param[out] writesds socket descriptors list for write monitoring |
dflet | 0:9cb694f00b7b | 390 | //! @param[out] readsds socket descriptors list for read monitoring |
dflet | 0:9cb694f00b7b | 391 | //! @param[out] exceptsds socket descriptors list for exception monitoring |
dflet | 0:9cb694f00b7b | 392 | //! @param[in] timeout is an upper bound on the amount of time elapsed |
dflet | 0:9cb694f00b7b | 393 | //! before select() returns. Null means infinity |
dflet | 0:9cb694f00b7b | 394 | //! timeout. The minimum timeout is 5 milliseconds, |
dflet | 0:9cb694f00b7b | 395 | //! less than 5 milliseconds will be set |
dflet | 0:9cb694f00b7b | 396 | //! automatically to 5 milliseconds. |
dflet | 0:9cb694f00b7b | 397 | //! @return On success, select() returns the number of file descriptors |
dflet | 0:9cb694f00b7b | 398 | //! contained in the three returned descriptor sets (that is, the |
dflet | 0:9cb694f00b7b | 399 | //! total number of bits that are set in readfds, writefds, |
dflet | 0:9cb694f00b7b | 400 | //! exceptfds) which may be zero if the timeout expires before |
dflet | 0:9cb694f00b7b | 401 | //! anything interesting happens. |
dflet | 0:9cb694f00b7b | 402 | //! On error, -1 is returned. |
dflet | 0:9cb694f00b7b | 403 | //! *readsds - return the sockets on which Read request will |
dflet | 0:9cb694f00b7b | 404 | //! return without delay with valid data. |
dflet | 0:9cb694f00b7b | 405 | //! *writesds - return the sockets on which Write request |
dflet | 0:9cb694f00b7b | 406 | //! will return without delay. |
dflet | 0:9cb694f00b7b | 407 | //! *exceptsds - return the sockets which closed recently. |
dflet | 0:9cb694f00b7b | 408 | //! |
dflet | 0:9cb694f00b7b | 409 | //! @brief Monitor socket activity |
dflet | 0:9cb694f00b7b | 410 | //! Select allow a program to monitor multiple file descriptors, |
dflet | 0:9cb694f00b7b | 411 | //! waiting until one or more of the file descriptors become |
dflet | 0:9cb694f00b7b | 412 | //! "ready" for some class of I/O operation |
dflet | 0:9cb694f00b7b | 413 | //! |
dflet | 0:9cb694f00b7b | 414 | //! @Note If the timeout value set to less than 5ms it will automatically set |
dflet | 0:9cb694f00b7b | 415 | //! to 5ms to prevent overload of the system |
dflet | 0:9cb694f00b7b | 416 | //! |
dflet | 0:9cb694f00b7b | 417 | //! @sa socket |
dflet | 0:9cb694f00b7b | 418 | // |
dflet | 0:9cb694f00b7b | 419 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 420 | extern int select(long nfds, fd_set *readsds, fd_set *writesds, |
dflet | 0:9cb694f00b7b | 421 | fd_set *exceptsds, struct timeval *timeout); |
dflet | 0:9cb694f00b7b | 422 | |
dflet | 0:9cb694f00b7b | 423 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 424 | // |
dflet | 0:9cb694f00b7b | 425 | //! setsockopt |
dflet | 0:9cb694f00b7b | 426 | //! |
dflet | 0:9cb694f00b7b | 427 | //! @param[in] sd socket handle |
dflet | 0:9cb694f00b7b | 428 | //! @param[in] level defines the protocol level for this option |
dflet | 0:9cb694f00b7b | 429 | //! @param[in] optname defines the option name to Interrogate |
dflet | 0:9cb694f00b7b | 430 | //! @param[in] optval specifies a value for the option |
dflet | 0:9cb694f00b7b | 431 | //! @param[in] optlen specifies the length of the option value |
dflet | 0:9cb694f00b7b | 432 | //! @return On success, zero is returned. On error, -1 is returned |
dflet | 0:9cb694f00b7b | 433 | //! |
dflet | 0:9cb694f00b7b | 434 | //! @brief set socket options |
dflet | 0:9cb694f00b7b | 435 | //! This function manipulate the options associated with a socket. |
dflet | 0:9cb694f00b7b | 436 | //! Options may exist at multiple protocol levels; they are always |
dflet | 0:9cb694f00b7b | 437 | //! present at the uppermost socket level. |
dflet | 0:9cb694f00b7b | 438 | //! When manipulating socket options the level at which the option |
dflet | 0:9cb694f00b7b | 439 | //! resides and the name of the option must be specified. |
dflet | 0:9cb694f00b7b | 440 | //! To manipulate options at the socket level, level is specified as |
dflet | 0:9cb694f00b7b | 441 | //! SOL_SOCKET. To manipulate options at any other level the protocol |
dflet | 0:9cb694f00b7b | 442 | //! number of the appropriate protocol controlling the option is |
dflet | 0:9cb694f00b7b | 443 | //! supplied. For example, to indicate that an option is to be |
dflet | 0:9cb694f00b7b | 444 | //! interpreted by the TCP protocol, level should be set to the |
dflet | 0:9cb694f00b7b | 445 | //! protocol number of TCP; |
dflet | 0:9cb694f00b7b | 446 | //! The parameters optval and optlen are used to access optval - |
dflet | 0:9cb694f00b7b | 447 | //! use for setsockopt(). For getsockopt() they identify a buffer |
dflet | 0:9cb694f00b7b | 448 | //! in which the value for the requested option(s) are to |
dflet | 0:9cb694f00b7b | 449 | //! be returned. For getsockopt(), optlen is a value-result |
dflet | 0:9cb694f00b7b | 450 | //! parameter, initially containing the size of the buffer |
dflet | 0:9cb694f00b7b | 451 | //! pointed to by option_value, and modified on return to |
dflet | 0:9cb694f00b7b | 452 | //! indicate the actual size of the value returned. If no option |
dflet | 0:9cb694f00b7b | 453 | //! value is to be supplied or returned, option_value may be NULL. |
dflet | 0:9cb694f00b7b | 454 | //! |
dflet | 0:9cb694f00b7b | 455 | //! @Note On this version the following two socket options are enabled: |
dflet | 0:9cb694f00b7b | 456 | //! The only protocol level supported in this version |
dflet | 0:9cb694f00b7b | 457 | //! is SOL_SOCKET (level). |
dflet | 0:9cb694f00b7b | 458 | //! 1. SOCKOPT_RECV_TIMEOUT (optname) |
dflet | 0:9cb694f00b7b | 459 | //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout |
dflet | 0:9cb694f00b7b | 460 | //! in milliseconds. |
dflet | 0:9cb694f00b7b | 461 | //! In that case optval should be pointer to unsigned long. |
dflet | 0:9cb694f00b7b | 462 | //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on |
dflet | 0:9cb694f00b7b | 463 | //! or off. |
dflet | 0:9cb694f00b7b | 464 | //! In that case optval should be SOCK_ON or SOCK_OFF (optval). |
dflet | 0:9cb694f00b7b | 465 | //! |
dflet | 0:9cb694f00b7b | 466 | //! @sa getsockopt |
dflet | 0:9cb694f00b7b | 467 | // |
dflet | 0:9cb694f00b7b | 468 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 469 | #ifndef CC3000_TINY_DRIVER |
dflet | 0:9cb694f00b7b | 470 | extern int setsockopt(long sd, long level, long optname, const void *optval, |
dflet | 0:9cb694f00b7b | 471 | socklen_t optlen); |
dflet | 0:9cb694f00b7b | 472 | #endif |
dflet | 0:9cb694f00b7b | 473 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 474 | // |
dflet | 0:9cb694f00b7b | 475 | //! getsockopt |
dflet | 0:9cb694f00b7b | 476 | //! |
dflet | 0:9cb694f00b7b | 477 | //! @param[in] sd socket handle |
dflet | 0:9cb694f00b7b | 478 | //! @param[in] level defines the protocol level for this option |
dflet | 0:9cb694f00b7b | 479 | //! @param[in] optname defines the option name to Interrogate |
dflet | 0:9cb694f00b7b | 480 | //! @param[out] optval specifies a value for the option |
dflet | 0:9cb694f00b7b | 481 | //! @param[out] optlen specifies the length of the option value |
dflet | 0:9cb694f00b7b | 482 | //! @return On success, zero is returned. On error, -1 is returned |
dflet | 0:9cb694f00b7b | 483 | //! |
dflet | 0:9cb694f00b7b | 484 | //! @brief set socket options |
dflet | 0:9cb694f00b7b | 485 | //! This function manipulate the options associated with a socket. |
dflet | 0:9cb694f00b7b | 486 | //! Options may exist at multiple protocol levels; they are always |
dflet | 0:9cb694f00b7b | 487 | //! present at the uppermost socket level. |
dflet | 0:9cb694f00b7b | 488 | //! When manipulating socket options the level at which the option |
dflet | 0:9cb694f00b7b | 489 | //! resides and the name of the option must be specified. |
dflet | 0:9cb694f00b7b | 490 | //! To manipulate options at the socket level, level is specified as |
dflet | 0:9cb694f00b7b | 491 | //! SOL_SOCKET. To manipulate options at any other level the protocol |
dflet | 0:9cb694f00b7b | 492 | //! number of the appropriate protocol controlling the option is |
dflet | 0:9cb694f00b7b | 493 | //! supplied. For example, to indicate that an option is to be |
dflet | 0:9cb694f00b7b | 494 | //! interpreted by the TCP protocol, level should be set to the |
dflet | 0:9cb694f00b7b | 495 | //! protocol number of TCP; |
dflet | 0:9cb694f00b7b | 496 | //! The parameters optval and optlen are used to access optval - |
dflet | 0:9cb694f00b7b | 497 | //! use for setsockopt(). For getsockopt() they identify a buffer |
dflet | 0:9cb694f00b7b | 498 | //! in which the value for the requested option(s) are to |
dflet | 0:9cb694f00b7b | 499 | //! be returned. For getsockopt(), optlen is a value-result |
dflet | 0:9cb694f00b7b | 500 | //! parameter, initially containing the size of the buffer |
dflet | 0:9cb694f00b7b | 501 | //! pointed to by option_value, and modified on return to |
dflet | 0:9cb694f00b7b | 502 | //! indicate the actual size of the value returned. If no option |
dflet | 0:9cb694f00b7b | 503 | //! value is to be supplied or returned, option_value may be NULL. |
dflet | 0:9cb694f00b7b | 504 | //! |
dflet | 0:9cb694f00b7b | 505 | //! @Note On this version the following two socket options are enabled: |
dflet | 0:9cb694f00b7b | 506 | //! The only protocol level supported in this version |
dflet | 0:9cb694f00b7b | 507 | //! is SOL_SOCKET (level). |
dflet | 0:9cb694f00b7b | 508 | //! 1. SOCKOPT_RECV_TIMEOUT (optname) |
dflet | 0:9cb694f00b7b | 509 | //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout |
dflet | 0:9cb694f00b7b | 510 | //! in milliseconds. |
dflet | 0:9cb694f00b7b | 511 | //! In that case optval should be pointer to unsigned long. |
dflet | 0:9cb694f00b7b | 512 | //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on |
dflet | 0:9cb694f00b7b | 513 | //! or off. |
dflet | 0:9cb694f00b7b | 514 | //! In that case optval should be SOCK_ON or SOCK_OFF (optval). |
dflet | 0:9cb694f00b7b | 515 | //! |
dflet | 0:9cb694f00b7b | 516 | //! @sa setsockopt |
dflet | 0:9cb694f00b7b | 517 | // |
dflet | 0:9cb694f00b7b | 518 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 519 | extern int getsockopt(long sd, long level, long optname, void *optval, |
dflet | 0:9cb694f00b7b | 520 | socklen_t *optlen); |
dflet | 0:9cb694f00b7b | 521 | |
dflet | 0:9cb694f00b7b | 522 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 523 | // |
dflet | 0:9cb694f00b7b | 524 | //! recv |
dflet | 0:9cb694f00b7b | 525 | //! |
dflet | 0:9cb694f00b7b | 526 | //! @param[in] sd socket handle |
dflet | 0:9cb694f00b7b | 527 | //! @param[out] buf Points to the buffer where the message should be stored |
dflet | 0:9cb694f00b7b | 528 | //! @param[in] len Specifies the length in bytes of the buffer pointed to |
dflet | 0:9cb694f00b7b | 529 | //! by the buffer argument. |
dflet | 0:9cb694f00b7b | 530 | //! @param[in] flags Specifies the type of message reception. |
dflet | 0:9cb694f00b7b | 531 | //! On this version, this parameter is not supported. |
dflet | 0:9cb694f00b7b | 532 | //! |
dflet | 0:9cb694f00b7b | 533 | //! @return Return the number of bytes received, or -1 if an error |
dflet | 0:9cb694f00b7b | 534 | //! occurred |
dflet | 0:9cb694f00b7b | 535 | //! |
dflet | 0:9cb694f00b7b | 536 | //! @brief function receives a message from a connection-mode socket |
dflet | 0:9cb694f00b7b | 537 | //! |
dflet | 0:9cb694f00b7b | 538 | //! @sa recvfrom |
dflet | 0:9cb694f00b7b | 539 | //! |
dflet | 0:9cb694f00b7b | 540 | //! @Note On this version, only blocking mode is supported. |
dflet | 0:9cb694f00b7b | 541 | // |
dflet | 0:9cb694f00b7b | 542 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 543 | extern int recv(long sd, unsigned char *buf, long len, long flags); |
dflet | 0:9cb694f00b7b | 544 | |
dflet | 0:9cb694f00b7b | 545 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 546 | // |
dflet | 0:9cb694f00b7b | 547 | //! recvfrom |
dflet | 0:9cb694f00b7b | 548 | //! |
dflet | 0:9cb694f00b7b | 549 | //! @param[in] sd socket handle |
dflet | 0:9cb694f00b7b | 550 | //! @param[out] buf Points to the buffer where the message should be stored |
dflet | 0:9cb694f00b7b | 551 | //! @param[in] len Specifies the length in bytes of the buffer pointed to |
dflet | 0:9cb694f00b7b | 552 | //! by the buffer argument. |
dflet | 0:9cb694f00b7b | 553 | //! @param[in] flags Specifies the type of message reception. |
dflet | 0:9cb694f00b7b | 554 | //! On this version, this parameter is not supported. |
dflet | 0:9cb694f00b7b | 555 | //! @param[in] from pointer to an address structure indicating the source |
dflet | 0:9cb694f00b7b | 556 | //! address: sockaddr. On this version only AF_INET is |
dflet | 0:9cb694f00b7b | 557 | //! supported. |
dflet | 0:9cb694f00b7b | 558 | //! @param[in] fromlen source address structure size |
dflet | 0:9cb694f00b7b | 559 | //! |
dflet | 0:9cb694f00b7b | 560 | //! @return Return the number of bytes received, or -1 if an error |
dflet | 0:9cb694f00b7b | 561 | //! occurred |
dflet | 0:9cb694f00b7b | 562 | //! |
dflet | 0:9cb694f00b7b | 563 | //! @brief read data from socket |
dflet | 0:9cb694f00b7b | 564 | //! function receives a message from a connection-mode or |
dflet | 0:9cb694f00b7b | 565 | //! connectionless-mode socket. Note that raw sockets are not |
dflet | 0:9cb694f00b7b | 566 | //! supported. |
dflet | 0:9cb694f00b7b | 567 | //! |
dflet | 0:9cb694f00b7b | 568 | //! @sa recv |
dflet | 0:9cb694f00b7b | 569 | //! |
dflet | 0:9cb694f00b7b | 570 | //! @Note On this version, only blocking mode is supported. |
dflet | 0:9cb694f00b7b | 571 | // |
dflet | 0:9cb694f00b7b | 572 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 573 | extern int recvfrom(long sd, void *buf, long len, long flags, sockaddr *from, |
dflet | 0:9cb694f00b7b | 574 | socklen_t *fromlen); |
dflet | 0:9cb694f00b7b | 575 | |
dflet | 0:9cb694f00b7b | 576 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 577 | // |
dflet | 0:9cb694f00b7b | 578 | //! send |
dflet | 0:9cb694f00b7b | 579 | //! |
dflet | 0:9cb694f00b7b | 580 | //! @param sd socket handle |
dflet | 0:9cb694f00b7b | 581 | //! @param buf Points to a buffer containing the message to be sent |
dflet | 0:9cb694f00b7b | 582 | //! @param len message size in bytes |
dflet | 0:9cb694f00b7b | 583 | //! @param flags On this version, this parameter is not supported |
dflet | 0:9cb694f00b7b | 584 | //! |
dflet | 0:9cb694f00b7b | 585 | //! @return Return the number of bytes transmitted, or -1 if an |
dflet | 0:9cb694f00b7b | 586 | //! error occurred |
dflet | 0:9cb694f00b7b | 587 | //! |
dflet | 0:9cb694f00b7b | 588 | //! @brief Write data to TCP socket |
dflet | 0:9cb694f00b7b | 589 | //! This function is used to transmit a message to another |
dflet | 0:9cb694f00b7b | 590 | //! socket. |
dflet | 0:9cb694f00b7b | 591 | //! |
dflet | 0:9cb694f00b7b | 592 | //! @Note On this version, only blocking mode is supported. |
dflet | 0:9cb694f00b7b | 593 | //! |
dflet | 0:9cb694f00b7b | 594 | //! @sa sendto |
dflet | 0:9cb694f00b7b | 595 | // |
dflet | 0:9cb694f00b7b | 596 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 597 | |
dflet | 0:9cb694f00b7b | 598 | extern int send(long sd, const void *buf, long len, long flags); |
dflet | 0:9cb694f00b7b | 599 | |
dflet | 0:9cb694f00b7b | 600 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 601 | // |
dflet | 0:9cb694f00b7b | 602 | //! sendto |
dflet | 0:9cb694f00b7b | 603 | //! |
dflet | 0:9cb694f00b7b | 604 | //! @param sd socket handle |
dflet | 0:9cb694f00b7b | 605 | //! @param buf Points to a buffer containing the message to be sent |
dflet | 0:9cb694f00b7b | 606 | //! @param len message size in bytes |
dflet | 0:9cb694f00b7b | 607 | //! @param flags On this version, this parameter is not supported |
dflet | 0:9cb694f00b7b | 608 | //! @param to pointer to an address structure indicating the destination |
dflet | 0:9cb694f00b7b | 609 | //! address: sockaddr. On this version only AF_INET is |
dflet | 0:9cb694f00b7b | 610 | //! supported. |
dflet | 0:9cb694f00b7b | 611 | //! @param tolen destination address structure size |
dflet | 0:9cb694f00b7b | 612 | //! |
dflet | 0:9cb694f00b7b | 613 | //! @return Return the number of bytes transmitted, or -1 if an |
dflet | 0:9cb694f00b7b | 614 | //! error occurred |
dflet | 0:9cb694f00b7b | 615 | //! |
dflet | 0:9cb694f00b7b | 616 | //! @brief Write data to TCP socket |
dflet | 0:9cb694f00b7b | 617 | //! This function is used to transmit a message to another |
dflet | 0:9cb694f00b7b | 618 | //! socket. |
dflet | 0:9cb694f00b7b | 619 | //! |
dflet | 0:9cb694f00b7b | 620 | //! @Note On this version, only blocking mode is supported. |
dflet | 0:9cb694f00b7b | 621 | //! |
dflet | 0:9cb694f00b7b | 622 | //! @sa send |
dflet | 0:9cb694f00b7b | 623 | // |
dflet | 0:9cb694f00b7b | 624 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 625 | |
dflet | 0:9cb694f00b7b | 626 | extern int sendto(long sd, const void *buf, long len, long flags, |
dflet | 0:9cb694f00b7b | 627 | const sockaddr *to, socklen_t tolen); |
dflet | 0:9cb694f00b7b | 628 | |
dflet | 0:9cb694f00b7b | 629 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 630 | // |
dflet | 0:9cb694f00b7b | 631 | //! mdnsAdvertiser |
dflet | 0:9cb694f00b7b | 632 | //! |
dflet | 0:9cb694f00b7b | 633 | //! @param[in] mdnsEnabled flag to enable/disable the mDNS feature |
dflet | 0:9cb694f00b7b | 634 | //! @param[in] deviceServiceName Service name as part of the published |
dflet | 0:9cb694f00b7b | 635 | //! canonical domain name |
dflet | 0:9cb694f00b7b | 636 | //! @param[in] deviceServiceNameLength Length of the service name |
dflet | 0:9cb694f00b7b | 637 | //! |
dflet | 0:9cb694f00b7b | 638 | //! |
dflet | 0:9cb694f00b7b | 639 | //! @return On success, zero is returned, return SOC_ERROR if socket was not |
dflet | 0:9cb694f00b7b | 640 | //! opened successfully, or if an error occurred. |
dflet | 0:9cb694f00b7b | 641 | //! |
dflet | 0:9cb694f00b7b | 642 | //! @brief Set CC3000 in mDNS advertiser mode in order to advertise itself. |
dflet | 0:9cb694f00b7b | 643 | // |
dflet | 0:9cb694f00b7b | 644 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 645 | extern int mdnsAdvertiser(unsigned short mdnsEnabled, char * deviceServiceName, unsigned short deviceServiceNameLength); |
dflet | 0:9cb694f00b7b | 646 | |
dflet | 0:9cb694f00b7b | 647 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 648 | // |
dflet | 0:9cb694f00b7b | 649 | // Close the Doxygen group. |
dflet | 0:9cb694f00b7b | 650 | //! @} |
dflet | 0:9cb694f00b7b | 651 | // |
dflet | 0:9cb694f00b7b | 652 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 653 | |
dflet | 0:9cb694f00b7b | 654 | |
dflet | 0:9cb694f00b7b | 655 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 656 | // |
dflet | 0:9cb694f00b7b | 657 | // Mark the end of the C bindings section for C++ compilers. |
dflet | 0:9cb694f00b7b | 658 | // |
dflet | 0:9cb694f00b7b | 659 | //***************************************************************************** |
dflet | 0:9cb694f00b7b | 660 | #ifdef __cplusplus |
dflet | 0:9cb694f00b7b | 661 | } |
dflet | 0:9cb694f00b7b | 662 | #endif // __cplusplus |
dflet | 0:9cb694f00b7b | 663 | |
dflet | 0:9cb694f00b7b | 664 | #endif // __SOCKET_H__ |
dflet | 0:9cb694f00b7b | 665 |