Browse Source

Resolve issue with AP.

Fix newly introduced null pointer in AuthenticationService.
master
Rick Watson 5 years ago
parent
commit
41f7579bd5
  1. 12
      lib/framework/APSettingsService.cpp
  2. 3
      lib/framework/APSettingsService.h
  3. 2
      lib/framework/AuthenticationService.cpp
  4. 8
      lib/framework/ESP8266React.cpp
  5. 3
      lib/framework/ESP8266React.h
  6. 6
      lib/framework/SettingsService.h
  7. 8
      lib/framework/WiFiSettingsService.cpp
  8. 1
      lib/framework/WiFiSettingsService.h
  9. 14
      src/main.cpp

12
lib/framework/APSettingsService.cpp

@ -1,11 +1,14 @@
#include <APSettingsService.h>
APSettingsService::APSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : AdminSettingsService(server, fs, securityManager, AP_SETTINGS_SERVICE_PATH, AP_SETTINGS_FILE) {
onConfigUpdated();
}
APSettingsService::APSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : AdminSettingsService(server, fs, securityManager, AP_SETTINGS_SERVICE_PATH, AP_SETTINGS_FILE) {}
APSettingsService::~APSettingsService() {}
void APSettingsService::begin() {
SettingsService::begin();
onConfigUpdated();
}
void APSettingsService::loop() {
unsigned long currentMillis = millis();
unsigned long manageElapsed = (unsigned long)(currentMillis - _lastManaged);
@ -80,7 +83,4 @@ void APSettingsService::writeToJsonObject(JsonObject& root) {
void APSettingsService::onConfigUpdated() {
_lastManaged = millis() - MANAGE_NETWORK_DELAY;
// stop softAP - forces reconfiguration in loop()
stopAP();
}

3
lib/framework/APSettingsService.h

@ -26,6 +26,7 @@ class APSettingsService : public AdminSettingsService {
APSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager);
~APSettingsService();
void begin();
void loop();
protected:
@ -49,7 +50,7 @@ class APSettingsService : public AdminSettingsService {
void manageAP();
void startAP();
void stopAP();
void stopAP() ;
void handleDNS();
};

2
lib/framework/AuthenticationService.cpp

@ -1,6 +1,6 @@
#include <AuthenticationService.h>
AuthenticationService::AuthenticationService(AsyncWebServer* server, SecurityManager* securityManager) {
AuthenticationService::AuthenticationService(AsyncWebServer* server, SecurityManager* securityManager) : _securityManager(securityManager) {
server->on(VERIFY_AUTHORIZATION_PATH, HTTP_GET, std::bind(&AuthenticationService::verifyAuthorization, this, std::placeholders::_1));
_signInHandler.setUri(SIGN_IN_PATH);

8
lib/framework/ESP8266React.cpp

@ -39,6 +39,14 @@ ESP8266React::ESP8266React(AsyncWebServer* server, FS* fs):
#endif
}
void ESP8266React::begin() {
_securitySettingsService.begin();
_wifiSettingsService.begin();
_apSettingsService.begin();
_ntpSettingsService.begin();
_otaSettingsService.begin();
}
void ESP8266React::loop() {
_wifiSettingsService.loop();
_apSettingsService.loop();

3
lib/framework/ESP8266React.h

@ -30,7 +30,8 @@ class ESP8266React {
public:
ESP8266React(AsyncWebServer* server, FS* fs);
void begin();
void loop();
SecurityManager* getSecurityManager(){

6
lib/framework/SettingsService.h

@ -31,13 +31,15 @@ class SettingsService : public SettingsPersistence {
_updateHandler.setMaxContentLength(MAX_SETTINGS_SIZE);
_updateHandler.onRequest(std::bind(&SettingsService::updateConfig, this, std::placeholders::_1, std::placeholders::_2));
server->addHandler(&_updateHandler);
}
virtual ~SettingsService() {}
void begin() {
// read the initial data from the file system
readFromFS();
}
virtual ~SettingsService() {}
protected:
char const* _servicePath;
AsyncJsonWebHandler _updateHandler;

8
lib/framework/WiFiSettingsService.cpp

@ -5,9 +5,6 @@ WiFiSettingsService::WiFiSettingsService(AsyncWebServer* server, FS* fs, Securit
WiFi.persistent(false);
WiFi.setAutoReconnect(false);
// Force WiFi config to be applied when loop() called
reconfigureWiFiConnection();
#if defined(ESP8266)
_onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected(std::bind(&WiFiSettingsService::onStationModeDisconnected, this, std::placeholders::_1));
#elif defined(ESP_PLATFORM)
@ -20,6 +17,11 @@ WiFiSettingsService::WiFiSettingsService(AsyncWebServer* server, FS* fs, Securit
WiFiSettingsService::~WiFiSettingsService() {}
void WiFiSettingsService::begin() {
SettingsService::begin();
reconfigureWiFiConnection();
}
void WiFiSettingsService::readFromJsonObject(JsonObject& root){
_ssid = root["ssid"] | "";
_password = root["password"] | "";

1
lib/framework/WiFiSettingsService.h

@ -15,6 +15,7 @@ class WiFiSettingsService : public AdminSettingsService {
WiFiSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager);
~WiFiSettingsService();
void begin();
void loop();
protected:

14
src/main.cpp

@ -5,21 +5,27 @@
#define SERIAL_BAUD_RATE 115200
AsyncWebServer server(80);
ESP8266React framework(&server, &SPIFFS);
DemoProject demoProject = DemoProject(&server, &SPIFFS, framework.getSecurityManager());
ESP8266React esp8266React(&server, &SPIFFS);
DemoProject demoProject = DemoProject(&server, &SPIFFS, esp8266React.getSecurityManager());
void setup() {
// start serial and filesystem
Serial.begin(SERIAL_BAUD_RATE);
// start the file system (must be done before starting the framework)
SPIFFS.begin();
// start the framework and demo project
esp8266React.begin();
demoProject.begin();
// start the server
server.begin();
}
void loop() {
// run the framework's loop function
framework.loop();
esp8266React.loop();
// run the demo project's loop function
demoProject.loop();

Loading…
Cancel
Save