Thinger.io Client Library for the WIZnet platform
Dependencies: ThingerClient WIZnetInterface
Fork of ThingerWIZnetClient by
ThingerEthernetClient.h@4:98914de56323, 2015-12-26 (annotated)
- Committer:
- alvarolb
- Date:
- Sat Dec 26 18:11:36 2015 +0000
- Revision:
- 4:98914de56323
- Parent:
- 0:f1f02f6a2e6a
socket update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alvarolb | 0:f1f02f6a2e6a | 1 | #include "ThingerClient.h" |
alvarolb | 0:f1f02f6a2e6a | 2 | #include "EthernetInterface.h" |
alvarolb | 0:f1f02f6a2e6a | 3 | #include "TCPSocket.h" |
alvarolb | 0:f1f02f6a2e6a | 4 | |
alvarolb | 0:f1f02f6a2e6a | 5 | class ThingerEthernetClient : public ThingerClient |
alvarolb | 0:f1f02f6a2e6a | 6 | { |
alvarolb | 0:f1f02f6a2e6a | 7 | private: |
alvarolb | 0:f1f02f6a2e6a | 8 | EthernetInterface ethernet; |
alvarolb | 0:f1f02f6a2e6a | 9 | TCPSocket socket; |
alvarolb | 0:f1f02f6a2e6a | 10 | |
alvarolb | 0:f1f02f6a2e6a | 11 | public: |
alvarolb | 0:f1f02f6a2e6a | 12 | ThingerEthernetClient(const char* user, const char* device, const char* device_credential) : |
alvarolb | 0:f1f02f6a2e6a | 13 | ThingerClient(user, device, device_credential), connected_(false) |
alvarolb | 0:f1f02f6a2e6a | 14 | {} |
alvarolb | 0:f1f02f6a2e6a | 15 | |
alvarolb | 0:f1f02f6a2e6a | 16 | virtual ~ThingerEthernetClient() { |
alvarolb | 0:f1f02f6a2e6a | 17 | } |
alvarolb | 0:f1f02f6a2e6a | 18 | |
alvarolb | 0:f1f02f6a2e6a | 19 | protected: |
alvarolb | 0:f1f02f6a2e6a | 20 | |
alvarolb | 0:f1f02f6a2e6a | 21 | virtual bool socket_start(const char* host, int port) { |
alvarolb | 0:f1f02f6a2e6a | 22 | return socket.connect(host, port)==0; |
alvarolb | 0:f1f02f6a2e6a | 23 | } |
alvarolb | 0:f1f02f6a2e6a | 24 | |
alvarolb | 0:f1f02f6a2e6a | 25 | virtual bool socket_stop() { |
alvarolb | 0:f1f02f6a2e6a | 26 | return socket.close()==0; |
alvarolb | 0:f1f02f6a2e6a | 27 | } |
alvarolb | 0:f1f02f6a2e6a | 28 | |
alvarolb | 0:f1f02f6a2e6a | 29 | virtual bool socket_connected() { |
alvarolb | 0:f1f02f6a2e6a | 30 | return socket.is_connected(); |
alvarolb | 0:f1f02f6a2e6a | 31 | } |
alvarolb | 0:f1f02f6a2e6a | 32 | |
alvarolb | 0:f1f02f6a2e6a | 33 | virtual size_t socket_read(char* buffer, size_t size) { |
alvarolb | 0:f1f02f6a2e6a | 34 | return socket.receive_all(buffer, size); |
alvarolb | 0:f1f02f6a2e6a | 35 | } |
alvarolb | 0:f1f02f6a2e6a | 36 | |
alvarolb | 0:f1f02f6a2e6a | 37 | virtual size_t socket_write(char* buffer, size_t size) { |
alvarolb | 0:f1f02f6a2e6a | 38 | return socket.send_all(buffer, size); |
alvarolb | 0:f1f02f6a2e6a | 39 | } |
alvarolb | 0:f1f02f6a2e6a | 40 | |
alvarolb | 0:f1f02f6a2e6a | 41 | virtual size_t socket_available() { |
alvarolb | 0:f1f02f6a2e6a | 42 | return socket.available(); |
alvarolb | 0:f1f02f6a2e6a | 43 | } |
alvarolb | 0:f1f02f6a2e6a | 44 | |
alvarolb | 0:f1f02f6a2e6a | 45 | virtual bool connect_network() { |
alvarolb | 0:f1f02f6a2e6a | 46 | if(connected_) return true; |
alvarolb | 0:f1f02f6a2e6a | 47 | ethernet.init(); |
alvarolb | 0:f1f02f6a2e6a | 48 | |
alvarolb | 0:f1f02f6a2e6a | 49 | #ifdef _DEBUG_ |
alvarolb | 0:f1f02f6a2e6a | 50 | printf("[NETWORK] Getting DHCP IP Address...\r\n"); |
alvarolb | 0:f1f02f6a2e6a | 51 | #endif |
alvarolb | 0:f1f02f6a2e6a | 52 | while(ethernet.connect()!=0) { |
alvarolb | 0:f1f02f6a2e6a | 53 | wait(5); |
alvarolb | 0:f1f02f6a2e6a | 54 | ethernet.disconnect(); |
alvarolb | 0:f1f02f6a2e6a | 55 | ethernet.init(); |
alvarolb | 0:f1f02f6a2e6a | 56 | } |
alvarolb | 0:f1f02f6a2e6a | 57 | #ifdef _DEBUG_ |
alvarolb | 0:f1f02f6a2e6a | 58 | printf("[NETWORK] Got Ip Address: %s\r\n", ethernet.getIPAddress()); |
alvarolb | 0:f1f02f6a2e6a | 59 | #endif |
alvarolb | 0:f1f02f6a2e6a | 60 | connected_ = true; |
alvarolb | 0:f1f02f6a2e6a | 61 | return connected_; |
alvarolb | 0:f1f02f6a2e6a | 62 | } |
alvarolb | 0:f1f02f6a2e6a | 63 | |
alvarolb | 0:f1f02f6a2e6a | 64 | virtual bool network_connected() { |
alvarolb | 0:f1f02f6a2e6a | 65 | return connected_; |
alvarolb | 0:f1f02f6a2e6a | 66 | } |
alvarolb | 0:f1f02f6a2e6a | 67 | |
alvarolb | 0:f1f02f6a2e6a | 68 | private: |
alvarolb | 0:f1f02f6a2e6a | 69 | bool connected_; |
alvarolb | 0:f1f02f6a2e6a | 70 | }; |
alvarolb | 0:f1f02f6a2e6a | 71 |