Thinger.io Client Library for the WIZnet platform

Dependencies:   ThingerClient WIZnetInterface

Fork of ThingerWIZnetClient by Alvaro Luis Bustamante

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?

UserRevisionLine numberNew 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