Architecture

jawi edited this page Mar 8, 2011 · 1 revision

Table of Contents

Architecture

The client will be entirely OSGi-based. Reasons to chose for this is that all projects are loosely coupled and can be upgraded individually. In addition, OSGi provides the ability to load/unload native libraries for the correct operating system out of the box.

A description of the current projects is given in the following sections.

RXTX

Provides the abstraction to talk to serial devices, such as the LogicSniffer. It integrates the native libraries for various operating systems. Currently, the following operating systems are supported:

  • Windows 32/64 bits;
  • Linux 32/64 bits;
  • Mac OSX 32/64 bits;
  • Solaris 32 bits.
Aside the RXTX, a service.io project is available, which provides the main entry point for obtaining a serial connection by giving it an URI.

API

Provides the common API (maybe "common API" would be a better name?) shared between the client, tools and devices. This project does nothing on its own but provides some commonly used code for the other projects.

The idea is to have only interfaces in the API-project, but this is currently not the case. For example the AnnotatedData implementation is used by several other projects, and is a concrete class instead of an interface. To really solve this, one would need an additional project that provides common implementations.

Client

Provides the actual user interface of the client and forms the "glue" between devices, tools and exporters. The client project is more or less an empty "shell" that allows devices and tools to be added dynamically. It is entirely Swing based.

Devices

Provides support for the actual devices, such as the LogicSniffer. A device contains everything to actually work with the device, from low-level communication routines to the (configuration) user interface and interfacing logic with the rest of the client.

Tools

Provides protocol analysis, measurement and other tools that can provide additional information about captured data. Most of the current tools do some "heavy" processing of data, which should be done in the background to keep the user interface responsive. To make writing such tools easier, a "base" tool is provided which provides most of the boilerplate code.

Exports

Provides the export functionality from the diagram to various output formats. The exporters get access to the complete diagram, which can result in a very memory consuming export. No limitations are enforced from the platform.

Runner

Provides a small "bootstrap" for the OSGi container. This project is the only non-OSGi project. It provides the only "main" method in all projects and this main should start the OSGi container with some predefined configuration and let the OSGi container do the remainder of the work. Currently, Felix 3.0 is used as OSGi container.

Logging

Provides a logging "bridge" for Java's native logging functionality and OSGi Logging service. It allows classes to log using Java's native logging functionality (java.util.logging) which will be redirected to a OSGi log service under water.

Util

Provides some common utilities that are shared among all other projects.

Testing util

Provides some common testing utilities that are shared among all other projects for use in their JUnit and/or integration tests.