From 9f10767e1f62709f0ef601cb04096c47ba519af8 Mon Sep 17 00:00:00 2001 From: localhorst Date: Thu, 22 Nov 2018 20:43:21 +0100 Subject: [PATCH] array with charger objects --- Software/src/charger.cpp | 12 ++- Software/src/charger.h | 6 +- Software/src/clock.h | 8 +- Software/src/ioController.cpp | 9 ++ Software/src/ioController.h | 2 + Software/src/main.cpp | 180 +++++++++++++++++---------------- Software/src/openChargeMicro.h | 26 ++++- 7 files changed, 147 insertions(+), 96 deletions(-) diff --git a/Software/src/charger.cpp b/Software/src/charger.cpp index 99f3dac..fd35cb6 100644 --- a/Software/src/charger.cpp +++ b/Software/src/charger.cpp @@ -7,12 +7,14 @@ #include "openChargeMicro.h" -charger::charger(struct s_charger pCharger) { + + +charger::charger(const struct s_charger pCharger) { charger_settings = pCharger; + active = false; } charger::~charger() { - } double charger::getCurrent() { @@ -45,4 +47,10 @@ void charger::getInfo() { charger_settings.chU, charger_settings.chI); serialSend(buffer); } +void charger::setStatus(bool pBool) { + active = pBool; +} +bool charger::getStatus() { + return active; +} diff --git a/Software/src/charger.h b/Software/src/charger.h index d04e7bd..171792e 100644 --- a/Software/src/charger.h +++ b/Software/src/charger.h @@ -20,15 +20,19 @@ private: struct s_charger charger_settings; ioController io; multiplexer mux; + bool active; public: - charger(struct s_charger pCharger); + + charger(const struct s_charger pCharger); ~charger(); double getCurrent(); double getVoltage(); double getCapacity(); double getChargeTime(); void getInfo(); + void setStatus(bool pBool); + bool getStatus(); }; #endif /* SRC_CHARGER_H_ */ diff --git a/Software/src/clock.h b/Software/src/clock.h index 5102111..e251a4e 100644 --- a/Software/src/clock.h +++ b/Software/src/clock.h @@ -9,10 +9,10 @@ #define SRC_CLOCK_H_ struct time_t { - unsigned int diffHour; - unsigned int diffMinute; - unsigned int diffSecond; - unsigned int seconds; + unsigned long int diffHour; + unsigned long int diffMinute; + unsigned long int diffSecond; + unsigned long int seconds; }; class clock { diff --git a/Software/src/ioController.cpp b/Software/src/ioController.cpp index 39dbedd..068b222 100644 --- a/Software/src/ioController.cpp +++ b/Software/src/ioController.cpp @@ -59,6 +59,15 @@ void ioController::setActiveLED(bool pBool) { } } +void ioController::setBuzzer(bool pBool) { + //TODO needs testing + if (pBool) { + PORTB |= (1 << BUZZER); //ON + } else { + PORTB &= ~(1 << BUZZER); //OFF + } +} + void ioController::adc_init(void) { ADMUX = (1 << REFS0); //select AVCC as reference ADCSRA = (1 << ADEN) | 7; //enable and prescale = 128 (16MHz/128 = 125kHz) diff --git a/Software/src/ioController.h b/Software/src/ioController.h index 7d8eef8..50b591d 100644 --- a/Software/src/ioController.h +++ b/Software/src/ioController.h @@ -12,6 +12,7 @@ class ioController { private: + public: ioController(); ~ioController(); @@ -21,6 +22,7 @@ public: void activateChargers(); void deactivateChargers(); void setActiveLED(bool pBool); + void setBuzzer(bool pBool); void adc_init(void); int readAdc(char chan); void setMultiplexer(bool pS2, bool pS1, bool pS0); diff --git a/Software/src/main.cpp b/Software/src/main.cpp index 6ba6b46..af37acd 100644 --- a/Software/src/main.cpp +++ b/Software/src/main.cpp @@ -1,6 +1,9 @@ #include "openChargeMicro.h" -void test(); +charger* chargers; + +void createChargers(); +void printStatus(); int main(void) { @@ -14,120 +17,121 @@ int main(void) { io.setActiveLED(true); io.activateChargers(); - char charVal[10]; + //chargers[0]->getInfo(); - time_t ts01 = clk.getTimeStamp(); - dtostrf(ts01.seconds, 4, 0, charVal); - serialSend(charVal); - serialSend(" s (stamp)\r\n"); - while (1) { + chargers=(charger *) malloc(4*sizeof(charger)); - if (((int) clk.getTime() % 10) == 0) { - time_t ts02 = clk.getTime(ts01); - - dtostrf(ts02.diffHour, 4, 0, charVal); - serialSend(charVal); - serialSend(" hour\r\n"); - - dtostrf(ts02.diffMinute, 4, 0, charVal); - serialSend(charVal); - serialSend(" minute\r\n"); - - dtostrf(ts02.diffSecond, 4, 0, charVal); - serialSend(charVal); - serialSend(" sec\r\n"); - - dtostrf(ts02.seconds, 4, 0, charVal); - serialSend(charVal); - serialSend(" sec (since beginning of stamp)\r\n"); - - } - } - - //void test(); + createChargers(); +/* + chargers[0].getInfo(); + chargers[1].getInfo(); + chargers[2].getInfo(); + chargers[3].getInfo(); +*/ + printStatus(); return 0; } -void test() { - /* create charger */ +void createChargers() { + /* create chargers */ s_charger charger_settings; - charger_settings.chU = 0; - charger_settings.chI = 4; - charger_settings.nr = 0; - charger charger01 = charger(charger_settings); - charger01.getInfo(); + charger_settings.chU = CH0_U; + charger_settings.chI = CH0_I; + charger_settings.nr = CH0_NR; + charger chrg0 = charger(charger_settings); + chrg0.setStatus(true); + chargers[0] = chrg0; - charger_settings.chU = 1; - charger_settings.chI = 5; - charger_settings.nr = 1; - charger charger02 = charger(charger_settings); - charger02.getInfo(); + charger_settings.chU = CH1_U; + charger_settings.chI = CH1_I; + charger_settings.nr = CH1_NR; + charger chrg1 = charger(charger_settings); + chrg1.setStatus(true); + chargers[1] = chrg1; - charger_settings.chU = 2; - charger_settings.chI = 6; - charger_settings.nr = 2; - charger charger03 = charger(charger_settings); - charger03.getInfo(); + charger_settings.chU = CH2_U; + charger_settings.chI = CH2_I; + charger_settings.nr = CH2_NR; + charger chrg2 = charger(charger_settings); + chrg2.setStatus(true); + chargers[2] = chrg2; - charger_settings.chU = 3; - charger_settings.chI = 7; - charger_settings.nr = 3; - charger charger04 = charger(charger_settings); - charger04.getInfo(); + charger_settings.chU = CH3_U; + charger_settings.chI = CH3_I; + charger_settings.nr = CH3_NR; + charger chrg3 = charger(charger_settings); + chrg3.setStatus(true); + chargers[3] = chrg3; + + + //chargers[2]->getInfo(); + //chargers[3]->getInfo(); /* create charger */ - while (true) { - char charVal[10]; - dtostrf(charger01.getVoltage(), 4, 2, charVal); - serialSend("Charger01 - "); - serialSend(charVal); - serialSend(" Volt\r\n"); + /* + while (true) { + char charVal[10]; + dtostrf(charger01.getVoltage(), 4, 2, charVal); + serialSend("Charger01 - "); + serialSend(charVal); + serialSend(" Volt\r\n"); - dtostrf(charger01.getCurrent(), 4, 2, charVal); - serialSend("Charger01 - "); - serialSend(charVal); - serialSend(" mAh\r\n"); + dtostrf(charger01.getCurrent(), 4, 2, charVal); + serialSend("Charger01 - "); + serialSend(charVal); + serialSend(" mAh\r\n"); - dtostrf(charger02.getVoltage(), 4, 2, charVal); - serialSend("Charger02 - "); - serialSend(charVal); - serialSend(" Volt\r\n"); - dtostrf(charger02.getCurrent(), 4, 2, charVal); - serialSend("Charger02 - "); - serialSend(charVal); - serialSend(" mAh\r\n"); + dtostrf(charger02.getVoltage(), 4, 2, charVal); + serialSend("Charger02 - "); + serialSend(charVal); + serialSend(" Volt\r\n"); + dtostrf(charger02.getCurrent(), 4, 2, charVal); + serialSend("Charger02 - "); + serialSend(charVal); + serialSend(" mAh\r\n"); - dtostrf(charger03.getVoltage(), 4, 2, charVal); - serialSend("Charger03 - "); - serialSend(charVal); - serialSend(" Volt\r\n"); - dtostrf(charger03.getCurrent(), 4, 2, charVal); - serialSend("Charger03 - "); - serialSend(charVal); - serialSend(" mAh\r\n"); + dtostrf(charger03.getVoltage(), 4, 2, charVal); + serialSend("Charger03 - "); + serialSend(charVal); + serialSend(" Volt\r\n"); + dtostrf(charger03.getCurrent(), 4, 2, charVal); + serialSend("Charger03 - "); + serialSend(charVal); + serialSend(" mAh\r\n"); - dtostrf(charger04.getVoltage(), 4, 2, charVal); - serialSend("Charger04 - "); - serialSend(charVal); - serialSend(" Volt\r\n"); + dtostrf(charger04.getVoltage(), 4, 2, charVal); + serialSend("Charger04 - "); + serialSend(charVal); + serialSend(" Volt\r\n"); - dtostrf(charger04.getCurrent(), 4, 2, charVal); - serialSend("Charger04 - "); - serialSend(charVal); - serialSend(" mAh\r\n"); + dtostrf(charger04.getCurrent(), 4, 2, charVal); + serialSend("Charger04 - "); + serialSend(charVal); + serialSend(" mAh\r\n"); - serialSend("\r\n"); + serialSend("\r\n"); - _delay_ms(1000); + _delay_ms(1000); + } + */ +} + +void printStatus() { + serialSend("printing status .. \r\n"); + for (int i = 0; i < CHARGER_SIZE; i++) { + if (true) { + chargers[i].getInfo(); //print values + } } + } void serialSetup(void) { diff --git a/Software/src/openChargeMicro.h b/Software/src/openChargeMicro.h index 4199aec..7ae1572 100644 --- a/Software/src/openChargeMicro.h +++ b/Software/src/openChargeMicro.h @@ -6,7 +6,6 @@ #include #include - /* project header */ #include "ioController.h" #include "multiplexer.h" @@ -34,3 +33,28 @@ void serialSetup(void); void serialSend(const char* sendString); +/* Charger Config */ +#define CHARGER_SIZE 4 + +// Charger 0 +#define CH0_NR 0 +#define CH0_U 0 +#define CH0_I 4 + +// Charger 1 +#define CH1_NR 1 +#define CH1_U 1 +#define CH1_I 5 + +// Charger 2 +#define CH2_NR 2 +#define CH2_U 2 +#define CH2_I 6 + +// Charger 3 +#define CH3_NR 3 +#define CH3_U 3 +#define CH3_I 7 + + +