void ICACHE_FLASH_ATTR mod_led_8x8_rgb_init() { spi_led_8x8_rgb_init(); preferences_get(MOD_LED8x8RGB, mod_led_8x8_rgb_parse); led_8x8_rgb_set_dimensions(mod_led_8x8_cols, mod_led_8x8_rows); webserver_register_handler_callback(MOD_LED_8x8_RGB_URL, mod_led_8x8_rgb_handler); device_register(SPI, 0, MOD_LED8x8RGB, MOD_LED_8x8_RGB_URL, NULL, NULL); }
static void draw_row_callback(GContext *ctx, const Layer *cell_layer, MenuIndex *cell_index, void *context) { switch(cell_index->row) { case 0: snprintf(lightup_text, sizeof(lightup_text), "Light up %d min",preferences_get()->secondsToLightUpBeforeAlarm/60); menu_cell_basic_draw(ctx, cell_layer, lightup_text, "before alarm goes of", NULL); break; case 1: snprintf(flash_text, sizeof(flash_text), "Snooze to flash: %d",preferences_get()->flashingAfterXSnoozes); menu_cell_basic_draw(ctx, cell_layer, flash_text, "Light starts pulsating", NULL); break; case 2: menu_cell_basic_draw(ctx, cell_layer, "Reset", "Back to LIFX factory settings", NULL); break; case 3: menu_cell_basic_draw(ctx, cell_layer, "Test Alarm", "Immediately fires an alarm", NULL); break; case 4: menu_cell_basic_draw(ctx, cell_layer, "Test Alarm in 10 s", NULL, NULL); break; default: break; } }
void ICACHE_FLASH_ATTR user_switch2_init() { uint8 i; for (i=0; i<SWITCH_COUNT; i++) { switch2_hardware[i].id = i; PIN_FUNC_SELECT(switch2_hardware[i].gpio.gpio_name, switch2_hardware[i].gpio.gpio_func); switch2_hardware[i].state = GPIO_INPUT_GET(GPIO_ID_PIN(switch2_hardware[i].gpio.gpio_id)); if (switch2_hardware[i].type == SWITCH2_SWITCH) { gpio_output_set(0, 0, 0, GPIO_ID_PIN(switch2_hardware[i].gpio.gpio_id)); setInterval(switch2_toggle, &switch2_hardware[i], 10); } } preferences_get(SWITCH2_STR, switch2_parse); webserver_register_handler_callback(SWITCH2_URL, switch2_handler); device_register(NATIVE, 0, SWITCH2_STR, SWITCH2_URL, switch2_init, switch2_down); }
void do_vibrate(void) { if(s_vibration_pattern) { s_pwmPat.durations[1] = (s_vibe_counter/s_vibration_pattern)+1; s_vibe_counter++; vibes_enqueue_custom_pwm_pattern(&s_pwmPat); } else vibes_long_pulse(); if(s_snoozes>=preferences_get()->flashingAfterXSnoozes) { if(get_lfx_state_power()) { send(DURATION_OFF_MS, 50); } else { send(DURATION_ON_MS, 50); } } vibe_timer = app_timer_register(1000,vibe_timer_callback,NULL); }
static void select_callback(struct MenuLayer *menu_layer, MenuIndex *cell_index, void *context) { time_t future_time = time(NULL) + 10; //Alarm *alarm = alarm_get(); switch(cell_index->row) { case 0: if(preferences_get()->secondsToLightUpBeforeAlarm==60) {preferences_get()->secondsToLightUpBeforeAlarm=120;} else if(preferences_get()->secondsToLightUpBeforeAlarm==120) {preferences_get()->secondsToLightUpBeforeAlarm=300;} else if(preferences_get()->secondsToLightUpBeforeAlarm==300) {preferences_get()->secondsToLightUpBeforeAlarm=600;} else if(preferences_get()->secondsToLightUpBeforeAlarm==600) {preferences_get()->secondsToLightUpBeforeAlarm=900;} else if(preferences_get()->secondsToLightUpBeforeAlarm==900) {preferences_get()->secondsToLightUpBeforeAlarm=1800;} else {preferences_get()->secondsToLightUpBeforeAlarm=60;} break; case 1: preferences_get()->flashingAfterXSnoozes = (preferences_get()->flashingAfterXSnoozes + 1) % 5; break; case 2: preferences_reset(); break; case 3: wakeup_launch_window(0); break; case 4: APP_LOG(APP_LOG_LEVEL_DEBUG, "Scheduled wakeup timer"); wakeup_schedule(future_time, WAKEUP_REASON_ALARM, true); break; default: break; } settings_window_mark_dirty(); }