Blynk example
Dependents: Blynk_Example_WIZwiki-W7500
Fork of Blynk by
Adapters/BlynkEthernet.h@16:5d8386745e22, 2017-08-14 (annotated)
- Committer:
- jcm931213
- Date:
- Mon Aug 14 04:28:21 2017 +0000
- Revision:
- 16:5d8386745e22
W7500 Blynk; (This Program needs to work on socket numbers.; I arbitrarily modified TCPSocket Client.);
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jcm931213 | 16:5d8386745e22 | 1 | /** |
jcm931213 | 16:5d8386745e22 | 2 | * @file BlynkEthernet.h |
jcm931213 | 16:5d8386745e22 | 3 | * @author Volodymyr Shymanskyy |
jcm931213 | 16:5d8386745e22 | 4 | * @license This project is released under the MIT License (MIT) |
jcm931213 | 16:5d8386745e22 | 5 | * @copyright Copyright (c) 2015 Volodymyr Shymanskyy |
jcm931213 | 16:5d8386745e22 | 6 | * @date Jan 2015 |
jcm931213 | 16:5d8386745e22 | 7 | * @brief |
jcm931213 | 16:5d8386745e22 | 8 | * |
jcm931213 | 16:5d8386745e22 | 9 | */ |
jcm931213 | 16:5d8386745e22 | 10 | |
jcm931213 | 16:5d8386745e22 | 11 | #ifndef BlynkEthernet_h |
jcm931213 | 16:5d8386745e22 | 12 | #define BlynkEthernet_h |
jcm931213 | 16:5d8386745e22 | 13 | |
jcm931213 | 16:5d8386745e22 | 14 | #ifndef BLYNK_INFO_CONNECTION |
jcm931213 | 16:5d8386745e22 | 15 | #define BLYNK_INFO_CONNECTION "W5000" |
jcm931213 | 16:5d8386745e22 | 16 | #endif |
jcm931213 | 16:5d8386745e22 | 17 | |
jcm931213 | 16:5d8386745e22 | 18 | #include <EthernetInterface.h> |
jcm931213 | 16:5d8386745e22 | 19 | #include <BlynkApiMbed.h> |
jcm931213 | 16:5d8386745e22 | 20 | #include <Blynk/BlynkProtocol.h> |
jcm931213 | 16:5d8386745e22 | 21 | #include <Adapters/BlynkMbedClient.h> |
jcm931213 | 16:5d8386745e22 | 22 | |
jcm931213 | 16:5d8386745e22 | 23 | EthernetInterface eth; |
jcm931213 | 16:5d8386745e22 | 24 | |
jcm931213 | 16:5d8386745e22 | 25 | class BlynkEthernet |
jcm931213 | 16:5d8386745e22 | 26 | : public BlynkProtocol<BlynkMbedClient> |
jcm931213 | 16:5d8386745e22 | 27 | { |
jcm931213 | 16:5d8386745e22 | 28 | typedef BlynkProtocol<BlynkMbedClient> Base; |
jcm931213 | 16:5d8386745e22 | 29 | public: |
jcm931213 | 16:5d8386745e22 | 30 | BlynkEthernet(BlynkMbedClient& transp) |
jcm931213 | 16:5d8386745e22 | 31 | : Base(transp) |
jcm931213 | 16:5d8386745e22 | 32 | {} |
jcm931213 | 16:5d8386745e22 | 33 | |
jcm931213 | 16:5d8386745e22 | 34 | void config(const char* auth, |
jcm931213 | 16:5d8386745e22 | 35 | const char* domain = BLYNK_DEFAULT_DOMAIN, |
jcm931213 | 16:5d8386745e22 | 36 | uint16_t port = BLYNK_DEFAULT_PORT) |
jcm931213 | 16:5d8386745e22 | 37 | { |
jcm931213 | 16:5d8386745e22 | 38 | Base::begin(auth); |
jcm931213 | 16:5d8386745e22 | 39 | this->conn.begin(domain, port); |
jcm931213 | 16:5d8386745e22 | 40 | } |
jcm931213 | 16:5d8386745e22 | 41 | |
jcm931213 | 16:5d8386745e22 | 42 | void config(const char* auth, |
jcm931213 | 16:5d8386745e22 | 43 | char* ip, |
jcm931213 | 16:5d8386745e22 | 44 | uint16_t port = BLYNK_DEFAULT_PORT) |
jcm931213 | 16:5d8386745e22 | 45 | { |
jcm931213 | 16:5d8386745e22 | 46 | Base::begin(auth); |
jcm931213 | 16:5d8386745e22 | 47 | this->conn.begin(ip, port); |
jcm931213 | 16:5d8386745e22 | 48 | } |
jcm931213 | 16:5d8386745e22 | 49 | |
jcm931213 | 16:5d8386745e22 | 50 | // DHCP with domain |
jcm931213 | 16:5d8386745e22 | 51 | void begin( const char* auth, |
jcm931213 | 16:5d8386745e22 | 52 | const char* domain = BLYNK_DEFAULT_DOMAIN, |
jcm931213 | 16:5d8386745e22 | 53 | uint16_t port = BLYNK_DEFAULT_PORT, |
jcm931213 | 16:5d8386745e22 | 54 | uint8_t mac[] = NULL) |
jcm931213 | 16:5d8386745e22 | 55 | { |
jcm931213 | 16:5d8386745e22 | 56 | int phy_link; |
jcm931213 | 16:5d8386745e22 | 57 | eth.init(mac); |
jcm931213 | 16:5d8386745e22 | 58 | // phy link |
jcm931213 | 16:5d8386745e22 | 59 | do{ |
jcm931213 | 16:5d8386745e22 | 60 | phy_link = eth.ethernet_link(); |
jcm931213 | 16:5d8386745e22 | 61 | printf("..."); |
jcm931213 | 16:5d8386745e22 | 62 | wait(2); |
jcm931213 | 16:5d8386745e22 | 63 | }while(!phy_link); |
jcm931213 | 16:5d8386745e22 | 64 | |
jcm931213 | 16:5d8386745e22 | 65 | BLYNK_LOG1(BLYNK_F("Getting IP...")); |
jcm931213 | 16:5d8386745e22 | 66 | if (eth.connect()==-1) { |
jcm931213 | 16:5d8386745e22 | 67 | BLYNK_FATAL(BLYNK_F("DHCP Failed!")); |
jcm931213 | 16:5d8386745e22 | 68 | } |
jcm931213 | 16:5d8386745e22 | 69 | |
jcm931213 | 16:5d8386745e22 | 70 | |
jcm931213 | 16:5d8386745e22 | 71 | // give the Ethernet shield a second to initialize: |
jcm931213 | 16:5d8386745e22 | 72 | ::delay(1000); |
jcm931213 | 16:5d8386745e22 | 73 | char* myip = eth.getIPAddress(); |
jcm931213 | 16:5d8386745e22 | 74 | BLYNK_LOG_IP("IP:", myip); |
jcm931213 | 16:5d8386745e22 | 75 | |
jcm931213 | 16:5d8386745e22 | 76 | config(auth, domain, port); |
jcm931213 | 16:5d8386745e22 | 77 | printf("configure!\r\n"); |
jcm931213 | 16:5d8386745e22 | 78 | while(this->connect() != true) {} |
jcm931213 | 16:5d8386745e22 | 79 | } |
jcm931213 | 16:5d8386745e22 | 80 | // |
jcm931213 | 16:5d8386745e22 | 81 | // // Static IP with domain |
jcm931213 | 16:5d8386745e22 | 82 | // void begin( const char* auth, |
jcm931213 | 16:5d8386745e22 | 83 | // const char* domain, |
jcm931213 | 16:5d8386745e22 | 84 | // uint16_t port, |
jcm931213 | 16:5d8386745e22 | 85 | // char* local, |
jcm931213 | 16:5d8386745e22 | 86 | // char* dns, |
jcm931213 | 16:5d8386745e22 | 87 | // const uint8_t mac[] = NULL) |
jcm931213 | 16:5d8386745e22 | 88 | // { |
jcm931213 | 16:5d8386745e22 | 89 | // BLYNK_LOG1(BLYNK_F("Using static IP")); |
jcm931213 | 16:5d8386745e22 | 90 | // Ethernet.begin(SelectMacAddress(auth, mac), local, dns); |
jcm931213 | 16:5d8386745e22 | 91 | // // give the Ethernet shield a second to initialize: |
jcm931213 | 16:5d8386745e22 | 92 | // ::delay(1000); |
jcm931213 | 16:5d8386745e22 | 93 | // char* myip = Ethernet.localIP(); |
jcm931213 | 16:5d8386745e22 | 94 | // BLYNK_LOG_IP("IP:", myip); |
jcm931213 | 16:5d8386745e22 | 95 | // |
jcm931213 | 16:5d8386745e22 | 96 | // config(auth, domain, port); |
jcm931213 | 16:5d8386745e22 | 97 | // while(this->connect() != true) {} |
jcm931213 | 16:5d8386745e22 | 98 | // } |
jcm931213 | 16:5d8386745e22 | 99 | // |
jcm931213 | 16:5d8386745e22 | 100 | // // Static IP with domain, gateway, etc |
jcm931213 | 16:5d8386745e22 | 101 | // void begin( const char* auth, |
jcm931213 | 16:5d8386745e22 | 102 | // const char* domain, |
jcm931213 | 16:5d8386745e22 | 103 | // uint16_t port, |
jcm931213 | 16:5d8386745e22 | 104 | // char* local, |
jcm931213 | 16:5d8386745e22 | 105 | // char* dns, |
jcm931213 | 16:5d8386745e22 | 106 | // char* gateway, |
jcm931213 | 16:5d8386745e22 | 107 | // char* subnet, |
jcm931213 | 16:5d8386745e22 | 108 | // const uint8_t mac[] = NULL) |
jcm931213 | 16:5d8386745e22 | 109 | // { |
jcm931213 | 16:5d8386745e22 | 110 | // BLYNK_LOG1(BLYNK_F("Using static IP")); |
jcm931213 | 16:5d8386745e22 | 111 | // Ethernet.begin(SelectMacAddress(auth, mac), local, dns, gateway, subnet); |
jcm931213 | 16:5d8386745e22 | 112 | // // give the Ethernet shield a second to initialize: |
jcm931213 | 16:5d8386745e22 | 113 | // ::delay(1000); |
jcm931213 | 16:5d8386745e22 | 114 | // char* myip = Ethernet.localIP(); |
jcm931213 | 16:5d8386745e22 | 115 | // BLYNK_LOG_IP("IP:", myip); |
jcm931213 | 16:5d8386745e22 | 116 | // |
jcm931213 | 16:5d8386745e22 | 117 | // config(auth, domain, port); |
jcm931213 | 16:5d8386745e22 | 118 | // while(this->connect() != true) {} |
jcm931213 | 16:5d8386745e22 | 119 | // } |
jcm931213 | 16:5d8386745e22 | 120 | // |
jcm931213 | 16:5d8386745e22 | 121 | // // DHCP with server IP |
jcm931213 | 16:5d8386745e22 | 122 | // void begin( const char* auth, |
jcm931213 | 16:5d8386745e22 | 123 | // char* addr, |
jcm931213 | 16:5d8386745e22 | 124 | // uint16_t port = BLYNK_DEFAULT_PORT, |
jcm931213 | 16:5d8386745e22 | 125 | // const uint8_t mac[] = NULL) |
jcm931213 | 16:5d8386745e22 | 126 | // { |
jcm931213 | 16:5d8386745e22 | 127 | // BLYNK_LOG1(BLYNK_F("Getting IP...")); |
jcm931213 | 16:5d8386745e22 | 128 | // if (!Ethernet.begin(SelectMacAddress(auth, mac))) { |
jcm931213 | 16:5d8386745e22 | 129 | // BLYNK_FATAL(BLYNK_F("DHCP Failed!")); |
jcm931213 | 16:5d8386745e22 | 130 | // } |
jcm931213 | 16:5d8386745e22 | 131 | // // give the Ethernet shield a second to initialize: |
jcm931213 | 16:5d8386745e22 | 132 | // ::delay(1000); |
jcm931213 | 16:5d8386745e22 | 133 | // char* myip = Ethernet.localIP(); |
jcm931213 | 16:5d8386745e22 | 134 | // BLYNK_LOG_IP("IP:", myip); |
jcm931213 | 16:5d8386745e22 | 135 | // |
jcm931213 | 16:5d8386745e22 | 136 | // config(auth, addr, port); |
jcm931213 | 16:5d8386745e22 | 137 | // while(this->connect() != true) {} |
jcm931213 | 16:5d8386745e22 | 138 | // } |
jcm931213 | 16:5d8386745e22 | 139 | // |
jcm931213 | 16:5d8386745e22 | 140 | // // Static IP with server IP |
jcm931213 | 16:5d8386745e22 | 141 | // void begin( const char* auth, |
jcm931213 | 16:5d8386745e22 | 142 | // char* addr, |
jcm931213 | 16:5d8386745e22 | 143 | // uint16_t port, |
jcm931213 | 16:5d8386745e22 | 144 | // char* local, |
jcm931213 | 16:5d8386745e22 | 145 | // const uint8_t mac[] = NULL) |
jcm931213 | 16:5d8386745e22 | 146 | // { |
jcm931213 | 16:5d8386745e22 | 147 | // BLYNK_LOG1(BLYNK_F("Using static IP")); |
jcm931213 | 16:5d8386745e22 | 148 | // Ethernet.begin(SelectMacAddress(auth, mac), local); |
jcm931213 | 16:5d8386745e22 | 149 | // // give the Ethernet shield a second to initialize: |
jcm931213 | 16:5d8386745e22 | 150 | // ::delay(1000); |
jcm931213 | 16:5d8386745e22 | 151 | // char* myip = Ethernet.localIP(); |
jcm931213 | 16:5d8386745e22 | 152 | // BLYNK_LOG_IP("IP:", myip); |
jcm931213 | 16:5d8386745e22 | 153 | // |
jcm931213 | 16:5d8386745e22 | 154 | // config(auth, addr, port); |
jcm931213 | 16:5d8386745e22 | 155 | // while(this->connect() != true) {} |
jcm931213 | 16:5d8386745e22 | 156 | // } |
jcm931213 | 16:5d8386745e22 | 157 | // |
jcm931213 | 16:5d8386745e22 | 158 | // // Static IP with server IP, DNS, gateway, etc |
jcm931213 | 16:5d8386745e22 | 159 | // void begin( const char* auth, |
jcm931213 | 16:5d8386745e22 | 160 | // char* addr, |
jcm931213 | 16:5d8386745e22 | 161 | // uint16_t port, |
jcm931213 | 16:5d8386745e22 | 162 | // char* local, |
jcm931213 | 16:5d8386745e22 | 163 | // char* dns, |
jcm931213 | 16:5d8386745e22 | 164 | // char* gateway, |
jcm931213 | 16:5d8386745e22 | 165 | // char* subnet, |
jcm931213 | 16:5d8386745e22 | 166 | // const uint8_t mac[] = NULL) |
jcm931213 | 16:5d8386745e22 | 167 | // { |
jcm931213 | 16:5d8386745e22 | 168 | // BLYNK_LOG1(BLYNK_F("Using static IP")); |
jcm931213 | 16:5d8386745e22 | 169 | // Ethernet.begin(SelectMacAddress(auth, mac), local, dns, gateway, subnet); |
jcm931213 | 16:5d8386745e22 | 170 | // // give the Ethernet shield a second to initialize: |
jcm931213 | 16:5d8386745e22 | 171 | // ::delay(1000); |
jcm931213 | 16:5d8386745e22 | 172 | // char* myip = Ethernet.localIP(); |
jcm931213 | 16:5d8386745e22 | 173 | // BLYNK_LOG_IP("IP:", myip); |
jcm931213 | 16:5d8386745e22 | 174 | // |
jcm931213 | 16:5d8386745e22 | 175 | // config(auth, addr, port); |
jcm931213 | 16:5d8386745e22 | 176 | // while(this->connect() != true) {} |
jcm931213 | 16:5d8386745e22 | 177 | // } |
jcm931213 | 16:5d8386745e22 | 178 | // |
jcm931213 | 16:5d8386745e22 | 179 | //private: |
jcm931213 | 16:5d8386745e22 | 180 | // |
jcm931213 | 16:5d8386745e22 | 181 | // byte* SelectMacAddress(const char* token, const uint8_t mac[]) |
jcm931213 | 16:5d8386745e22 | 182 | // { |
jcm931213 | 16:5d8386745e22 | 183 | // if (mac != NULL) { |
jcm931213 | 16:5d8386745e22 | 184 | // return (byte*)mac; |
jcm931213 | 16:5d8386745e22 | 185 | // } |
jcm931213 | 16:5d8386745e22 | 186 | // |
jcm931213 | 16:5d8386745e22 | 187 | // macAddress[0] = 0xFE; |
jcm931213 | 16:5d8386745e22 | 188 | // macAddress[1] = 0xED; |
jcm931213 | 16:5d8386745e22 | 189 | // macAddress[2] = 0xBA; |
jcm931213 | 16:5d8386745e22 | 190 | // macAddress[3] = 0xFE; |
jcm931213 | 16:5d8386745e22 | 191 | // macAddress[4] = 0xFE; |
jcm931213 | 16:5d8386745e22 | 192 | // macAddress[5] = 0xED; |
jcm931213 | 16:5d8386745e22 | 193 | // |
jcm931213 | 16:5d8386745e22 | 194 | // int len = strlen(token); |
jcm931213 | 16:5d8386745e22 | 195 | // int mac_index = 1; |
jcm931213 | 16:5d8386745e22 | 196 | // for (int i=0; i<len; i++) { |
jcm931213 | 16:5d8386745e22 | 197 | // macAddress[mac_index++] ^= token[i]; |
jcm931213 | 16:5d8386745e22 | 198 | // |
jcm931213 | 16:5d8386745e22 | 199 | // if (mac_index > 5) { mac_index = 1; } |
jcm931213 | 16:5d8386745e22 | 200 | // } |
jcm931213 | 16:5d8386745e22 | 201 | // /* BLYNK_LOG("MAC: %02X-%02X-%02X-%02X-%02X-%02X", |
jcm931213 | 16:5d8386745e22 | 202 | // macAddress[0], macAddress[1], |
jcm931213 | 16:5d8386745e22 | 203 | // macAddress[2], macAddress[3], |
jcm931213 | 16:5d8386745e22 | 204 | // macAddress[4], macAddress[5]); |
jcm931213 | 16:5d8386745e22 | 205 | // */ |
jcm931213 | 16:5d8386745e22 | 206 | // return macAddress; |
jcm931213 | 16:5d8386745e22 | 207 | // } |
jcm931213 | 16:5d8386745e22 | 208 | |
jcm931213 | 16:5d8386745e22 | 209 | private: |
jcm931213 | 16:5d8386745e22 | 210 | uint8_t macAddress[6]; |
jcm931213 | 16:5d8386745e22 | 211 | |
jcm931213 | 16:5d8386745e22 | 212 | }; |
jcm931213 | 16:5d8386745e22 | 213 | |
jcm931213 | 16:5d8386745e22 | 214 | #endif |