From a5f6a42dd7128ba3dc13d25a430f4a5a896d7528 Mon Sep 17 00:00:00 2001 From: amcewen Date: Mon, 28 Mar 2011 12:08:53 +0100 Subject: [PATCH] Pulled out Client API into a base class to allow multiple derived classes to use it, and moved it (plus IPAddress) out of the Ethernet library so that other libraries can find it. First steps in integrating the WiFly code so it's easier to switch between that and Ethernet --- .../arduino/cores/arduino}/IPAddress.cpp | 0 .../arduino/cores/arduino}/IPAddress.h | 0 hardware/arduino/cores/arduino/NetClient.h | 28 +++++++++++++++++++ libraries/Ethernet/Client.h | 18 ++++++------ 4 files changed, 38 insertions(+), 8 deletions(-) rename {libraries/Ethernet => hardware/arduino/cores/arduino}/IPAddress.cpp (100%) rename {libraries/Ethernet => hardware/arduino/cores/arduino}/IPAddress.h (100%) create mode 100644 hardware/arduino/cores/arduino/NetClient.h diff --git a/libraries/Ethernet/IPAddress.cpp b/hardware/arduino/cores/arduino/IPAddress.cpp similarity index 100% rename from libraries/Ethernet/IPAddress.cpp rename to hardware/arduino/cores/arduino/IPAddress.cpp diff --git a/libraries/Ethernet/IPAddress.h b/hardware/arduino/cores/arduino/IPAddress.h similarity index 100% rename from libraries/Ethernet/IPAddress.h rename to hardware/arduino/cores/arduino/IPAddress.h diff --git a/hardware/arduino/cores/arduino/NetClient.h b/hardware/arduino/cores/arduino/NetClient.h new file mode 100644 index 000000000..d8df9149a --- /dev/null +++ b/hardware/arduino/cores/arduino/NetClient.h @@ -0,0 +1,28 @@ +#ifndef netclient_h +#define netclient_h +#include "WProgram.h" +#include "Print.h" +#include "NetClient.h" +#include "IPAddress.h" + +class NetClient : public Stream { + +public: + virtual int connect(IPAddress ip, uint16_t port) =0; + virtual int connect(const char *host, uint16_t port) =0; + virtual void write(uint8_t) =0; + virtual void write(const char *str) =0; + virtual void write(const uint8_t *buf, size_t size) =0; + virtual int available() = 0; + virtual int read() = 0; + virtual int read(uint8_t *buf, size_t size) = 0; + virtual int peek() = 0; + virtual void flush() = 0; + virtual void stop() = 0; + virtual uint8_t connected() = 0; + virtual uint8_t operator==(int) = 0; + virtual uint8_t operator!=(int) = 0; + virtual operator bool() = 0; +}; + +#endif diff --git a/libraries/Ethernet/Client.h b/libraries/Ethernet/Client.h index 23a8f1860..a4d1589ff 100644 --- a/libraries/Ethernet/Client.h +++ b/libraries/Ethernet/Client.h @@ -2,16 +2,18 @@ #define client_h #include "WProgram.h" #include "Print.h" +#include "NetClient.h" +#include "IPAddress.h" -class Client : public Stream { +class Client : public NetClient { public: Client(); Client(uint8_t sock); uint8_t status(); - int connect(IPAddress ip, uint16_t port); - int connect(const char *host, uint16_t port); + virtual int connect(IPAddress ip, uint16_t port); + virtual int connect(const char *host, uint16_t port); virtual void write(uint8_t); virtual void write(const char *str); virtual void write(const uint8_t *buf, size_t size); @@ -20,11 +22,11 @@ public: virtual int read(uint8_t *buf, size_t size); virtual int peek(); virtual void flush(); - void stop(); - uint8_t connected(); - uint8_t operator==(int); - uint8_t operator!=(int); - operator bool(); + virtual void stop(); + virtual uint8_t connected(); + virtual uint8_t operator==(int); + virtual uint8_t operator!=(int); + virtual operator bool(); friend class Server;