CC3000HostDriver for device TI CC3000 some changes were made due to mbed compiler and the use of void*
Embed:
(wiki syntax)
Show/hide line numbers
socket.h
00001 /***************************************************************************** 00002 * 00003 * socket.h - CC3000 Host Driver Implementation. 00004 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions 00008 * are met: 00009 * 00010 * Redistributions of source code must retain the above copyright 00011 * notice, this list of conditions and the following disclaimer. 00012 * 00013 * Redistributions in binary form must reproduce the above copyright 00014 * notice, this list of conditions and the following disclaimer in the 00015 * documentation and/or other materials provided with the 00016 * distribution. 00017 * 00018 * Neither the name of Texas Instruments Incorporated nor the names of 00019 * its contributors may be used to endorse or promote products derived 00020 * from this software without specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00023 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00025 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 00026 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00027 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00028 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00029 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00030 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00031 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00032 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 * 00034 *****************************************************************************/ 00035 #ifndef __SOCKET_H__ 00036 #define __SOCKET_H__ 00037 00038 00039 //***************************************************************************** 00040 // 00041 //! \addtogroup socket_api 00042 //! @{ 00043 // 00044 //***************************************************************************** 00045 00046 00047 //***************************************************************************** 00048 // 00049 // If building with a C++ compiler, make all of the definitions in this header 00050 // have a C binding. 00051 // 00052 //***************************************************************************** 00053 #ifdef __cplusplus 00054 extern "C" { 00055 #endif 00056 00057 #define HOSTNAME_MAX_LENGTH (230) // 230 bytes + header shouldn't exceed 8 bit value 00058 00059 //--------- Address Families -------- 00060 00061 #define AF_INET 2 00062 #define AF_INET6 23 00063 00064 //------------ Socket Types ------------ 00065 00066 #define SOCK_STREAM 1 00067 #define SOCK_DGRAM 2 00068 #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 00069 #define SOCK_RDM 4 00070 #define SOCK_SEQPACKET 5 00071 00072 //----------- Socket Protocol ---------- 00073 00074 #define IPPROTO_IP 0 // dummy for IP 00075 #define IPPROTO_ICMP 1 // control message protocol 00076 #define IPPROTO_IPV4 IPPROTO_IP // IP inside IP 00077 #define IPPROTO_TCP 6 // tcp 00078 #define IPPROTO_UDP 17 // user datagram protocol 00079 #define IPPROTO_IPV6 41 // IPv6 in IPv6 00080 #define IPPROTO_NONE 59 // No next header 00081 #define IPPROTO_RAW 255 // raw IP packet 00082 #define IPPROTO_MAX 256 00083 00084 //----------- Socket retunr codes ----------- 00085 00086 #define SOC_ERROR (-1) // error 00087 #define SOC_IN_PROGRESS (-2) // socket in progress 00088 00089 //----------- Socket Options ----------- 00090 #define SOL_SOCKET 0xffff // socket level 00091 #define SOCKOPT_RECV_NONBLOCK 0 // recv non block mode, set SOCK_ON or SOCK_OFF (default block mode) 00092 #define SOCKOPT_RECV_TIMEOUT 1 // optname to configure recv and recvfromtimeout 00093 #define SOCKOPT_ACCEPT_NONBLOCK 2 // accept non block mode, set SOCK_ON or SOCK_OFF (default block mode) 00094 #define SOCK_ON 0 // socket non-blocking mode is enabled 00095 #define SOCK_OFF 1 // socket blocking mode is enabled 00096 00097 #define TCP_NODELAY 0x0001 00098 #define TCP_BSDURGENT 0x7000 00099 00100 #define MAX_PACKET_SIZE 1500 00101 #define MAX_LISTEN_QUEUE 4 00102 00103 #define IOCTL_SOCKET_EVENTMASK 00104 00105 #define ENOBUFS 55 // No buffer space available 00106 00107 #define __FD_SETSIZE 32 00108 00109 #define ASIC_ADDR_LEN 8 00110 00111 #define NO_QUERY_RECIVED -3 00112 00113 00114 typedef struct _in_addr_t 00115 { 00116 unsigned long s_addr; // load with inet_aton() 00117 } in_addr; 00118 00119 typedef struct _sockaddr_t 00120 { 00121 unsigned short int sa_family; 00122 unsigned char sa_data[14]; 00123 } sockaddr; 00124 00125 typedef struct _sockaddr_in_t 00126 { 00127 short sin_family; // e.g. AF_INET 00128 unsigned short sin_port; // e.g. htons(3490) 00129 in_addr sin_addr; // see struct in_addr, below 00130 char sin_zero[8]; // zero this if you want to 00131 } sockaddr_in; 00132 00133 typedef unsigned long socklen_t; 00134 00135 // The fd_set member is required to be an array of longs. 00136 typedef long int __fd_mask; 00137 00138 // It's easier to assume 8-bit bytes than to get CHAR_BIT. 00139 #define __NFDBITS (8 * sizeof (__fd_mask)) 00140 #define __FDELT(d) ((d) / __NFDBITS) 00141 #define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS)) 00142 00143 // fd_set for select and pselect. 00144 typedef struct 00145 { 00146 __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; 00147 #define __FDS_BITS(set) ((set)->fds_bits) 00148 } fd_set; 00149 00150 // We don't use `memset' because this would require a prototype and 00151 // the array isn't too big. 00152 #define __FD_ZERO(set) \ 00153 do { \ 00154 unsigned int __i; \ 00155 fd_set *__arr = (set); \ 00156 for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ 00157 __FDS_BITS (__arr)[__i] = 0; \ 00158 } while (0) 00159 #define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) 00160 #define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d)) 00161 #define __FD_ISSET(d, set) (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) 00162 00163 // Access macros for 'fd_set'. 00164 #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp) 00165 #define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp) 00166 #define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp) 00167 #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) 00168 00169 //Use in case of Big Endian only 00170 00171 #define htonl(A) ((((unsigned long)(A) & 0xff000000) >> 24) | \ 00172 (((unsigned long)(A) & 0x00ff0000) >> 8) | \ 00173 (((unsigned long)(A) & 0x0000ff00) << 8) | \ 00174 (((unsigned long)(A) & 0x000000ff) << 24)) 00175 00176 #define ntohl htonl 00177 00178 //Use in case of Big Endian only 00179 #define htons(A) ((((unsigned long)(A) & 0xff00) >> 8) | \ 00180 (((unsigned long)(A) & 0x00ff) << 8)) 00181 00182 00183 #define ntohs htons 00184 00185 // mDNS port - 5353 mDNS multicast address - 224.0.0.251 00186 #define SET_mDNS_ADD(sockaddr) sockaddr.sa_data[0] = 0x14; \ 00187 sockaddr.sa_data[1] = 0xe9; \ 00188 sockaddr.sa_data[2] = 0xe0; \ 00189 sockaddr.sa_data[3] = 0x0; \ 00190 sockaddr.sa_data[4] = 0x0; \ 00191 sockaddr.sa_data[5] = 0xfb; 00192 00193 00194 //***************************************************************************** 00195 // 00196 // Prototypes for the APIs. 00197 // 00198 //***************************************************************************** 00199 00200 //***************************************************************************** 00201 // 00202 //! socket 00203 //! 00204 //! @param domain selects the protocol family which will be used for 00205 //! communication. On this version only AF_INET is supported 00206 //! @param type specifies the communication semantics. On this version 00207 //! only SOCK_STREAM, SOCK_DGRAM, SOCK_RAW are supported 00208 //! @param protocol specifies a particular protocol to be used with the 00209 //! socket IPPROTO_TCP, IPPROTO_UDP or IPPROTO_RAW are 00210 //! supported. 00211 //! 00212 //! @return On success, socket handle that is used for consequent socket 00213 //! operations. On error, -1 is returned. 00214 //! 00215 //! @brief create an endpoint for communication 00216 //! The socket function creates a socket that is bound to a specific 00217 //! transport service provider. This function is called by the 00218 //! application layer to obtain a socket handle. 00219 // 00220 //***************************************************************************** 00221 extern int socket(long domain, long type, long protocol); 00222 00223 //***************************************************************************** 00224 // 00225 //! closesocket 00226 //! 00227 //! @param sd socket handle. 00228 //! 00229 //! @return On success, zero is returned. On error, -1 is returned. 00230 //! 00231 //! @brief The socket function closes a created socket. 00232 // 00233 //***************************************************************************** 00234 extern long closesocket(long sd); 00235 00236 //***************************************************************************** 00237 // 00238 //! accept 00239 //! 00240 //! @param[in] sd socket descriptor (handle) 00241 //! @param[out] addr the argument addr is a pointer to a sockaddr structure 00242 //! This structure is filled in with the address of the 00243 //! peer socket, as known to the communications layer. 00244 //! determined. The exact format of the address returned 00245 //! addr is by the socket's address sockaddr. 00246 //! On this version only AF_INET is supported. 00247 //! This argument returns in network order. 00248 //! @param[out] addrlen the addrlen argument is a value-result argument: 00249 //! it should initially contain the size of the structure 00250 //! pointed to by addr. 00251 //! 00252 //! @return For socket in blocking mode: 00253 //! On success, socket handle. on failure negative 00254 //! For socket in non-blocking mode: 00255 //! - On connection establishment, socket handle 00256 //! - On connection pending, SOC_IN_PROGRESS (-2) 00257 //! - On failure, SOC_ERROR (-1) 00258 //! 00259 //! @brief accept a connection on a socket: 00260 //! This function is used with connection-based socket types 00261 //! (SOCK_STREAM). It extracts the first connection request on the 00262 //! queue of pending connections, creates a new connected socket, and 00263 //! returns a new file descriptor referring to that socket. 00264 //! The newly created socket is not in the listening state. 00265 //! The original socket sd is unaffected by this call. 00266 //! The argument sd is a socket that has been created with socket(), 00267 //! bound to a local address with bind(), and is listening for 00268 //! connections after a listen(). The argument addr is a pointer 00269 //! to a sockaddr structure. This structure is filled in with the 00270 //! address of the peer socket, as known to the communications layer. 00271 //! The exact format of the address returned addr is determined by the 00272 //! socket's address family. The addrlen argument is a value-result 00273 //! argument: it should initially contain the size of the structure 00274 //! pointed to by addr, on return it will contain the actual 00275 //! length (in bytes) of the address returned. 00276 //! 00277 //! @sa socket ; bind ; listen 00278 // 00279 //***************************************************************************** 00280 extern long accept(long sd, sockaddr *addr, socklen_t *addrlen); 00281 00282 //***************************************************************************** 00283 // 00284 //! bind 00285 //! 00286 //! @param[in] sd socket descriptor (handle) 00287 //! @param[out] addr specifies the destination address. On this version 00288 //! only AF_INET is supported. 00289 //! @param[out] addrlen contains the size of the structure pointed to by addr. 00290 //! 00291 //! @return On success, zero is returned. On error, -1 is returned. 00292 //! 00293 //! @brief assign a name to a socket 00294 //! This function gives the socket the local address addr. 00295 //! addr is addrlen bytes long. Traditionally, this is called when a 00296 //! socket is created with socket, it exists in a name space (address 00297 //! family) but has no name assigned. 00298 //! It is necessary to assign a local address before a SOCK_STREAM 00299 //! socket may receive connections. 00300 //! 00301 //! @sa socket ; accept ; listen 00302 // 00303 //***************************************************************************** 00304 extern long bind(long sd, const sockaddr *addr, long addrlen); 00305 00306 //***************************************************************************** 00307 // 00308 //! listen 00309 //! 00310 //! @param[in] sd socket descriptor (handle) 00311 //! @param[in] backlog specifies the listen queue depth. On this version 00312 //! backlog is not supported. 00313 //! @return On success, zero is returned. On error, -1 is returned. 00314 //! 00315 //! @brief listen for connections on a socket 00316 //! The willingness to accept incoming connections and a queue 00317 //! limit for incoming connections are specified with listen(), 00318 //! and then the connections are accepted with accept. 00319 //! The listen() call applies only to sockets of type SOCK_STREAM 00320 //! The backlog parameter defines the maximum length the queue of 00321 //! pending connections may grow to. 00322 //! 00323 //! @sa socket ; accept ; bind 00324 //! 00325 //! @note On this version, backlog is not supported 00326 // 00327 //***************************************************************************** 00328 extern long listen(long sd, long backlog); 00329 00330 //***************************************************************************** 00331 // 00332 //! gethostbyname 00333 //! 00334 //! @param[in] hostname host name 00335 //! @param[in] usNameLen name length 00336 //! @param[out] out_ip_addr This parameter is filled in with host IP address. 00337 //! In case that host name is not resolved, 00338 //! out_ip_addr is zero. 00339 //! @return On success, positive is returned. On error, negative is returned 00340 //! 00341 //! @brief Get host IP by name. Obtain the IP Address of machine on network, 00342 //! by its name. 00343 //! 00344 //! @note On this version, only blocking mode is supported. Also note that 00345 //! the function requires DNS server to be configured prior to its usage. 00346 // 00347 //***************************************************************************** 00348 #ifndef CC3000_TINY_DRIVER 00349 extern int gethostbyname(char * hostname, unsigned short usNameLen, unsigned long* out_ip_addr); 00350 #endif 00351 00352 00353 //***************************************************************************** 00354 // 00355 //! connect 00356 //! 00357 //! @param[in] sd socket descriptor (handle) 00358 //! @param[in] addr specifies the destination addr. On this version 00359 //! only AF_INET is supported. 00360 //! @param[out] addrlen contains the size of the structure pointed to by addr 00361 //! @return On success, zero is returned. On error, -1 is returned 00362 //! 00363 //! @brief initiate a connection on a socket 00364 //! Function connects the socket referred to by the socket descriptor 00365 //! sd, to the address specified by addr. The addrlen argument 00366 //! specifies the size of addr. The format of the address in addr is 00367 //! determined by the address space of the socket. If it is of type 00368 //! SOCK_DGRAM, this call specifies the peer with which the socket is 00369 //! to be associated; this address is that to which datagrams are to be 00370 //! sent, and the only address from which datagrams are to be received. 00371 //! If the socket is of type SOCK_STREAM, this call attempts to make a 00372 //! connection to another socket. The other socket is specified by 00373 //! address, which is an address in the communications space of the 00374 //! socket. Note that the function implements only blocking behavior 00375 //! thus the caller will be waiting either for the connection 00376 //! establishment or for the connection establishment failure. 00377 //! 00378 //! @sa socket 00379 // 00380 //***************************************************************************** 00381 extern long connect(long sd, const sockaddr *addr, long addrlen); 00382 00383 //***************************************************************************** 00384 // 00385 //! select 00386 //! 00387 //! @param[in] nfds the highest-numbered file descriptor in any of the 00388 //! three sets, plus 1. 00389 //! @param[out] writesds socket descriptors list for write monitoring 00390 //! @param[out] readsds socket descriptors list for read monitoring 00391 //! @param[out] exceptsds socket descriptors list for exception monitoring 00392 //! @param[in] timeout is an upper bound on the amount of time elapsed 00393 //! before select() returns. Null means infinity 00394 //! timeout. The minimum timeout is 5 milliseconds, 00395 //! less than 5 milliseconds will be set 00396 //! automatically to 5 milliseconds. 00397 //! @return On success, select() returns the number of file descriptors 00398 //! contained in the three returned descriptor sets (that is, the 00399 //! total number of bits that are set in readfds, writefds, 00400 //! exceptfds) which may be zero if the timeout expires before 00401 //! anything interesting happens. 00402 //! On error, -1 is returned. 00403 //! *readsds - return the sockets on which Read request will 00404 //! return without delay with valid data. 00405 //! *writesds - return the sockets on which Write request 00406 //! will return without delay. 00407 //! *exceptsds - return the sockets which closed recently. 00408 //! 00409 //! @brief Monitor socket activity 00410 //! Select allow a program to monitor multiple file descriptors, 00411 //! waiting until one or more of the file descriptors become 00412 //! "ready" for some class of I/O operation 00413 //! 00414 //! @Note If the timeout value set to less than 5ms it will automatically set 00415 //! to 5ms to prevent overload of the system 00416 //! 00417 //! @sa socket 00418 // 00419 //***************************************************************************** 00420 extern int select(long nfds, fd_set *readsds, fd_set *writesds, 00421 fd_set *exceptsds, struct timeval *timeout); 00422 00423 //***************************************************************************** 00424 // 00425 //! setsockopt 00426 //! 00427 //! @param[in] sd socket handle 00428 //! @param[in] level defines the protocol level for this option 00429 //! @param[in] optname defines the option name to Interrogate 00430 //! @param[in] optval specifies a value for the option 00431 //! @param[in] optlen specifies the length of the option value 00432 //! @return On success, zero is returned. On error, -1 is returned 00433 //! 00434 //! @brief set socket options 00435 //! This function manipulate the options associated with a socket. 00436 //! Options may exist at multiple protocol levels; they are always 00437 //! present at the uppermost socket level. 00438 //! When manipulating socket options the level at which the option 00439 //! resides and the name of the option must be specified. 00440 //! To manipulate options at the socket level, level is specified as 00441 //! SOL_SOCKET. To manipulate options at any other level the protocol 00442 //! number of the appropriate protocol controlling the option is 00443 //! supplied. For example, to indicate that an option is to be 00444 //! interpreted by the TCP protocol, level should be set to the 00445 //! protocol number of TCP; 00446 //! The parameters optval and optlen are used to access optval - 00447 //! use for setsockopt(). For getsockopt() they identify a buffer 00448 //! in which the value for the requested option(s) are to 00449 //! be returned. For getsockopt(), optlen is a value-result 00450 //! parameter, initially containing the size of the buffer 00451 //! pointed to by option_value, and modified on return to 00452 //! indicate the actual size of the value returned. If no option 00453 //! value is to be supplied or returned, option_value may be NULL. 00454 //! 00455 //! @Note On this version the following two socket options are enabled: 00456 //! The only protocol level supported in this version 00457 //! is SOL_SOCKET (level). 00458 //! 1. SOCKOPT_RECV_TIMEOUT (optname) 00459 //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout 00460 //! in milliseconds. 00461 //! In that case optval should be pointer to unsigned long. 00462 //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on 00463 //! or off. 00464 //! In that case optval should be SOCK_ON or SOCK_OFF (optval). 00465 //! 00466 //! @sa getsockopt 00467 // 00468 //***************************************************************************** 00469 #ifndef CC3000_TINY_DRIVER 00470 extern int setsockopt(long sd, long level, long optname, const void *optval, 00471 socklen_t optlen); 00472 #endif 00473 //***************************************************************************** 00474 // 00475 //! getsockopt 00476 //! 00477 //! @param[in] sd socket handle 00478 //! @param[in] level defines the protocol level for this option 00479 //! @param[in] optname defines the option name to Interrogate 00480 //! @param[out] optval specifies a value for the option 00481 //! @param[out] optlen specifies the length of the option value 00482 //! @return On success, zero is returned. On error, -1 is returned 00483 //! 00484 //! @brief set socket options 00485 //! This function manipulate the options associated with a socket. 00486 //! Options may exist at multiple protocol levels; they are always 00487 //! present at the uppermost socket level. 00488 //! When manipulating socket options the level at which the option 00489 //! resides and the name of the option must be specified. 00490 //! To manipulate options at the socket level, level is specified as 00491 //! SOL_SOCKET. To manipulate options at any other level the protocol 00492 //! number of the appropriate protocol controlling the option is 00493 //! supplied. For example, to indicate that an option is to be 00494 //! interpreted by the TCP protocol, level should be set to the 00495 //! protocol number of TCP; 00496 //! The parameters optval and optlen are used to access optval - 00497 //! use for setsockopt(). For getsockopt() they identify a buffer 00498 //! in which the value for the requested option(s) are to 00499 //! be returned. For getsockopt(), optlen is a value-result 00500 //! parameter, initially containing the size of the buffer 00501 //! pointed to by option_value, and modified on return to 00502 //! indicate the actual size of the value returned. If no option 00503 //! value is to be supplied or returned, option_value may be NULL. 00504 //! 00505 //! @Note On this version the following two socket options are enabled: 00506 //! The only protocol level supported in this version 00507 //! is SOL_SOCKET (level). 00508 //! 1. SOCKOPT_RECV_TIMEOUT (optname) 00509 //! SOCKOPT_RECV_TIMEOUT configures recv and recvfrom timeout 00510 //! in milliseconds. 00511 //! In that case optval should be pointer to unsigned long. 00512 //! 2. SOCKOPT_NONBLOCK (optname). sets the socket non-blocking mode on 00513 //! or off. 00514 //! In that case optval should be SOCK_ON or SOCK_OFF (optval). 00515 //! 00516 //! @sa setsockopt 00517 // 00518 //***************************************************************************** 00519 extern int getsockopt(long sd, long level, long optname, void *optval, 00520 socklen_t *optlen); 00521 00522 //***************************************************************************** 00523 // 00524 //! recv 00525 //! 00526 //! @param[in] sd socket handle 00527 //! @param[out] buf Points to the buffer where the message should be stored 00528 //! @param[in] len Specifies the length in bytes of the buffer pointed to 00529 //! by the buffer argument. 00530 //! @param[in] flags Specifies the type of message reception. 00531 //! On this version, this parameter is not supported. 00532 //! 00533 //! @return Return the number of bytes received, or -1 if an error 00534 //! occurred 00535 //! 00536 //! @brief function receives a message from a connection-mode socket 00537 //! 00538 //! @sa recvfrom 00539 //! 00540 //! @Note On this version, only blocking mode is supported. 00541 // 00542 //***************************************************************************** 00543 extern int recv(long sd, unsigned char *buf, long len, long flags); 00544 00545 //***************************************************************************** 00546 // 00547 //! recvfrom 00548 //! 00549 //! @param[in] sd socket handle 00550 //! @param[out] buf Points to the buffer where the message should be stored 00551 //! @param[in] len Specifies the length in bytes of the buffer pointed to 00552 //! by the buffer argument. 00553 //! @param[in] flags Specifies the type of message reception. 00554 //! On this version, this parameter is not supported. 00555 //! @param[in] from pointer to an address structure indicating the source 00556 //! address: sockaddr. On this version only AF_INET is 00557 //! supported. 00558 //! @param[in] fromlen source address structure size 00559 //! 00560 //! @return Return the number of bytes received, or -1 if an error 00561 //! occurred 00562 //! 00563 //! @brief read data from socket 00564 //! function receives a message from a connection-mode or 00565 //! connectionless-mode socket. Note that raw sockets are not 00566 //! supported. 00567 //! 00568 //! @sa recv 00569 //! 00570 //! @Note On this version, only blocking mode is supported. 00571 // 00572 //***************************************************************************** 00573 extern int recvfrom(long sd, void *buf, long len, long flags, sockaddr *from, 00574 socklen_t *fromlen); 00575 00576 //***************************************************************************** 00577 // 00578 //! send 00579 //! 00580 //! @param sd socket handle 00581 //! @param buf Points to a buffer containing the message to be sent 00582 //! @param len message size in bytes 00583 //! @param flags On this version, this parameter is not supported 00584 //! 00585 //! @return Return the number of bytes transmitted, or -1 if an 00586 //! error occurred 00587 //! 00588 //! @brief Write data to TCP socket 00589 //! This function is used to transmit a message to another 00590 //! socket. 00591 //! 00592 //! @Note On this version, only blocking mode is supported. 00593 //! 00594 //! @sa sendto 00595 // 00596 //***************************************************************************** 00597 00598 extern int send(long sd, const void *buf, long len, long flags); 00599 00600 //***************************************************************************** 00601 // 00602 //! sendto 00603 //! 00604 //! @param sd socket handle 00605 //! @param buf Points to a buffer containing the message to be sent 00606 //! @param len message size in bytes 00607 //! @param flags On this version, this parameter is not supported 00608 //! @param to pointer to an address structure indicating the destination 00609 //! address: sockaddr. On this version only AF_INET is 00610 //! supported. 00611 //! @param tolen destination address structure size 00612 //! 00613 //! @return Return the number of bytes transmitted, or -1 if an 00614 //! error occurred 00615 //! 00616 //! @brief Write data to TCP socket 00617 //! This function is used to transmit a message to another 00618 //! socket. 00619 //! 00620 //! @Note On this version, only blocking mode is supported. 00621 //! 00622 //! @sa send 00623 // 00624 //***************************************************************************** 00625 00626 extern int sendto(long sd, const void *buf, long len, long flags, 00627 const sockaddr *to, socklen_t tolen); 00628 00629 //***************************************************************************** 00630 // 00631 //! mdnsAdvertiser 00632 //! 00633 //! @param[in] mdnsEnabled flag to enable/disable the mDNS feature 00634 //! @param[in] deviceServiceName Service name as part of the published 00635 //! canonical domain name 00636 //! @param[in] deviceServiceNameLength Length of the service name 00637 //! 00638 //! 00639 //! @return On success, zero is returned, return SOC_ERROR if socket was not 00640 //! opened successfully, or if an error occurred. 00641 //! 00642 //! @brief Set CC3000 in mDNS advertiser mode in order to advertise itself. 00643 // 00644 //***************************************************************************** 00645 extern int mdnsAdvertiser(unsigned short mdnsEnabled, char * deviceServiceName, unsigned short deviceServiceNameLength); 00646 00647 //***************************************************************************** 00648 // 00649 // Close the Doxygen group. 00650 //! @} 00651 // 00652 //***************************************************************************** 00653 00654 00655 //***************************************************************************** 00656 // 00657 // Mark the end of the C bindings section for C++ compilers. 00658 // 00659 //***************************************************************************** 00660 #ifdef __cplusplus 00661 } 00662 #endif // __cplusplus 00663 00664 #endif // __SOCKET_H__ 00665
Generated on Tue Jul 12 2022 19:26:44 by 1.7.2