NetworkSocketAPI
Dependents: HelloWizFi250Interface
Fork of NetworkSocketAPI by
Revision 99:f51358e506c1, committed 2016-04-19
- Comitter:
- Christopher Haster
- Date:
- Tue Apr 19 18:25:12 2016 -0500
- Parent:
- 98:0f614f1d0398
- Child:
- 100:90d8f662de83
- Commit message:
- Revised stack specific configurations
Adds the following functions for direct configuration of interface
- (set|get)stackopt
- (set|get)sockopt
Changed in this revision
--- a/NetworkInterface.cpp Tue Apr 19 18:24:57 2016 -0500 +++ b/NetworkInterface.cpp Tue Apr 19 18:25:12 2016 -0500 @@ -28,3 +28,23 @@ address->set_ip_address(buffer); return 0; } + +int NetworkInterface::setstackopt(int level, int optname, const void *optval, unsigned optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +int NetworkInterface::getstackopt(int level, int optname, void *optval, unsigned *optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +int NetworkInterface::setsockopt(void *handle, int level, int optname, const void *optval, unsigned optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +} + +int NetworkInterface::getsockopt(void *handle, int level, int optname, void *optval, unsigned *optlen) +{ + return NSAPI_ERROR_UNSUPPORTED; +}
--- a/NetworkInterface.h Tue Apr 19 18:24:57 2016 -0500 +++ b/NetworkInterface.h Tue Apr 19 18:25:12 2016 -0500 @@ -36,12 +36,6 @@ NSAPI_ERROR_AUTH_FAILURE = -3009, /*!< connection to access point faield */ NSAPI_ERROR_DEVICE_ERROR = -3010, /*!< failure interfacing with the network procesor */ }; - -/** Enum of available options - * @enum nsapi_opt_t - */ -enum nsapi_opt_t { -}; /** Enum of socket protocols * @enum protocol_t @@ -93,6 +87,24 @@ */ virtual int gethostbyname(SocketAddress *address, const char *name); + /* Set stack options + * @param level Option level + * @param optname Option identifier + * @param optval Option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int setstackopt(int level, int optname, const void *optval, unsigned optlen); + + /* Get stack options + * @param level Option level + * @param optname Option identifier + * @param optval Buffer where to write option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int getstackopt(int level, int optname, void *optval, unsigned *optlen); + protected: friend class Socket; friend class UDPSocket; @@ -114,24 +126,6 @@ */ virtual int socket_close(void *handle) = 0; - /** Set socket options - * @param handle Socket handle - * @param optname Option ID - * @param optval Option value - * @param optlen Length of the option value - * @return 0 on success, negative on failure - */ - virtual int socket_set_option(void *handle, int optname, const void *optval, unsigned int optlen) = 0; - - /** Get socket options - * @param handle Socket handle - * @param optname Option ID - * @param optval Buffer pointer where to write the option value - * @param optlen Length of the option value - * @return 0 on success, negative on failure - */ - virtual int socket_get_option(void *handle, int optname, void *optval, unsigned int *optlen) = 0; - /** Bind a server socket to a specific port * @param handle Socket handle * @param address Local address to listen for incoming connections on @@ -220,6 +214,26 @@ * @note Callback may be called in an interrupt context. */ virtual void socket_attach(void *handle, void (*callback)(void *), void *data) = 0; + + /* Set socket options + * @param handle Socket handle + * @param level Option level + * @param optname Option identifier + * @param optval Option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int setsockopt(void *handle, int level, int optname, const void *optval, unsigned optlen); + + /* Get socket options + * @param handle Socket handle + * @param level Option level + * @param optname Option identifier + * @param optval Buffer where to write option value + * @param optlen Length of the option value + * @return 0 on success, negative on failure + */ + virtual int getsockopt(void *handle, int level, int optname, void *optval, unsigned *optlen); }; #endif
--- a/Socket.cpp Tue Apr 19 18:24:57 2016 -0500 +++ b/Socket.cpp Tue Apr 19 18:25:12 2016 -0500 @@ -89,22 +89,23 @@ _timeout = timeout; } -int Socket::set_option(int optname, const void *optval, unsigned int optlen) +int Socket::setsockopt(int level, int optname, const void *optval, unsigned optlen) { if (!_socket) { return NSAPI_ERROR_NO_SOCKET; } - return _iface->socket_set_option(_socket, optname, optval, optlen); + return _iface->setsockopt(_socket, level, optname, optval, optlen); } -int Socket::get_option(int optname, void *optval, unsigned int *optlen) +int Socket::getsockopt(int level, int optname, void *optval, unsigned *optlen) { if (!_socket) { return NSAPI_ERROR_NO_SOCKET; } - return _iface->socket_get_option(_socket, optname, optval, optlen); + return _iface->getsockopt(_socket, level, optname, optval, optlen); + } void Socket::thunk(void *data)
--- a/Socket.h Tue Apr 19 18:24:57 2016 -0500 +++ b/Socket.h Tue Apr 19 18:25:12 2016 -0500 @@ -33,6 +33,10 @@ */ virtual int open(NetworkInterface *iface) = 0; + /** Close the socket + */ + int close(); + /** Bind a socket to a specific port * @param port The port to listen for incoming connections on * @return 0 on success, negative on failure. @@ -63,24 +67,22 @@ void set_timeout(unsigned int timeout); /* Set socket options - * @param optname Option ID + * @param level Option level + * @param optname Option identifier * @param optval Option value * @param optlen Length of the option value * @return 0 on success, negative on failure - */ - int set_option(int optname, const void *optval, unsigned optlen); - + */ + int setsockopt(int level, int optname, const void *optval, unsigned optlen); + /* Get socket options - * @param optname Option ID - * @param optval Buffer pointer where to write the option value + * @param level Option level + * @param optname Option identifier + * @param optval Buffer where to write option value * @param optlen Length of the option value * @return 0 on success, negative on failure - */ - int get_option(int optname, void *optval, unsigned *optlen); - - /** Close the socket - */ - int close(); + */ + int getsockopt(int level, int optname, void *optval, unsigned *optlen); /** Register a callback on state change of the socket * @param callback Function to call on state change