In the 2WEAR project, we explore the concept of a personal system that is formed by putting together in an ad-hoc fashion computing elements that communicate via short-range radio. Some of these elements are embedded into objects, such as watches and small hardware modules. Others have the form of more conventional portable computers, such as PDAs and mobile phones. Also, there are stationary elements, some of which may be visible, such as big screens and home appliances, while others are invisible, such as network access points and backend servers.
This setting deviates from the conventional computing paradigm in significant ways. What we used to refer as "the personal computer" now becomes a collection of devices that co-operate with each without relying on external infrastructure or a pre-arranged set-up. Various functions and applications are flexibly distributed on different devices, which are widely heterogeneous both in terms of computing resources and user interaction capability. And most importantly, the system configuration can be changed dynamically as devices are switched on and off, and are brought into or moved out of range. From the user's perspective, it is possible to compose the system of choice just by bringing together devices that complement, duplicate or boost each other's capability to build a more functional, reliable and powerful aggregate. This act of system configuration can be as simple as putting a device into the user's pocket to activate an application or walking away from another device to deactivate a system function. Collaborative tasks can also be activated as soon as peer devices are detected. Put in other words, everyday interactions such as "switching" to a bigger display, "adding" and "removing" applications, as well as "exchanging" favourite songs while among friends could be supported literally.
DESCRIPTION OF WORK
At the lowest level, interaction between the various entities of the system is based on the concept of services. A service denotes a hardware and/or software resource modelled as a distinct unit of functionality that can be accessed over the network. Any wearable or stationary device may be a provider, offering services, or a consumer, accessing services provided by other devices. Each service type is defined via a unique name, a set of properties, and a corresponding access protocol defined as a grammar using an EBNF-like notation. Service access occurs via protocol channels, a mechanism that allows for a flexible exchange of data (tokens) between the communicating parties. Channels are independent of programming platform and networking technology and can be implemented in a straightforward way even on small and resource-scarce embedded systems.
Each device offering services/resources to the system implements a special service, called Home Service, which is responsible for providing information about the device and the specific services it hosts. The Home Service, being itself a "proper" service, is accessed via the protocol channel mechanism. A discovery layer, offering full-fledged service discovery functionality while hiding the details of the underlying network technology, is implemented as a combination of device discovery and the Home Service. The discovery layer is the basis on top of which any service-aware functionality can be implemented.
To simplify program development, adaptation support is provided in the form of runtime mechanisms that transparently discover and access services that are available, possibly combining several individual services with each other, to deliver more abstract and adaptive services to the programmer. Based on such abstractions, it becomes possible to build applications without caring about the (changing) current underlying system configuration. Driven by our demonstration scenario we mainly focus on (a) user interface and (b) storage management. An advanced user interface framework is used to program applications based on high-level user interface abstractions that are dynamically mapped onto the currently available interface resources of the various devices of the system configuration. Flexible storage management allows applications to access distributed storage in a straightforward way, also offering asynchronous backup support over the Internet by exploiting different connectivity options.
The 2WEAR prototype includes mobile phones (commercial off-the-shelf), PDAs, custom-built wearable devices (based on the Strong ARM processor) and embedded systems (a wristwatch, a GPS and a GSM engine), featuring different runtime systems and programming languages (Linux, Active Oberon System, C/C++ and Java) and which communicate with each other using Bluetooth radio. The demonstration scenario revolves around the flexible usage of a camera-photo application, a city-guide application and an alarm application in various settings.
The 2WEAR project has made significant steps towards making the envisioned adaptive wearable system a reality, and has achieved its objectives. It has defined and implemented, on a wide range of platforms
-from COTS devices to custom-built embedded systems, a service-oriented interoperable communication framework over Bluetooth short-range radio. It has designed and implemented individual elementary services (hardware/software components) providing rudimentary functionality that can be exploited by higher-level services and applications. It has designed and implemented adaptive resource discovery and management functions, mainly for storage and user interface resources, which dynamically and transparently access and manage lower-level services to simplify application development. Finally, it has produced a few indicative applications that run on and exploit the services provided by COTS and custom-built wearable devices, in the form of a demonstration that can be used to illustrate the envisioned functionality even to casual users.
Funding SchemeCSC - Cost-sharing contracts
SO30 3DS Southampton