Hyper Quantum's Ada Tools
Hyper Quantum have specialist expertise in Ada software development.
The following details products that we have developed for the open source
community.
LGPL Ada Tools
Ada
Sockets additional routines to match the AdaSockets package
Calendar Extensions which provide UTC time and to provide string
conversion functions for time. It does day of week calculation as well as
conversion of the month name to text. The standard Ada.Calendar functions are
also made visible through this package through renaming. Note: this package
requires String_Functions.
Configuration File Manager tool which provides reading and writing
facilities for accessing a configuration file and the various sections therein.
This package requires the dynamic strings (Strings) package.
Dynamic
Lists is a Generic package for providing a binary tree list for any type.
It is based on the dynamic lists in "Programming in Ada95" by
John Barnes (a book worth owning).
dynamic
length Strings package, which evolved from the Ada 83 days. Much of this
is superseded by the unbounded strings built into Ada, but it contains a few
nice string manipulation routines. One day I may get around to just making
the extra bits a child package of the standard unbounded wide strings. It uses
unbounded wide strings internally.
Error Log
package which provides sophisticated logging facilities, for example, to push
location details on to a stack for later unwinding when an error occurs, debug
logging by level.
This package requires the Dynamic_Lists package.
General Message Types is a generic package for storing message numbers
and associated types.
Generic Command Line Parameters is a generic package for accessing
command line parameters. Parameters are specified in the usual -x or --xname
format. The package verifies the command line is correctly formed and displays
the usage message if not. See the extensive documentation in the package
library for further details. The package requires the Strings_Functions package.
Generic
Versions Generic package provides a storage mechanism for version
numbering and, if used by an application's associated libraries, can yield up the
version numbers of each such library.
Interlocks
package provides an interlock facility for use by applications. The key elements
of the Interlock protected type are the entry Lock and the procedure Release,
and is essentially a classic interlock package. It also provides a termination
status interlock, allowing a mainline package to wait on completion by
independently running tasks before terminating.
String
Functions package provides additional functions for the standard string
type.
Strings
Functions package uses the dynamic Strings package and provides
additional functions for it.
Tools package
that contains all the tools developed by Hyper Quantum, not including dynamic
strings.
The above software is licensed under the terms and conditions of the
LGPL
GPL Ada Products
Port
Logger tool for logging all communications on a particular port to
a file and redirects the output to any other specified port on any machine.
Port
Reflector tool reflects input on any particular port back to the client
machine. It would be used, for instance, to test a firewall prior to connecting
the firewall to the real world. The ports to be reflected are specified in a
configuration file.
Light
Switches system to locally control lights. This application enables the
locally (i.e. not cloud) hosted control of household light switches, providing
an automatic switch-on and switch-off capability for all lights according to
a schedule, as well as manual override through an actual light switch. The
package includes a circuit diagram for connecting everything together. Note that
as mains voltage is involved, the circuit should be built by a qualified
electrician. The system uses a Raspberry Pi as the computing controller (although
any computer would do) and an Arduino Mega 2560. It does provide optional
control through the Raspberry Pi's general purpose I/O without the need for a
Mega 2560, although that is untested.
This is really an alpha version, not doing anything fancy other than switching
lights on and off according to a schedule in an XML file, with manual override
at this stage.
Urine Records
application to record urine volumes. This application would typically be used
by patients to assist their urologist. It could be used in the early stages of
post radical prostatectomy surgery (as was my case). The application records
urine volumes from the catheter (including urine colour) as well as post catheter
removal. This includes measuring pad volumes, taken from the pad weight.
The application is built on a Sqlite database. It also uses Glade for providing
the user interface and therefore GtkAda. The Glade XML file is kept in the
configuration table of the database.
As it uses a component that has a dependency on sockets, it uses the AdaSockets
library. For the database interaction, it uses GNATCOLL.sqlite. I have yet to
successfully port either of these to Windows, so the application is only available
on Linux (or any X-Window style Unix).
The above software is licensed under the terms and conditions of the
GPL
|