launcher is now movement
This commit is contained in:
		
							parent
							
								
									9d4367565b
								
							
						
					
					
						commit
						e8461984d6
					
				| @ -18,11 +18,11 @@ INCLUDES += \ | ||||
| # If you add any other source files you wish to compile, add them after ../app.c
 | ||||
| # Note that you will need to add a backslash at the end of any line you wish to continue, i.e.
 | ||||
| # SRCS += \
 | ||||
| #   ../launcher.c \
 | ||||
| #   ../movement.c \
 | ||||
| #   ../drivers/lis2dh.c \
 | ||||
| #   ../widgets/fitness/step_count_widget.c
 | ||||
| SRCS += \
 | ||||
|   ../launcher.c \
 | ||||
|   ../movement.c \
 | ||||
|   ../widgets/clock/simple_clock_widget.c \
 | ||||
|   ../widgets/settings/preferences_widget.c \
 | ||||
|   ../widgets/settings/set_time_widget.c \
 | ||||
| @ -2,12 +2,12 @@ | ||||
| #include <string.h> | ||||
| #include <limits.h> | ||||
| #include "watch.h" | ||||
| #include "launcher.h" | ||||
| #include "launcher_config.h" | ||||
| #include "movement.h" | ||||
| #include "movement_config.h" | ||||
| 
 | ||||
| LauncherState launcher_state; | ||||
| void * widget_contexts[LAUNCHER_NUM_WIDGETS]; | ||||
| const int32_t launcher_screensaver_deadlines[8] = {INT_MAX, 3600, 7200, 21600, 43200, 86400, 172800, 604800}; | ||||
| LauncherState movement_state; | ||||
| void * widget_contexts[MOVEMENT_NUM_WIDGETS]; | ||||
| const int32_t movement_screensaver_deadlines[8] = {INT_MAX, 3600, 7200, 21600, 43200, 86400, 172800, 604800}; | ||||
| LauncherEvent event; | ||||
| 
 | ||||
| void cb_mode_btn_interrupt(); | ||||
| @ -17,38 +17,38 @@ void cb_alarm_btn_extwake(); | ||||
| void cb_alarm_fired(); | ||||
| void cb_tick(); | ||||
| 
 | ||||
| static inline void _launcher_reset_screensaver_countdown() { | ||||
| static inline void _movement_reset_screensaver_countdown() { | ||||
|     // for testing, make the timeout happen 60x faster.
 | ||||
|     launcher_state.screensaver_ticks = launcher_screensaver_deadlines[launcher_state.launcher_settings.bit.screensaver_interval] / 60; | ||||
|     movement_state.screensaver_ticks = movement_screensaver_deadlines[movement_state.movement_settings.bit.screensaver_interval] / 60; | ||||
| } | ||||
| 
 | ||||
| void launcher_request_tick_frequency(uint8_t freq) { | ||||
| void movement_request_tick_frequency(uint8_t freq) { | ||||
|     watch_rtc_disable_all_periodic_callbacks(); | ||||
|     launcher_state.subsecond = 0; | ||||
|     launcher_state.tick_frequency = freq; | ||||
|     movement_state.subsecond = 0; | ||||
|     movement_state.tick_frequency = freq; | ||||
|     watch_rtc_register_periodic_callback(cb_tick, freq); | ||||
| } | ||||
| 
 | ||||
| void launcher_illuminate_led() { | ||||
|     launcher_state.light_ticks = 3; | ||||
| void movement_illuminate_led() { | ||||
|     movement_state.light_ticks = 3; | ||||
| } | ||||
| 
 | ||||
| void launcher_move_to_widget(uint8_t widget_index) { | ||||
|     launcher_state.widget_changed = true; | ||||
|     launcher_state.next_widget = widget_index; | ||||
| void movement_move_to_widget(uint8_t widget_index) { | ||||
|     movement_state.widget_changed = true; | ||||
|     movement_state.next_widget = widget_index; | ||||
| } | ||||
| 
 | ||||
| void launcher_move_to_next_widget() { | ||||
|     launcher_move_to_widget((launcher_state.current_widget + 1) % LAUNCHER_NUM_WIDGETS); | ||||
| void movement_move_to_next_widget() { | ||||
|     movement_move_to_widget((movement_state.current_widget + 1) % MOVEMENT_NUM_WIDGETS); | ||||
| } | ||||
| 
 | ||||
| void app_init() { | ||||
|     memset(&launcher_state, 0, sizeof(launcher_state)); | ||||
|     memset(&movement_state, 0, sizeof(movement_state)); | ||||
| 
 | ||||
|     launcher_state.launcher_settings.bit.led_green_color = 0xF; | ||||
|     launcher_state.launcher_settings.bit.button_should_sound = true; | ||||
|     launcher_state.launcher_settings.bit.screensaver_interval = 1; | ||||
|     _launcher_reset_screensaver_countdown(); | ||||
|     movement_state.movement_settings.bit.led_green_color = 0xF; | ||||
|     movement_state.movement_settings.bit.button_should_sound = true; | ||||
|     movement_state.movement_settings.bit.screensaver_interval = 1; | ||||
|     _movement_reset_screensaver_countdown(); | ||||
| } | ||||
| 
 | ||||
| void app_wake_from_deep_sleep() { | ||||
| @ -59,12 +59,12 @@ void app_setup() { | ||||
|     static bool is_first_launch = true; | ||||
| 
 | ||||
|     if (is_first_launch) { | ||||
|         for(uint8_t i = 0; i < LAUNCHER_NUM_WIDGETS; i++) { | ||||
|         for(uint8_t i = 0; i < MOVEMENT_NUM_WIDGETS; i++) { | ||||
|             widget_contexts[i] = NULL; | ||||
|             is_first_launch = false; | ||||
|         } | ||||
|     } | ||||
|     if (launcher_state.screensaver_ticks != -1) { | ||||
|     if (movement_state.screensaver_ticks != -1) { | ||||
|         watch_disable_extwake_interrupt(BTN_ALARM); | ||||
|         watch_rtc_disable_alarm_callback(); | ||||
| 
 | ||||
| @ -77,13 +77,13 @@ void app_setup() { | ||||
|         watch_enable_leds(); | ||||
|         watch_enable_display(); | ||||
| 
 | ||||
|         launcher_request_tick_frequency(1); | ||||
|         movement_request_tick_frequency(1); | ||||
| 
 | ||||
|         for(uint8_t i = 0; i < LAUNCHER_NUM_WIDGETS; i++) { | ||||
|             widgets[i].setup(&launcher_state.launcher_settings, &widget_contexts[i]); | ||||
|         for(uint8_t i = 0; i < MOVEMENT_NUM_WIDGETS; i++) { | ||||
|             widgets[i].setup(&movement_state.movement_settings, &widget_contexts[i]); | ||||
|         } | ||||
| 
 | ||||
|         widgets[0].activate(&launcher_state.launcher_settings, widget_contexts[0]); | ||||
|         widgets[0].activate(&movement_state.movement_settings, widget_contexts[0]); | ||||
|         event.subsecond = 0; | ||||
|         event.event_type = EVENT_ACTIVATE; | ||||
|     } | ||||
| @ -96,42 +96,42 @@ void app_wake_from_sleep() { | ||||
| } | ||||
| 
 | ||||
| bool app_loop() { | ||||
|     if (launcher_state.widget_changed) { | ||||
|         if (launcher_state.launcher_settings.bit.button_should_sound) { | ||||
|     if (movement_state.widget_changed) { | ||||
|         if (movement_state.movement_settings.bit.button_should_sound) { | ||||
|             // low note for nonzero case, high note for return to widget 0
 | ||||
|             watch_buzzer_play_note(launcher_state.next_widget ? BUZZER_NOTE_C7 : BUZZER_NOTE_C8, 50); | ||||
|             watch_buzzer_play_note(movement_state.next_widget ? BUZZER_NOTE_C7 : BUZZER_NOTE_C8, 50); | ||||
|         } | ||||
|         widgets[launcher_state.current_widget].resign(&launcher_state.launcher_settings, widget_contexts[launcher_state.current_widget]); | ||||
|         launcher_state.current_widget = launcher_state.next_widget; | ||||
|         widgets[movement_state.current_widget].resign(&movement_state.movement_settings, widget_contexts[movement_state.current_widget]); | ||||
|         movement_state.current_widget = movement_state.next_widget; | ||||
|         watch_clear_display(); | ||||
|         widgets[launcher_state.current_widget].activate(&launcher_state.launcher_settings, widget_contexts[launcher_state.current_widget]); | ||||
|         widgets[movement_state.current_widget].activate(&movement_state.movement_settings, widget_contexts[movement_state.current_widget]); | ||||
|         event.subsecond = 0; | ||||
|         event.event_type = EVENT_ACTIVATE; | ||||
|         launcher_state.widget_changed = false; | ||||
|         movement_state.widget_changed = false; | ||||
|     } | ||||
| 
 | ||||
|     // If the LED is off and should be on, turn it on
 | ||||
|     if (launcher_state.light_ticks > 0 && !launcher_state.led_on) { | ||||
|         watch_set_led_color(launcher_state.launcher_settings.bit.led_red_color ? (0xF | launcher_state.launcher_settings.bit.led_red_color << 4) : 0, | ||||
|                             launcher_state.launcher_settings.bit.led_green_color ? (0xF | launcher_state.launcher_settings.bit.led_green_color << 4) : 0); | ||||
|         launcher_state.led_on = true; | ||||
|     if (movement_state.light_ticks > 0 && !movement_state.led_on) { | ||||
|         watch_set_led_color(movement_state.movement_settings.bit.led_red_color ? (0xF | movement_state.movement_settings.bit.led_red_color << 4) : 0, | ||||
|                             movement_state.movement_settings.bit.led_green_color ? (0xF | movement_state.movement_settings.bit.led_green_color << 4) : 0); | ||||
|         movement_state.led_on = true; | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     // if the LED is on and should be off, turn it off
 | ||||
|     if (launcher_state.led_on && launcher_state.light_ticks == 0) { | ||||
|     if (movement_state.led_on && movement_state.light_ticks == 0) { | ||||
|         // unless the user is holding down the LIGHT button, in which case, give them more time.
 | ||||
|         if (watch_get_pin_level(BTN_LIGHT)) { | ||||
|             launcher_state.light_ticks = 3; | ||||
|             movement_state.light_ticks = 3; | ||||
|         } else { | ||||
|             watch_set_led_off(); | ||||
|             launcher_state.led_on = false; | ||||
|             movement_state.led_on = false; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     // if we have timed out of our screensaver countdown, enter screensaver mode.
 | ||||
|     if (launcher_state.screensaver_ticks == 0) { | ||||
|         launcher_state.screensaver_ticks = -1; | ||||
|     if (movement_state.screensaver_ticks == 0) { | ||||
|         movement_state.screensaver_ticks = -1; | ||||
|         watch_date_time alarm_time; | ||||
|         alarm_time.reg = 0; | ||||
|         alarm_time.unit.second = 59; // after a match, the alarm fires at the next rising edge of CLK_RTC_CNT, so 59 seconds lets us update at :00
 | ||||
| @ -142,9 +142,9 @@ bool app_loop() { | ||||
| 
 | ||||
|         // this is a little mini-runloop.
 | ||||
|         // as long as screensaver_ticks is -1 (i.e. screensaver is active), we wake up here, update the screen, and go right back to sleep.
 | ||||
|         while (launcher_state.screensaver_ticks == -1) { | ||||
|         while (movement_state.screensaver_ticks == -1) { | ||||
|             event.event_type = EVENT_SCREENSAVER; | ||||
|             widgets[launcher_state.current_widget].loop(event, &launcher_state.launcher_settings, widget_contexts[launcher_state.current_widget]); | ||||
|             widgets[movement_state.current_widget].loop(event, &movement_state.movement_settings, widget_contexts[movement_state.current_widget]); | ||||
|             watch_enter_shallow_sleep(true); | ||||
|         } | ||||
|         // as soon as screensaver_ticks is reset by the extwake handler, we bail out of the loop and reactivate ourselves.
 | ||||
| @ -157,13 +157,13 @@ bool app_loop() { | ||||
|     static bool can_sleep = true; | ||||
| 
 | ||||
|     if (event.event_type) { | ||||
|         event.subsecond = launcher_state.subsecond; | ||||
|         can_sleep = widgets[launcher_state.current_widget].loop(event, &launcher_state.launcher_settings, widget_contexts[launcher_state.current_widget]); | ||||
|         event.subsecond = movement_state.subsecond; | ||||
|         can_sleep = widgets[movement_state.current_widget].loop(event, &movement_state.movement_settings, widget_contexts[movement_state.current_widget]); | ||||
|         event.event_type = EVENT_NONE; | ||||
|         event.subsecond = 0; | ||||
|     } | ||||
| 
 | ||||
|     return can_sleep && !launcher_state.led_on; | ||||
|     return can_sleep && !movement_state.led_on; | ||||
| } | ||||
| 
 | ||||
| LauncherEventType _figure_out_button_event(LauncherEventType button_down_event, uint8_t *down_timestamp) { | ||||
| @ -180,23 +180,23 @@ LauncherEventType _figure_out_button_event(LauncherEventType button_down_event, | ||||
| } | ||||
| 
 | ||||
| void cb_light_btn_interrupt() { | ||||
|     _launcher_reset_screensaver_countdown(); | ||||
|     event.event_type = _figure_out_button_event(EVENT_LIGHT_BUTTON_DOWN, &launcher_state.light_down_timestamp); | ||||
|     _movement_reset_screensaver_countdown(); | ||||
|     event.event_type = _figure_out_button_event(EVENT_LIGHT_BUTTON_DOWN, &movement_state.light_down_timestamp); | ||||
| } | ||||
| 
 | ||||
| void cb_mode_btn_interrupt() { | ||||
|     _launcher_reset_screensaver_countdown(); | ||||
|     event.event_type = _figure_out_button_event(EVENT_MODE_BUTTON_DOWN, &launcher_state.mode_down_timestamp); | ||||
|     _movement_reset_screensaver_countdown(); | ||||
|     event.event_type = _figure_out_button_event(EVENT_MODE_BUTTON_DOWN, &movement_state.mode_down_timestamp); | ||||
| } | ||||
| 
 | ||||
| void cb_alarm_btn_interrupt() { | ||||
|     _launcher_reset_screensaver_countdown(); | ||||
|     event.event_type = _figure_out_button_event(EVENT_ALARM_BUTTON_DOWN, &launcher_state.alarm_down_timestamp); | ||||
|     _movement_reset_screensaver_countdown(); | ||||
|     event.event_type = _figure_out_button_event(EVENT_ALARM_BUTTON_DOWN, &movement_state.alarm_down_timestamp); | ||||
| } | ||||
| 
 | ||||
| void cb_alarm_btn_extwake() { | ||||
|     // wake up!
 | ||||
|     _launcher_reset_screensaver_countdown(); | ||||
|     _movement_reset_screensaver_countdown(); | ||||
| } | ||||
| 
 | ||||
| void cb_alarm_fired() { | ||||
| @ -206,13 +206,13 @@ void cb_alarm_fired() { | ||||
| void cb_tick() { | ||||
|     event.event_type = EVENT_TICK; | ||||
|     watch_date_time date_time = watch_rtc_get_date_time(); | ||||
|     if (date_time.unit.second != launcher_state.last_second) { | ||||
|         if (launcher_state.light_ticks) launcher_state.light_ticks--; | ||||
|         if (launcher_state.launcher_settings.bit.screensaver_interval && launcher_state.screensaver_ticks > 0) launcher_state.screensaver_ticks--; | ||||
|     if (date_time.unit.second != movement_state.last_second) { | ||||
|         if (movement_state.light_ticks) movement_state.light_ticks--; | ||||
|         if (movement_state.movement_settings.bit.screensaver_interval && movement_state.screensaver_ticks > 0) movement_state.screensaver_ticks--; | ||||
| 
 | ||||
|         launcher_state.last_second = date_time.unit.second; | ||||
|         launcher_state.subsecond = 0; | ||||
|         movement_state.last_second = date_time.unit.second; | ||||
|         movement_state.subsecond = 0; | ||||
|     } else { | ||||
|         launcher_state.subsecond++; | ||||
|         movement_state.subsecond++; | ||||
|     } | ||||
| } | ||||
| @ -1,5 +1,5 @@ | ||||
| #ifndef LAUNCHER_H_ | ||||
| #define LAUNCHER_H_ | ||||
| #ifndef MOVEMENT_H_ | ||||
| #define MOVEMENT_H_ | ||||
| #include <stdio.h> | ||||
| #include <stdbool.h> | ||||
| 
 | ||||
| @ -42,21 +42,21 @@ typedef struct { | ||||
|     uint8_t subsecond; | ||||
| } LauncherEvent; | ||||
| 
 | ||||
| typedef void (*launcher_widget_setup)(LauncherSettings *settings, void ** context_ptr); | ||||
| typedef void (*launcher_widget_activate)(LauncherSettings *settings, void *context); | ||||
| typedef bool (*launcher_widget_loop)(LauncherEvent event, LauncherSettings *settings, void *context); | ||||
| typedef void (*launcher_widget_resign)(LauncherSettings *settings, void *context); | ||||
| typedef void (*movement_widget_setup)(LauncherSettings *settings, void ** context_ptr); | ||||
| typedef void (*movement_widget_activate)(LauncherSettings *settings, void *context); | ||||
| typedef bool (*movement_widget_loop)(LauncherEvent event, LauncherSettings *settings, void *context); | ||||
| typedef void (*movement_widget_resign)(LauncherSettings *settings, void *context); | ||||
| 
 | ||||
| typedef struct { | ||||
|     launcher_widget_setup setup; | ||||
|     launcher_widget_activate activate; | ||||
|     launcher_widget_loop loop; | ||||
|     launcher_widget_resign resign; | ||||
|     movement_widget_setup setup; | ||||
|     movement_widget_activate activate; | ||||
|     movement_widget_loop loop; | ||||
|     movement_widget_resign resign; | ||||
| } WatchWidget; | ||||
| 
 | ||||
| typedef struct { | ||||
|     // properties stored in BACKUP register
 | ||||
|     LauncherSettings launcher_settings; | ||||
|     LauncherSettings movement_settings; | ||||
| 
 | ||||
|     // transient properties
 | ||||
|     int16_t current_widget; | ||||
| @ -81,9 +81,9 @@ typedef struct { | ||||
|     uint8_t subsecond; | ||||
| } LauncherState; | ||||
| 
 | ||||
| void launcher_move_to_widget(uint8_t widget_index); | ||||
| void launcher_move_to_next_widget(); | ||||
| void launcher_illuminate_led(); | ||||
| void launcher_request_tick_frequency(uint8_t freq); | ||||
| void movement_move_to_widget(uint8_t widget_index); | ||||
| void movement_move_to_next_widget(); | ||||
| void movement_illuminate_led(); | ||||
| void movement_request_tick_frequency(uint8_t freq); | ||||
| 
 | ||||
| #endif // LAUNCHER_H_
 | ||||
| #endif // MOVEMENT_H_
 | ||||
| @ -1,18 +1,18 @@ | ||||
| #ifndef LAUNCHER_CONFIG_H_ | ||||
| #define LAUNCHER_CONFIG_H_ | ||||
| #ifndef MOVEMENT_CONFIG_H_ | ||||
| #define MOVEMENT_CONFIG_H_ | ||||
| 
 | ||||
| #include "simple_clock_widget.h" | ||||
| #include "preferences_widget.h" | ||||
| #include "set_time_widget.h" | ||||
| #include "pulseometer_widget.h" | ||||
| 
 | ||||
| #define LAUNCHER_NUM_WIDGETS 3 | ||||
| #define MOVEMENT_NUM_WIDGETS 3 | ||||
| 
 | ||||
| WatchWidget widgets[LAUNCHER_NUM_WIDGETS] = { | ||||
| WatchWidget widgets[MOVEMENT_NUM_WIDGETS] = { | ||||
|     simple_clock_widget, | ||||
|     preferences_widget, | ||||
|     set_time_widget, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| #endif // LAUNCHER_CONFIG_H_
 | ||||
| #endif // MOVEMENT_CONFIG_H_
 | ||||
| @ -63,10 +63,10 @@ bool simple_clock_widget_loop(LauncherEvent event, LauncherSettings *settings, v | ||||
|             watch_display_string(buf, pos); | ||||
|             break; | ||||
|         case EVENT_MODE_BUTTON_UP: | ||||
|             launcher_move_to_next_widget(); | ||||
|             movement_move_to_next_widget(); | ||||
|             return false; | ||||
|         case EVENT_LIGHT_BUTTON_UP: | ||||
|             launcher_illuminate_led(); | ||||
|             movement_illuminate_led(); | ||||
|             break; | ||||
|         case EVENT_ALARM_BUTTON_UP: | ||||
|             break; | ||||
| @ -1,7 +1,7 @@ | ||||
| #ifndef SIMPLE_CLOCK_WIDGET_H_ | ||||
| #define SIMPLE_CLOCK_WIDGET_H_ | ||||
| 
 | ||||
| #include "launcher.h" | ||||
| #include "movement.h" | ||||
| 
 | ||||
| void simple_clock_widget_setup(LauncherSettings *settings, void ** context_ptr); | ||||
| void simple_clock_widget_activate(LauncherSettings *settings, void *context); | ||||
| @ -58,21 +58,21 @@ bool pulseometer_widget_loop(LauncherEvent event, LauncherSettings *settings, vo | ||||
|             } | ||||
|             return false; | ||||
|         case EVENT_MODE_BUTTON_UP: | ||||
|             launcher_move_to_next_widget(); | ||||
|             movement_move_to_next_widget(); | ||||
|             return false; | ||||
|         case EVENT_LIGHT_BUTTON_UP: | ||||
|             launcher_illuminate_led(); | ||||
|             movement_illuminate_led(); | ||||
|             break; | ||||
|         case EVENT_ALARM_BUTTON_DOWN: | ||||
|             pulsometer_state->ticks = 0; | ||||
|             pulsometer_state->pulse = 0xFFFF; | ||||
|             pulsometer_state->measuring = true; | ||||
|             launcher_request_tick_frequency(PULSOMETER_WIDGET_FREQUENCY); | ||||
|             movement_request_tick_frequency(PULSOMETER_WIDGET_FREQUENCY); | ||||
|             break; | ||||
|         case EVENT_ALARM_BUTTON_UP: | ||||
|         case EVENT_ALARM_LONG_PRESS: | ||||
|             pulsometer_state->measuring = false; | ||||
|             launcher_request_tick_frequency(1); | ||||
|             movement_request_tick_frequency(1); | ||||
|             break; | ||||
|         default: | ||||
|             break; | ||||
| @ -1,7 +1,7 @@ | ||||
| #ifndef PULSEOMETER_WIDGET_H_ | ||||
| #define PULSEOMETER_WIDGET_H_ | ||||
| 
 | ||||
| #include "launcher.h" | ||||
| #include "movement.h" | ||||
| 
 | ||||
| typedef struct { | ||||
|     bool measuring; | ||||
| @ -13,7 +13,7 @@ void preferences_widget_setup(LauncherSettings *settings, void ** context_ptr) { | ||||
| void preferences_widget_activate(LauncherSettings *settings, void *context) { | ||||
|     (void) settings; | ||||
|     *((uint8_t *)context) = 0; | ||||
|     launcher_request_tick_frequency(4); // we need to manually blink some pixels
 | ||||
|     movement_request_tick_frequency(4); // we need to manually blink some pixels
 | ||||
| } | ||||
| 
 | ||||
| bool preferences_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context) { | ||||
| @ -22,7 +22,7 @@ bool preferences_widget_loop(LauncherEvent event, LauncherSettings *settings, vo | ||||
|     switch (event.event_type) { | ||||
|         case EVENT_MODE_BUTTON_UP: | ||||
|             watch_set_led_off(); | ||||
|             launcher_move_to_next_widget(); | ||||
|             movement_move_to_next_widget(); | ||||
|             return false; | ||||
|         case EVENT_LIGHT_BUTTON_UP: | ||||
|             current_page = (current_page + 1) % PREFERENCES_WIDGET_NUM_PREFEFENCES; | ||||
| @ -116,5 +116,5 @@ void preferences_widget_resign(LauncherSettings *settings, void *context) { | ||||
|     (void) settings; | ||||
|     (void) context; | ||||
|     watch_set_led_off(); | ||||
|     launcher_request_tick_frequency(1); | ||||
|     movement_request_tick_frequency(1); | ||||
| } | ||||
| @ -1,7 +1,7 @@ | ||||
| #ifndef PREFERENCES_WIDGET_H_ | ||||
| #define PREFERENCES_WIDGET_H_ | ||||
| 
 | ||||
| #include "launcher.h" | ||||
| #include "movement.h" | ||||
| 
 | ||||
| void preferences_widget_setup(LauncherSettings *settings, void ** context_ptr); | ||||
| void preferences_widget_activate(LauncherSettings *settings, void *context); | ||||
| @ -13,7 +13,7 @@ void set_time_widget_setup(LauncherSettings *settings, void ** context_ptr) { | ||||
| void set_time_widget_activate(LauncherSettings *settings, void *context) { | ||||
|     (void) settings; | ||||
|     *((uint8_t *)context) = 0; | ||||
|     launcher_request_tick_frequency(4); | ||||
|     movement_request_tick_frequency(4); | ||||
| } | ||||
| 
 | ||||
| bool set_time_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context) { | ||||
| @ -23,7 +23,7 @@ bool set_time_widget_loop(LauncherEvent event, LauncherSettings *settings, void | ||||
| 
 | ||||
|     switch (event.event_type) { | ||||
|         case EVENT_MODE_BUTTON_UP: | ||||
|             launcher_move_to_next_widget(); | ||||
|             movement_move_to_next_widget(); | ||||
|             return false; | ||||
|         case EVENT_LIGHT_BUTTON_UP: | ||||
|             current_page = (current_page + 1) % SET_TIME_WIDGET_NUM_SETTINGS; | ||||
| @ -105,5 +105,5 @@ void set_time_widget_resign(LauncherSettings *settings, void *context) { | ||||
|     (void) settings; | ||||
|     (void) context; | ||||
|     watch_set_led_off(); | ||||
|     launcher_request_tick_frequency(1); | ||||
|     movement_request_tick_frequency(1); | ||||
| } | ||||
| @ -1,7 +1,7 @@ | ||||
| #ifndef SET_TIME_WIDGET_H_ | ||||
| #define SET_TIME_WIDGET_H_ | ||||
| 
 | ||||
| #include "launcher.h" | ||||
| #include "movement.h" | ||||
| 
 | ||||
| void set_time_widget_setup(LauncherSettings *settings, void ** context_ptr); | ||||
| void set_time_widget_activate(LauncherSettings *settings, void *context); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user