XULander

 

The Problem

Creating interfaces on modern computers is almost taken for granted. Visual GUI builders, high-resolution display screens, and standard forms of user input (keyboard, mouse) all make for a relatively rich environment for building visual applications. The story is not the same for the plethora of embedded and mobile devices, however. User interfaces on embedded devices tend to be very trivial, consisting of perhaps a small monochrome LCD screen and some dedicated buttons, as in the home thermostat of Figure 1:

 

Figure 1: A common home thermostat

In such embedded devices, the cost of the display, input, and development to drive them is very high compared with the rest of the system. Additionally, the richness of the interface is severely limited by the small display and limited, dedicated input buttons. It would be hard to add new functionality to such a device without significantly adding to the cost by adding inputs or requiring a different LCD display.

 

There are also systems for which there is no convenient display available, such as vehicle computers with diagnostic information in today’s cars.

 

The Solution

With XULander, a system is proposed that offloads the responsibilities of the display and interaction with a limited device (the server) to another device (the client) with extensive hardware and software UI support such as a pocket pc, laptop, or desktop pc. The embedded device only stores a definition of the user interface in a XUL (XML User Interface Language) file. The client scans the area for XULander applications (commonly via Bluetooth), selects the device and application they are interested in, and reads the definition and displays the interface on its own hardware. From this point on, interaction with the server device conducted according to scripts in the XUL file over a single input/output stream pair. The stream protocol is character-based and extremely simple to implement and allows for almost any syntax for the application-level protocol.

With this arrangement, embedded and limited devices can expose rich client UI’s to users without incurring large development and manufacturing costs. Adding Bluetooth to systems is getting to be very cheap, and with this one-time cost, new and interactive functionality can be added by simply extending the capabilities of the application’s serial stream protocol. With a Bluetooth implementation, using XULander applications becomes as simple as walking within the immediate area of the device and launching it from an application discovery screen.

 

This project will construct an open source framework for XUL projection and control from client to server. The only supported transport will be Bluetooth, but the system will be designed in such a way as to make alternate connection technologies easy to implement. In all aspects, simplicity will be the guiding force in design, including user interface, network protocol (again extensible for modification), device and service discovery, and XUL scripting support. Additional pre-existing open source packages will be utilized whenever possible to minimize effort and duplicate work.