EncoderCAT - Command masks examples (Not used for Icom CI-V.)
The examples are from the Fdx101D. Other Yaesu radios have a similar CAT system.
I have used the terms read mask, set mask and answer mask to describe the configuration strings.
A example from the FTdx101D CAT manual - Noise Reduction Level.
The CAT manual entry is below. There are two identical receivers, MAIN and SUB.
(Note that the terminating semicolon is part of the command)
For a change from value 6 to 7:
In MAIN.Answer above: "RL0" is the command and '"06' is the variable data.
xCAT configuration for main receiver noise reduction level 'RL0'
The answer mask is: "RL0tu;"
Further example: Main frequency
Yaesu CAT manual states:
xCAT configuration for main frequency control
The mask string is: FAgfedcmhtu; which represents numbers 0 - 999 999 999 ie: 0 - 999 Mhz
The FTdx101D range is 30khz to 75Mhz - so this determines the max and min settings, 75000000 and 30000.
I have chosen a step of 10Hz.
The decp (decimal places) setting of 6 provides an OLED display in Mhz eg: 14.345700
I have provided this as an example of configuration and to prove that EncoderCAT can control main frequency.
I do not use EncoderCAT for rig tuning.
Main frequency control really needs a non-notched, high resolution encoder.
List of 'variable' characters
I have defined a small list of lower case characters that represent variable data.
All other characters outside this list are interpreted as fixed.
The characters are g, f, e, d, c, m, h, t, u (u = units, t= tens, h = hundreds etc)
There is also s = sign - representing '-' or '+'
The codes are detailed below in an extract from EncoderCAT C source code:
EncoderCAT codes for character interpretation:
For decimal digit ascii characters, ie: '0' to '9'
case 'g': mult = 100000000; break; // g = hundred millions
case 'f': mult = 10000000; break; // f = ten millions
case 'e': mult = 1000000; break; // e = millions
case 'd': mult = 100000; break; // d = hundred thousands
case 'c': mult = 10000; break; // c = ten thousands
case 'm': mult = 1000; break; // m = thousands
case 'h': mult = 100; break; // h = hundreds
case 't': mult = 10; break; // t = tens
case 'u': mult = 1; break; // u = units
// Also s represents sign '-' or '+'