|
@@ -270,8 +270,6 @@ static u8 display_buf[DISPLAY_BUF_SIZE];
|
|
|
static u8 display_putc_pos;
|
|
|
static u8 display_out_pos;
|
|
|
|
|
|
-static u8 display_dot_enable;
|
|
|
-
|
|
|
void display_set(int cmd) {
|
|
|
|
|
|
if (cmd & DISPLAY_CLEAR) {
|
|
@@ -281,12 +279,6 @@ void display_set(int cmd) {
|
|
|
if (cmd & DISPLAY_HOME) {
|
|
|
display_putc_pos = 0;
|
|
|
}
|
|
|
-
|
|
|
- if (cmd & DISPLAY_MARK) {
|
|
|
- display_dot_enable = 1;
|
|
|
- } else {
|
|
|
- display_dot_enable = 0;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
#define SEG_A (1<<0)
|
|
@@ -314,10 +306,12 @@ void display_set(int cmd) {
|
|
|
* A..Z index 10..35
|
|
|
* - index 36
|
|
|
* _ index 37
|
|
|
+ * . index 38
|
|
|
*/
|
|
|
|
|
|
#define SYMBOL_DASH (36)
|
|
|
#define SYMBOL_UNDERLINE (37)
|
|
|
+#define SYMBOL_DOT (38)
|
|
|
|
|
|
static u8 display_char2seg7_tbl[]=
|
|
|
{
|
|
@@ -337,28 +331,29 @@ static u8 display_char2seg7_tbl[]=
|
|
|
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, /* d */
|
|
|
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G, /* E */
|
|
|
SEG_A | SEG_E | SEG_F | SEG_G, /* F */
|
|
|
- SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G, /* g */
|
|
|
+ 0, /* g - not displayed */
|
|
|
SEG_B | SEG_C | SEG_E | SEG_F | SEG_G, /* H */
|
|
|
- SEG_E | SEG_F, /* I */
|
|
|
- SEG_B | SEG_C | SEG_D | SEG_E, /* J */
|
|
|
- SEG_A, /* K - special 1 */
|
|
|
+ SEG_B | SEG_C, /* I */
|
|
|
+ 0, /* J - not displayed */
|
|
|
+ 0, /* K - not displayed */
|
|
|
SEG_D | SEG_E | SEG_F, /* L */
|
|
|
- SEG_B, /* m - special 2 */
|
|
|
- SEG_C | SEG_E | SEG_G, /* n */
|
|
|
- SEG_C | SEG_D | SEG_E | SEG_G, /* o */
|
|
|
+ 0, /* m - not displayed */
|
|
|
+ 0, /* n - not displayed */
|
|
|
+ SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, /* O */
|
|
|
SEG_A | SEG_B | SEG_E | SEG_F | SEG_G, /* P */
|
|
|
- SEG_A | SEG_B | SEG_C | SEG_F | SEG_G, /* q */
|
|
|
- SEG_E | SEG_G, /* r */
|
|
|
+ 0, /* q - not displayed */
|
|
|
+ 0, /* r - not displayed */
|
|
|
SEG_A | SEG_C | SEG_D | SEG_F | SEG_G, /* S */
|
|
|
SEG_D | SEG_E | SEG_F | SEG_G, /* t */
|
|
|
SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, /* U */
|
|
|
- SEG_C | SEG_D | SEG_E | SEG_F, /* V */
|
|
|
- SEG_C, /* w - special 3 */
|
|
|
- SEG_B | SEG_C | SEG_E | SEG_F | SEG_G, /* X */
|
|
|
+ 0, /* V - not displayed */
|
|
|
+ 0, /* w - not displayed */
|
|
|
+ 0, /* X - not displayed */
|
|
|
SEG_B | SEG_C | SEG_D | SEG_F | SEG_G, /* Y */
|
|
|
- SEG_A | SEG_B | SEG_D | SEG_E | SEG_G, /* Z */
|
|
|
+ 0, /* Z - not displayed */
|
|
|
SEG_G, /* - */
|
|
|
- SEG_D /* _ */
|
|
|
+ SEG_D, /* _ */
|
|
|
+ SEG_P /* . */
|
|
|
};
|
|
|
|
|
|
/* Convert char to the LED segments representation */
|
|
@@ -374,23 +369,20 @@ static u8 display_char2seg7(char c)
|
|
|
c -= 'A' - 10;
|
|
|
else if (c == '-')
|
|
|
c = SYMBOL_DASH;
|
|
|
- else if ((c == '_') || (c == '.'))
|
|
|
+ else if (c == '_')
|
|
|
c = SYMBOL_UNDERLINE;
|
|
|
+ else if (c == '.')
|
|
|
+ c = SYMBOL_DOT;
|
|
|
else
|
|
|
c = ' '; /* display unsupported symbols as space */
|
|
|
|
|
|
if (c != ' ')
|
|
|
val = display_char2seg7_tbl[(int)c];
|
|
|
|
|
|
- /* Handle DP LED here */
|
|
|
- if (display_dot_enable) {
|
|
|
- val |= SEG_P;
|
|
|
- }
|
|
|
-
|
|
|
return val;
|
|
|
}
|
|
|
|
|
|
-static inline int display_putc_nomark(char c)
|
|
|
+int display_putc(char c)
|
|
|
{
|
|
|
if (display_putc_pos >= DISPLAY_BUF_SIZE)
|
|
|
return -1;
|
|
@@ -403,13 +395,6 @@ static inline int display_putc_nomark(char c)
|
|
|
return c;
|
|
|
}
|
|
|
|
|
|
-int display_putc(char c)
|
|
|
-{
|
|
|
- /* Mark the codes from the "display" command with the DP LED */
|
|
|
- display_set(DISPLAY_MARK);
|
|
|
- return display_putc_nomark(c);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Flush current symbol to the LED display hardware
|
|
|
*/
|
|
@@ -493,9 +478,8 @@ void show_boot_progress(int status)
|
|
|
if (a4m072_status2code(status, buf) < 0)
|
|
|
return;
|
|
|
|
|
|
- display_set(0); /* Clear DP Led */
|
|
|
- display_putc_nomark(buf[0]);
|
|
|
- display_putc_nomark(buf[1]);
|
|
|
+ display_putc(buf[0]);
|
|
|
+ display_putc(buf[1]);
|
|
|
display_set(DISPLAY_HOME);
|
|
|
display_out_pos = 0; /* reset output position */
|
|
|
|