Description of Modifications


These modifications to the program gmfsk-0.71pre1 provide enhancements to the user interface and transceiver control.

The revisions are designated by the trailing version specifier "hkj-xx" where xx is the revision number.

The interface and callback source files have been edited separately from the gtk interface design tool, "glade-2".  It is profitable to review the interface design with glade-2, but DO NOT overwrite the source code files by executing the "build" option in glade-2.  At some point in the future I will revise the glade-2 source, but until that time you will break the mods by doing a build.
 
Other than the above paragraph the configuration, compilation and installation are the same as for gmfsk.

After running the ./configure file be sure that you have the hamlib directives properly set.  Then edit the source header file src/hkj-config.h   You set up which modifications to the original source you want to include by setting the define statements in the header file.

hkj CAT mod

#define WANT_TENTEC_MOD 1

If set to 1 this will compile the required interface code in gmfsk which allows it to share memory with one of several programs written by W1HKJ which allow direct control of transceiver functions.  These programs include DeltaII, ArgoV, and Icom728 (even though is says TENTEC mod).

gmfsk-0.71-hkjXX remains fully compatible with hamlib.  If you use the hamlib interface to your transceiver be sure to set this flag to ZERO!


color waterfall mod

#define WANT_WATERFALL_MOD  1

If set to 1 this will compile the required code to allow you to switch between color and gray scale waterfall displays.  This modification also adds some additional menu items to the popup menu (right click on the waterfall).  You can select color / gray scale; x1, x2 and x4 from the popup menu.

snr/imd mod

#define WANT_SNRIMD 1

If set to 1 this will compile the required code to display both signal to noise ratio (snr) and inter modulation distortion (imd) on the primary status bar at the bottom of the display.  This functions in both psk31 and psk63.  The imd calculation is fairly accurate even when data is being transmitted.  You should expect to see little change between data and idle on the received signal.  This is accomplished by computing the average power in the psk baseband and comparing it to the power found at the 3rd order band.  The snr is found by comparing the baseband power to the power at the 4th order band (should be zero or just noise for even a horrible psk signal).

functional backspace key mod

#define WANT_BACKSPACE_MOD 1

The original gmfsk program failed to handle the backspace key fully when in a transmit mode.  You could backspace over characters still in the transmit buffer, but could not backspace over characters already transmitted.  This seemed inconsistent with the way most other psk digital modem programs function.  This modification corrects that and allows you to backspace up the full extent of the current transmitted character series.  The corrections will appear in both the transmit buffer window and in the transmitted buffer reflection in the receive window.  This is functional in all modes except CW and HELL.  Backspace makes no sense in those modes.   For CW and HELL the backspace key can only be applied to characters in the transmit buffer which have not yet been transmitted.

1 Hz resolution

#define WANT_1HZFREQ_BUTTON 1

Setting this flag to 1 will change the frequency spin button entry from 0000.n to 0000.  I found myself spinning past my desired point with the 1/10 Hz capability.  Most transceivers will not support that kind of accuracy or stability so the 0.1 Hz was an overkill (at least for my ops).  This mod gives me more discrete control over the audio frequency.

disable direct spin frequency entry

#define WANT_SPINFREQ_ENTRY 0

This mod is related to the 1 Hz resolution.  Set this to ZERO (0) to disable direct entry.  Set it to ONE (1) to retain the original gmfsk performance.  This change resulted from some frustration on my part on how the original user interface performed.  If you changed the spin button frequency then that control took "focus" for all mouse events.  That meant that any subsequent left mouse click on the waterfall would have no effect on changing the frequency entry.  At least not until the spin control lost focus.  That meant that you needed to mouse click on another control (such as the call sign entry) before the waterfall mouse click was again functioning).  If you twiddled the spin frequency control, then clicked on the waterfall you saw no change in the spin frequency control.  If you then immediately clicked in a different control (or button) the waterfall click would be instantiated and you would see the spin control change.  Very disconcerting!

So this mod disables the direct entry in the frequency spin button control.  Using the mouse left click and the up/down buttons on the spin control allow you to move very quickly over the audio passband.  This is particularly true when the 1Hz resolution mod is also enabled.

new user interface for waterfall mode, zoom, gain & reference levels

#define WANT_NEW_UI 1

This modification adds some real operating convenience to gmfsk.  I found myself continually going through the menu system to get to where I could change the mode and zoom for the waterfall.  I also frequently change the waterfall reference level and signal gain.  If you change bands or even during changes in band QRN the waterfall display might need to be tuned up for the best visual display.  This is more noticeable in the color mode than in the original gray scale display.

Four new controls are added to the gmfsk primary display with no loss of original functionality.  These are shown here:



The "Wf" box on the status bar is a toggle.  Left-click with the mouse to change to the spectrum  - and again to the time domain - and again to go back to the waterfall mode.  The "x1" box on the status bar is also a toggle.  In a similar manner you move between x1, x2 and x4 and back again to x1.  Very convenient!  The Two new controls above the frequency spin button are new spin buttons for the Reference level and the Amplitude Gain for the waterfall display.  Bring up the spectrum display and you will see how effective these two controls are in helping you to find and evaluate received signals.  By the way, the signal under the railroad tracks is VE3IXI, running gmfsk-0.71-hkj-42.  His SNR was 30 dB and his IMD was -27 dB.  Very respectable signal Dave.

frequency lock mod

#define WANT_FREQLOCK 1

The control associated with this modification is also shown on the image.  The space formally occupied with the label "Freq" is now a button control that is a toggle button.  This button is enabled in those digital modes for which "locking" the transmit signal frequency makes sense.  When you select a new operating mode (ie: go from CW to PSK31 for example) the default position for the new control is SYNC - meaning that the transmit and receive frequency are SYNCronized to each other.  If the AFC is enabled and the receive frequency changes then your transmit frequency will follow the received signal in frequency.  Most of the time this is satisfactory.  But if either you or the other station has an offset between transmit and receive (usually in the transceiver) then you will find yourself moving up or down the band by that offset amount for each qso exchange.  Click the SYNC button and it changes to "L:NNNN" where NNNN is the spin button frequency the moment the button was clicked.  Now your transmit frequency is "LOCKED" in place.  The receive frequency can continue to track via the AFC (or not if AFC is disabled).  This mode was tested between VE3IXI and W1HKJ by operating both sites with this mod in place and forcing the two transmit signals to be 250 Hz apart by using the LOCK function at both stations.  True split frequency operation on PSK31 !  If you are operating a round table this new functionality will be most welcome.  Use it also when calling CQ.  Set the waterfall to the desired frequency and then tweak it to the desired position using the frequency spin button.  Then select the LOCKed mode.  You're signal is rock stable and you can track any received signals with the AFC.  This works absolutely flawlessly.

ptt mod

#define WANT_PTT_MOD 1

Lots of different computer to rig interfaces have been published.  A very popular interface was designed by G3VGR.  It uses few parts, can fit into the shell of a DB-9 connector and requires no external power supply.  It steals power from the DTR signal line to achieve this minimization.  gmfsk was not compatible with this interface.  This modification allows the DTR to be held high to power the interface and maintains compatability with both hamlib and W1HKJ CAT programs.

ctl code suppression

#define WANT_CTL_SUPPRESSION 1

The newest version of MultiPsk (and possibly other digital modem programs) transmit control codes during the idle period for certain digital modes.  This mod will suppress those codes from being printed to the screen.  Failure to suppress such codes results in an unreadable reception from the transmitting station.

2 tone Olivia

#define WANT_2TONE_OLIVIA 1

Adds the capability to send and receive in 2-tone Olivia.

TTY mode

#define WANT_TTY_MOD 1

Creates a TTY machine friendlier app.  Sends the CR-CR-LF triplet for "\n", and the CR-CR pair for "\r" characters.
This allows a physical TTY time to return the carriage to the left margin and not loose any characters on the next line.
This mod also inserts a CR-CR-LF triplet into the data stream when the either:
    the line length exceeds 72 characters, or
    the line length exceeds 66 characters and a space is sent.

Kachina mod

Integration code to allow gmfsk to control the Kachina CAT program for PTT and signal centering as well as receive mode and frequency information from the Kachina CAT program.  Integration is achieved through the use of shared memory between the two applications.  Either can run independently, but when both are running they cooperate and pass information back and forth.

Full Reverse on all modes

#define WANT_FULL_REVERSE 1

   Allows you to use an alternate sideband & then set "reverse" for modes  such as Olivia that had "rev" disabled in the original gmfsk code.     Or to change the "reverse" setting when switching between modes.

Logging frequency precision

#define TEN_TEC_LOG_PREC 4

Sets the the # of decimal places you want your log to record  frequency, ie: 0 = nearest Mhz, 3 = nearest Khz, 6 = nearest cycle.
This mod only effects the interface to the CAT programs, ARGOV, DELTAII, ICOM728 and KACHINA.