Since its inception, Symbian OS has supported a simple console API; CConsoleBase
. The tool-kit provides various implementations of this interface, each suited to different circumstances. This document is intended to provide an overview of the console implementations that are available, and their main pros and cons.
The console implementation for the text window server. Provided by Symbian OS.
Pros:
Has few dependencies.
Supported on the WINSCW emulator.
Supports multiple concurrent CConsoleBase
clients. Each get a separate window. Different windows can be brought into the foreground by dragging using a pointer.
Light-weight - boots quickly and is reasonably fast in use.
Can be run remotely via a serial connection using a VT100 screen driver implementation.
Reasonably bug free.
Cons:
Does not support scrolling. Once text has disappeared from the top of the console it can not be retrieved.
Requires hardware with a full keyboard.
Does not support color or attributes.
Typically, this console is used for minimal base-port ROMs and the early stages of product bring up. However, because it boots quickly under the emulator, it is also the console of choice for emulator based debugging of console applications.
A console implementation for the graphical window server.
Pros:
None.
Cons:
Buggy. Slow to redraw.
Tends to select a font that is small and hard to read.
Does not play nicely with UI frameworks because its window obscures the entire screen. On some UI platforms this makes it impossible to navigate away from.
Does not support scrolling. Once text has disappeared from the top of the console it cannot be retrieved.
Requires hardware with a full keyboard.
Does not support color or attributes.
This console doesn't have much to recommend it. The fshell makes it obsolete with Guicons.
A console implementation for the graphical window server. Currently only supported on S60, but has minimal UI framework dependencies making it easy to port.
Pros:
Does not require a full keyboard - can use whatever text entry capabilities the handset its running on supports.
Provides its own fixed width fonts that are easy to read.
Supports multiple console clients via tabbed windows.
Supports scrolling.
Supports color and attributes.
Cons:
Can only be used locally, and so hardware with limited text input capabilities can be painful to use.
This is the console of choice for running on a handset with a full graphical ROM, if remote connectivity is not available.
A console implementation that will communicate with a VT100 compatible terminal (or terminal emulator such as HyperTerminal) via a serial connection. There are variants that work over TCP connnections (vt100tcpcons.dll), Bluetooth (vt100btcons.dll) and USB (vt100usbcons.dll).
Pros:
Overcomes limitations of the host hardware by using the keyboard and screen of a remote machine.
Supports file transfers between the host hardware and the remote machine via fshell's ymodem and xmodem commands.
Supports color and attributes.
The TCP variant supports both passive (i.e. incoming) and active (i.e. outgoing) connections. This, (perhaps used in conjunction with SSH tunnels) can provide an extremely flexible means of establishing a link.
Cons:
Can only host a single console client per serial channel. However, since fshell allows multiple commands to share a single console, this doesn't tend to be a major limitation.
This is the remote console of choice when running on target (i.e. non-emulated) hardware.
On platforms that support the Terminal Keyboard and Trace Core, this console allows the Carbide Terminal Keyboard plugin to be used directly with fshell, even in gui environments when the normal eshell terminalkeyboard plugin won't work.
Pros:
Works over whatever transport that TraceCore can use (so will work over XTI even when no physical serial ports are available).
Works in GUI (DFS) builds - unlike the standard eshell plugin.
Cons:
Requires Carbide and the Carbide Terminal Keyboard plugin to be installed.
Limited by what the Carbide Terminal Keyboard plugin allows - so no ymodem support.
A console implementation that connects via TCP to a Win32 executable (called rcons.exe) that hosts console windows remotely.
Pros:
Supports multiple concurrent CConsoleBase
clients. Each get a separate native Windows window.
Supports scrolling.
Cons:
Only supports active (i.e. outgoing) TCP connections to the host PC. This can cause problems if the host PC is protected by a firewall.
Does not support color or attributes.
Does not support file transfers.
This console has been largely superceded by vt100cons (or one of its variants) for target use. However, it is still useful on the emulator because a) it is easy to get up an running, and b) new windows automatically appear (rather than needing to explicitly connect a terminal emulator).
A specialized console for running the WINSCW emulator directly in a DOS box. A batch file \epoc32\tools\fshell.bat is provided for convenience.
Pros:
Interfaces with the Windows command prompt (cmd.exe).
Cons:
Only supported on the emulator.
The console of choice for running fshell commands as part of a build process because errors and warnings are reported directly to whatever is controlling the build (normally make).
A console that provides no input and throws away all output. The console of choice for running fshell commands headlessly.
A console implementation that exposes fshell's console sharing functionality via the CConsoleBase
API. Used internally to support legacy Symbian console applications.
A dummy console implementation that fshell (or, more specifically iosrv) uses internally to find a suitable default console implementation. You should never explicitly instanciate this console yourself.
Copyright (c) 2008-2010 Accenture. All rights reserved.