Add support for curses color output over serial.
Note that the sequence \e[m for turning off bold resets all attributes, including color. Signed-off-by: Ulf Jordan <jordan@chalmers.se> Acked-by: Jordan Crouse <jordan.crouse@amd.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3561 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
d21f68bbd5
commit
d57a680632
|
@ -669,10 +669,12 @@ int wnoutrefresh(WINDOW *win)
|
|||
// FIXME.
|
||||
int serial_is_bold = 0;
|
||||
int serial_is_altcharset = 0;
|
||||
int serial_cur_pair = 0;
|
||||
|
||||
int x, y;
|
||||
chtype ch;
|
||||
int need_altcharset;
|
||||
short fg, bg;
|
||||
|
||||
serial_end_bold();
|
||||
serial_end_altcharset();
|
||||
|
@ -703,6 +705,7 @@ int wnoutrefresh(WINDOW *win)
|
|||
if (serial_is_bold) {
|
||||
serial_end_bold();
|
||||
serial_is_bold = 0;
|
||||
serial_cur_pair = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -723,6 +726,13 @@ int wnoutrefresh(WINDOW *win)
|
|||
serial_is_altcharset = 0;
|
||||
}
|
||||
|
||||
if (serial_cur_pair != PAIR_NUMBER(attr)) {
|
||||
pair_content(PAIR_NUMBER(attr),
|
||||
&fg, &bg);
|
||||
serial_set_color(fg, bg);
|
||||
serial_cur_pair = PAIR_NUMBER(attr);
|
||||
}
|
||||
|
||||
serial_putchar(ch);
|
||||
}
|
||||
|
||||
|
|
|
@ -110,6 +110,8 @@ int serial_getchar(void)
|
|||
enacs=\E(B\E)0, smacs=^N, rmacs=^O. */
|
||||
#define VT100_SMACS "\e(0"
|
||||
#define VT100_RMACS "\e(B"
|
||||
/* A vt100 doesn't do color, setaf/setab below are from xterm-color. */
|
||||
#define VT100_SET_COLOR "\e[3%d;4%dm"
|
||||
|
||||
static void serial_putcmd(char *str)
|
||||
{
|
||||
|
@ -142,6 +144,19 @@ void serial_end_altcharset(void)
|
|||
serial_putcmd(VT100_RMACS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the foreground and background colors on the serial console.
|
||||
*
|
||||
* @param fg Foreground color number.
|
||||
* @param bg Background color number.
|
||||
*/
|
||||
void serial_set_color(short fg, short bg)
|
||||
{
|
||||
char buffer[32];
|
||||
snprintf(buffer, sizeof(buffer), VT100_SET_COLOR, fg, bg);
|
||||
serial_putcmd(buffer);
|
||||
}
|
||||
|
||||
void serial_set_cursor(int y, int x)
|
||||
{
|
||||
char buffer[32];
|
||||
|
|
|
@ -139,6 +139,7 @@ void serial_start_bold(void);
|
|||
void serial_end_bold(void);
|
||||
void serial_start_altcharset(void);
|
||||
void serial_end_altcharset(void);
|
||||
void serial_set_color(short fg, short bg);
|
||||
void serial_set_cursor(int y, int x);
|
||||
/** @} */
|
||||
|
||||
|
|
Loading…
Reference in New Issue