#include #include #include #include #include "ledctl.h" #include "sensors.h" #include "gui.h" bc_led_t led; bc_led_t led_lcd_red; bc_led_t led_lcd_blue; void lcd_button_left_event_handler(bc_button_t *self, bc_button_event_t event, void *event_param) { if (event == BC_BUTTON_EVENT_CLICK) { click_left(); update_gui(); bc_led_pulse(&led_lcd_blue, 30); } else if (event == BC_BUTTON_EVENT_HOLD) { hold_left(); update_gui(); bc_led_pulse(&led_lcd_blue, 500); } } void lcd_button_right_event_handler(bc_button_t *self, bc_button_event_t event, void *event_param) { if (event == BC_BUTTON_EVENT_CLICK) { click_right(); update_gui(); bc_led_pulse(&led_lcd_red, 30); } else if (event == BC_BUTTON_EVENT_HOLD) { hold_right(); update_gui(); bc_led_pulse(&led_lcd_red, 500); } } void application_init(void) { bc_log_init(BC_LOG_LEVEL_DEBUG, BC_LOG_TIMESTAMP_ABS); // Initialize LED on core module bc_led_init(&led, BC_GPIO_LED, false, false); bc_led_set_mode(&led, BC_LED_MODE_OFF); // Initialize Radio bc_radio_init(BC_RADIO_MODE_NODE_SLEEPING); // Initialize battery init_battery(); // Initialize thermometer sensor on core module init_temperature(); // Initialize LCD bc_module_lcd_init(); // Initialize LCD button left static bc_button_t lcd_left; bc_button_init_virtual(&lcd_left, BC_MODULE_LCD_BUTTON_LEFT, bc_module_lcd_get_button_driver(), false); bc_button_set_event_handler(&lcd_left, lcd_button_left_event_handler, NULL); // Initialize LCD button right static bc_button_t lcd_right; bc_button_init_virtual(&lcd_right, BC_MODULE_LCD_BUTTON_RIGHT, bc_module_lcd_get_button_driver(), false); bc_button_set_event_handler(&lcd_right, lcd_button_right_event_handler, NULL); // Initialize red and blue LED on LCD module bc_led_init_virtual(&led_lcd_red, BC_MODULE_LCD_LED_RED, bc_module_lcd_get_led_driver(), true); bc_led_init_virtual(&led_lcd_blue, BC_MODULE_LCD_LED_BLUE, bc_module_lcd_get_led_driver(), true); bc_radio_pairing_request("lcd-thermostat", VERSION); bc_led_pulse(&led, 2000); update_gui(); }