/** * @file BlynkWiFiCommon.h * @author Volodymyr Shymanskyy * @license This project is released under the MIT License (MIT) * @copyright Copyright (c) 2015 Volodymyr Shymanskyy * @date Jan 2015 * @brief * */ #ifndef BlynkWiFiCommon_h #define BlynkWiFiCommon_h #ifndef BLYNK_INFO_CONNECTION #define BLYNK_INFO_CONNECTION "WiFi" #endif #ifdef BLYNK_USE_SSL #define BLYNK_SERVER_PORT BLYNK_DEFAULT_PORT_SSL #else #define BLYNK_SERVER_PORT BLYNK_DEFAULT_PORT #endif #include #include #include class BlynkWifiCommon : public BlynkProtocol { typedef BlynkProtocol Base; public: BlynkWifiCommon(BlynkArduinoClient& transp) : Base(transp) {} void connectWiFi(const char* ssid, const char* pass) { int status = WiFi.status(); // check for the presence of the shield: if (status == WL_NO_SHIELD) { BLYNK_FATAL("WiFi module not found"); } #ifdef BLYNK_DEBUG BLYNK_LOG2(BLYNK_F("WiFi firmware: "), WiFi.firmwareVersion()); #endif // attempt to connect to Wifi network: while (status != WL_CONNECTED) { BLYNK_LOG2(BLYNK_F("Connecting to "), ssid); if (pass && strlen(pass)) { status = WiFi.begin((char*)ssid, (char*)pass); } else { status = WiFi.begin((char*)ssid); } millis_time_t started = BlynkMillis(); while ((status != WL_CONNECTED) && (BlynkMillis() - started < 10000)) { BlynkDelay(100); status = WiFi.status(); } } IPAddress myip = WiFi.localIP(); BLYNK_LOG_IP("IP: ", myip); } void config(const char* auth, const char* domain = BLYNK_DEFAULT_DOMAIN, uint16_t port = BLYNK_SERVER_PORT) { Base::begin(auth); this->conn.begin(domain, port); } void config(const char* auth, IPAddress ip, uint16_t port = BLYNK_SERVER_PORT) { Base::begin(auth); this->conn.begin(ip, port); } void begin(const char* auth, const char* ssid, const char* pass, const char* domain = BLYNK_DEFAULT_DOMAIN, uint16_t port = BLYNK_SERVER_PORT) { connectWiFi(ssid, pass); config(auth, domain, port); while(this->connect() != true) {} } void begin(const char* auth, const char* ssid, const char* pass, IPAddress ip, uint16_t port = BLYNK_SERVER_PORT) { connectWiFi(ssid, pass); config(auth, ip, port); while(this->connect() != true) {} } }; #endif