#include "leds.h" #include "shared.h" #include "network.h" #include "server.h" #include "rom/ets_sys.h" #include "esp_system.h" #include "esp_netif.h" #include "esp_event.h" #include #include #include #include // starts the basic subsystems we will be using static void init_esp(void) { // start the networking interface ESP_ERROR_CHECK(esp_netif_init()); // start the event loop ESP_ERROR_CHECK(esp_event_loop_create_default()); } static void TEST_leds() { // TEST: after a delay, set the leds to a gradient of red - black sleep(1); union Led led = { .components = { .red = 0, .green = 255, .blue = 0, .global = GLOBAL(10) } }; set_led_range(0, 120, led); led.components.blue = 255; set_led_range(60, 120, led); send_leds(); sleep(1); struct Gradient gradient; gradient.points_len = 4; gradient.points[0].offset = 0; gradient.points[0].movement = 0; gradient.points[0].led.components = (struct LedComponents) { .global = GLOBAL(0), .red = 0, .green = 0, .blue = 0, }; gradient.points[1].offset = 59; gradient.points[1].movement = -1; gradient.points[1].led.components = (struct LedComponents){ .global = GLOBAL(10), .red = 40, .green = 200, .blue = 40, }; gradient.points[2].offset = 61; gradient.points[2].movement = 1; gradient.points[2].led.components = (struct LedComponents){ .global = GLOBAL(10), .red = 40, .green = 200, .blue = 40, }; gradient.points[3].offset = 120; gradient.points[3].movement = 0; gradient.points[3].led.components = (struct LedComponents){ .global = GLOBAL(0), .red = 0, .green = 0, .blue = 0, }; leds_set_current_gradient(&gradient, 0); } void app_main(void) { LOGLN("---- starting"); // start hardware subsystems init_esp(); // startup leds and send initial state leds_init(); send_leds(); // start wifi subsystem wifi_init(); // configure wifi hardware to act as an access point softap_init(); // start listening for HTTP signals server_init(); TEST_leds(); LOGLN("---- finished setting up"); }