summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>2024-02-25 15:18:45 -0300
committerMatheus Afonso Martins Moreira <matheus.a.m.moreira@gmail.com>2024-03-05 00:46:27 -0300
commit4a66035f77a116f1b360110fe1f3f413f9af741e (patch)
treed357ac5cbfbf8d49ad94abe3fcd00e1ed8a25646
parent4cca3a0fac642897bdec06307522f171aa7d9f3b (diff)
downloadSensor-Watch-4a66035f77a116f1b360110fe1f3f413f9af741e.tar.gz
Sensor-Watch-4a66035f77a116f1b360110fe1f3f413f9af741e.tar.bz2
Sensor-Watch-4a66035f77a116f1b360110fe1f3f413f9af741e.zip
faces/clock: add 24h only feature
The clock watch face can now be configured at build time to only display the time in 24h mode. Also enabled in forced 24h mode. This should result in smaller code size due to dead code elimination.
-rw-r--r--make.mk6
-rw-r--r--movement/watch_faces/clock/clock_face.c13
2 files changed, 17 insertions, 2 deletions
diff --git a/make.mk b/make.mk
index 955ea310..995acfb6 100644
--- a/make.mk
+++ b/make.mk
@@ -229,3 +229,9 @@ endif
ifeq ($(BOARD), OSO-FEAL-A1-00)
CFLAGS += -DCRYSTALLESS
endif
+
+# Build options to customize movement and faces
+
+ifdef CLOCK_FACE_24H_ONLY
+CFLAGS += -DCLOCK_FACE_24H_ONLY
+endif
diff --git a/movement/watch_faces/clock/clock_face.c b/movement/watch_faces/clock/clock_face.c
index 6d40fe15..eab5cd8d 100644
--- a/movement/watch_faces/clock/clock_face.c
+++ b/movement/watch_faces/clock/clock_face.c
@@ -42,6 +42,10 @@
#define CLOCK_FACE_LOW_BATTERY_VOLTAGE_THRESHOLD 2200
#endif
+#ifndef CLOCK_FACE_24H_ONLY
+#define CLOCK_FACE_24H_ONLY 0
+#endif
+
typedef struct {
struct {
watch_date_time previous;
@@ -52,6 +56,11 @@ typedef struct {
bool battery_low;
} clock_state_t;
+static bool clock_is_in_24h_mode(movement_settings_t *settings) {
+ if (CLOCK_FACE_24H_ONLY) { return true; }
+ return settings->bit.clock_mode_24h;
+}
+
static void clock_indicate(WatchIndicatorSegment indicator, bool on) {
if (on) {
watch_set_indicator(indicator);
@@ -69,7 +78,7 @@ static void clock_indicate_time_signal(clock_state_t *clock) {
}
static void clock_indicate_24h(movement_settings_t *settings) {
- clock_indicate(WATCH_INDICATOR_24H, settings->bit.clock_mode_24h);
+ clock_indicate(WATCH_INDICATOR_24H, clock_is_in_24h_mode(settings));
}
static bool clock_is_pm(watch_date_time date_time) {
@@ -167,7 +176,7 @@ static bool clock_display_some(watch_date_time current, watch_date_time previous
static void clock_display_clock(movement_settings_t *settings, clock_state_t *clock, watch_date_time current) {
if (!clock_display_some(current, clock->date_time.previous)) {
- if (!settings->bit.clock_mode_24h) {
+ if (!clock_is_in_24h_mode(settings)) {
// if we are in 12 hour mode, do some cleanup.
clock_indicate_pm(settings, current);
current = clock_24h_to_12h(current);