|
Software Architecture
The eWatch system was designed as a platform for developing context aware applications.
The main goals that influenced the design decisions were ease of use and flexibility.
eWatch provides the developer with an API that enables rapid prototyping.
The eWatch software system consists of three layers: Application, System Functionality, and Hardware Abstraction.
Applications access functionality of lower layers to render screen
images, interact with the user and retrieve information from the
storage, sensors or wireless network. The System Functionality Layer
provides an API for shell, task and power management. The Hardware
Abstraction Layer contains the drivers for all the hardware components
providing access to all eWatch functionality.
The layered architecture helps to achieve our goal of
flexibity by reducing the effort necessary to port to another hardware
or software environment. For example, we developed a Linux port of the
software system that replaces the hardware abstraction layer with
simulated hardware. This enables rapid development cycles since the
code can be tested on the developers machine without actually updating
the eWatch firmware.
Interface
eWatch offers two interfaces for a user or developer to control its
functionality: the eWatch shell and the Graphical User Interface (GUI)
on the built-in display.
The eWatch shell allows users to execute functions and
configure variables via Bluetooth. A text-based protocol is used to
transmit commands similar to a Unix shell. The applications on eWatch
can register functions and variables, making them accessible through
the shell. The commands can be typed by a user or developer through a
keyboard or sent from a program running on the PC. This enables
automated scripting of the system and allows remote applications to
access eWatch functionality.
The primary GUI of eWatch is the menu system. As shown above,
the menus allow the user to scroll through lists of items and select
entries to activate them. The menu structure is organized
hierarchically - entries can be modified, added, or removed during
runtime. Each menu entry is linked to a shell command that is executed
when the entry is selected. The eWatch GUI library supports TrueType
fonts, drawing of geometric shapes, and displaying bitmaps.
Applications
The current eWatch applications are
- sensor visualization to give a graphical view of the current sensor values
- sensor data can be received wirelessly in realtime over bluetooth or it can be
recorded to the flash memory and read later
- eWatch shell to execute commands and to control environment variables
- calendar gives an overview about todays activities and will notify with approriate notification mechanisms
- email client receives emails and notify the user
- vnc server allows a remote vnc viewer to show the content of the lcd screen
- games: pong 3d demonstrates how the accelerometers can be used as input device
Libraries
Libraries provide additional functionality for the applications, like a
graphic library for the user interface and a library for the common
libc functions.
- graphic library
- support for multiple fonts, variable font width, tool to export from free type fonts
- offscreen rendering
- lines, boxes, rectangles
- vertical/horizontal dotted lines
- scrollbars, progress bars
- simple libc library
- output functions
- string functions
- math functions
Drivers
The eWatch driver layer provides a clean API to access all
functionality that is provided by the hardware, mainly the ARM7
processor (including the realtime clock and the UART communication),
the ADC with the sensors, the LCD controller, the FLASH memory, and the
accelerometer.
|