From 591e5557acb71e0275bda224e9a5db346e729f9e Mon Sep 17 00:00:00 2001 From: localhorst Date: Thu, 22 Nov 2018 23:27:20 +0100 Subject: [PATCH] update for active chargers --- Software/src/charger.cpp | 30 +++++++++++++++++++++++------- Software/src/charger.h | 5 ++++- Software/src/main.cpp | 39 ++++++++++++++++++++++++++++++++++----- 3 files changed, 61 insertions(+), 13 deletions(-) diff --git a/Software/src/charger.cpp b/Software/src/charger.cpp index 7901117..e615fe4 100644 --- a/Software/src/charger.cpp +++ b/Software/src/charger.cpp @@ -10,6 +10,7 @@ charger::charger(const struct s_charger pCharger) { charger_settings = pCharger; active = false; + capacity = 0; } charger::~charger() { @@ -32,17 +33,16 @@ double charger::getVoltage() { } /* returns summed up charged capacity since charge start in mAh */ -double charger::getCapacity() { - //TODO - return 1.1; +unsigned int charger::getCapacity() { + return capacity; } -void charger::setStartTime(struct time_t pTime){ +void charger::setStartTime(struct time_t pTime) { startTime = pTime; } - struct time_t charger::getStartTime(){ - return startTime; - } +struct time_t charger::getStartTime() { + return startTime; +} void charger::getInfo() { char buffer[50]; @@ -57,3 +57,19 @@ bool charger::getStatus() { return active; } +/* resets the capacity */ +void charger::reset() { + +} + +/* updates the capacity */ +void charger::update() { + +capacity = 1; + + + +//serialSend("update\r\n"); + +} + diff --git a/Software/src/charger.h b/Software/src/charger.h index 0d1a59e..cbbe5ca 100644 --- a/Software/src/charger.h +++ b/Software/src/charger.h @@ -21,6 +21,7 @@ private: ioController io; multiplexer mux; struct time_t startTime; + unsigned int capacity; bool active; public: @@ -28,12 +29,14 @@ public: ~charger(); double getCurrent(); double getVoltage(); - double getCapacity(); + unsigned int getCapacity(); void setStartTime(struct time_t pTime); struct time_t getStartTime(); void getInfo(); void setStatus(bool pBool); bool getStatus(); + void reset(); + void update(); }; #endif /* SRC_CHARGER_H_ */ diff --git a/Software/src/main.cpp b/Software/src/main.cpp index bc340ad..ca50c90 100644 --- a/Software/src/main.cpp +++ b/Software/src/main.cpp @@ -1,10 +1,13 @@ #include "openChargeMicro.h" charger* chargers; +clock* clk; void createChargers(); void printStatus(); void checkForBattery(); +void updateChargers(); +bool everySec(); int main(void) { @@ -13,28 +16,53 @@ int main(void) { serialSend(__DATE__ __TIME__); serialSend("\r\n"); - clock clk; - ioController io; - chargers = (charger *) malloc(CHARGER_SIZE * sizeof(charger)); + clk = (clock *) malloc(sizeof(clock)); + clock tmp; + clk = &tmp; + + ioController io; + io.deactivateChargers(); io.setActiveLED(true); io.activateChargers(); createChargers(); - //loop till power off while (true) { checkForBattery(); - printStatus(); + //printStatus(); + updateChargers(); } return 0; } +bool everySec() { + + static uint32_t time; + if (clk->getTime() != time) { + time = clk->getTime(); + return true; + } + return false; +} + +void updateChargers() { + + if (everySec()) { //updates the chargers every sec + for (int i = 0; i < CHARGER_SIZE; i++) { + if (chargers[i].getStatus()) { + //charger active --> battery pluged on + chargers[i].update(); + } + } + } +} + void checkForBattery() { for (int l = 0; l < CHARGER_SIZE; l++) { @@ -64,6 +92,7 @@ void checkForBattery() { } else { //serialSend("blocked\r\n"); chargers[l].setStatus(false); + chargers[l].reset(); } }