FIX: do not overrun daily history

This commit is contained in:
Robin Dietzel 2023-02-02 15:54:20 +01:00
parent 036f5c9bf4
commit ba91310389

View File

@ -196,6 +196,10 @@ int main(void) {
io::RelayChannel tankPump(OCHAN0_GPIO_Port, OCHAN0_Pin, true, io::RelayChannel::state::OFF); io::RelayChannel tankPump(OCHAN0_GPIO_Port, OCHAN0_Pin, true, io::RelayChannel::state::OFF);
io::RelayChannel refillPump(OCHAN1_GPIO_Port, OCHAN1_Pin, false, io::RelayChannel::state::OFF); io::RelayChannel refillPump(OCHAN1_GPIO_Port, OCHAN1_Pin, false, io::RelayChannel::state::OFF);
//Initially switch relays off by forcing a refresh
tankPump.forceRefresh();
refillPump.forceRefresh();
uint32_t last_menu_retrigger = 0; uint32_t last_menu_retrigger = 0;
uint32_t last_backlight_retrigger = 0; uint32_t last_backlight_retrigger = 0;
@ -214,6 +218,7 @@ int main(void) {
static uint16_t old_minute_counter = minute_counter; static uint16_t old_minute_counter = minute_counter;
SendUartString(&huart1, "Hello from FloatPUMP Controller"); SendUartString(&huart1, "Hello from FloatPUMP Controller");
SendUartString(&huart1, {"Revision: " GIT_HASH}); SendUartString(&huart1, {"Revision: " GIT_HASH});
@ -288,6 +293,12 @@ int main(void) {
last_menu_retrigger = HAL_GetTick(); last_menu_retrigger = HAL_GetTick();
while (true) { while (true) {
//Display menu until timeout //Display menu until timeout
tankPump.switchRelay(floatpump::io::RelayChannel::state::OFF);
refillPump.switchRelay(floatpump::io::RelayChannel::state::OFF);
//Force refresh
tankPump.forceRefresh();
refillPump.forceRefresh();
controller.execute(); controller.execute();
if (rot_button) { if (rot_button) {
rot_button = false; rot_button = false;
@ -330,6 +341,9 @@ int main(void) {
if (HAL_GetTick() > last_menu_retrigger + 10000) { if (HAL_GetTick() > last_menu_retrigger + 10000) {
display.LCDClearDisplay(); display.LCDClearDisplay();
//Force relay refresh to apply inverted outputs immediately
tankPump.forceRefresh();
refillPump.forceRefresh();
break; break;
} }
} }
@ -354,7 +368,7 @@ int main(void) {
//Calculate diff to value 1h ago -> minute_counter+1's entry is always 60mins ago ! //Calculate diff to value 1h ago -> minute_counter+1's entry is always 60mins ago !
diff_hist_hour = history_h[minute_counter % 60] - history_h[(minute_counter + 1) % 60]; diff_hist_hour = history_h[minute_counter % 60] - history_h[(minute_counter + 1) % 60];
//Same here for daily history //Same here for daily history
diff_hist_day = history_d[minute_counter / 60] - history_d[(minute_counter + 60) / 60]; diff_hist_day = history_d[(minute_counter / 60) % 24] - history_d[((minute_counter + 60) / 60) % 24];
} }
HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);