64#define FRAME_BITS_SIZE 16
66#define FRAME_CUE 0x0100
67#define FRAME_BP 0xB58A
69#define FRAME_DISPLAY_1 0x0040
70#define FRAME_DISPLAY_2 0x0020
71#define FRAME_DISPLAY_3 0x0800
72#define FRAME_DISPLAY_4 0x0004
73#define FRAME_DISPLAY (FRAME_DISPLAY_1 | FRAME_DISPLAY_2 | FRAME_DISPLAY_3 | FRAME_DISPLAY_4)
75#define FRAME_DISPLAY_FRAGMENT_A 0x2000
76#define FRAME_DISPLAY_FRAGMENT_B 0x1000
77#define FRAME_DISPLAY_FRAGMENT_C 0x0200
78#define FRAME_DISPLAY_FRAGMENT_D 0x0400
79#define FRAME_DISPLAY_FRAGMENT_E 0x0080
80#define FRAME_DISPLAY_FRAGMENT_F 0x0008
81#define FRAME_DISPLAY_FRAGMENT_G 0x0010
82#define FRAME_DISPLAY_FRAGMENT_DP 0x8000
84#define FRAME_DISPLAY_DIGIT_MASK (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_D|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_G)
86#define FRAME_DISPLAY_OFF 0x0000
87#define FRAME_DISPLAY_DIGIT0 (FRAME_DISPLAY_FRAGMENT_A | FRAME_DISPLAY_FRAGMENT_B | FRAME_DISPLAY_FRAGMENT_C | FRAME_DISPLAY_FRAGMENT_D | FRAME_DISPLAY_FRAGMENT_E | FRAME_DISPLAY_FRAGMENT_F)
88#define FRAME_DISPLAY_DIGIT1 (FRAME_DISPLAY_FRAGMENT_B | FRAME_DISPLAY_FRAGMENT_C)
89#define FRAME_DISPLAY_DIGIT2 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_G|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_D)
90#define FRAME_DISPLAY_DIGIT3 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_D|FRAME_DISPLAY_FRAGMENT_G)
91#define FRAME_DISPLAY_DIGIT4 (FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_G|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C)
92#define FRAME_DISPLAY_DIGIT5 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_G|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_D)
93#define FRAME_DISPLAY_DIGIT6 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_D|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_G)
94#define FRAME_DISPLAY_DIGIT7 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C)
95#define FRAME_DISPLAY_DIGIT8 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_D|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_G)
96#define FRAME_DISPLAY_DIGIT9 (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_D|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_G)
97#define FRAME_DISPLAY_DIGITA (FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_G)
98#define FRAME_DISPLAY_DIGITC (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_D)
99#define FRAME_DISPLAY_DIGITE (FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_D|FRAME_DISPLAY_FRAGMENT_G)
100#define FRAME_DISPLAY_DIGITF (FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_A|FRAME_DISPLAY_FRAGMENT_G)
101#define FRAME_DISPLAY_DIGITH (FRAME_DISPLAY_FRAGMENT_B|FRAME_DISPLAY_FRAGMENT_C|FRAME_DISPLAY_FRAGMENT_E|FRAME_DISPLAY_FRAGMENT_F|FRAME_DISPLAY_FRAGMENT_G)
103#define DIGITOFF_VALUE 0xB
104#define DIGITH_VALUE 0xD
106#define FRAME_LED 0x4000
108#define FRAME_BEEP_BIT 0x0100
110#define DISPLAY_DIGIT1 0x0008
111#define DISPLAY_DIGIT2 0x0004
112#define DISPLAY_DIGIT3 0x0002
113#define DISPLAY_DIGIT4 0x0001
114#define DISPLAY_ALLDIGITS DISPLAY_DIGIT1 | DISPLAY_DIGIT2 | DISPLAY_DIGIT3 | DISPLAY_DIGIT4
116#define DISPLAY_OFF 0xBBBB
117#define DISPLAY_UNIT_F 0x000F
118#define DISPLAY_UNIT_C 0x000C
120#define DIGITS2UINT(v) ((((v >> 12) & 0x000F)*100) + (((v >> 8) & 0x000F)*10) + ((v >> 4) & 0x000F))
121#define DISPLAY_UNIT(v) (v & 0x000F)
122#define NO_ERROR_ON_DISPLAY(v) ((v & 0xF000) != 0xE000)
123#define DISPLAY2ERROR(v) ((v >> 4) & 0x0FFF)
124#define TEMP_ON_DISPLAY(v) ((DISPLAY_UNIT(v) == DISPLAY_UNIT_C) || (DISPLAY_UNIT(v) == DISPLAY_UNIT_F))
125#define TIMING_ON_DISPLAY(v) (DISPLAY_UNIT(v) == DIGITH_VALUE)
127#define INIT_STABLE_VALUE_COUNTER 10
128#define INIT_STABLE_WATER_COUNTER 500
130#define BLINK_DESIRED_FRAME_MAX 600
131#define BLINK_RESET_FRAME_MIN 1300
133#define UNITCHANGE_FRAME_COUNTER_MAX 2500
135#define ResetErrorFrameCounter 10000
136#define MIN_SANITIZER_FRAME_COUNTER 1500
138#define PUSH_COUNTER_MAX 25