-
Notifications
You must be signed in to change notification settings - Fork 76
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.
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.
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.
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.
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.
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.
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.
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.
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.
Provides some common utilities that are shared among all other projects.
Provides some common testing utilities that are shared among all other projects for use in their JUnit and/or integration tests.