diff options
Diffstat (limited to 'sw/main.cpp')
-rw-r--r-- | sw/main.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/sw/main.cpp b/sw/main.cpp index 74e944b..f6a7ce9 100644 --- a/sw/main.cpp +++ b/sw/main.cpp @@ -69,6 +69,7 @@ constexpr double THRESHOLD_K2_DOWN = THRESHOLD_K2; constexpr double THRESHOLD_K3_DOWN = THRESHOLD_K3; constexpr uint32_t MAX_CAPACITY = 1650uL * 3600uL; // As +constexpr uint32_t STARTUP_CAPACITY = 1023uL * 3600uL; // As static uint32_t current_capacity; static uint32_t previous_capacity; @@ -93,6 +94,7 @@ uint32_t EEMEM stored_capacity3; static uint32_t last_store_time_seconds; static uint32_t last_threshold_calculation_seconds; static uint32_t last_status_print_seconds; +static uint32_t last_disjoncteur_print_seconds; static timer_t last_ltc2400_measure; enum class adc_state_t { @@ -208,6 +210,14 @@ static void send_voltage(uint32_t millivolts, adc_voltage_id voltage_id, const t uart_puts(timestamp_buf); } +static void send_disjoncteur_state(bool state, const timer_t& time) +{ + snprintf(timestamp_buf, sizeof(timestamp_buf), "DISJEOL,%ld,%s" ENDL, + time.get_seconds_atomic(), + state ? "On" : "Off"); + uart_puts(timestamp_buf); +} + static void load_capacity_from_eeprom() { @@ -243,7 +253,7 @@ static void load_capacity_from_eeprom() if (current_capacity == 0xFFffFFff) { /* EEPROM does not contain a valid value */ - current_capacity = MAX_CAPACITY; + current_capacity = STARTUP_CAPACITY; } previous_capacity = current_capacity; @@ -404,6 +414,12 @@ int main() send_message("Startup"); } +#if 0 + current_capacity = 1023uL * 3600uL; + store_capacity_to_eeprom(); + while (true) {} +#endif + system_timer = timer_t(0, 0); /* Load capacity stored in EEPROM */ @@ -417,6 +433,7 @@ int main() last_store_time_seconds = last_status_print_seconds = + last_disjoncteur_print_seconds = last_adc_measure_time_seconds = last_threshold_calculation_seconds = system_timer.get_seconds_atomic(); @@ -551,6 +568,12 @@ int main() break; } + constexpr auto disjoncteur_measure_interval = 60; + if (last_disjoncteur_print_seconds + disjoncteur_measure_interval < time_now.seconds_) { + last_disjoncteur_print_seconds += disjoncteur_measure_interval; + send_disjoncteur_state(pins_read_disjoncteur_eolienne(), time_now); + } + relays_handle(time_now); } |