#ifndef SEGMENT_H #define SEGMENT_H #include "lib/mystd.h" typedef uint8_t segment_digit; typedef enum { DIGIT_NONE = 0, DIGIT_1 = BV((0 + 4)), DIGIT_2 = BV((1 + 4)), DIGIT_3 = BV((2 + 4)), DIGIT_4 = BV((3 + 4)), DIGIT_ALL = DIGIT_1 | DIGIT_2 | DIGIT_3 | DIGIT_4, _DIGIT_MASK = DIGIT_ALL, } segment_mask; typedef struct { segment_digit digits[4]; segment_mask mask; bool enable; } segment_data; #define SEG_0 (0b00111111) #define SEG_1 (0b00000110) #define SEG_2 (0b01011011) #define SEG_3 (0b01001111) #define SEG_4 (0b01100110) #define SEG_5 (0b01101101) #define SEG_6 (0b01111101) #define SEG_7 (0b00000111) #define SEG_8 (0b01111111) #define SEG_9 (0b01101111) #define SEG_a (BV(0)) #define SEG_b (BV(1)) #define SEG_c (BV(2)) #define SEG_d (BV(3)) #define SEG_e (BV(4)) #define SEG_f (BV(5)) #define SEG_g (BV(6)) #define SEG_dp (BV(7)) t_error segment_init(void); t_error segment_set_digit(segment_digit data, segment_mask digit); t_error segment_set_mask(segment_mask mask); t_error segment_refresh_display(void); void segment_enable(void); void segment_disable(void); #endif /* SEGMENT_H */