Thinger.io client for boards compatible with the ARM mbed Ethernet Interface.

Dependencies:   EthernetInterface ThingerClient mbed-rtos

Fork of ThingerEthernetClient by Alvaro Luis Bustamante

Committer:
alvarolb
Date:
Sat Dec 26 18:16:05 2015 +0000
Revision:
3:a38b8921ff2c
Parent:
0:ad55e6505bbb
update socket

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alvarolb 0:ad55e6505bbb 1 #include "ThingerClient.h"
alvarolb 0:ad55e6505bbb 2 #include "EthernetInterface.h"
alvarolb 0:ad55e6505bbb 3 #include "TCPSocket.h"
alvarolb 0:ad55e6505bbb 4
alvarolb 0:ad55e6505bbb 5 class ThingerEthernetClient : public ThingerClient
alvarolb 0:ad55e6505bbb 6 {
alvarolb 0:ad55e6505bbb 7 private:
alvarolb 0:ad55e6505bbb 8 EthernetInterface ethernet;
alvarolb 0:ad55e6505bbb 9 TCPSocket socket;
alvarolb 0:ad55e6505bbb 10
alvarolb 0:ad55e6505bbb 11 public:
alvarolb 0:ad55e6505bbb 12 ThingerEthernetClient(const char* user, const char* device, const char* device_credential) :
alvarolb 0:ad55e6505bbb 13 ThingerClient(user, device, device_credential), connected_(false)
alvarolb 0:ad55e6505bbb 14 {}
alvarolb 0:ad55e6505bbb 15
alvarolb 0:ad55e6505bbb 16 virtual ~ThingerEthernetClient() {
alvarolb 0:ad55e6505bbb 17 }
alvarolb 0:ad55e6505bbb 18
alvarolb 0:ad55e6505bbb 19 protected:
alvarolb 0:ad55e6505bbb 20
alvarolb 0:ad55e6505bbb 21 virtual bool socket_start(const char* host, int port) {
alvarolb 0:ad55e6505bbb 22 return socket.connect(host, port)==0;
alvarolb 0:ad55e6505bbb 23 }
alvarolb 0:ad55e6505bbb 24
alvarolb 0:ad55e6505bbb 25 virtual bool socket_stop() {
alvarolb 0:ad55e6505bbb 26 return socket.close()==0;
alvarolb 0:ad55e6505bbb 27 }
alvarolb 0:ad55e6505bbb 28
alvarolb 0:ad55e6505bbb 29 virtual bool socket_connected() {
alvarolb 0:ad55e6505bbb 30 return socket.is_connected();
alvarolb 0:ad55e6505bbb 31 }
alvarolb 0:ad55e6505bbb 32
alvarolb 0:ad55e6505bbb 33 virtual size_t socket_read(char* buffer, size_t size) {
alvarolb 0:ad55e6505bbb 34 return socket.receive_all(buffer, size);
alvarolb 0:ad55e6505bbb 35 }
alvarolb 0:ad55e6505bbb 36
alvarolb 0:ad55e6505bbb 37 virtual size_t socket_write(char* buffer, size_t size) {
alvarolb 0:ad55e6505bbb 38 return socket.send_all(buffer, size);
alvarolb 0:ad55e6505bbb 39 }
alvarolb 0:ad55e6505bbb 40
alvarolb 0:ad55e6505bbb 41 virtual size_t socket_available() {
alvarolb 0:ad55e6505bbb 42 return socket.available();
alvarolb 0:ad55e6505bbb 43 }
alvarolb 0:ad55e6505bbb 44
alvarolb 0:ad55e6505bbb 45 virtual bool connect_network() {
alvarolb 0:ad55e6505bbb 46 if(connected_) return true;
alvarolb 0:ad55e6505bbb 47 ethernet.init();
alvarolb 0:ad55e6505bbb 48
alvarolb 0:ad55e6505bbb 49 #ifdef _DEBUG_
alvarolb 0:ad55e6505bbb 50 printf("[NETWORK] Getting DHCP IP Address...\r\n");
alvarolb 0:ad55e6505bbb 51 #endif
alvarolb 0:ad55e6505bbb 52 while(ethernet.connect()!=0) {
alvarolb 0:ad55e6505bbb 53 wait(5);
alvarolb 0:ad55e6505bbb 54 ethernet.disconnect();
alvarolb 0:ad55e6505bbb 55 ethernet.init();
alvarolb 0:ad55e6505bbb 56 }
alvarolb 0:ad55e6505bbb 57 #ifdef _DEBUG_
alvarolb 0:ad55e6505bbb 58 printf("[NETWORK] Got Ip Address: %s\r\n", ethernet.getIPAddress());
alvarolb 0:ad55e6505bbb 59 #endif
alvarolb 0:ad55e6505bbb 60 connected_ = true;
alvarolb 0:ad55e6505bbb 61 return connected_;
alvarolb 0:ad55e6505bbb 62 }
alvarolb 0:ad55e6505bbb 63
alvarolb 0:ad55e6505bbb 64 virtual bool network_connected() {
alvarolb 0:ad55e6505bbb 65 return connected_;
alvarolb 0:ad55e6505bbb 66 }
alvarolb 0:ad55e6505bbb 67
alvarolb 0:ad55e6505bbb 68 private:
alvarolb 0:ad55e6505bbb 69 bool connected_;
alvarolb 0:ad55e6505bbb 70 };
alvarolb 0:ad55e6505bbb 71