update wifi interface and handler
add the wifi interface to the hardware abstract
This commit is contained in:
parent
a4e35a2219
commit
1bbafd4bb5
6 changed files with 43 additions and 33 deletions
|
@ -1,9 +1,12 @@
|
|||
#include "HardwareAbstract.hpp"
|
||||
|
||||
HardwareAbstract::HardwareAbstract(std::shared_ptr<BatteryInterface> aBattery)
|
||||
: mBattery(std::move(aBattery)){
|
||||
|
||||
}
|
||||
HardwareAbstract::HardwareAbstract(
|
||||
std::shared_ptr<BatteryInterface> aBattery,
|
||||
std::shared_ptr<wifiHandlerInterface> aWifiHandler
|
||||
)
|
||||
: mBattery(std::move(aBattery)),
|
||||
mWifiHandler(std::move(aWifiHandler))
|
||||
{}
|
||||
|
||||
std::optional<HardwareAbstract::batteryStatus> HardwareAbstract::getBatteryStatus(){
|
||||
if(mBattery){
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <optional>
|
||||
#include <string>
|
||||
#include "BatteryInterface.h"
|
||||
#include "wifiHandlerInterface.h"
|
||||
|
||||
class HardwareAbstract {
|
||||
public:
|
||||
|
@ -20,7 +21,9 @@ public:
|
|||
};
|
||||
virtual std::optional<batteryStatus> getBatteryStatus();
|
||||
|
||||
HardwareAbstract(std::shared_ptr<BatteryInterface> aBattery = nullptr);
|
||||
HardwareAbstract(std::shared_ptr<BatteryInterface> aBattery = nullptr,
|
||||
std::shared_ptr<wifiHandlerInterface> aWifiHandler = nullptr
|
||||
);
|
||||
|
||||
/// @brief Override in order to do setup of hardware devices
|
||||
virtual void init() = 0;
|
||||
|
@ -31,4 +34,5 @@ public:
|
|||
|
||||
private:
|
||||
std::shared_ptr<BatteryInterface> mBattery;
|
||||
std::shared_ptr<wifiHandlerInterface> mWifiHandler;
|
||||
};
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include "DisplayInterface.h"
|
||||
#include <string>
|
||||
|
||||
class wifiHandlerInterface{
|
||||
public:
|
||||
|
@ -11,5 +10,5 @@ class wifiHandlerInterface{
|
|||
virtual void turnOff() = 0;
|
||||
virtual void scan() = 0;
|
||||
virtual char* getSSID() = 0;
|
||||
virtual String getIP() = 0;
|
||||
virtual std::string getIP() = 0;
|
||||
};
|
|
@ -1,4 +1,5 @@
|
|||
#include "HardwareRevX.hpp"
|
||||
#include "wifihandler.hpp"
|
||||
#include "driver/ledc.h"
|
||||
|
||||
std::shared_ptr<HardwareRevX> HardwareRevX::mInstance = nullptr;
|
||||
|
@ -49,9 +50,11 @@ void HardwareRevX::initIO() {
|
|||
gpio_deep_sleep_hold_dis();
|
||||
}
|
||||
|
||||
HardwareRevX::HardwareRevX():HardwareAbstract(std::make_shared<Battery>(ADC_BAT,CRG_STAT)){
|
||||
|
||||
}
|
||||
HardwareRevX::HardwareRevX():
|
||||
HardwareAbstract(
|
||||
std::make_shared<Battery>(ADC_BAT,CRG_STAT),
|
||||
wifiHandler::getInstance()
|
||||
){}
|
||||
|
||||
HardwareRevX::WakeReason getWakeReason() {
|
||||
// Find out wakeup cause
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
#include <Arduino.h>
|
||||
#include <Preferences.h>
|
||||
|
||||
wifiHandler* mInstance;
|
||||
std::shared_ptr<wifiHandler> wifiHandler::mInstance = nullptr;
|
||||
|
||||
|
||||
// WiFi status event
|
||||
void wifiHandler::WiFiEvent(WiFiEvent_t event){
|
||||
|
@ -29,7 +30,7 @@ void wifiHandler::WiFiEvent(WiFiEvent_t event){
|
|||
case ARDUINO_EVENT_WIFI_STA_GOT_IP6:
|
||||
// TODO convert to callbacks
|
||||
//display.update_wifi(true);
|
||||
this->update_credentials(temporary_ssid, temporary_password);
|
||||
//update_credentials(temporary_ssid, temporary_password);
|
||||
break;
|
||||
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
|
||||
case ARDUINO_EVENT_WIFI_STA_LOST_IP:
|
||||
|
@ -41,15 +42,14 @@ void wifiHandler::WiFiEvent(WiFiEvent_t event){
|
|||
}
|
||||
}
|
||||
|
||||
wifiHandler* wifiHandler::getInstance()
|
||||
std::shared_ptr<wifiHandler> wifiHandler::getInstance()
|
||||
{
|
||||
if(instance == nullptr)
|
||||
if(mInstance)
|
||||
{
|
||||
instance = new wifiHandler();
|
||||
return mInstance;
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
return std::shared_ptr<wifiHandler>(new wifiHandler());
|
||||
};
|
||||
|
||||
String wifiHandler::getFoundSSID(unsigned int index)
|
||||
{
|
||||
|
@ -92,7 +92,6 @@ void wifiHandler::scan()
|
|||
void wifiHandler::begin()
|
||||
{
|
||||
//this->display = display;
|
||||
mInstance = wifiHandler::getInstance();
|
||||
WiFi.setHostname("OMOTE");
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.onEvent([] (WiFiEvent_t event) {mInstance->WiFiEvent(event);});
|
||||
|
@ -137,6 +136,10 @@ void wifiHandler::turnOff()
|
|||
WiFi.mode(WIFI_OFF);
|
||||
}
|
||||
|
||||
void wifiHandler::disconnect(){
|
||||
WiFi.disconnect();
|
||||
}
|
||||
|
||||
bool wifiHandler::isConnected()
|
||||
{
|
||||
return WiFi.isConnected();
|
||||
|
@ -147,7 +150,7 @@ char* wifiHandler::getSSID()
|
|||
return this->SSID;
|
||||
}
|
||||
|
||||
String wifiHandler::getIP()
|
||||
std::string wifiHandler::getIP()
|
||||
{
|
||||
return WiFi.localIP().toString();
|
||||
return std::string(WiFi.localIP().toString().c_str());
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
class wifiHandler: public wifiHandlerInterface {
|
||||
public:
|
||||
static wifiHandler* getInstance();
|
||||
static std::shared_ptr<wifiHandler> getInstance();
|
||||
/**
|
||||
* @brief Function to initialize the wifi handler
|
||||
*
|
||||
|
@ -78,7 +78,7 @@ class wifiHandler: public wifiHandlerInterface {
|
|||
* @param temporary_ssid
|
||||
* @param temporary_password
|
||||
*/
|
||||
static void update_credentials(const char* temporary_ssid, const char* temporary_password);
|
||||
void update_credentials(const char* temporary_ssid, const char* temporary_password);
|
||||
|
||||
void WiFiEvent(WiFiEvent_t event);
|
||||
|
||||
|
@ -87,27 +87,25 @@ class wifiHandler: public wifiHandlerInterface {
|
|||
*
|
||||
* @return String IP Address of the device
|
||||
*/
|
||||
String getIP();
|
||||
std::string getIP();
|
||||
private:
|
||||
|
||||
static wifiHandler* instance;
|
||||
|
||||
static char temporary_password[STRING_SIZE];
|
||||
static char temporary_ssid[STRING_SIZE];
|
||||
|
||||
|
||||
wifiHandler();
|
||||
|
||||
static std::shared_ptr<wifiHandler> mInstance;
|
||||
char temporary_password[STRING_SIZE];
|
||||
char temporary_ssid[STRING_SIZE];
|
||||
|
||||
/**
|
||||
* @brief Internal variable to store the wifi password
|
||||
*
|
||||
*/
|
||||
static char password[STRING_SIZE];
|
||||
char password[STRING_SIZE];
|
||||
|
||||
/**
|
||||
* @brief Internal variable to store the wifi SSID
|
||||
*
|
||||
*/
|
||||
static char SSID[STRING_SIZE];
|
||||
char SSID[STRING_SIZE];
|
||||
|
||||
};
|
Loading…
Add table
Reference in a new issue