mirror of
https://github.com/firewalkwithm3/Sensor-Watch.git
synced 2024-11-22 11:10:29 +08:00
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…
Reference in a new issue