diff --git a/src/app/SAB.cpp b/src/app/SAB.cpp index 6782229..65df6a4 100644 --- a/src/app/SAB.cpp +++ b/src/app/SAB.cpp @@ -97,6 +97,11 @@ TaskSchedulerManager& SAB::getTaskSchedulerManager() return _taskSchedulerManager; } +PowerManager& SAB::getPowerManager() +{ + return _powerManager; +} + ScreenConfig SAB::getScreenConfig() const { return _screenConfig; @@ -112,42 +117,6 @@ SDCardConfig SAB::getSdCardConfig() const return _sdCardConfig; } -PowerInfo SAB::getPowerInfo(const unsigned char nbOfMeasures) const -{ - uint16_t batteryMeasures(0), temp(0); - unsigned char i(0); - int checkLevel(0); - PowerInfo p; - - for(;i < nbOfMeasures;i++) - { - temp = analogRead(ADC); - batteryMeasures += temp; - } - - batteryMeasures /= nbOfMeasures; - - if(batteryMeasures <= USB_THRESHOLD) - { - p.powerType = USB; - p.level = 0; - } - else - { - p.powerType = BATTERY; - checkLevel = ((double)(batteryMeasures-BATT_EMPTY)*100.0/(double)BATT_DIFF); - - if(checkLevel > 100) - p.level = 100; - else if (checkLevel < 0) - p.level = 0; - else - p.level = checkLevel; - } - - return p; -} - const char *SAB::getSoftVersion() const { return SOFT_VERSION; diff --git a/src/app/SAB.h b/src/app/SAB.h index 57a9442..ba508e7 100644 --- a/src/app/SAB.h +++ b/src/app/SAB.h @@ -10,6 +10,7 @@ #include "WEBServerManager.h" #include "IOManager.h" #include "TaskSchedulerManager.h" +#include "PowerManager.h" #include "versions.h" #include #include @@ -34,11 +35,10 @@ class SAB WEBServerManager& getWebServerManager(); IOManager& getIoManager(); TaskSchedulerManager& getTaskSchedulerManager(); + PowerManager& getPowerManager(); ScreenConfig getScreenConfig() const; PinMapping getPinConfig() const; SDCardConfig getSdCardConfig() const; - - PowerInfo getPowerInfo(const unsigned char nbOfMeasures = 5) const; const char *getSoftVersion() const; unsigned char getError() const; private: @@ -57,6 +57,7 @@ class SAB PCF8574 _pcf; IOManager _ioManager; TaskSchedulerManager _taskSchedulerManager; + PowerManager _powerManager; uint8_t _error; }; diff --git a/src/app/app.ino b/src/app/app.ino index 885ff31..038a6ac 100644 --- a/src/app/app.ino +++ b/src/app/app.ino @@ -12,7 +12,7 @@ SAB sab; unsigned long currentMs = 0, buttonMs = 0; volatile boolean ioStateChange(false); -View1Packet v1p = {sab.getRtcManager().getDateTime(), sab.getSdCardManager().getSize(GBYTE), sab.getPowerInfo(),0, sab.getSoftVersion(), &sab}; +View1Packet v1p = {sab.getRtcManager().getDateTime(), sab.getSdCardManager().getSize(GBYTE), sab.getPowerManager().getPowerInfo(),0, sab.getSoftVersion(), &sab}; ViewAPPacket vap = {sab.getConnectivityManager().softAPmacAddress(), sab.getConnectivityManager().softAPSSID(), sab.getConnectivityManager().softAPIP(), sab.getConnectivityManager().softAPgetStationNum()}; ViewSTAPacket vstap = {sab.getConnectivityManager().macAddress(), sab.getConnectivityManager().localIP(), sab.getConnectivityManager().RSSI()}; ViewIoInfoPacket vio = {{0},{0}}; diff --git a/src/app/definition.h b/src/app/definition.h index 21d2a50..ebdffc4 100644 --- a/src/app/definition.h +++ b/src/app/definition.h @@ -47,8 +47,6 @@ typedef enum { OR_0 = 2, OR_90 = 3, OR_180 = 0, OR_270 = 1 } Orientation; typedef enum { BIT = 0, BYTE, KBIT, KBYTE, MBIT, MBYTE, GBIT, GBYTE } SizeUnit; -typedef enum { BATTERY = 0, USB } PowerType; - //Data structure for the view handling typedef struct viewLink{ boolean (*viewLogicFunction)(Adafruit_SSD1306&, void*); @@ -57,13 +55,6 @@ typedef struct viewLink{ struct viewLink *next; } ViewLink, *ViewLinkedList; -//Data structure for the battery info -typedef struct powerInfo -{ - PowerType powerType; - unsigned char level; -}PowerInfo; - char *addChar(char *pointer, const char character); char *dateTimeFormater(char *pointer, const uint8_t value, const char character); diff --git a/src/app/tasks.cpp b/src/app/tasks.cpp index 0ef63b2..04d68c8 100644 --- a/src/app/tasks.cpp +++ b/src/app/tasks.cpp @@ -26,7 +26,7 @@ boolean task_batt_sensing(void *pData) { View1Packet *p = (View1Packet *) pData; Serial.println(F("BATT SENSING...")); - p->powerInfo = p->sab->getPowerInfo(); + p->powerInfo = p->sab->getPowerManager().getPowerInfo(); return true; } diff --git a/src/app/versions.h b/src/app/versions.h index 029a0e1..9a429c8 100644 --- a/src/app/versions.h +++ b/src/app/versions.h @@ -13,5 +13,6 @@ #define SOFT_VERSION "1.1.2" //Fixed a big memory leak :( shame on me... #define SOFT_VERSION "1.1.3" //TaskSchedulerManager added millis rollover #define SOFT_VERSION "1.1.4" //Cleaned AP and STA wifi start +#define SOFT_VERSION "1.2.0" //Added new PowerManager class #endif //VERSIONS_H diff --git a/src/app/views.cpp b/src/app/views.cpp index a81224c..2c68391 100644 --- a/src/app/views.cpp +++ b/src/app/views.cpp @@ -7,7 +7,7 @@ boolean view_1(Adafruit_SSD1306 &display, void *pData) switch(p->powerInfo.powerType) { - case USB: + case PowerManager::USB: sprintf(power_str,"USB"); break; default: diff --git a/src/app/views.h b/src/app/views.h index 88c7868..8e59298 100644 --- a/src/app/views.h +++ b/src/app/views.h @@ -7,7 +7,7 @@ typedef struct view1Packet { DateTime dateTime; float sdCardSize; - PowerInfo powerInfo; + PowerManager::PowerInfo powerInfo; unsigned char nbViews; const char *version; SAB *sab; diff --git a/src/app/webApi.cpp b/src/app/webApi.cpp index 247f2ca..7fcb4bf 100644 --- a/src/app/webApi.cpp +++ b/src/app/webApi.cpp @@ -198,9 +198,9 @@ boolean powerInfoApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, voi { SAB *p = (SAB *)pData; char buffer[300]; - PowerInfo pi = p->getPowerInfo(); + PowerManager::PowerInfo pi = p->getPowerManager().getPowerInfo(); - sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"power type\" : \"%s\", \"level\" : \"%u\", \"unit\" : \"%%\" }", pi.powerType == USB ? "USB" : "BAT", pi.level); + sprintf(buffer,"HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{ \"status\" : \"ok\", \"power type\" : \"%s\", \"level\" : \"%u\", \"unit\" : \"%%\" }", pi.powerType == PowerManager::USB ? "USB" : "BAT", pi.level); wc->print(buffer); return true;