EW Windows Uploader - Version 1019A

Summary

This version of EW Windows Uploader introduces the capability to set the declaration or just the task in EW Model D loggers from external files or software. This is done using new -xd and -xt command line switches which specify a file containing certain IGC H (header) and C (task) records (and perhaps other lines, such as other IGC records, which are ignored). The full declaration or just the task specified in the file is merged into any declaration uploaded from the logger when the settings dialog box is displayed. Information from the file is used where it is present, where it is omitted or blank the information from the logger is used.

There are also a few other, more minor, program changes.

Background

EW Windows Uploader has long been able to set the declaration in EW Model D Flight Recorders. However, doing so is somewhat awkward as the only means of entering the task details is via a dialog box which requires both the identification and the latitude/longitude of the points to be typed. There is no function to read the lat/long from a file (as there is in EWView/DOS, for example) and no means to reuse the information for multiple loggers, even within the same EW Windows Uploader session.

Recently David Robertson has received requests from a few users of his TaskNav software for it to be able to transfer tasks and declarations to EW Model Ds. Since TaskNav already uses EW Windows Uploader to upload from the EW A through D loggers it seemed obvious to use the Uploader for this function as well. TaskNav normally calls Windows Uploader as a sub-process passing various information (e.g., the directory in which to store uploaded traces) via command line switches so it is sensible to continue that practice.

David's initial thought was that TaskNav should format the task information in the form downloaded to the loggers. That would mean, in effect, defining a new file format - something of which the world is not in desperate need. After a brief consultation with Peter "Boris" Wyld I came to the conclusion that the best existing format for declaration information is the IGC file format which at least has the advantage of containing, by definition, all of the information required to produce an IGC format file.

A subsidiary benefit is that it also allows a declaration to be copied from one logger (EW or not) to an EW model D by uploading a short log file then feeding that to EW Windows Uploader.

Caveats

It's almost five years since I've given much though to EW Windows Uploader and my development environment has evolved significantly since then. In particular, all of the development and most of the testing of this version was carried out under Linux (using Wine) with just a quick validation on a cranky old XP system.

There are two specific concerns arising from this archeology:

When I was last working on the Uploader it was on problems related to its use with USB-to-serial converters - particularly dealing with hardware handshake. The most recent released version was 0523X, a test version with changes in that area. The most recent code I have, though, is dated a few weeks after that and has further development: in particular it has a new check box in the Open Port dialog box to control which handshake line is used for flow control. User testing and feedback would, therefore, be welcome.

Primary Function

The primary new function in this version is the reading and merging of declaration and task information into the model D settings dialog controlled by new -xd or -xt command line switches.

Declaration Information

A declaration is considered to consist of one or more of the following items:

Here '?' signifies exactly one of any of the characters in the IGC character set and '*' signifies zero or more of them.

For each of the header records the contents are taken from after the : to the end of the line. All of the characters should be in the IGC character set (this is not checked yet). Each string is limited in length as documented for the Model D SPI (Set Pilot Info) command. If excess characters are provided then they are silently discarded. Leading and trailing space characters are also discarded.

For the GPS information, the model identification is taken to be the contents of the record up to the last comma present. The serial number is taken from after that comma to the end of the record. Any truncation or space trimming is done after separating these fields. If there's no comma the whole record is taken for the model identification.

Task Information

The task information consists of:

If more than four turn points are specified then the file is rejected with an error message. The turn point name is silently truncated to six characters and forced to upper case.

The declaration date and time is ignored. A new value will be set in accordance with the flight recorder's clock when the declaration or task is downloaded as a consequence of the user choosing OK on the Settings Window.

The takeoff and landing positions are not included. The C records for these must be present but, apart from checking for use of the IGC character set (not implemented yet), are not processed. (Note that some old non-EW IGC files do not contain these records and cause an error to be reported.)

Also not included is the geometry of areas which the IGC specification allows after the name in the C record. Where this is present it is discarded. The IGC specification (First Edition with amendments 1 to 11, 3.6.5,) is ambiguous on the format of this information: the initial description indicates that the geometry data is followed by "AREA" but the later examples say "TURN AREA". EW Windows Uploader accepts and discards either.

-xd and -xt Switches

The -xd switch names a file from which the declaration (including the task) is read.

The -xt switch names a file from which just the task is read.

Either switch can be immediately followed by the name of the file to be read. If the file name is omitted then standard input is read (on operating systems which support standard input for Windows executables, Windows XP seems not to). There should not be a space between the switch and the file name - they must be part of the same command line token.

The -xd or -xt switches can be separated from the file name by an '=' sign. This is required in the (somewhat unusual) case that the file name itself actually starts with an '=' sign. Use of an '=' is sensible when invoking Windows Uploader directly at the command prompt as it allows the shell to support file name completion.

Normally only one of these switches would be used on an invocation of Windows Uploader. However, if multiple switches are given they are processed in turn using the same merging rules as discussed below for combination with the logger's existing declaration. A possible use for this would be to specify -xd for one file to set the pilot details, etc, then -xt to overwrite the task with one read from another file. No more than one of the switches should use standard input.

Merging Rules

When the user selects the Settings button in the Model D Logger Main Window the declaration or task specified on the command line is "merged" into the current declaration in the logger. Similarly, when a second or subsequent -xd or -xt command line switch is present the contents of the specified file is merged into the declaration so far established on the command line.

The basic principle is that the fields of the new declaration (e.g., the one specified on the command line) replace the contents of the old one (e.g., the one read from the logger) where ever the new field is specified and not empty (blank).

The items for which individual decisions are made are:

Note that the GPS model and serial number are treated as separate items even though, within the IGC file format, they are stored in the same H?GPS record. Also, note that the task, including the declared flight date, is considered as a single item. If the new declaration contains a non-zero field in the flight date or a waypoint with a non-empty name or a lat/long specified (not 0000000N00000000E in the IGC format) then the whole task is copied in.

Subsidiary Functions

As well as the primary function described above, this version introduces a few minor features added opportunistically or to support the testing of the declaration feature.

Commas allowed in IGC files

As originally specified the IGC file format did not allow the comma character to be used. However, in practice it was found that all of the manufacturers ignored this restriction and nothing terrible happened so, thanks to the SeeYou people, the committee was induced to relax the rules.

Therefore, this version of EW Windows Uploader does not convert comma characters to semicolons in the way that previous versions did.

RTS Handshake Control

As noted above this version adds user control over the handshake mechanism used on the serial port. In particular, it adds an Enable RTS Handshake check box to the Open Port dialog box:

Open Port dialog box

and a manufacturer specific -xr command line switch to enable this function. If -xr is not specified and the check box is not checked then the RTS line for an open port is asserted but not used for handshake.

There is more information on this function in EW Logger Models A to D Hardware Handshaking.

-v (display version) command line switch

EW Windows Uploader generally follows the command line switch format of the IGC specified programs. Because this version is more likely to be used from the command line this has been extended to include the -v switch which displays the program identification and version information, as is also displayed in the usual About dialog box.

This switch also has the effect of the -xc switch described below.

'=' separator on command line switches

Because this version allows parameters on manufacturer specific command line switches (which are prefixed by 'x') the separation between the switch and the multi-character parameter could be confusing. For this reason the use of a '=' sign between the switch and the parameter value is allowed. If the parameter value (file or directory name) itself starts with an '=' sign then this separator is required.

For uniformity, '=' is now also allowed on the existing -p (port number) and -d (directory) switches.

-xc (command line mode) command line switch

This command line switch has been added to support regression testing. If it is specified then any errors in subsequent command line processing will cause the program to output the error text to standard output (if the operating system supports it) and terminate normally rather than display the error text in a dialog box. If there are no errors then the program exits as soon as the command line has been processed, rather than opening the normal window and performing the usual program functions.

-xo (output declaration) command line switch

This command line switch has also been added to support regression testing. It causes the program to write out a short file containing the H and C records describing the declaration, as specified by the -xd and/or -xt switches so far encountered on the command line.

A file name to write to can be specified, with or without an '=' separator. If no file name is specified then the records are written to standard output (if the operating system supports it).

To take the declaration details from one file, merge in the task from another and write the result to standard output the following command could be used:

Note the specification of -xc and -xd combined into a single token.

Installation

Sorry, there isn't an installer for this version of the program (yet).

Download and install a previous version, e.g., 0523X. Then download:

and copy it over the executable installed from the previous version. Depending on the user language and operating system this will typically be something like:

If you're being super cautious you could save a copy of the existing executable. This would be wise if you didn't have a copy of the installer for the existing version and couldn't download one easily for some reason.