CC3000HostDriver for device TI CC3000 some changes were made due to mbed compiler and the use of void*

Dependents:   CC3000Test

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?

UserRevisionLine numberNew 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