Thinger.io client for boards compatible with the ARM mbed Ethernet Interface.
Dependencies: EthernetInterface ThingerClient mbed-rtos
Fork of ThingerEthernetClient by
ThingerEthernetClient.h@3:a38b8921ff2c, 2015-12-26 (annotated)
- 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?
User | Revision | Line number | New 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 |