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:
committed by
Jordan Crouse
parent
d21f68bbd5
commit
d57a680632
@ -669,10 +669,12 @@ int wnoutrefresh(WINDOW *win)
|
|||||||
// FIXME.
|
// FIXME.
|
||||||
int serial_is_bold = 0;
|
int serial_is_bold = 0;
|
||||||
int serial_is_altcharset = 0;
|
int serial_is_altcharset = 0;
|
||||||
|
int serial_cur_pair = 0;
|
||||||
|
|
||||||
int x, y;
|
int x, y;
|
||||||
chtype ch;
|
chtype ch;
|
||||||
int need_altcharset;
|
int need_altcharset;
|
||||||
|
short fg, bg;
|
||||||
|
|
||||||
serial_end_bold();
|
serial_end_bold();
|
||||||
serial_end_altcharset();
|
serial_end_altcharset();
|
||||||
@ -703,6 +705,7 @@ int wnoutrefresh(WINDOW *win)
|
|||||||
if (serial_is_bold) {
|
if (serial_is_bold) {
|
||||||
serial_end_bold();
|
serial_end_bold();
|
||||||
serial_is_bold = 0;
|
serial_is_bold = 0;
|
||||||
|
serial_cur_pair = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -723,6 +726,13 @@ int wnoutrefresh(WINDOW *win)
|
|||||||
serial_is_altcharset = 0;
|
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);
|
serial_putchar(ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,6 +110,8 @@ int serial_getchar(void)
|
|||||||
enacs=\E(B\E)0, smacs=^N, rmacs=^O. */
|
enacs=\E(B\E)0, smacs=^N, rmacs=^O. */
|
||||||
#define VT100_SMACS "\e(0"
|
#define VT100_SMACS "\e(0"
|
||||||
#define VT100_RMACS "\e(B"
|
#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)
|
static void serial_putcmd(char *str)
|
||||||
{
|
{
|
||||||
@ -142,6 +144,19 @@ void serial_end_altcharset(void)
|
|||||||
serial_putcmd(VT100_RMACS);
|
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)
|
void serial_set_cursor(int y, int x)
|
||||||
{
|
{
|
||||||
char buffer[32];
|
char buffer[32];
|
||||||
|
@ -139,6 +139,7 @@ void serial_start_bold(void);
|
|||||||
void serial_end_bold(void);
|
void serial_end_bold(void);
|
||||||
void serial_start_altcharset(void);
|
void serial_start_altcharset(void);
|
||||||
void serial_end_altcharset(void);
|
void serial_end_altcharset(void);
|
||||||
|
void serial_set_color(short fg, short bg);
|
||||||
void serial_set_cursor(int y, int x);
|
void serial_set_cursor(int y, int x);
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user