I've also taken the opportunity to tidy up a lot of the original code to bring it up to the same programming standards as the later code. Early code necessarily tends to be rather messy and fragmented, so it's a good plan to revisit it later in the project!
I thought you might be interested in an overall view of the development environment I am now running...
In the background you can see the Maestro, which is running on 6m and is the SSDR client. My controller is working with the Maestro and shows the same information. In front of the Maestro you can see the PCB, now fully populated with push buttons and encoders. In front of that is the controller stack, comprising an Arduino Due processor, Ethernet shield, LCD shield and LCD display.
Just in front of the Maestro you can perhaps see some ribbon cable sets, constructed ready for full hardware implementation on the PCB. These will connect the PCB to the processor stack in due course. You can also see a small toggle switch to the right of the PCB. This is the power control switch, which is completely software driven, as I discussed a while back.
With all these additions the default profile is now significantly more complex than it was a couple of months ago.
* G3WGVFlex controller default profile
* Note: files must follow 8.3 naming convention
* See FlexFunctions.h for list of control function names
* Manually updated: 2016-06-17
********** ENCODERS
* Encoder Shift0 & Shift1 values are the associated
* Control number
Encoder 0
Shift0 1
Shift1 2
/Encoder
Encoder 1
Shift0 0
Shift1 3
/Encoder
Encoder 2
Shift0 11
Shift1 12
/Encoder
Encoder 3
Shift0 9
Shift1 10
/Encoder
Encoder 4
Shift0 8
Shift1 15
/Encoder
Encoder 5
Shift0 13
Shift1 14
/Encoder
Encoder 6
Shift0 4
Shift1 5
/Encoder
Encoder 7
Shift0 6
Shift1 7
/Encoder
********** CONTROLS
Control 0
Enabled Yes
Name Volume-A
Function setAudioGain
Slice 0
Shift 0
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 1
Enabled Yes
Name Width-A
Function setRxFiltWidth
Slice 0
MaxValue 10000
MinValue 100
StepValue 10
/Control
Control 2
Enabled Yes
Name Shift-A
Function setRxFiltShift
Slice 0
MaxValue 2000
MinValue -2000
StepValue 10
/Control
Control 3
Enabled Yes
Name Pan-A
Function setAudioPan
Slice 0
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 4
Enabled Yes
Name Volume-B
Function setAudioGain
Slice 1
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 5
Enabled Yes
Name Pan-B
Function setAudioPan
Slice 1
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 6
Enabled Yes
Name Width-B
Function setRxFiltWidth
Slice 1
MaxValue 10000
MinValue 100
StepValue 10
/Control
Control 7
Enabled Yes
Name Shift-B
Function setRxFiltShift
Slice 1
MaxValue 2000
MinValue -2000
StepValue 10
/Control
Control 8
Enabled Yes
Name CW-speed
Function setCwSpeed
MaxValue 5
MinValue 40
StepValue 1
/Control
Control 9
Enabled Yes
Name TX-Power
Function setRfPower
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 10
Enabled Yes
Name Tune-Power
Function setTunePower
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 11
Enabled Yes
Name RIT-A
Function setRitFreq
Slice 0
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 12
Enabled Yes
Name XIT-A
Function setXitFreq
Slice 0
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 13
Enabled Yes
Name RIT-B
Function setRitFreq
Slice 1
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 14
Enabled Yes
Name XIT-B
Function setXitFreq
Slice 1
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 15
Enabled Yes
Name CW-pitch
Function setCwPitch
MaxValue 300
MinValue 1000
StepValue 10
/Control
Control 16
Enabled Yes
Name APF-A
Function setApfLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 17
Enabled Yes
Name APF-B
Function setApfLevel
Slice 1
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 18
Enabled Yes
Name NB-A
Function setNbLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 19
Enabled Yes
Name NB-B
Function setNbLevel
Slice 1
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 20
Enabled Yes
Name WNB-A
Function setWnbLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 21
Enabled Yes
Name WNB-B
Function setWnbLevel
Slice 1
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 22
Enabled Yes
Name NR-A
Function setNrLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 23
Enabled Yes
Name NR-A
Function setNrLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 24
Enabled No
/Control
Control 25
Enabled No
/Control
Control 26
Enabled No
/Control
Control 27
Enabled No
/Control
Control 28
Enabled No
/Control
Control 29
Enabled No
/Control
Control 30
Enabled No
/Control
Control 31
Enabled No
/Control
********** SLICES
Slice 0
Name VFO-A
/Slice
Slice 1
Name VFO-B
/slice
Slice 2
Name Slice-3
/slice
Slice 3
Name Slice-4
/slice
********** VFOs
VFO 0
Enabled Yes
Name VFO-A
Slice 0
/VFO
VFO 1
Enabled Yes
Name VFO-B
Slice 1
/VFO
********** SWITCHES
Switch 0
Enabled Yes
Name VFOA-Band
Function swVFOABand
/Switch
Switch 1
Enabled Yes
Name VFOA-Mode
Function swVFOAMode
/Switch
Switch 2
Enabled Yes
Name ConfigDump
Function swConfigDump
/Switch
Switch 3
Enabled Yes
Name VFOA-Lock
Function swVFOALock
/Switch
Switch 4
Enabled Yes
Name VFOA-Rx
Function swVFOAReceive
/Switch
Switch 5
Enabled Yes
Name VFOA-Tx
Function swVFOATransmit
/Switch
Switch 6
Enabled No
/Switch
Switch 7
Enabled No
/Switch
Switch 8
Enabled No
/Switch
Switch 9
Enabled No
/Switch
Switch 10
Enabled Yes
Name Encoder-0
Function swEncoder0
/Switch
Switch 11
Enabled Yes
Name Encoder-1
Function swEncoder1
/Switch
Switch 12
Enabled Yes
Name Encoder-2
Function swEncoder2
/Switch
Switch 13
Enabled Yes
Name Encoder-3
Function swEncoder3
/Switch
Switch 14
Enabled Yes
Name Encoder-4
Function swEncoder4
/Switch
Switch 15
Enabled Yes
Name Encoder-5
Function swEncoder5
/Switch
Switch 16
Enabled No
/Switch
Switch 17
Enabled No
/Switch
Switch 18
Enabled No
/Switch
Switch 19
Enabled No
/Switch
Switch 20
Enabled Yes
Name VFOB-Rx
Function swVFOBReceive
/Switch
Switch 21
Enabled Yes
Name VFOB-Tx
Function swVFOBTransmit
/Switch
Switch 22
Enabled Yes
Name VFOB-Band
Function swVFOBBand
/Switch
Switch 23
Enabled Yes
Name VFOB-Mode
Function swVFOBMode
/Switch
Switch 24
Enabled No
/Switch
Switch 25
Enabled Yes
Name VFOB-Lock
Function swVFOBLock
/Switch
Switch 26
Enabled Yes
Name Encoder-7
Function swEncoder7
/Switch
Switch 27
Enabled Yes
Name Encoder-6
Function swEncoder6
/Switch
Switch 28
Enabled No
/Switch
Switch 29
Enabled No
/Switch
Switch 30
Enabled No
/Switch
Switch 31
Enabled Yes
Name Power
Function swPower
/Switch
* Note: files must follow 8.3 naming convention
* See FlexFunctions.h for list of control function names
* Manually updated: 2016-06-17
********** ENCODERS
* Encoder Shift0 & Shift1 values are the associated
* Control number
Encoder 0
Shift0 1
Shift1 2
/Encoder
Encoder 1
Shift0 0
Shift1 3
/Encoder
Encoder 2
Shift0 11
Shift1 12
/Encoder
Encoder 3
Shift0 9
Shift1 10
/Encoder
Encoder 4
Shift0 8
Shift1 15
/Encoder
Encoder 5
Shift0 13
Shift1 14
/Encoder
Encoder 6
Shift0 4
Shift1 5
/Encoder
Encoder 7
Shift0 6
Shift1 7
/Encoder
********** CONTROLS
Control 0
Enabled Yes
Name Volume-A
Function setAudioGain
Slice 0
Shift 0
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 1
Enabled Yes
Name Width-A
Function setRxFiltWidth
Slice 0
MaxValue 10000
MinValue 100
StepValue 10
/Control
Control 2
Enabled Yes
Name Shift-A
Function setRxFiltShift
Slice 0
MaxValue 2000
MinValue -2000
StepValue 10
/Control
Control 3
Enabled Yes
Name Pan-A
Function setAudioPan
Slice 0
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 4
Enabled Yes
Name Volume-B
Function setAudioGain
Slice 1
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 5
Enabled Yes
Name Pan-B
Function setAudioPan
Slice 1
MaxValue 100
MinValue 0
StepValue 1
/Control
Control 6
Enabled Yes
Name Width-B
Function setRxFiltWidth
Slice 1
MaxValue 10000
MinValue 100
StepValue 10
/Control
Control 7
Enabled Yes
Name Shift-B
Function setRxFiltShift
Slice 1
MaxValue 2000
MinValue -2000
StepValue 10
/Control
Control 8
Enabled Yes
Name CW-speed
Function setCwSpeed
MaxValue 5
MinValue 40
StepValue 1
/Control
Control 9
Enabled Yes
Name TX-Power
Function setRfPower
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 10
Enabled Yes
Name Tune-Power
Function setTunePower
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 11
Enabled Yes
Name RIT-A
Function setRitFreq
Slice 0
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 12
Enabled Yes
Name XIT-A
Function setXitFreq
Slice 0
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 13
Enabled Yes
Name RIT-B
Function setRitFreq
Slice 1
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 14
Enabled Yes
Name XIT-B
Function setXitFreq
Slice 1
MaxValue 10000
MinValue -10000
StepValue 10
/Control
Control 15
Enabled Yes
Name CW-pitch
Function setCwPitch
MaxValue 300
MinValue 1000
StepValue 10
/Control
Control 16
Enabled Yes
Name APF-A
Function setApfLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 17
Enabled Yes
Name APF-B
Function setApfLevel
Slice 1
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 18
Enabled Yes
Name NB-A
Function setNbLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 19
Enabled Yes
Name NB-B
Function setNbLevel
Slice 1
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 20
Enabled Yes
Name WNB-A
Function setWnbLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 21
Enabled Yes
Name WNB-B
Function setWnbLevel
Slice 1
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 22
Enabled Yes
Name NR-A
Function setNrLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 23
Enabled Yes
Name NR-A
Function setNrLevel
Slice 0
MaxValue 0
MinValue 100
StepValue 1
/Control
Control 24
Enabled No
/Control
Control 25
Enabled No
/Control
Control 26
Enabled No
/Control
Control 27
Enabled No
/Control
Control 28
Enabled No
/Control
Control 29
Enabled No
/Control
Control 30
Enabled No
/Control
Control 31
Enabled No
/Control
********** SLICES
Slice 0
Name VFO-A
/Slice
Slice 1
Name VFO-B
/slice
Slice 2
Name Slice-3
/slice
Slice 3
Name Slice-4
/slice
********** VFOs
VFO 0
Enabled Yes
Name VFO-A
Slice 0
/VFO
VFO 1
Enabled Yes
Name VFO-B
Slice 1
/VFO
********** SWITCHES
Switch 0
Enabled Yes
Name VFOA-Band
Function swVFOABand
/Switch
Switch 1
Enabled Yes
Name VFOA-Mode
Function swVFOAMode
/Switch
Switch 2
Enabled Yes
Name ConfigDump
Function swConfigDump
/Switch
Switch 3
Enabled Yes
Name VFOA-Lock
Function swVFOALock
/Switch
Switch 4
Enabled Yes
Name VFOA-Rx
Function swVFOAReceive
/Switch
Switch 5
Enabled Yes
Name VFOA-Tx
Function swVFOATransmit
/Switch
Switch 6
Enabled No
/Switch
Switch 7
Enabled No
/Switch
Switch 8
Enabled No
/Switch
Switch 9
Enabled No
/Switch
Switch 10
Enabled Yes
Name Encoder-0
Function swEncoder0
/Switch
Switch 11
Enabled Yes
Name Encoder-1
Function swEncoder1
/Switch
Switch 12
Enabled Yes
Name Encoder-2
Function swEncoder2
/Switch
Switch 13
Enabled Yes
Name Encoder-3
Function swEncoder3
/Switch
Switch 14
Enabled Yes
Name Encoder-4
Function swEncoder4
/Switch
Switch 15
Enabled Yes
Name Encoder-5
Function swEncoder5
/Switch
Switch 16
Enabled No
/Switch
Switch 17
Enabled No
/Switch
Switch 18
Enabled No
/Switch
Switch 19
Enabled No
/Switch
Switch 20
Enabled Yes
Name VFOB-Rx
Function swVFOBReceive
/Switch
Switch 21
Enabled Yes
Name VFOB-Tx
Function swVFOBTransmit
/Switch
Switch 22
Enabled Yes
Name VFOB-Band
Function swVFOBBand
/Switch
Switch 23
Enabled Yes
Name VFOB-Mode
Function swVFOBMode
/Switch
Switch 24
Enabled No
/Switch
Switch 25
Enabled Yes
Name VFOB-Lock
Function swVFOBLock
/Switch
Switch 26
Enabled Yes
Name Encoder-7
Function swEncoder7
/Switch
Switch 27
Enabled Yes
Name Encoder-6
Function swEncoder6
/Switch
Switch 28
Enabled No
/Switch
Switch 29
Enabled No
/Switch
Switch 30
Enabled No
/Switch
Switch 31
Enabled Yes
Name Power
Function swPower
/Switch
Eventually, it will be possible to have multiple profile files and switch between them at will, making the panel layout completely user configurable. More code required!
Hi John
ReplyDeleteLooking good!
Is your "vision" on the software side, for folk to directly code or set ini content, etc. to control / assign functionality to the various control surfaces and switches, etc., or, to have some form of admin / setup utility? Appreciate the latter can be at least as big a project as the main coding! I'm comfortable with either: just curious.
73, Ian
Hi Ian,
ReplyDeleteDon't know yet. One of the really interesting aspects of the profile approach is the idea of having multiple profiles, selectable at will. Obviously the profiles need to be selectable on the controller but whether they should/need to be editable on the controller is a quite different debate.
One option, that I think may have "legs" is that profiles are created and managed by a Windows application and then uploaded to the controller. That would make it possible to have nice graphical representation of how the profile would look, using the big screen, keyboard and mouse to make adjustments. I already have the ability to upload profiles, so it's just a case of writing the Windows app to wrap around that functionality.
73, John, 'WGV