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.
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.
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.
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.
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.
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.
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.