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;
}
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;

View File

@ -10,6 +10,7 @@
#include "WEBServerManager.h"
#include "IOManager.h"
#include "TaskSchedulerManager.h"
#include "PowerManager.h"
#include "versions.h"
#include <Adafruit_SSD1306.h>
#include <RTClib.h>
@ -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;
};

View File

@ -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}};

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 { 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);

View File

@ -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;
}

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.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

View File

@ -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:

View File

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

View File

@ -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;