Updated code to use the PowerManager class

This commit is contained in:
Th3maz1ng 2019-10-05 18:24:45 +02:00
parent 730460bd99
commit 6ffe25ec3b
9 changed files with 15 additions and 53 deletions

View File

@ -97,6 +97,11 @@ TaskSchedulerManager& SAB::getTaskSchedulerManager()
return _taskSchedulerManager; return _taskSchedulerManager;
} }
PowerManager& SAB::getPowerManager()
{
return _powerManager;
}
ScreenConfig SAB::getScreenConfig() const ScreenConfig SAB::getScreenConfig() const
{ {
return _screenConfig; return _screenConfig;
@ -112,42 +117,6 @@ SDCardConfig SAB::getSdCardConfig() const
return _sdCardConfig; 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 const char *SAB::getSoftVersion() const
{ {
return SOFT_VERSION; return SOFT_VERSION;

View File

@ -10,6 +10,7 @@
#include "WEBServerManager.h" #include "WEBServerManager.h"
#include "IOManager.h" #include "IOManager.h"
#include "TaskSchedulerManager.h" #include "TaskSchedulerManager.h"
#include "PowerManager.h"
#include "versions.h" #include "versions.h"
#include <Adafruit_SSD1306.h> #include <Adafruit_SSD1306.h>
#include <RTClib.h> #include <RTClib.h>
@ -34,11 +35,10 @@ class SAB
WEBServerManager& getWebServerManager(); WEBServerManager& getWebServerManager();
IOManager& getIoManager(); IOManager& getIoManager();
TaskSchedulerManager& getTaskSchedulerManager(); TaskSchedulerManager& getTaskSchedulerManager();
PowerManager& getPowerManager();
ScreenConfig getScreenConfig() const; ScreenConfig getScreenConfig() const;
PinMapping getPinConfig() const; PinMapping getPinConfig() const;
SDCardConfig getSdCardConfig() const; SDCardConfig getSdCardConfig() const;
PowerInfo getPowerInfo(const unsigned char nbOfMeasures = 5) const;
const char *getSoftVersion() const; const char *getSoftVersion() const;
unsigned char getError() const; unsigned char getError() const;
private: private:
@ -57,6 +57,7 @@ class SAB
PCF8574 _pcf; PCF8574 _pcf;
IOManager _ioManager; IOManager _ioManager;
TaskSchedulerManager _taskSchedulerManager; TaskSchedulerManager _taskSchedulerManager;
PowerManager _powerManager;
uint8_t _error; uint8_t _error;
}; };

View File

@ -12,7 +12,7 @@ SAB sab;
unsigned long currentMs = 0, buttonMs = 0; unsigned long currentMs = 0, buttonMs = 0;
volatile boolean ioStateChange(false); 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()}; 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()}; ViewSTAPacket vstap = {sab.getConnectivityManager().macAddress(), sab.getConnectivityManager().localIP(), sab.getConnectivityManager().RSSI()};
ViewIoInfoPacket vio = {{0},{0}}; ViewIoInfoPacket vio = {{0},{0}};

View File

@ -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 { BIT = 0, BYTE, KBIT, KBYTE, MBIT, MBYTE, GBIT, GBYTE } SizeUnit;
typedef enum { BATTERY = 0, USB } PowerType;
//Data structure for the view handling //Data structure for the view handling
typedef struct viewLink{ typedef struct viewLink{
boolean (*viewLogicFunction)(Adafruit_SSD1306&, void*); boolean (*viewLogicFunction)(Adafruit_SSD1306&, void*);
@ -57,13 +55,6 @@ typedef struct viewLink{
struct viewLink *next; struct viewLink *next;
} ViewLink, *ViewLinkedList; } 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 *addChar(char *pointer, const char character);
char *dateTimeFormater(char *pointer, const uint8_t value, const char character); char *dateTimeFormater(char *pointer, const uint8_t value, const char character);

View File

@ -26,7 +26,7 @@ boolean task_batt_sensing(void *pData)
{ {
View1Packet *p = (View1Packet *) pData; View1Packet *p = (View1Packet *) pData;
Serial.println(F("BATT SENSING...")); Serial.println(F("BATT SENSING..."));
p->powerInfo = p->sab->getPowerInfo(); p->powerInfo = p->sab->getPowerManager().getPowerInfo();
return true; return true;
} }

View File

@ -13,5 +13,6 @@
#define SOFT_VERSION "1.1.2" //Fixed a big memory leak :( shame on me... #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.3" //TaskSchedulerManager added millis rollover
#define SOFT_VERSION "1.1.4" //Cleaned AP and STA wifi start #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 #endif //VERSIONS_H

View File

@ -7,7 +7,7 @@ boolean view_1(Adafruit_SSD1306 &display, void *pData)
switch(p->powerInfo.powerType) switch(p->powerInfo.powerType)
{ {
case USB: case PowerManager::USB:
sprintf(power_str,"USB"); sprintf(power_str,"USB");
break; break;
default: default:

View File

@ -7,7 +7,7 @@ typedef struct view1Packet
{ {
DateTime dateTime; DateTime dateTime;
float sdCardSize; float sdCardSize;
PowerInfo powerInfo; PowerManager::PowerInfo powerInfo;
unsigned char nbViews; unsigned char nbViews;
const char *version; const char *version;
SAB *sab; SAB *sab;

View File

@ -198,9 +198,9 @@ boolean powerInfoApi(WEBServerManager::HttpRequestData &HRD, WiFiClient *wc, voi
{ {
SAB *p = (SAB *)pData; SAB *p = (SAB *)pData;
char buffer[300]; 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); wc->print(buffer);
return true; return true;