PingIM Xpression

As mentioned above, PingIM is a feature-rich instant messaging and address book PingTel Xpression.  This section details the application from the end user's perspective.  All major functionalities and features are discussed below.  The next section, PingIM Internals, discusses the overall implementation design as well as delineates the more technical details (e.g., LDAP, SIP, etc.).


The first time the user starts PingIM, s/he is prompted to enter information about an LDAP server .  The hierarchical nature of LDAP services makes it especially well-suited for directory information and particularly appropriate as a storage mechanism for PingIM's buddy list data.  The user must already have an account configured on the LDAP directory, and s/he should already have two child nodes called "ou=pingim_phone" (for PingIM buddies) and "ou=pingim_machine" (for X10-controlled devices).  When starting PingIM for the first time, the user is asked to enter the hostname and port of the LDAP server, the username and password used to bind to that server, as well as the base level of the LDAP tree.  Upon exiting and restarting PingIM, the same LDAP information is used, saving the user from having to retype the same LDAP information.

LDAP tree
Figure 1:  Example PingIM node hierarchy for LDAP directory


LDAP tree
Figure 2:  Example LDAP tree showing the PingIM buddies and X10-devices for uid=msherr

It is important to note that unlike most popular IM clients such as AOL Instant Messenger, Yahoo! Messenger, or ICQ, PingIM does not have the notion of a central repository for buddy-lists.  That is, each user can store his buddy information on a separate LDAP server.  (Of course, if several users wish to use the same LDAP server to store buddy information, that is also allowed.)  This design decision allows institutions or organizations of any granularity (e.g., Columbia's computer science department) to have their own organizational LDAP directory.  Or, the more technically sauvy PingIM end-user may wish to have her buddy list stored on a LDAP server she runs off of her own computer.


Buddy List

Once the user successfully enters information about the LDAP server, she is presented with her buddy list, as shown in the example below:

Buddy list

From the buddy list screen, the user has several choices.  She can choose which buddy she wants to communicate with by using the scroll knob and selecting with the right-hand soft keys.  In the above example, the user with the nickname "Micah Sherr" is selected.  The PingIM user can then select one of the four actions displayed on the left-hand action bar:  IM (send an instant message), Call (place a SIP call), Info (Show information about this entry), or Del (delete this entry).

Next to each user's name is his status symbol.  The status symbol shows the current status of that particular user.  The current set of statuses and their symbols is as follows:

Status
Symbol
Offline, unknown
O
Present and available
+
Away
A
Busy
B
Do not disturb
U

In most menus, the status of the local PingIM application is shown in parentheses at the top.  In our previous screen shot, the local user set her status as 'Available'.  

The soft keys on the bottom toolbar (refering to the illustration above: Phonebook, X10, and Refresh) are used to refresh the screen and toggle between different modes. The Refresh soft keyrefreshes the buddy list, updating the status display of each buddy. Pushing the Phonebook or X10 soft key changes the mode of PingIM.  


Phone Book

In either IM mode or X10 mode, the user may press the Phonebook soft key to switch to phone book mode, pictured below:

PingIM Phonebook

The phone book is very similar to the Buddy List.  The major difference is that the phone book contains all entries under the LDAP binding branch that contain a SIP attribute.  That is, the phone book displays not just PingIM buddies, but also all phone book entries that can be found in the LDAP directory.  Again, pressing the Call soft key on the left-hand toolbar will initiate a SIP call (send an INVITE) to the selected user.


X10 Mode

The final mode in PingIM is X10 mode, used to send commands to appliances that are connected to X10 devices.  The X10 menu may be accessed by selecting the X10 soft key from either the IM or Phone book menus.  For X10 devices, the user has two primary options:  turn the device on or turn it off.  

X10 Menu



Menu Mode

At any time, the user may navigate into Menu Mode by pressing the MORE button and selecting menu.  The menu, shown below, offers several choices to the user:  Add Buddy, Delete Buddy, Change State, Reconfigure LDAP, or Exit.

Menu mode

The user can return to his previous menu by once again pressing the MORE button.