Virtual terminal emulator.
More...
Data Structures |
struct | _WINSIZE |
struct | _TERMDCB |
| Terminal device control block structure. More...
|
Defines |
#define | LCD_CMDBYTE 0x0401 |
#define | LCD_CMDWORD16 0x0402 |
#define | LCD_CMDWORD32 0x0403 |
#define | LCD_DATABYTE 0x0405 |
#define | LCD_DATAWORD16 0x0406 |
#define | LCD_DATAWORD32 0x0407 |
#define | LCD_SETCOOKEDMODE 0x0413 |
| Set raw mode.
|
#define | LCD_GETCOOKEDMODE 0x0414 |
| Query raw mode.
|
#define | LCD_SET_AUTOLF 0x0415 |
#define | LCD_GET_AUTOLF 0x0416 |
#define | TIOCGWINSZ 0x0501 |
#define | TIOCSWINSZ 0x0502 |
#define | LCD_MF_CURSORON 0x00000001UL |
| Cursor on flag.
|
#define | LCD_MF_COOKEDMODE 0x00020000UL |
| Control character interpretation on flag.
|
#define | LCD_MF_AUTOLF 0x00040000UL |
| Control automatic break into next line on line end.
|
#define | LCD_MF_AUTOSCROLL 0x00080000UL |
| Control automatic scrolling at end of display.
|
#define | LCD_MF_INVERTED 0x10000000UL |
#define | ESC_CHAR "\x1B" |
#define | ESC_POS ESC_CHAR "Y" |
#define | ESC_UP ESC_CHAR "A" |
#define | ESC_DOWN ESC_CHAR "B" |
#define | ESC_RIGHT ESC_CHAR "C" |
#define | ESC_LEFT ESC_CHAR "D" |
#define | ESC_CLRHOME ESC_CHAR "E" |
#define | ESC_HOME ESC_CHAR "H" |
#define | ESC_CLREND ESC_CHAR "J" |
#define | ESC_CLREOL ESC_CHAR "K" |
#define | ESC_CLRSTART ESC_CHAR "d" |
#define | ESC_CLRSOL ESC_CHAR "o" |
#define | ESC_INSCHAR ESC_CHAR "@" |
#define | ESC_INSLINE ESC_CHAR "L" |
#define | ESC_DELCHAR ESC_CHAR "P" |
#define | ESC_DELLINE ESC_CHAR "M" |
#define | ESC_RLF ESC_CHAR "I" |
#define | ESC_CURSORON ESC_CHAR "e" |
#define | ESC_CURSOROFF ESC_CHAR "f" |
#define | ESC_INVERTON ESC_CHAR "i" |
#define | ESC_INVERTOFF ESC_CHAR "n" |
#define | ESC_SPECIALSET ESC_CHAR "F" |
#define | ESC_DEFAULTSET ESC_CHAR "G" |
#define | ESC_ACTIVE ESC_CHAR "R" |
#define | ESC_SLEEP ESC_CHAR "S" |
#define | ESC_CLR ESC_CLRHOME |
| Deprecated, use ESC_CLRHOME.
|
Typedefs |
typedef struct _WINSIZE | WINSIZE |
typedef struct _TERMDCB | TERMDCB |
Functions |
void | TermRefresh (TERMDCB *dcb) |
int | TermIOCtl (NUTDEVICE *dev, int req, void *conf) |
| Perform special LCD control functions.
|
int | TermInit (NUTDEVICE *dev) |
| Initialize the terminal device.
|
int | TermWrite (NUTFILE *fp, const void *buffer, int len) |
| Write data to a terminal device.
|
int | TermWrite_P (NUTFILE *fp, PGM_P buffer, int len) |
| Write data from program space to a terminal device.
|
NUTFILE * | TermOpen (NUTDEVICE *dev, const char *name, int mode, int acc) |
| Open a terminal device.
|
int | TermClose (NUTFILE *fp) |
| Close a device or file.
|
Detailed Description
Virtual terminal emulator.
The virtual terminal driver allows to use a LC or VF display for standard I/O. It supports VT52 control codes.
Define Documentation
#define LCD_CMDBYTE 0x0401 |
#define LCD_CMDWORD16 0x0402 |
#define LCD_CMDWORD32 0x0403 |
#define LCD_DATABYTE 0x0405 |
#define LCD_DATAWORD16 0x0406 |
#define LCD_DATAWORD32 0x0407 |
#define LCD_SETCOOKEDMODE 0x0413 |
#define LCD_GETCOOKEDMODE 0x0414 |
#define LCD_SET_AUTOLF 0x0415 |
#define LCD_GET_AUTOLF 0x0416 |
#define TIOCGWINSZ 0x0501 |
#define TIOCSWINSZ 0x0502 |
#define LCD_MF_CURSORON 0x00000001UL |
#define LCD_MF_COOKEDMODE 0x00020000UL |
#define LCD_MF_AUTOLF 0x00040000UL |
Control automatic break into next line on line end.
Referenced by TermIOCtl().
#define LCD_MF_AUTOSCROLL 0x00080000UL |
Control automatic scrolling at end of display.
#define LCD_MF_INVERTED 0x10000000UL |
display inverted characters on grafic displays
#define ESC_POS ESC_CHAR "Y" |
#define ESC_UP ESC_CHAR "A" |
#define ESC_DOWN ESC_CHAR "B" |
#define ESC_RIGHT ESC_CHAR "C" |
#define ESC_LEFT ESC_CHAR "D" |
#define ESC_CLRHOME ESC_CHAR "E" |
#define ESC_HOME ESC_CHAR "H" |
#define ESC_CLREND ESC_CHAR "J" |
#define ESC_CLREOL ESC_CHAR "K" |
#define ESC_CLRSTART ESC_CHAR "d" |
#define ESC_CLRSOL ESC_CHAR "o" |
#define ESC_INSCHAR ESC_CHAR "@" |
#define ESC_INSLINE ESC_CHAR "L" |
#define ESC_DELCHAR ESC_CHAR "P" |
#define ESC_DELLINE ESC_CHAR "M" |
#define ESC_RLF ESC_CHAR "I" |
#define ESC_CURSORON ESC_CHAR "e" |
#define ESC_CURSOROFF ESC_CHAR "f" |
#define ESC_INVERTON ESC_CHAR "i" |
#define ESC_INVERTOFF ESC_CHAR "n" |
#define ESC_SPECIALSET ESC_CHAR "F" |
#define ESC_DEFAULTSET ESC_CHAR "G" |
#define ESC_ACTIVE ESC_CHAR "R" |
#define ESC_SLEEP ESC_CHAR "S" |
#define ESC_CLR ESC_CLRHOME |
Deprecated, use ESC_CLRHOME.
Although wrong, we keep it for now in order not to break existing code.
Typedef Documentation
Terminal device control block type.
Function Documentation
int TermIOCtl |
( |
NUTDEVICE * |
dev, |
|
|
int |
req, |
|
|
void * |
conf |
|
) |
| |
Perform special LCD control functions.
- Parameters:
-
dev | Identifies the device that receives the device-control function. |
req | Requested control function. May be set to one of the following constants:
- LCD_CMDBYTE Send command byte to display. Parameter conf points to an u_char value containing the command byte.
- LCD_CMDWORD16 Send 16 bit command word to display. Parameter conf points to an uint16_t value containing the command bytes. The most significant byte is send first.
- LCD_CMDWORD32 Send 32 bit command byte to display. Parameter conf points to an uint32_t value containing the command bytes. The most significant bytes are send first.
- LCD_DATABYTE Send raw data byte to display. Parameter conf points to an u_char value containing the data byte.
- LCD_DATAWORD16 Send 16 bit raw data word to display. Parameter conf points to an uint16_t value containing the data bytes. The most significant byte is send first.
- LCD_DATAWORD32 Send 32 bit raw data word to display. Parameter conf points to an uint32_t value containing the data bytes. The most significant bytes are send first.
- LCD_SETCOOKEDMODE Set terminal control character mode. Parameter conf points to an uint32_t value containing 0 (off) or 1 (on).
- LCD_GETCOOKEDMODE Query terminal control character mode. Parameter conf points to an uint32_t value receiving 0 (off) or 1 (on).
|
conf | Points to a buffer that contains any data required for the given control function or receives data from that function. |
- Returns:
- 0 on success, -1 otherwise.
References _TERMDCB::dcb_modeflags, _TERMDCB::dcb_nrows, _TERMDCB::dcb_vcols, _NUTDEVICE::dev_dcb, _TERMDCB::dss_command, _TERMDCB::dss_write, LCD_CMDBYTE, LCD_CMDWORD16, LCD_CMDWORD32, LCD_DATABYTE, LCD_DATAWORD16, LCD_DATAWORD32, LCD_GET_AUTOLF, LCD_GETCOOKEDMODE, LCD_MF_AUTOLF, LCD_MF_COOKEDMODE, LCD_SET_AUTOLF, LCD_SETCOOKEDMODE, TIOCGWINSZ, _WINSIZE::ws_col, _WINSIZE::ws_row, _WINSIZE::ws_xpixel, and _WINSIZE::ws_ypixel.
int TermWrite |
( |
NUTFILE * |
fp, |
|
|
const void * |
buffer, |
|
|
int |
len |
|
) |
| |
Write data to a terminal device.
Application should not call this function directly, but use the stdio interface.
The data may contain special character sequences, which are interpreted by the terminal device to control specific display functions:
- Ctrl-H (ASCII 8) Backspace
- Ctrl-J (ASCII 10) Linefeed
- Ctrl-L (ASCII 12) Formfeed
- Ctrl-M (ASCII 13) Carriage return
In addition a superset of VT52 control sequences are interpreted. Each sequence starts with an ESC character (ASCII 27):
- ESC @ Insert space(*).
- ESC A Move cursor up, ignored if on first line.
- ESC B Move cursor down, ignored if on last line.
- ESC C Move cursor right, ignored if on last column.
- ESC D Move cursor left, ignored if on first column.
- ESC E Clear display and move cursor home (*).
- ESC H Move cursor home.
- ESC I Reverse linefeed.
- ESC J Erase to end of display.
- ESC K Erase to end of line.
- ESC L Insert line (*).
- ESC M Delete line (*).
- ESC P Delete character (*).
- ESC R Reactivate display (*).
- ESC S Put display in sleep mode (*).
- ESC Y x+32 y+32 Move cursor to position.
- ESC e Cursor on (*).
- ESC f Cursor off (*).
- ESC d Erase to start of display (*).
- ESC o Erase to start of line (*).
(*) Not a VT52 command.
- Parameters:
-
fp | File pointer to a previously opened device. |
buffer | Pointer to the data bytes to be written. |
len | Number of bytes to write. |
- Returns:
- The number of bytes written.
- Todo:
- TAB should be interpreted.
- Bug:
- Switching from graphic mode back to text mode will not work, because all escape sequences are ignored as soon as the graphic mode has been enabled. Applications should use _ioctl() functions to switch modes.
References _NUTFILE::nf_dev.
int TermWrite_P |
( |
NUTFILE * |
fp, |
|
|
PGM_P |
buffer, |
|
|
int |
len |
|
) |
| |
Write data from program space to a terminal device.
Similar to TermWrite() except that the data is located in program memory.
Application should not call this function directly, but use the stdio interface.
- Parameters:
-
fp | File pointer to a previously opened device. |
buffer | Pointer to the data bytes in program space to be written. |
len | Number of bytes to write. |
- Returns:
- The number of bytes written.
References _NUTFILE::nf_dev.
Open a terminal device.
Application should not call this function directly, but use the stdio interface.
- Parameters:
-
dev | Pointer to device information structure. |
name | Filename. Not used with terminal devices. |
mode | Operation mode. May be any of the following:
- _O_BINARY Raw mode, no control character interpretation.
- _O_TEXT Text mode. Control characters are interpreted and tranlated to LCD commands.
|
acc | Access mode. Not used with terminal devices. |
- Returns:
- Pointer to a NUTFILE structure or –1 to indicate an error.
References _O_BINARY, _TERMDCB::dcb_modeflags, _NUTDEVICE::dev_dcb, LCD_MF_COOKEDMODE, malloc(), _NUTFILE::nf_dev, _NUTFILE::nf_fcb, _NUTFILE::nf_next, and NUTFILE_EOF.
Close a device or file.
Application should not call this function directly, but use the stdio interface.
- Parameters:
-
fp | Pointer to a previously opened NUTFILE structure. |
- Returns:
- 0 if the device was successfully closed or –1 to indicate an error.
References free(), and NUTFILE_EOF.