Embedded-system developers need to deliver robust end-to-end solutions between clients and devices, but this task can be hampered by the lack of standard interfaces between services. The Open Services Gateway Initiative (OSGi) is developing an open architecture that addresses services, management, and communication between clients and devices. The modular design allows vendors to provide interfaces to proprietary devices using arbitrary communication protocols. Because OSGi is application- and platform-independent, the specification can be part of a solution comprising anything from cell phones to networked refrigerators. OSGi gateways may also act as an intermediary between network- or Internet-based clients and proprietary devices.
OSGi is being supported by a vast array of vendors. The flexibility of the specification and future enhancements permit the incorporation of proprietary devices and network protocols into a larger solution that might include standard applications such as Web browsers. It works with a variety of networking technologies like Ethernet, Bluetooth, the Home, Audio and Video Interoperability (HAVi) standard, Home Phoneline Networking Alliance (HomePNA), HomeRF, IEEE 1394, LonWorks, Universal Serial Bus (USB), the Video Electronics Standards Association (VESA) home network, and powerline communication systems, including the Home Powerline Alliance (HomePlug). Further technologies can be added too. OSGi tries to be protocol- and standard-agnostic, and it supports device access architectures like Jini and Universal Plug and Play (UPnP).
The OSGi specifications are based on Java. Although it's possible to emulate some OSGi services and interfaces, most OSGi gateways incorporate a Java Virtual Machine (JVM) and the OSGi Framework Java classes in addition to Java-based OSGi-compatible services. Java was chosen so that third-party services could be deployed in a platform-independent environment.
The OSGi specification spells out a number of required services as well as some standard optional services. The standard services include:
- Java environment defines required packages, classes
- Services Framework required API for creating, running services
- Device Access Manager required API for accessing devices
- Log Service required API for logging service
- HTTP Service optional API for Web server
On-demand, dynamically loaded services are provided by the Device Access Manager. The Log Service collects events and notifies listeners when they're logged. The HTTP server supports the Java Servlet 2.1 (or higher) specification. Because gateways may provide access to devices and services using other communication protocols, the Web server is an optional service. One is normally employed when the client is a Web browser. The next revision of the OSGi specification will also address the following service interfaces:
- Client access API for publishing service information
- Configuration data API for managing configuration information
- Persistent data API for storing and accessing persistent data
The client-access interface may allow creation of general OSGi clients. The configuration-data interface will standardize a mechanism for querying and changing gateway and device attributes. Initially, configuration is done using custom interfaces. The persistent-data interface lets OSGi gateways and devices store information in a location-independent fashion. This is especially important for devices with limited nonvolatile memory since it will allow data to be stored on another device on the network. These interfaces are in the process of being approved.
The OSGi framework is designed to tie together third-party services. A bundle provides one or more services, and bundle execution occurs in a bundle context. The services are Java classes, and the bundle is a Java archive (JAR) file. Java interfaces supply access to bundle services, and a standard set of interfaces and services are part of the OSGi framework. Eventually, OSGi will encompass application downloading, service updates, and more sophisticated management.
OSGi implementations are starting to appear, like emWare's (www.emware.com) Gatewayfx. It combines emWare's OSGi package with IBM's (www.ibm.com) J9 JVM and the QNX RTOS (www.qnx.com) running on an IBM PowerPC platform. Gatewayfx also includes support for emWare's Embedded Micro Internetworking Technology (EMIT). The EMIT support is an example of how OSGi supports proprietary protocols.