The PingTel Xpressa phone
makes heavy use of the Session Initiation Protocol (SIP). When a user
of the Xpressa phone dials a telephone number or enters a SIP address, an
INVITE message is sent to the appropriate SUA or Proxy. A response code
is sent back to the PingTel phone and, if successful, a phone conversation
begins. (In reality, this is a gross oversimplification of the SIP protcol.
The reader is directed to RFC2543 for a much more
authoritative and detailed look at SIP.) Once a session is initiated, "toll"
to "CD" quality VoIP communication between the two or more parties is established
using G.711 and G.729 codecs.
The Xpressa phone comes pre-built with a SIP stack. The standard Java
API provided by PingTel, discussed in depth below, allows the programmer to
send only INVITE messages to a given SIP address. Using undocumented
API calls, however, SIP messages may be constructed at the granularity of
the SIP header fields. That is, it is possible (and PingIM makes heavy
use of this) to construct any grammatically-correct SIP message, such as DO,
MESSAGE, SUBSCRIBE, and/or NOTIFY messages. SIP messages may contain
any MIME content-type and payload. Using the underlying PingTel SIP
implementation, the programmer may then add the custom-built SIP message to
the outgoing message queue.
Undocumented function calls also allow for the implementation of SIP "listeners"
-- methods that are executed whenever a specific message type is popped off
of the SIP stack. This was especially critical for receiving instant
messages and SUBSCRIBE/NOTIFY messages (as described in future sections).
Using these undocumented API calls, it was possible to greatly extend
both the usability and functionality of the PingIM product.
Java Virtual Machine
The PingTel Xpressa phone includes the embedded PersonalJava virtual
machine . PersonalJava supports core Java functionality, including
threading. Additionally, JNDI and JDBC support have been preinstalled
on the Xpressa phone.
GUI Interface
PingTel Xpressa phones include a small 160x160 pixel LCD display:
As can be seen in the above illustration, PingTel phones have 11 "soft-keys"
(4 on each side, 3 below) and a scroll knob (not pictured). For the
most part, graphics appear crisp and easy-to-read. Like most Palm-sized
LCD displays, the major problem lies with screen real-estate; that is, it
is very difficult to display a reasonable amount of information on one screen
without requiring the user to scroll endlessly. Additionally, the number
of soft-keys is a limiting factor. Handheld devices that feature a stylus
can present the user with hundreds of options (on most handhelds, the stylus
can differentiate between individual pixels; thus the programmer can theoretically
have as many inputs as there are points on the display.) The limitation
of only 11 soft-keys makes constructing a user-friend interface for a feature-rich
application considerably more difficult.
The PingTel API provides four standard screens:
Two-column scrollable
lists
Single-column scrollable
lists
Message boxes
Tabbed-layouts
Using the com.pingtel.xpressa.awt, com.pingtel.xpressa.awt.form, and com.pingtel.xpressa.awt.event
packages (all of which are included in the PingTel development kit), it is
fairly easy to construct each of the above types of forms.
Emulator
PingTel has released an Xpressa emulator for Windows based PCs called Instant
Xpressa Softphone. Downloading
the emulator is free, but requires registration. The emulator
does a reasonably good job of mirroring the behavior and capabilities of
the PingTel Xpressa phone. As with the Xpressa phone, the emulator
includes a web-based configuration tool (explained below) that allows for
easy loading and unloading of Java applications.
One important and undocumented point concerning the installation of the
emulator is worth noting here. On NT based versions of Windows (e.g.,
NT, 2000, and XP Professional), the JIT compiler must be disabled for the
emulator to work properly. In the ixpressa.bat file, the option -nojit
should be appended to the Java command-line (which appears twice in this
file).
Configuration Tool
Both the Xpressa phone and Instant Xpressa softphone are configured through
a web-based interface. PingTel phones run a local webserver (by default
on port 80) that houses the configuration tool.
Through this interface, users may load or unload applications onto their
phones. These applications must be stored in a jar file on a separate
web server. Applications are specified by using its pertinent URL.