WIFI_API_20150524e

Committer:
Marcomissyou
Date:
Tue Jun 09 06:04:13 2015 +0000
Revision:
0:a2de37bf5f3d
update to WIFI_API_20150524e

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marcomissyou 0:a2de37bf5f3d 1 /* Copyright (C) 2012 mbed.org, MIT License
Marcomissyou 0:a2de37bf5f3d 2 *
Marcomissyou 0:a2de37bf5f3d 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
Marcomissyou 0:a2de37bf5f3d 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
Marcomissyou 0:a2de37bf5f3d 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
Marcomissyou 0:a2de37bf5f3d 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
Marcomissyou 0:a2de37bf5f3d 7 * furnished to do so, subject to the following conditions:
Marcomissyou 0:a2de37bf5f3d 8 *
Marcomissyou 0:a2de37bf5f3d 9 * The above copyright notice and this permission notice shall be included in all copies or
Marcomissyou 0:a2de37bf5f3d 10 * substantial portions of the Software.
Marcomissyou 0:a2de37bf5f3d 11 *
Marcomissyou 0:a2de37bf5f3d 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
Marcomissyou 0:a2de37bf5f3d 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Marcomissyou 0:a2de37bf5f3d 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
Marcomissyou 0:a2de37bf5f3d 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Marcomissyou 0:a2de37bf5f3d 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Marcomissyou 0:a2de37bf5f3d 17 */
Marcomissyou 0:a2de37bf5f3d 18 #ifndef SOCKET_H_
Marcomissyou 0:a2de37bf5f3d 19 #define SOCKET_H_
Marcomissyou 0:a2de37bf5f3d 20
Marcomissyou 0:a2de37bf5f3d 21 //#include "lwip/sockets.h"
Marcomissyou 0:a2de37bf5f3d 22 //#include "lwip/netdb.h"
Marcomissyou 0:a2de37bf5f3d 23
Marcomissyou 0:a2de37bf5f3d 24 //following are added by Tsungta
Marcomissyou 0:a2de37bf5f3d 25 #include <stddef.h> /* for size_t */
Marcomissyou 0:a2de37bf5f3d 26 #include "stdint.h"
Marcomissyou 0:a2de37bf5f3d 27 #define socklen_t uint32_t
Marcomissyou 0:a2de37bf5f3d 28 //Tsungta
Marcomissyou 0:a2de37bf5f3d 29
Marcomissyou 0:a2de37bf5f3d 30 struct timeval {
Marcomissyou 0:a2de37bf5f3d 31 long tv_sec; /* seconds */
Marcomissyou 0:a2de37bf5f3d 32 long tv_usec; /* and microseconds */
Marcomissyou 0:a2de37bf5f3d 33 };
Marcomissyou 0:a2de37bf5f3d 34
Marcomissyou 0:a2de37bf5f3d 35 //DNS
Marcomissyou 0:a2de37bf5f3d 36 inline struct hostent *gethostbyname(const char *name) {
Marcomissyou 0:a2de37bf5f3d 37 // return lwip_gethostbyname(name);
Marcomissyou 0:a2de37bf5f3d 38 return 0;
Marcomissyou 0:a2de37bf5f3d 39 }
Marcomissyou 0:a2de37bf5f3d 40
Marcomissyou 0:a2de37bf5f3d 41 inline int gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop) {
Marcomissyou 0:a2de37bf5f3d 42 // return lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop);
Marcomissyou 0:a2de37bf5f3d 43 return 0;
Marcomissyou 0:a2de37bf5f3d 44
Marcomissyou 0:a2de37bf5f3d 45 }
Marcomissyou 0:a2de37bf5f3d 46
Marcomissyou 0:a2de37bf5f3d 47 class TimeInterval;
Marcomissyou 0:a2de37bf5f3d 48
Marcomissyou 0:a2de37bf5f3d 49 /** Socket file descriptor and select wrapper
Marcomissyou 0:a2de37bf5f3d 50 */
Marcomissyou 0:a2de37bf5f3d 51 class Socket {
Marcomissyou 0:a2de37bf5f3d 52 public:
Marcomissyou 0:a2de37bf5f3d 53 /** Socket
Marcomissyou 0:a2de37bf5f3d 54 */
Marcomissyou 0:a2de37bf5f3d 55 Socket();
Marcomissyou 0:a2de37bf5f3d 56
Marcomissyou 0:a2de37bf5f3d 57 /** Set blocking or non-blocking mode of the socket and a timeout on
Marcomissyou 0:a2de37bf5f3d 58 blocking socket operations
Marcomissyou 0:a2de37bf5f3d 59 \param blocking true for blocking mode, false for non-blocking mode.
Marcomissyou 0:a2de37bf5f3d 60 \param timeout timeout in ms [Default: (1500)ms].
Marcomissyou 0:a2de37bf5f3d 61 */
Marcomissyou 0:a2de37bf5f3d 62 void set_blocking(bool blocking, unsigned int timeout=1500);
Marcomissyou 0:a2de37bf5f3d 63
Marcomissyou 0:a2de37bf5f3d 64 // /** Set socket options
Marcomissyou 0:a2de37bf5f3d 65 // \param level stack level (see: lwip/sockets.h)
Marcomissyou 0:a2de37bf5f3d 66 // \param optname option ID
Marcomissyou 0:a2de37bf5f3d 67 // \param optval option value
Marcomissyou 0:a2de37bf5f3d 68 // \param socklen_t length of the option value
Marcomissyou 0:a2de37bf5f3d 69 // \return 0 on success, -1 on failure
Marcomissyou 0:a2de37bf5f3d 70 // */
Marcomissyou 0:a2de37bf5f3d 71 // int set_option(int level, int optname, const void *optval, socklen_t optlen);
Marcomissyou 0:a2de37bf5f3d 72 //
Marcomissyou 0:a2de37bf5f3d 73 // /** Get socket options
Marcomissyou 0:a2de37bf5f3d 74 // \param level stack level (see: lwip/sockets.h)
Marcomissyou 0:a2de37bf5f3d 75 // \param optname option ID
Marcomissyou 0:a2de37bf5f3d 76 // \param optval buffer pointer where to write the option value
Marcomissyou 0:a2de37bf5f3d 77 // \param socklen_t length of the option value
Marcomissyou 0:a2de37bf5f3d 78 // \return 0 on success, -1 on failure
Marcomissyou 0:a2de37bf5f3d 79 // */
Marcomissyou 0:a2de37bf5f3d 80 // int get_option(int level, int optname, void *optval, socklen_t *optlen);
Marcomissyou 0:a2de37bf5f3d 81
Marcomissyou 0:a2de37bf5f3d 82 /** Close the socket
Marcomissyou 0:a2de37bf5f3d 83 \param shutdown free the left-over data in message queues
Marcomissyou 0:a2de37bf5f3d 84 */
Marcomissyou 0:a2de37bf5f3d 85 int close(bool shutdown=true);
Marcomissyou 0:a2de37bf5f3d 86
Marcomissyou 0:a2de37bf5f3d 87 ~Socket();
Marcomissyou 0:a2de37bf5f3d 88
Marcomissyou 0:a2de37bf5f3d 89 protected:
Marcomissyou 0:a2de37bf5f3d 90 int _sock_fd;
Marcomissyou 0:a2de37bf5f3d 91 int init_socket(int type);
Marcomissyou 0:a2de37bf5f3d 92
Marcomissyou 0:a2de37bf5f3d 93 int wait_readable(TimeInterval& timeout);
Marcomissyou 0:a2de37bf5f3d 94 int wait_writable(TimeInterval& timeout);
Marcomissyou 0:a2de37bf5f3d 95
Marcomissyou 0:a2de37bf5f3d 96 bool _blocking;
Marcomissyou 0:a2de37bf5f3d 97 unsigned int _timeout;
Marcomissyou 0:a2de37bf5f3d 98
Marcomissyou 0:a2de37bf5f3d 99 private:
Marcomissyou 0:a2de37bf5f3d 100 int select(struct timeval *timeout, bool read, bool write);
Marcomissyou 0:a2de37bf5f3d 101 };
Marcomissyou 0:a2de37bf5f3d 102
Marcomissyou 0:a2de37bf5f3d 103 /** Time interval class used to specify timeouts
Marcomissyou 0:a2de37bf5f3d 104 */
Marcomissyou 0:a2de37bf5f3d 105 class TimeInterval {
Marcomissyou 0:a2de37bf5f3d 106 friend class Socket;
Marcomissyou 0:a2de37bf5f3d 107
Marcomissyou 0:a2de37bf5f3d 108 public:
Marcomissyou 0:a2de37bf5f3d 109 /** Time Interval
Marcomissyou 0:a2de37bf5f3d 110 \param ms time interval expressed in milliseconds
Marcomissyou 0:a2de37bf5f3d 111 */
Marcomissyou 0:a2de37bf5f3d 112 TimeInterval(unsigned int ms);
Marcomissyou 0:a2de37bf5f3d 113
Marcomissyou 0:a2de37bf5f3d 114 private:
Marcomissyou 0:a2de37bf5f3d 115 struct timeval _time;
Marcomissyou 0:a2de37bf5f3d 116 };
Marcomissyou 0:a2de37bf5f3d 117
Marcomissyou 0:a2de37bf5f3d 118 #endif /* SOCKET_H_ */