There are several software components that make up the Mk II controller. These are:
  • The I/O controller program
  • The Host controller program
  • The G3WGV Flex API processor
  • The FlexRadio API
The first three of these are written by me. The relationship between these program components is shown in the following diagram

I/O controller program

This is a fairly straightforward program written in C, which is compiled and run "bare metal" on the Arduino Due. Its purpose is to handle all input and output for the controller, sending control changes and receiving display information from the Host controller via a USB port.

USB serial I/O protocol from I/O controller to Host controller

Almost all transactions are from the I/O controller to the host. One exception is the four VFO LEDs (VFO A Rx/Tx and VFO B Rx/Tx). These LEDS are lit on command from the host and can also show controller status information:
  • All four LEDs flashing: The I/O controller is working but there is no serial port connection to the host controller. Either the host controller Com port configuration is wrong or the host controller program is not running.
  • Both Tx lights flashing and both Rx lights off: The I/O controller is connected to the host controller but there has been no radio connection made yet
  • No lights on at all: The radio connection has been terminated -or- there are no active slices
  • Any other combination: Controller and radio are working normally.

Host controller program

The host controller program takes control change information from the I/O controller, processes it and sends appropriate control commands to the radio via the API processor. It receives radio status messages via the API processor and merges them with its own database of radio data to build a full picture of the radio's operational status.

The host controller program also manages the operator interface through various screen windows. The principal window is the Controller window, which shows the current status of the slices and radio functions that the controller is working with.

The intention is that this window, which is exactly 800x480 pixels should be displayed on the 5" LCD that is part of the controller. However, there is no absolute requirement to do so. It can go anywhere you like on your windows desktop.

Further windows provide status information and permit the selection of the radio you wish to connect to

Finally, primarily for development and diagnostic purposes, there is an API and I/O traffic viewer window that permits the user to see all traffic transiting across the various interfaces. Useful if you want to really understand how the API works!

<more to follow>

No comments:

Post a comment