Separate Provisioning library from WiFi library to avoid unnecessary compilation while using WiFi library (#4550)

This commit is contained in:
Sweety
2020-11-19 03:43:14 +05:30
committed by GitHub
parent b5651491e5
commit 93c6226177
7 changed files with 19 additions and 22 deletions

View File

@ -76,11 +76,11 @@ set(LIBRARY_SRCS
libraries/WiFi/src/WiFi.cpp libraries/WiFi/src/WiFi.cpp
libraries/WiFi/src/WiFiGeneric.cpp libraries/WiFi/src/WiFiGeneric.cpp
libraries/WiFi/src/WiFiMulti.cpp libraries/WiFi/src/WiFiMulti.cpp
libraries/WiFi/src/WiFiProv.cpp
libraries/WiFi/src/WiFiScan.cpp libraries/WiFi/src/WiFiScan.cpp
libraries/WiFi/src/WiFiServer.cpp libraries/WiFi/src/WiFiServer.cpp
libraries/WiFi/src/WiFiSTA.cpp libraries/WiFi/src/WiFiSTA.cpp
libraries/WiFi/src/WiFiUdp.cpp libraries/WiFi/src/WiFiUdp.cpp
libraries/WiFiProv/src/WiFiProv.cpp
libraries/Wire/src/Wire.cpp libraries/Wire/src/Wire.cpp
) )
@ -145,6 +145,7 @@ set(includedirs
libraries/WebServer/src libraries/WebServer/src
libraries/WiFiClientSecure/src libraries/WiFiClientSecure/src
libraries/WiFi/src libraries/WiFi/src
libraries/WiFiProv/src
libraries/Wire/src libraries/Wire/src
) )

View File

@ -37,9 +37,8 @@
#include "WiFiClient.h" #include "WiFiClient.h"
#include "WiFiServer.h" #include "WiFiServer.h"
#include "WiFiUdp.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: public:
using WiFiGenericClass::channel; using WiFiGenericClass::channel;

View File

@ -1,3 +1,4 @@
#include "WiFiProv.h"
#include "WiFi.h" #include "WiFi.h"
void SysProvEvent(arduino_event_t *sys_event) void SysProvEvent(arduino_event_t *sys_event)
{ {
@ -46,9 +47,9 @@ void setup() {
0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02 };*/ 0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02 };*/
WiFi.onEvent(SysProvEvent); WiFi.onEvent(SysProvEvent);
#if CONFIG_IDF_TARGET_ESP32 && CONFIG_BLUEDROID_ENABLED #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 #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 #endif
} }

View File

@ -0,0 +1,8 @@
name=WiFiProv
version=1.0
author=Switi Mhaiske <sweetymhaiske@gmail.com>
maintainer=Hristo Gochkov <hristo@espressif.com>
sentence=Enables provisioning.
paragraph=With this library you can perform provisioning on esp32 via SoftAP or BLE.
url=
architectures=esp32

View File

@ -34,7 +34,7 @@
#include <wifi_provisioning/scheme_softap.h> #include <wifi_provisioning/scheme_softap.h>
#include <wifi_provisioning/manager.h> #include <wifi_provisioning/manager.h>
#undef IPADDR_NONE #undef IPADDR_NONE
#include "WiFi.h" #include "WiFiProv.h"
#if CONFIG_IDF_TARGET_ESP32 #if CONFIG_IDF_TARGET_ESP32
#include "SimpleBLE.h" #include "SimpleBLE.h"
#endif #endif
@ -48,13 +48,6 @@ static const uint8_t custom_service_uuid[16] = { 0xb4, 0xdf, 0x5a, 0x1c, 0x3f,
#define SERV_NAME_PREFIX_PROV "PROV_" #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) 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}; 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) 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; bool provisioned = false;
static char service_name_temp[32]; static char service_name_temp[32];
@ -175,3 +167,4 @@ void WiFiProvClass :: beginProvision(prov_scheme_t prov_scheme, scheme_handler_t
} }
} }
WiFiProvClass WiFiProv;

View File

@ -40,16 +40,11 @@ typedef enum {
//Provisioning class //Provisioning class
class WiFiProvClass class WiFiProvClass
{ {
protected:
static bool prov_enable;
public: 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, 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); 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;