watch_display_string(buf, 0);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
- case EVENT_ALARM_BUTTON_DOWN:
- case EVENT_ALARM_BUTTON_UP:
- case EVENT_ALARM_LONG_PRESS:
default:
+ movement_default_loop_handler(event, settings);
break;
}
retval %= 100000;
return retval;
-}
\ No newline at end of file
+}
case EVENT_TICK:
_update(settings, state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
state->displaying_sol = !state->displaying_sol;
_update(settings, state);
// watch_start_tick_animation(500);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
// handle alarm indicator
if (state->alarm_enabled != settings->bit.alarm_enabled) _update_alarm_indicator(settings->bit.alarm_enabled, state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- return false;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_LONG_PRESS:
state->signal_enabled = !state->signal_enabled;
if (state->signal_enabled) watch_set_indicator(WATCH_INDICATOR_BELL);
}
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
_alarm_update_alarm_enabled(settings, state);
}
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_TIMEOUT:
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_TICK:
_astronomy_face_update(event, settings, state);
break;
- case EVENT_MODE_BUTTON_UP:
- // You shouldn't need to change this case; Mode almost always moves to the next watch face.
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_UP:
- // If you have other uses for the Light button, you can opt not to illuminate the LED for this event.
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_UP:
switch (state->mode) {
case ASTRONOMY_MODE_SELECTING_BODY:
// TODO?
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_ACTIVATE:
_blinky_face_update_lcd(state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
if (!state->active) {
state->color = (state->color + 1) % 3;
break;
case EVENT_TIMEOUT:
if (!state->active) movement_move_to_face(0);
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
}
draw(state, event.subsecond);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
switch(state->mode) {
case cd_running:
movement_move_to_face(0);
break;
case EVENT_LOW_ENERGY_UPDATE:
+ break;
default:
- break;
+ movement_default_loop_handler(event, settings);
+ break;
}
return true;
counter_state_t *state = (counter_state_t *)context;
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_UP:
state->counter_idx++; // increment counter index
if (state->counter_idx>99) { //0-99
// ignore timeout
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
databank_state.current_word = 0;
display();
break;
- case EVENT_MODE_BUTTON_UP:
- // when the user presses 'mode', we tell movement to move to the next watch face.
- // movement will call our resign function, clear the screen, and transfer control
- // to the next watch face in the list.
- movement_move_to_next_face();
- break;
case EVENT_ALARM_LONG_PRESS:
databank_state.databank_page = (databank_state.databank_page + 1) % databank_num_pages;
databank_state.current_word = 0;
// and it will do it long before the watch enters low energy mode. This ensures we
// won't be on screen, and thus opts us out of getting the EVENT_LOW_ENERGY_UPDATE above.
movement_move_to_face(0);
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
}
}
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_DOWN:
// only illuminate if we're in display mode
if (state->current_page == 0) movement_illuminate_led();
if (state->current_page != 0) {
movement_move_to_face(0);
}
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
watch_buzzer_play_sequence((int8_t *)_sound_seq_finish, NULL);
}
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_TIMEOUT:
if (state->face_state != interval_state_running) movement_move_to_face(0);
break;
default:
- break;
+ movement_default_loop_handler(event, settings);
+ break;
}
return true;
-}
\ No newline at end of file
+}
case EVENT_TICK:
_orrery_face_update(event, settings, state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
- case EVENT_LIGHT_BUTTON_UP:
- break;
case EVENT_ALARM_BUTTON_UP:
switch (state->mode) {
case ORRERY_MODE_SELECTING_BODY:
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_TICK:
display_dice_roll_animation(state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
// Change how many sides the die has
for (int i = 0; i < NUM_DICE_TYPES; i++) {
watch_display_string("SLEEP ", 4);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
pulsometer_state_t *pulsometer_state = (pulsometer_state_t *)context;
char buf[14];
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_DOWN:
pulsometer_state->measuring = true;
pulsometer_state->pulse = 0xFFFF;
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_ACTIVATE:
watch_display_string("ra ", 0);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_DOWN:
if (ratemeter_state->ticks != 0) {
ratemeter_state->rate = (int16_t)(60.0 / ((float)ratemeter_state->ticks / (float)RATEMETER_FACE_FREQUENCY));
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
movement_move_to_face(0);
break;
case EVENT_LOW_ENERGY_UPDATE:
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_LOW_ENERGY_UPDATE:
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
}
draw(state, event.subsecond, settings);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_LONG_PRESS:
if (state->mode == sl_running) {
reset(state);
}
break;
case EVENT_LOW_ENERGY_UPDATE:
+ break;
default:
- break;
+ movement_default_loop_handler(event, settings);
+ break;
}
return true;
case EVENT_TICK:
_draw();
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_LONG_PRESS:
// kind od hidden feature: long press toggles light on or off
state->light_on_button = !state->light_on_button;
_draw();
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
return true;
(void) context;
// cancel the keepalive task
movement_cancel_background_task();
-}
\ No newline at end of file
+}
state->animation_state = (state->animation_state + 1) % 6;
}
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
if (state->editing){
// Go to next digit
// watch_start_tick_animation(500);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
// return true if the watch can enter standby mode. If you are PWM'ing an LED or buzzing the buzzer here,
tally_state_t *state = (tally_state_t *)context;
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_UP:
// increment tally index
state->tally_idx++;
// ignore timeout
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_TICK:
display_animation(state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
if (state->drawn_cards[0] == 0xff) {
// deck is inited; cycle through # cards to draw
case EVENT_LOW_ENERGY_UPDATE:
watch_display_string("SLEEP ", 4);
break;
- case EVENT_MODE_LONG_PRESS:
- // since we ignore timeouts, provide a convenient way to jump back to the start
- movement_move_to_face(0);
- break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_TICK:
// on activate and tick, if we are animating,
break;
- case EVENT_MODE_BUTTON_UP:
- // when the user presses 'mode', we tell movement to move to the next watch face.
- // movement will call our resign function, clear the screen, and transfer control
- // to the next watch face in the list.
- movement_move_to_next_face();
- break;
case EVENT_LOW_ENERGY_UPDATE:
// This low energy mode update occurs once a minute, if the watch face is in the
// foreground when Movement enters low energy mode. We have the option of supporting
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
}
tomato_draw(state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
movement_illuminate_led();
if (state->mode == tomato_ready) {
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
watch_display_string(buf, 0);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_TIMEOUT:
movement_move_to_face(0);
break;
break;
case EVENT_ALARM_BUTTON_DOWN:
case EVENT_ALARM_LONG_PRESS:
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_ACTIVATE:
totp_face_display(totp_state);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_TIMEOUT:
movement_move_to_face(0);
break;
break;
case EVENT_ALARM_BUTTON_DOWN:
case EVENT_ALARM_LONG_PRESS:
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
movement_play_alarm();
// 2022-07-23: Thx @joeycastillo for the dedicated “alarm” signal
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_TIMEOUT:
movement_move_to_face(0);
break;
case EVENT_LOW_ENERGY_UPDATE:
+ break;
default:
- break;
+ movement_default_loop_handler(event, settings);
+ break;
}
return true;
-}
\ No newline at end of file
+}
char *c = (char *)context;
char buf[11];
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_UP:
*c = (*c) + 1;
if (*c & 0x80) *c = ' ';
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
(void) settings;
demo_face_index_t *screen = (demo_face_index_t *)context;
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_UP:
*screen = ((*screen) + 1) % DEMO_FACE_NUM_FACES;
// fall through
// ignore timeout
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
break;
case EVENT_TICK:
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
freqcorr = RTC->MODE2.FREQCORR.reg;
if (freqcorr < 127) {
watch_start_tick_animation(500);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
state->current_word = (state->current_word + 1) % 2;
}
break;
- case EVENT_LIGHT_BUTTON_UP:
- // when the user presses 'light', we illuminate the LED. We could override this if
- // our UI needed an additional button for input, consuming the light button press
- // but not illuminating the LED.
- movement_illuminate_led();
- break;
- case EVENT_MODE_BUTTON_UP:
- // when the user presses 'mode', we tell movement to move to the next watch face.
- // movement will call our resign function, clear the screen, and transfer control
- // to the next watch face in the list.
- movement_move_to_next_face();
- break;
case EVENT_ALARM_BUTTON_UP:
// when the user presses 'alarm', we toggle the state of the animation. If animating,
// we stop; if stopped, we resume.
// and it will do it long before the watch enters low energy mode. This ensures we
// won't be on screen, and thus opts us out of getting the EVENT_LOW_ENERGY_UPDATE above.
movement_move_to_face(0);
+ break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
lis2dw_interrupt_source interrupt_source = 0;
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_LONG_PRESS:
- movement_illuminate_led();
- break;
case EVENT_LIGHT_BUTTON_DOWN:
logger_state->axis_index = (logger_state->axis_index + 1) % 4;
logger_state->log_ticks = 255;
_lis2dw_logging_face_log_data(logger_state);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
(void) context;
watch_date_time date_time;
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ACTIVATE:
_voltage_face_update_display();
break;
watch_display_string("BA SLEEP ", 0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
break;
}
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_BUTTON_UP:
switch (state->mode) {
case ACCELEROMETER_DATA_ACQUISITION_MODE_IDLE:
}
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
case EVENT_TIMEOUT:
movement_move_to_face(0);
break;
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_LIGHT_LONG_PRESS:
// light button shows the timestamp, but if you need the light, long press it.
movement_illuminate_led();
_thermistor_logging_face_log_data(logger_state);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
(void) context;
watch_date_time date_time = watch_rtc_get_date_time();
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
- case EVENT_LIGHT_BUTTON_DOWN:
- movement_illuminate_led();
- break;
case EVENT_ALARM_BUTTON_DOWN:
settings->bit.use_imperial_units = !settings->bit.use_imperial_units;
_thermistor_readout_face_update_display(settings->bit.use_imperial_units);
watch_display_string("TE SLEEP ", 0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
bool thermistor_testing_face_loop(movement_event_t event, movement_settings_t *settings, void *context) {
(void) context;
switch (event.event_type) {
- case EVENT_MODE_BUTTON_UP:
- movement_move_to_next_face();
- break;
case EVENT_ALARM_BUTTON_DOWN:
settings->bit.use_imperial_units = !settings->bit.use_imperial_units;
_thermistor_testing_face_update_display(settings->bit.use_imperial_units);
_thermistor_testing_face_update_display(settings->bit.use_imperial_units);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
apply_RTC_correction(correction);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}
movement_move_to_face(0);
break;
default:
+ movement_default_loop_handler(event, settings);
break;
}