#include #include #include #include #include #include #include #include #include #include #include #include void handler_loop(controller_t *controller) { time_t timestamp = time(NULL); struct tm *time_struct = localtime(×tamp); LOG_DEBUG("===== IDLE LOOP START =====\n"); for(uint_fast8_t i = 0; i < controller->relay_count; ++i) { relay_t *relay = controller->relays[i]; int is_active = 0; if(relay_is_active(relay, time_struct)) { LOG_DEBUG("relay %d is active\n", i); is_active = 1; } if(global_config.relay_configs[i].inverted) { is_active = !is_active; } switch(global_config.relay_configs[i].driver) { case RELAY_DRIVER_GPIO: driver_gpio_set(global_config.relay_configs[i].pin, is_active); break; case RELAY_DRIVER_PIFACE: driver_piface_set(global_config.relay_configs[i].pin, is_active); break; default: LOG_WARN("relay %d is not using a driver\n", i); } } }