diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-02-15 17:46:03 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-02-15 17:46:03 +0530 |
| commit | ffadf36040d103ed62c5e7281bdeb8ceedab7a8d (patch) | |
| tree | 4ca5150d0c1a5b424e4dfeb52c817f894838b1a0 /src/display.h | |
| parent | 5cf1cbef201178ff53e663e16c81d7dd955266a4 (diff) | |
| download | daft-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.h | 32 |
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); |
