From bcaaf37d2beba55f5b2dafa0201d6b5ab30e4fa1 Mon Sep 17 00:00:00 2001 From: Sweety Mhaiske Date: Tue, 17 Nov 2020 16:49:53 +0530 Subject: [PATCH] Separate Provisioning library from WiFi library to avoid unnecessary compilation while using WiFi library --- CMakeLists.txt | 3 ++- libraries/WiFi/src/WiFi.h | 3 +-- .../{WiFi => WiFiProv}/examples/WiFiProv/README.md | 0 .../{WiFi => WiFiProv}/examples/WiFiProv/WiFiProv.ino | 5 +++-- libraries/WiFiProv/library.properties | 8 ++++++++ libraries/{WiFi => WiFiProv}/src/WiFiProv.cpp | 11 ++--------- libraries/{WiFi => WiFiProv}/src/WiFiProv.h | 11 +++-------- 7 files changed, 19 insertions(+), 22 deletions(-) rename libraries/{WiFi => WiFiProv}/examples/WiFiProv/README.md (100%) rename libraries/{WiFi => WiFiProv}/examples/WiFiProv/WiFiProv.ino (87%) create mode 100644 libraries/WiFiProv/library.properties rename libraries/{WiFi => WiFiProv}/src/WiFiProv.cpp (97%) rename libraries/{WiFi => WiFiProv}/src/WiFiProv.h (91%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06bc94ff5db..1cbdf1e34a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,11 +76,11 @@ set(LIBRARY_SRCS libraries/WiFi/src/WiFi.cpp libraries/WiFi/src/WiFiGeneric.cpp libraries/WiFi/src/WiFiMulti.cpp - libraries/WiFi/src/WiFiProv.cpp libraries/WiFi/src/WiFiScan.cpp libraries/WiFi/src/WiFiServer.cpp libraries/WiFi/src/WiFiSTA.cpp libraries/WiFi/src/WiFiUdp.cpp + libraries/WiFiProv/src/WiFiProv.cpp libraries/Wire/src/Wire.cpp ) @@ -145,6 +145,7 @@ set(includedirs libraries/WebServer/src libraries/WiFiClientSecure/src libraries/WiFi/src + libraries/WiFiProv/src libraries/Wire/src ) diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h index 54bd10257a6..43767017453 100644 --- a/libraries/WiFi/src/WiFi.h +++ b/libraries/WiFi/src/WiFi.h @@ -37,9 +37,8 @@ #include "WiFiClient.h" #include "WiFiServer.h" #include "WiFiUdp.h" -#include "WiFiProv.h" -class WiFiClass : public WiFiGenericClass, public WiFiSTAClass, public WiFiScanClass, public WiFiAPClass, public WiFiProvClass +class WiFiClass : public WiFiGenericClass, public WiFiSTAClass, public WiFiScanClass, public WiFiAPClass { public: using WiFiGenericClass::channel; diff --git a/libraries/WiFi/examples/WiFiProv/README.md b/libraries/WiFiProv/examples/WiFiProv/README.md similarity index 100% rename from libraries/WiFi/examples/WiFiProv/README.md rename to libraries/WiFiProv/examples/WiFiProv/README.md diff --git a/libraries/WiFi/examples/WiFiProv/WiFiProv.ino b/libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino similarity index 87% rename from libraries/WiFi/examples/WiFiProv/WiFiProv.ino rename to libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino index 5459edb7c0c..9d6de5f00f3 100644 --- a/libraries/WiFi/examples/WiFiProv/WiFiProv.ino +++ b/libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino @@ -1,3 +1,4 @@ +#include "WiFiProv.h" #include "WiFi.h" void SysProvEvent(arduino_event_t *sys_event) { @@ -46,9 +47,9 @@ void setup() { 0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02 };*/ WiFi.onEvent(SysProvEvent); #if CONFIG_IDF_TARGET_ESP32 && CONFIG_BLUEDROID_ENABLED - WiFi.beginProvision(WIFI_PROV_SCHEME_BLE, WIFI_PROV_SCHEME_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, "abcd1234", "Prov_123"); + WiFiProv.beginProvision(WIFI_PROV_SCHEME_BLE, WIFI_PROV_SCHEME_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, "abcd1234", "Prov_123"); #else - WiFi.beginProvision(WIFI_PROV_SCHEME_SOFTAP, WIFI_PROV_SCHEME_HANDLER_NONE, WIFI_PROV_SECURITY_1, "abcd1234", "Prov_123"); + WiFiProv.beginProvision(WIFI_PROV_SCHEME_SOFTAP, WIFI_PROV_SCHEME_HANDLER_NONE, WIFI_PROV_SECURITY_1, "abcd1234", "Prov_123"); #endif } diff --git a/libraries/WiFiProv/library.properties b/libraries/WiFiProv/library.properties new file mode 100644 index 00000000000..8657cc8b562 --- /dev/null +++ b/libraries/WiFiProv/library.properties @@ -0,0 +1,8 @@ +name=WiFiProv +version=1.0 +author=Switi Mhaiske +maintainer=Hristo Gochkov +sentence=Enables provisioning. +paragraph=With this library you can perform provisioning on esp32 via SoftAP or BLE. +url= +architectures=esp32 diff --git a/libraries/WiFi/src/WiFiProv.cpp b/libraries/WiFiProv/src/WiFiProv.cpp similarity index 97% rename from libraries/WiFi/src/WiFiProv.cpp rename to libraries/WiFiProv/src/WiFiProv.cpp index e9bb6f3d899..e60f0f3cc85 100644 --- a/libraries/WiFi/src/WiFiProv.cpp +++ b/libraries/WiFiProv/src/WiFiProv.cpp @@ -34,7 +34,7 @@ #include #include #undef IPADDR_NONE -#include "WiFi.h" +#include "WiFiProv.h" #if CONFIG_IDF_TARGET_ESP32 #include "SimpleBLE.h" #endif @@ -48,13 +48,6 @@ static const uint8_t custom_service_uuid[16] = { 0xb4, 0xdf, 0x5a, 0x1c, 0x3f, #define SERV_NAME_PREFIX_PROV "PROV_" -bool WiFiProvClass::prov_enable = true; - -bool WiFiProvClass::isProvEnabled() -{ - return prov_enable; -} - static void get_device_service_name(prov_scheme_t prov_scheme, char *service_name, size_t max) { uint8_t eth_mac[6] = {0,0,0,0,0,0}; @@ -84,7 +77,6 @@ static esp_err_t custom_prov_data_handler(uint32_t session_id, const uint8_t *in void WiFiProvClass :: beginProvision(prov_scheme_t prov_scheme, scheme_handler_t scheme_handler, wifi_prov_security_t security, const char * pop, const char *service_name, const char *service_key, uint8_t * uuid) { - prov_enable = true; bool provisioned = false; static char service_name_temp[32]; @@ -175,3 +167,4 @@ void WiFiProvClass :: beginProvision(prov_scheme_t prov_scheme, scheme_handler_t } } +WiFiProvClass WiFiProv; diff --git a/libraries/WiFi/src/WiFiProv.h b/libraries/WiFiProv/src/WiFiProv.h similarity index 91% rename from libraries/WiFi/src/WiFiProv.h rename to libraries/WiFiProv/src/WiFiProv.h index 3cd34fa8e6c..11dfd2e47e1 100644 --- a/libraries/WiFi/src/WiFiProv.h +++ b/libraries/WiFiProv/src/WiFiProv.h @@ -40,16 +40,11 @@ typedef enum { //Provisioning class class WiFiProvClass -{ - protected: - static bool prov_enable; - +{ public: - WiFiProvClass() { - prov_enable = false; - } - bool isProvEnabled(); void beginProvision(prov_scheme_t prov_scheme = WIFI_PROV_SCHEME_SOFTAP, scheme_handler_t scheme_handler = WIFI_PROV_SCHEME_HANDLER_NONE, wifi_prov_security_t security = WIFI_PROV_SECURITY_1, const char * pop = "abcd1234", const char * service_name = NULL, const char * service_key = NULL, uint8_t *uuid = NULL); }; + +extern WiFiProvClass WiFiProv;