diff options
Diffstat (limited to 'movement/widgets')
-rw-r--r-- | movement/widgets/clock/simple_clock_widget.c | 92 | ||||
-rw-r--r-- | movement/widgets/clock/simple_clock_widget.h | 20 | ||||
-rw-r--r-- | movement/widgets/complications/pulseometer_widget.c | 87 | ||||
-rw-r--r-- | movement/widgets/complications/pulseometer_widget.h | 24 | ||||
-rw-r--r-- | movement/widgets/settings/preferences_widget.c | 120 | ||||
-rw-r--r-- | movement/widgets/settings/preferences_widget.h | 18 | ||||
-rw-r--r-- | movement/widgets/settings/set_time_widget.c | 109 | ||||
-rw-r--r-- | movement/widgets/settings/set_time_widget.h | 18 |
8 files changed, 0 insertions, 488 deletions
diff --git a/movement/widgets/clock/simple_clock_widget.c b/movement/widgets/clock/simple_clock_widget.c deleted file mode 100644 index 22218860..00000000 --- a/movement/widgets/clock/simple_clock_widget.c +++ /dev/null @@ -1,92 +0,0 @@ -#include <stdlib.h> -#include "simple_clock_widget.h" -#include "watch.h" - -void simple_clock_widget_setup(LauncherSettings *settings, void ** context_ptr) { - (void) settings; - // the only context we need is the timestamp of the previous tick. - if (*context_ptr == NULL) *context_ptr = malloc(sizeof(uint32_t)); -} - -void simple_clock_widget_activate(LauncherSettings *settings, void *context) { - if (settings->bit.clock_mode_24h) { - watch_set_indicator(WATCH_INDICATOR_24H); - } - watch_set_colon(); - // this ensures that none of the timestamp fields will match, so we can re-render them all. - *((uint32_t *)context) = 0xFFFFFFFF; -} - -bool simple_clock_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context) { - printf("simple_clock_widget_loop\n"); - const char weekdays[7][3] = {"SA", "SU", "MO", "TU", "WE", "TH", "FR"}; - char buf[11]; - uint8_t pos; - - watch_date_time date_time; - uint32_t previous_date_time; - switch (event.event_type) { - case EVENT_ACTIVATE: - case EVENT_TICK: - case EVENT_SCREENSAVER: - date_time = watch_rtc_get_date_time(); - previous_date_time = *((uint32_t *)context); - *((uint32_t *)context) = date_time.reg; - - if (date_time.reg >> 6 == previous_date_time >> 6 && event.event_type != EVENT_SCREENSAVER) { - // everything before seconds is the same, don't waste cycles setting those segments. - pos = 8; - sprintf(buf, "%02d", date_time.unit.second); - } else if (date_time.reg >> 12 == previous_date_time >> 12 && event.event_type != EVENT_SCREENSAVER) { - // everything before minutes is the same. - pos = 6; - sprintf(buf, "%02d%02d", date_time.unit.minute, date_time.unit.second); - } else { - // other stuff changed; let's do it all. - if (!settings->bit.clock_mode_24h) { - // if we are in 12 hour mode, do some cleanup. - if (date_time.unit.hour < 12) { - watch_clear_indicator(WATCH_INDICATOR_PM); - } else { - watch_set_indicator(WATCH_INDICATOR_PM); - } - date_time.unit.hour %= 12; - if (date_time.unit.hour == 0) date_time.unit.hour = 12; - } - pos = 0; - if (event.event_type == EVENT_SCREENSAVER) { - sprintf(buf, "%s%2d%2d%02d ", weekdays[simple_clock_widget_get_weekday(date_time.unit.year, date_time.unit.month, date_time.unit.day)], date_time.unit.day, date_time.unit.hour, date_time.unit.minute); - } else { - sprintf(buf, "%s%2d%2d%02d%02d", weekdays[simple_clock_widget_get_weekday(date_time.unit.year, date_time.unit.month, date_time.unit.day)], date_time.unit.day, date_time.unit.hour, date_time.unit.minute, date_time.unit.second); - } - } - watch_display_string(buf, pos); - break; - case EVENT_MODE_BUTTON_UP: - movement_move_to_next_widget(); - return false; - case EVENT_LIGHT_BUTTON_UP: - movement_illuminate_led(); - break; - case EVENT_ALARM_BUTTON_UP: - break; - default: - break; - } - - return true; -} - -void simple_clock_widget_resign(LauncherSettings *settings, void *context) { - (void) settings; - (void) context; -} - -uint8_t simple_clock_widget_get_weekday(uint16_t year, uint16_t month, uint16_t day) { - year += 20; - if (month <= 2) { - month += 12; - year--; - } - return (day + 13 * (month + 1) / 5 + year + year / 4 + 525) % 7; -} diff --git a/movement/widgets/clock/simple_clock_widget.h b/movement/widgets/clock/simple_clock_widget.h deleted file mode 100644 index 3bf4c9a3..00000000 --- a/movement/widgets/clock/simple_clock_widget.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SIMPLE_CLOCK_WIDGET_H_ -#define SIMPLE_CLOCK_WIDGET_H_ - -#include "movement.h" - -void simple_clock_widget_setup(LauncherSettings *settings, void ** context_ptr); -void simple_clock_widget_activate(LauncherSettings *settings, void *context); -bool simple_clock_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context); -void simple_clock_widget_resign(LauncherSettings *settings, void *context); - -uint8_t simple_clock_widget_get_weekday(uint16_t day, uint16_t month, uint16_t year); - -#define simple_clock_widget { \ - simple_clock_widget_setup, \ - simple_clock_widget_activate, \ - simple_clock_widget_loop, \ - simple_clock_widget_resign, \ -} - -#endif // FAKE_WIDGET_H_
\ No newline at end of file diff --git a/movement/widgets/complications/pulseometer_widget.c b/movement/widgets/complications/pulseometer_widget.c deleted file mode 100644 index 6384685a..00000000 --- a/movement/widgets/complications/pulseometer_widget.c +++ /dev/null @@ -1,87 +0,0 @@ -#include <stdlib.h> -#include <string.h> -#include "pulseometer_widget.h" -#include "watch.h" - -#define PULSOMETER_WIDGET_FREQUENCY_FACTOR (4ul) // refresh rate will be 2 to this power Hz (0 for 1 Hz, 2 for 4 Hz, etc.) -#define PULSOMETER_WIDGET_FREQUENCY (1 << PULSOMETER_WIDGET_FREQUENCY_FACTOR) - -void pulseometer_widget_setup(LauncherSettings *settings, void ** context_ptr) { - (void) settings; - if (*context_ptr == NULL) *context_ptr = malloc(sizeof(PulsometerState)); -} - -void pulseometer_widget_activate(LauncherSettings *settings, void *context) { - (void) settings; - memset(context, 0, sizeof(PulsometerState)); -} - -bool pulseometer_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context) { - printf("pulseometer_widget_loop\n"); - (void) settings; - PulsometerState *pulsometer_state = (PulsometerState *)context; - char buf[14]; - switch (event.event_type) { - case EVENT_TICK: - if (pulsometer_state->pulse == 0 && !pulsometer_state->measuring) { - switch (pulsometer_state->ticks % 5) { - case 0: - watch_display_string(" Hold ", 2); - break; - case 1: - watch_display_string(" Alarn", 4); - break; - case 2: - watch_display_string("+ Count ", 0); - break; - case 3: - watch_display_string(" 30Beats ", 0); - break; - case 4: - watch_clear_display(); - break; - } - pulsometer_state->ticks = (pulsometer_state->ticks + 1) % 5; - } else { - if (pulsometer_state->measuring && pulsometer_state->ticks) { - pulsometer_state->pulse = (int16_t)((30.0 * ((float)(60 << PULSOMETER_WIDGET_FREQUENCY_FACTOR) / (float)pulsometer_state->ticks)) + 0.5); - } - if (pulsometer_state->pulse > 240) { - watch_display_string(" Hi", 0); - } else if (pulsometer_state->pulse < 40) { - watch_display_string(" Lo", 0); - } else { - sprintf(buf, " %-3dbpn", pulsometer_state->pulse); - watch_display_string(buf, 0); - } - if (pulsometer_state->measuring) pulsometer_state->ticks++; - } - return false; - case EVENT_MODE_BUTTON_UP: - movement_move_to_next_widget(); - return false; - case EVENT_LIGHT_BUTTON_UP: - movement_illuminate_led(); - break; - case EVENT_ALARM_BUTTON_DOWN: - pulsometer_state->ticks = 0; - pulsometer_state->pulse = 0xFFFF; - pulsometer_state->measuring = true; - movement_request_tick_frequency(PULSOMETER_WIDGET_FREQUENCY); - break; - case EVENT_ALARM_BUTTON_UP: - case EVENT_ALARM_LONG_PRESS: - pulsometer_state->measuring = false; - movement_request_tick_frequency(1); - break; - default: - break; - } - - return true; -} - -void pulseometer_widget_resign(LauncherSettings *settings, void *context) { - (void) settings; - (void) context; -} diff --git a/movement/widgets/complications/pulseometer_widget.h b/movement/widgets/complications/pulseometer_widget.h deleted file mode 100644 index e5947660..00000000 --- a/movement/widgets/complications/pulseometer_widget.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef PULSEOMETER_WIDGET_H_ -#define PULSEOMETER_WIDGET_H_ - -#include "movement.h" - -typedef struct { - bool measuring; - int16_t pulse; - int16_t ticks; -} PulsometerState; - -void pulseometer_widget_setup(LauncherSettings *settings, void ** context_ptr); -void pulseometer_widget_activate(LauncherSettings *settings, void *context); -bool pulseometer_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context); -void pulseometer_widget_resign(LauncherSettings *settings, void *context); - -#define pulseometer_widget { \ - pulseometer_widget_setup, \ - pulseometer_widget_activate, \ - pulseometer_widget_loop, \ - pulseometer_widget_resign, \ -} - -#endif // PULSEOMETER_WIDGET_H_
\ No newline at end of file diff --git a/movement/widgets/settings/preferences_widget.c b/movement/widgets/settings/preferences_widget.c deleted file mode 100644 index c4537329..00000000 --- a/movement/widgets/settings/preferences_widget.c +++ /dev/null @@ -1,120 +0,0 @@ -#include <stdlib.h> -#include "preferences_widget.h" -#include "watch.h" - -#define PREFERENCES_WIDGET_NUM_PREFEFENCES (5) -const char preferences_widget_titles[PREFERENCES_WIDGET_NUM_PREFEFENCES][11] = {"CL ", "Bt Beep ", "SC ", "Lt grn ", "Lt red "}; - -void preferences_widget_setup(LauncherSettings *settings, void ** context_ptr) { - (void) settings; - if (*context_ptr == NULL) *context_ptr = malloc(sizeof(uint8_t)); -} - -void preferences_widget_activate(LauncherSettings *settings, void *context) { - (void) settings; - *((uint8_t *)context) = 0; - movement_request_tick_frequency(4); // we need to manually blink some pixels -} - -bool preferences_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context) { - printf("preferences_widget_loop\n"); - uint8_t current_page = *((uint8_t *)context); - switch (event.event_type) { - case EVENT_MODE_BUTTON_UP: - watch_set_led_off(); - movement_move_to_next_widget(); - return false; - case EVENT_LIGHT_BUTTON_UP: - current_page = (current_page + 1) % PREFERENCES_WIDGET_NUM_PREFEFENCES; - *((uint8_t *)context) = current_page; - break; - case EVENT_ALARM_BUTTON_UP: - switch (current_page) { - case 0: - settings->bit.clock_mode_24h = !(settings->bit.clock_mode_24h); - break; - case 1: - settings->bit.button_should_sound = !(settings->bit.button_should_sound); - break; - case 2: - settings->bit.screensaver_interval = settings->bit.screensaver_interval + 1; - break; - case 3: - settings->bit.led_green_color = settings->bit.led_green_color + 1; - break; - case 4: - settings->bit.led_red_color = settings->bit.led_red_color + 1; - break; - } - break; - default: - break; - } - - watch_display_string((char *)preferences_widget_titles[current_page], 0); - - if (event.subsecond % 2) return current_page <= 2; - char buf[3]; - switch (current_page) { - case 0: - if (settings->bit.clock_mode_24h) watch_display_string("24h", 4); - else watch_display_string("12h", 4); - break; - case 1: - if (settings->bit.button_should_sound) watch_display_string("y", 9); - else watch_display_string("n", 9); - break; - case 2: - switch (settings->bit.screensaver_interval) { - case 0: - watch_display_string(" never", 4); - break; - case 1: - watch_display_string("1 hour", 4); - break; - case 2: - watch_display_string("2 hour", 4); - break; - case 3: - watch_display_string("6 hour", 4); - break; - case 4: - watch_display_string("12 hr", 4); - break; - case 5: - watch_display_string(" 1 day", 4); - break; - case 6: - watch_display_string(" 2 day", 4); - break; - case 7: - watch_display_string(" 7 day", 4); - break; - } - break; - case 3: - sprintf(buf, "%2d", settings->bit.led_green_color); - watch_display_string(buf, 8); - break; - case 4: - sprintf(buf, "%2d", settings->bit.led_red_color); - watch_display_string(buf, 8); - break; - } - - if (current_page > 2) { - watch_set_led_color(settings->bit.led_red_color ? (0xF | settings->bit.led_red_color << 4) : 0, - settings->bit.led_green_color ? (0xF | settings->bit.led_green_color << 4) : 0); - return false; - } - - watch_set_led_off(); - return true; -} - -void preferences_widget_resign(LauncherSettings *settings, void *context) { - (void) settings; - (void) context; - watch_set_led_off(); - movement_request_tick_frequency(1); -} diff --git a/movement/widgets/settings/preferences_widget.h b/movement/widgets/settings/preferences_widget.h deleted file mode 100644 index 3d463027..00000000 --- a/movement/widgets/settings/preferences_widget.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PREFERENCES_WIDGET_H_ -#define PREFERENCES_WIDGET_H_ - -#include "movement.h" - -void preferences_widget_setup(LauncherSettings *settings, void ** context_ptr); -void preferences_widget_activate(LauncherSettings *settings, void *context); -bool preferences_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context); -void preferences_widget_resign(LauncherSettings *settings, void *context); - -#define preferences_widget { \ - preferences_widget_setup, \ - preferences_widget_activate, \ - preferences_widget_loop, \ - preferences_widget_resign, \ -} - -#endif // PREFERENCES_WIDGET_H_
\ No newline at end of file diff --git a/movement/widgets/settings/set_time_widget.c b/movement/widgets/settings/set_time_widget.c deleted file mode 100644 index 9464eb5b..00000000 --- a/movement/widgets/settings/set_time_widget.c +++ /dev/null @@ -1,109 +0,0 @@ -#include <stdlib.h> -#include "set_time_widget.h" -#include "watch.h" - -#define SET_TIME_WIDGET_NUM_SETTINGS (6) -const char set_time_widget_titles[SET_TIME_WIDGET_NUM_SETTINGS][3] = {"HR", "MN", "SE", "YR", "MO", "DA"}; - -void set_time_widget_setup(LauncherSettings *settings, void ** context_ptr) { - (void) settings; - if (*context_ptr == NULL) *context_ptr = malloc(sizeof(uint8_t)); -} - -void set_time_widget_activate(LauncherSettings *settings, void *context) { - (void) settings; - *((uint8_t *)context) = 0; - movement_request_tick_frequency(4); -} - -bool set_time_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context) { - uint8_t current_page = *((uint8_t *)context); - const uint8_t days_in_month[12] = {31, 28, 31, 30, 31, 30, 30, 31, 30, 31, 30, 31}; - watch_date_time date_time = watch_rtc_get_date_time(); - - switch (event.event_type) { - case EVENT_MODE_BUTTON_UP: - movement_move_to_next_widget(); - return false; - case EVENT_LIGHT_BUTTON_UP: - current_page = (current_page + 1) % SET_TIME_WIDGET_NUM_SETTINGS; - *((uint8_t *)context) = current_page; - break; - case EVENT_ALARM_BUTTON_UP: - switch (current_page) { - case 0: // hour - date_time.unit.hour = (date_time.unit.hour + 1) % 24; - break; - case 1: // minute - date_time.unit.minute = (date_time.unit.minute + 1) % 60; - break; - case 2: // second - date_time.unit.second = 0; - break; - case 3: // year - // only allow 2021-2030. fix this sometime next decade - date_time.unit.year = ((date_time.unit.year % 10) + 1); - break; - case 4: // month - date_time.unit.month = (date_time.unit.month % 12) + 1; - break; - case 5: // day - date_time.unit.day = date_time.unit.day + 1; - // can't set to the 29th on a leap year. if it's february 29, set to 11:59 on the 28th. - // and it should roll over. - if (date_time.unit.day > days_in_month[date_time.unit.month - 1]) { - date_time.unit.day = 1; - } - break; - } - watch_rtc_set_date_time(date_time); - break; - default: - break; - } - - char buf[11]; - if (current_page < 3) { - watch_set_colon(); - if (settings->bit.clock_mode_24h) { - watch_set_indicator(WATCH_INDICATOR_24H); - sprintf(buf, "%s %2d%02d%02d", set_time_widget_titles[current_page], date_time.unit.hour, date_time.unit.minute, date_time.unit.second); - } else { - sprintf(buf, "%s %2d%02d%02d", set_time_widget_titles[current_page], (date_time.unit.hour % 12) ? (date_time.unit.hour % 12) : 12, date_time.unit.minute, date_time.unit.second); - if (date_time.unit.hour > 12) watch_set_indicator(WATCH_INDICATOR_PM); - else watch_clear_indicator(WATCH_INDICATOR_PM); - } - } else { - watch_clear_colon(); - watch_clear_indicator(WATCH_INDICATOR_24H); - watch_clear_indicator(WATCH_INDICATOR_PM); - sprintf(buf, "%s %2d%02d%02d", set_time_widget_titles[current_page], date_time.unit.year + 20, date_time.unit.month, date_time.unit.day); - } - if (event.subsecond % 2) { - switch (current_page) { - case 0: - case 3: - buf[4] = buf[5] = ' '; - break; - case 1: - case 4: - buf[6] = buf[7] = ' '; - break; - case 2: - case 5: - buf[8] = buf[9] = ' '; - break; - } - } - - watch_display_string(buf, 0); - - return true; -} - -void set_time_widget_resign(LauncherSettings *settings, void *context) { - (void) settings; - (void) context; - watch_set_led_off(); - movement_request_tick_frequency(1); -} diff --git a/movement/widgets/settings/set_time_widget.h b/movement/widgets/settings/set_time_widget.h deleted file mode 100644 index 363fd571..00000000 --- a/movement/widgets/settings/set_time_widget.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef SET_TIME_WIDGET_H_ -#define SET_TIME_WIDGET_H_ - -#include "movement.h" - -void set_time_widget_setup(LauncherSettings *settings, void ** context_ptr); -void set_time_widget_activate(LauncherSettings *settings, void *context); -bool set_time_widget_loop(LauncherEvent event, LauncherSettings *settings, void *context); -void set_time_widget_resign(LauncherSettings *settings, void *context); - -#define set_time_widget { \ - set_time_widget_setup, \ - set_time_widget_activate, \ - set_time_widget_loop, \ - set_time_widget_resign, \ -} - -#endif // SET_TIME_WIDGET_H_ |