conexus

Background

Origin

This library was initially created to simplify the development of Isaac, a visual programming language for autonomous mobile robots that is being developed at New Mexico State University. This library was initially used to read/write serial data on the robot platform and to provide the robot the ability to transmit and receive data.

Design Decisions

What follows are several design considerations that have influenced the development of conexus. As with any development process, these design decisions will be adapted and refined to reflect the needs of the library.

Namespaces

Currently, two namespaces are used. The Conexus namespace contains all classes related to I/O. The ConexusGtk namespace contains the set of gtkmm widgets that have been developed in combination with the main library.

Dynamic Memory (Smart Pointers)

At times it is necessary to dynamically allocate memory. Public methods that perform such allocations always return smart pointers rather than normal pointers. Currently, the boost::shared_ptr and boost::shared_array classes are being used.

Signals

Several classes, such as the top level conexus::IO class provide signals that may be used as callbacks on various events. The sigc++ library classes are used to implement all signalling capabilities.

Error Handling

Errors are generally handled through C++ exceptions. A few non-critical errors are handled through return values. A set of classes that inherit from std::exception are also included.

Device Discovery

Several aspects of the Gtk+ widgets, such as the ConexusGtk::SerialComboBox, provide the ability to populate the widgets with all available devices. The hardware abstraction library (hal) is used to support these widgets.


SourceForge.net Logo     Support This Project     Valid XHTML 1.0!