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: DebugLib Socket lwip lwip-sys
Fork of NetworkingCoreLib by
Diff: main/if/IPInterface.h
- Revision:
- 1:240e3322b87a
- Child:
- 8:387f573a6813
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main/if/IPInterface.h Thu May 24 15:35:36 2012 +0000
@@ -0,0 +1,53 @@
+/* IPInterface.h */
+/*
+Copyright (C) 2011 ARM Limited.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+#ifndef IPINTERFACE_H_
+#define IPINTERFACE_H_
+
+#include "core/fwk.h"
+
+/** Generic IP-based network interface
+ *
+ */
+class IPInterface
+{
+public:
+ IPInterface();
+ virtual ~IPInterface();
+
+ virtual int init() = 0; //Initialize interface; no connection should be performed at this stage
+ virtual int connect() = 0; //Do connect the interface
+ virtual int disconnect() = 0;
+ //It is encouraged that the derived class implement a "setup(...)" function to configure the interface before the connection
+
+ static IPInterface* getDefaultInterface(); //For use by TCP, UDP sockets library
+
+ //WARN: Implementation will have to be more careful in case of multiple interfaces (or implement a routing protocol based on local IP addresses differentiation)
+ void registerAsDefaultInterface(); //First come, first served
+ void unregisterAsDefaultInterface(); //Must be called before inst is destroyed to avoid invalid ptr fault
+
+private:
+ static IPInterface* s_pDefaultInterface;
+};
+
+#endif /* IPINTERFACE_H_ */
