you are here: home > support > software
This page describes the architecture of the new Ant software system. It will be of interest to anyone who would like to know how things work 'under the hood' and to potential users of the Ant user-level programming interface.
The software which supports the Ant products is structured as a series of layers:
- an application layer, usually a graphical user interface (GUI). For most users this will be the ant.exe program, which handles the buttons, menus, list, and so on, and draws the waveforms and other displays.
the GUI plugs into control logic through which it can
drive the Ant and receive sample data and status information.
In our terminology, this is the Client software.
For instance, when a user presses the run button, the GUI will
- call the Run routine in the Client software
- periodically query the Client software to see if the Ant hardware has completed a sample acquisition.
- The Client software plugs into Server software which
understands how to manipulate the internals of the Ant hardware.
The Server software knows nothing about the application.
Continuing the previous example, when the Run routine is
called the Client layer tells the Server layer to
- set bit 0 in register 17 to 1.
Finally, the Server software drives the Ant hardware via a USB
Interface layer which is a thin software layer round the drivers for
the USB chip.
Continuing the previous example, the Server layer tells the
USB Interface layer to send the following down the USB link:
- the code for 'this is a register address'.
- the value 17.
- the code for 'this is data for a register'.
- the value 1.
Local and Remote Operation
Most users want to control a single Ant plugged into their own computer - the computer on which the GUI is running. But sometimes a Ant has to be controlled across a network. Usually the network is the Ethernet within an organisation, but it could be right across the Internet. This section describes how the software supports Local and Remote alternatives.
The key is the interface between the Client layer and the Server layer. Logically the same in Local and Remote operation, this interface is implemented quite differently in the two modes.
The software inserts a glue layer between the Client and Server layers, as shown in the following figure:
The glue software turns off all networking functionality in the Server layer - the Server becomes a single-threaded module dealing with requests from the GUI and Client layers.
From the perspective of the GUI, the software for Local Operation is functionally identical to the software for remote operation. And it is a little more efficient because it doesn't have to deal with networking overheads.
As before, the software inserts a glue layer between the Client and Server layers, but this time the glue is a TCP/IP communications path, as shown in the following figure:
In this case the Server is a multi-threaded module which will respond to simultaneous requests across the network from one or more GUI/Client stacks.
Experts will know that the Remote setup can also be used for local operation. This is because TCP/IP allocates a local loopback address (127.0.0.1) to every computer. By convention, the loopback interface is also known as localhost. So by using the remote software to connect to either localhost or 127.0.0.1, you will be connecting to an Ant on your own computer.
Program Modules and Libraries
The GUI module is ant.exe - the same in all cases. And it always interfaces to the antif.dll support library, which implements the Client software layer. antif.dll also contains software which optionally implements the Server and USB Interface layers, as described below.
Both ant.exe and antif.dll are installed as default when the standard installer is run.
If ant.exe and/or antif.dll is fired off without the name of a remote computer, antif.dll configures itself as shown below.
In this mode, antif.dll implements all the Client and Server routines needed to bridge between the ant.exe GUI and the Ant hardware.
On the other hand, if ant.exe and/or antif.dll is fired off with the name of a remote computer, antif.dll configures itself as shown below.
The Server routines inside the local antif.dll are not used. Instead the Client software communicates with Server routines in a program across the net. Typically, this program is antserve.exe.
The Interface DLL - antif.dll
antif.dll is part of the standard Ant support software and it is installed as default when the installer is run. It can also be downloaded here. The documentation is available here: AN-6 - The antif.dll Software Library.
The Server Program - antserve.exe
These options are available for Server/USB Interface software which drives the Ants over USB links:
- antif.dll includes the optional single-threaded local Server.
- a Server program running on the same computer.
- a Server program running on a connection across a network.
If the built-in Server is not used, you will need a separate standalone Server. The antserve.exe program is a multi-threaded TCP-driven version of the built-in Server, with the addition of a small control GUI. antserve.exe is available here. The zip file includes source code and a runnable program.
The documentation for the Server interface is available here: AN-3 - The Ant Server Interface.
We plan to implement a Microsoft COM interface to the antif.dll library. Please check back for release updates.