aboutsummaryrefslogtreecommitdiff
path: root/src/display.h
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2026-02-15 17:46:03 +0530
committerAkshay Nair <phenax5@gmail.com>2026-02-15 17:46:03 +0530
commitffadf36040d103ed62c5e7281bdeb8ceedab7a8d (patch)
tree4ca5150d0c1a5b424e4dfeb52c817f894838b1a0 /src/display.h
parent5cf1cbef201178ff53e663e16c81d7dd955266a4 (diff)
downloaddaft-watch-ffadf36040d103ed62c5e7281bdeb8ceedab7a8d.tar.gz
daft-watch-ffadf36040d103ed62c5e7281bdeb8ceedab7a8d.zip
Add the other digits and refactor the fancy 2 pin hack
Diffstat (limited to '')
-rw-r--r--src/display.h32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/display.h b/src/display.h
index 5c03ee4..c410731 100644
--- a/src/display.h
+++ b/src/display.h
@@ -2,11 +2,41 @@
#define _LOADED_DISPLAY
#include <stdint.h>
+// "_gfedcba"
+// Reversed because a-g is mapped to pa0-6. (pa7 is decimal)
+// Complemented because display is common anode
+static const uint32_t digit_masks[] = {
+ 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001,
+ 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000,
+};
+
volatile extern uint8_t current_digit;
void display_setup(void);
-void write_time(uint16_t hour, uint16_t minute, uint8_t digit_mask);
+static inline uint32_t get_digit_mask(uint8_t digit) {
+ return digit_masks[digit % 10];
+}
+
+static inline uint8_t get_digit(uint16_t hour, uint16_t minute,
+ uint8_t digit_index) {
+ // TODO: use hour
+ // uint8_t hour_digit1 = hour % 10;
+ // uint8_t hour_digit2 = (hour / 10) % 10;
+ switch (digit_index) {
+ case 0:
+ return minute % 10;
+ case 1:
+ return (minute / 10) % 10;
+ case 2:
+ return (minute % 10) + 1;
+ case 3:
+ return ((minute / 10) % 10) + 1;
+ }
+ return 0;
+}
+
+void write_time(uint16_t hour, uint16_t minute, uint8_t digit_index);
void display_render(void);