Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DnsQuery
Dependents: WizFi310_TCP_Echo_Server_Example
Fork of NetworkSocketAPI by
Diff: NetworkInterface.h
- Branch:
- api-changes
- Revision:
- 21:35ed15069189
- Parent:
- 15:e657a90d9511
- Child:
- 23:1e86d9fb3d86
--- a/NetworkInterface.h Fri Dec 25 19:51:33 2015 +0000
+++ b/NetworkInterface.h Thu Feb 18 03:11:58 2016 -0600
@@ -14,92 +14,90 @@
* limitations under the License.
*/
-#ifndef NETWORKINTERFACE_H
-#define NETWORKINTERFACE_H
+#ifndef NETWORK_INTERFACE_H
+#define NETWORK_INTERFACE_H
#include "stdint.h"
#include "SocketInterface.h"
-#include <map>
+
-/** NetworkInterface class.
- This is a common interface that is shared between all hardware that connect
- to a network over IP.
+/** NetworkInterface class
+ * Common interface that is shared between all hardware that
+ * can connect to a network over IP.
*/
class NetworkInterface
{
public:
-
- /** Initialize the network interface with DHCP.
- @returns 0 on success, a negative number on failure
- */
- virtual int32_t init(void) = 0;
-
- /** Initialize the network interface with a static IP address.
- @param ip The static IP address to use
- @param mask The IP address mask
- @param gateway The gateway to use
- @returns 0 on success, a negative number on failure
- */
- virtual int32_t init(const char *ip, const char *mask, const char *gateway) = 0;
-
-
- /** Start the interface, using DHCP if needed.
- @param timeout_ms Time in miliseconds to wait while attempting to connect before timing out
- @returns 0 on success, a negative number on failure
- */
- virtual int32_t connect(uint32_t timeout_ms = 15000) = 0;
-
- /** Stop the interface, bringing down dhcp if necessary.
- @returns 0 on success, a negative number on failure
- */
- virtual int32_t disconnect(void) = 0;
-
- /** Get the current IP address.
- @returns a pointer to a string containing the IP address.
- */
- virtual char *getIPAddress(void) = 0;
-
- /** Get the current gateway address.
- @returns a pointer to a string containing the gateway address.
- */
- virtual char *getGateway(void) const = 0;
+ virtual ~NetworkInterface() = default;
- /** Get the current network mask.
- @returns a pointer to a string containing the network mask.
+ /** Enables DHCP and clears any static address
+ * DHCP is enabled by default
+ * @return 0 on success
+ */
+ virtual int32_t useDHCP() = 0;
+
+ /** Set the static IP address of the network interface
+ * @param ip Static IP address, copied internally
*/
- virtual char *getNetworkMask(void) const = 0;
+ virtual void setIPAddress(const char *ip);
+
+ /** Set the static network mask of the network interface
+ * @param mask Static network mask, copied internally
+ */
+ virtual void setNetworkMask(const char *mask);
+
+ /** Set the static gateway of the network interface
+ * @param gateway Gateway address, copied internally
+ */
+ virtual void setGateway(const char *gateway);
+
+ /** Get the IP address
+ * @return IP address of the interface
+ */
+ virtual const char *getIPAddress();
- /** Get the devices MAC address.
- @returns a pointer to a string containing the mac address.
+ /** Get the network mask
+ * @return Network mask of the interface
*/
- virtual char *getMACAddress(void) const = 0;
+ virtual const char *getNetworkMask();
+
+ /** Get the gateway
+ * @return Gateway address of the interface
+ */
+ virtual const char *getGateway();
+
+ /** Get the current MAC address
+ * @return String MAC address of the interface
+ */
+ virtual const char *getMACAddress() = 0;
- /** Get the current status of the interface connection.
- @returns true if connected, a negative number on failure
+ /** Get the current status of the interface
+ @return true if connected
*/
- virtual int32_t isConnected(void) = 0;
+ virtual bool isConnected(void) = 0;
+
+
+private:
+ friend class TCPSocket;
+ friend class UDPSocket;
+
+ /** Internally create a socket
+ * @param proto The type of socket to open, SOCK_TCP or SOCK_UDP
+ * @return The allocated socket
+ */
+ virtual SocketInterface *createSocket(socket_protocol_t proto) = 0;
- /** Allocate space for a socket.
- @param The type of socket you want to open, SOCK_TCP or SOCK_UDP
- @returns a pointer to the allocated socket.
- */
- virtual SocketInterface* allocateSocket(socket_protocol_t socketProtocol) = 0;
-
- /** Deallocate space for a socket.
- @param An allocated SocketInterface
- @returns 0 if object is destroyed, -1 otherwise
+ /** Internally destroy a socket
+ * @param socket An allocated SocketInterface
+ * @returns 0 on success
*/
- virtual int deallocateSocket(SocketInterface* socket) = 0;
-
-protected:
- /** Map used to keep track of all SocketInterface instances */
- std::map<uint32_t, SocketInterface*> sockets;
-
- /** Counter used to create unique handles for new sockets.
- Should be incremented whenever a new socket is created.
- */
- uint32_t uuidCounter;
+ virtual void destroySocket(SocketInterface *socket) = 0;
+
+private:
+ const char *_ip_address;
+ const char *_network_mask;
+ const char *_gateway;
};
#endif
