#include #include #include #include #include #include #include #include #include #include #include #include void handler_loop(controller_t *controller) { LOG_DEBUG("===== IDLE LOOP START ====="); 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(NULL))) { LOG_DEBUG("relay %d is active", 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", i); } } }