From c1b493af18ad1e9551ce94e5b620362a9b8b89c4 Mon Sep 17 00:00:00 2001 From: anschrammh Date: Sun, 10 Mar 2019 19:22:45 +0100 Subject: [PATCH] Added getPowerInfo functionality --- src/app/SAB.cpp | 45 +++++++++++++++++++++++++++++++++++++++++---- src/app/SAB.h | 6 +++--- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/src/app/SAB.cpp b/src/app/SAB.cpp index 9117f49..fbe004f 100644 --- a/src/app/SAB.cpp +++ b/src/app/SAB.cpp @@ -1,6 +1,6 @@ #include "SAB.h" -SAB::SAB() : _screenConfig(128, 64, 0x3C), _sdCardConfig(SPI_FULL_SPEED), _display(_screenConfig.getWidth(), _screenConfig.getHeight(), &Wire), _screenManager(_display), _rtc(), _rtcManager(_rtc), _sdCard(), _sdCardManager(_sdCard), _error(0) +SAB::SAB() : _screenConfig(128, 64, 0x3C), _sdCardConfig(SPI_FULL_SPEED), _display(_screenConfig.getWidth(), _screenConfig.getHeight(), &Wire), _screenManager(_display), _rtc(), _rtcManager(_rtc), _sdCardManager(), _error(0) { Serial.begin(9600); delay(200); @@ -9,10 +9,10 @@ SAB::SAB() : _screenConfig(128, 64, 0x3C), _sdCardConfig(SPI_FULL_SPEED), _displ Wire.begin(_pinConfig.getI2C_sda(), _pinConfig.getI2C_scl()); if(!_rtc.begin()) _error |= RTC_BEGIN_ERR; if(!_display.begin(SSD1306_SWITCHCAPVCC, _screenConfig.getAddress())){ _error |= DISP_BEGIN_ERR; } - if(!_sdCard.begin(_sdCardConfig.getSPISpeed(), _pinConfig.getSPI_sdCard_cs())){ _error |= SDCARD_INIT_ERR; } + if(!_sdCardManager.begin(_sdCardConfig.getSPISpeed(), _pinConfig.getSPI_sdCard_cs())){ _error |= SDCARD_INIT_ERR; } } -SAB::SAB(const PinMapping pinConfig, const ScreenConfig screenConfig, const SDCardConfig sdCardConfig) : _pinConfig(pinConfig), _screenConfig(screenConfig), _sdCardConfig(sdCardConfig), _display(_screenConfig.getWidth(), _screenConfig.getHeight(), &Wire), _screenManager(_display), _rtc(), _rtcManager(_rtc), _sdCard(),_sdCardManager(_sdCard), _error(0) +SAB::SAB(const PinMapping pinConfig, const ScreenConfig screenConfig, const SDCardConfig sdCardConfig) : _pinConfig(pinConfig), _screenConfig(screenConfig), _sdCardConfig(sdCardConfig), _display(_screenConfig.getWidth(), _screenConfig.getHeight(), &Wire), _screenManager(_display), _rtc(), _rtcManager(_rtc), _sdCardManager(), _error(0) { Serial.begin(9600); delay(200); @@ -21,7 +21,7 @@ SAB::SAB(const PinMapping pinConfig, const ScreenConfig screenConfig, const SDCa Wire.begin(_pinConfig.getI2C_sda(), _pinConfig.getI2C_scl()); if(!_rtc.begin()) _error |= RTC_BEGIN_ERR; if(!_display.begin(SSD1306_SWITCHCAPVCC, _screenConfig.getAddress())) _error |= DISP_BEGIN_ERR; - if(!_sdCard.begin(_sdCardConfig.getSPISpeed(), _pinConfig.getSPI_sdCard_cs())){ _error |= SDCARD_INIT_ERR;} + if(!_sdCardManager.begin(_sdCardConfig.getSPISpeed(), _pinConfig.getSPI_sdCard_cs())){ _error |= SDCARD_INIT_ERR;} } ScreenManager& SAB::getScreenManager() @@ -54,6 +54,43 @@ 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); + Serial.println(temp); + batteryMeasures += temp; + } + + batteryMeasures /= nbOfMeasures; + + if(batteryMeasures <= USB_THRESHOLD) + { + p.powerType = USB; + p.level = 0; + } + else + { + p.powerType = BATTERY; + checkLevel = ((batteryMeasures-BATT_EMPTY)*100/BATT_DIFF); + + if(checkLevel > 100) + p.level = 100; + else if (checkLevel < 0) + p.level = 0; + else + p.level = checkLevel; + } + + return p; +} + unsigned char SAB::getError() const { return _error; diff --git a/src/app/SAB.h b/src/app/SAB.h index 75eb808..6eeec14 100644 --- a/src/app/SAB.h +++ b/src/app/SAB.h @@ -22,7 +22,8 @@ class SAB ScreenConfig getScreenConfig() const; PinMapping getPinConfig() const; SDCardConfig getSdCardConfig() const; - + + PowerInfo getPowerInfo(const unsigned char nbOfMeasures = 5) const; unsigned char getError() const; private: const PinMapping _pinConfig; @@ -34,8 +35,7 @@ class SAB RTC_DS3231 _rtc; RtcManager _rtcManager; - - SDClass _sdCard; + SDCardManager _sdCardManager; unsigned char _error;