Host library for controlling a WiConnect enabled Wi-Fi module.

Dependents:   wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Socket.h Source File

Socket.h

00001 /* Copyright (C) 2012 mbed.org, MIT License
00002  *
00003  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
00004  * and associated documentation files (the "Software"), to deal in the Software without restriction,
00005  * including without limitation the rights to use, copy, modify, merge, publish, distribute,
00006  * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
00007  * furnished to do so, subject to the following conditions:
00008  *
00009  * The above copyright notice and this permission notice shall be included in all copies or
00010  * substantial portions of the Software.
00011  *
00012  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
00013  * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00014  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
00015  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00016  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00017  */
00018 #ifndef SOCKET_H_
00019 #define SOCKET_H_
00020 
00021 
00022 #include "api/types/Socket/lwip/sockets.h"
00023 #include "api/types/Socket/lwip/netdb.h"
00024 
00025 #include "api/types/WiconnectSocket.h"
00026 
00027 using namespace wiconnect;
00028 
00029 #define SOCKET_API_DEFAULT_RX_BUFFER_SIZE 128
00030 #define SOCKET_API_DEFAULT_TX_BUFFER_SIZE 128
00031 
00032 
00033 int gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop);
00034 struct hostent *gethostbyname(const char *name);
00035 
00036 
00037 
00038 
00039 /** Socket file descriptor and select wrapper
00040   */
00041 class Socket {
00042 public:
00043     /** Socket
00044      */
00045     Socket();
00046     Socket(int rxBufferLen, void *rxBuffer, int txBufferLen, void *txBuffer);
00047 
00048     /** Set blocking or non-blocking mode of the socket and a timeout on
00049         blocking socket operations
00050 
00051         \note Currently the blocking/timeout functionality is only supported
00052               for 'read' methods
00053     \param blocking  true for blocking mode, false for non-blocking mode.
00054     \param timeout   timeout in ms [Default: (1500)ms].
00055     */
00056     void set_blocking(bool blocking, unsigned int timeout=1500);
00057 
00058     /** Set socket options
00059      *
00060      * \note NOT supported in this version.
00061      *
00062     \param level     stack level (see: lwip/sockets.h)
00063     \param optname   option ID
00064     \param optval    option value
00065     \param socklen_t length of the option value
00066     \return 0 on success, -1 on failure
00067     */
00068     int set_option(int level, int optname, const void *optval, socklen_t optlen);
00069 
00070     /** Get socket options
00071      *
00072      * \note NOT supported in this version.
00073      *
00074         \param level     stack level (see: lwip/sockets.h)
00075         \param optname   option ID
00076         \param optval    buffer pointer where to write the option value
00077         \param socklen_t length of the option value
00078         \return 0 on success, -1 on failure
00079         */
00080     int get_option(int level, int optname, void *optval, socklen_t *optlen);
00081 
00082     /** Close the socket
00083         \param shutdown   free the left-over data in message queues
00084      */
00085     int close(bool shutdown=true);
00086 
00087     ~Socket();
00088 
00089 protected:
00090     bool _blocking;
00091     unsigned int _timeout;
00092 
00093     WiconnectSocket socket;
00094 };
00095 
00096 #endif /* SOCKET_H_ */