From 9d711f3a173f24958b2f80b1494c6736d86dddc3 Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Sun, 29 Jan 2023 19:26:21 +0000 Subject: [PATCH] Add some more USB controller features/fixes --- usbcontroller.h | 9 +++---- wfmain.cpp | 60 ++++++++++++++++++++++++++++++++------------- wfview.vcxproj.user | 8 +++--- wfviewtypes.h | 3 ++- 4 files changed, 52 insertions(+), 28 deletions(-) diff --git a/usbcontroller.h b/usbcontroller.h index 80f0c68..e005b6c 100644 --- a/usbcontroller.h +++ b/usbcontroller.h @@ -37,17 +37,15 @@ using namespace std; #define HIDDATALENGTH 64 #define MAX_STR 255 -enum commandType {normalCommand,bandswitch,modeswitch}; - struct COMMAND { COMMAND() {} COMMAND(int index, QString text, int command, char suffix) : - index(index), text(text), command(command), suffix(suffix), type(normalCommand){} + index(index), text(text), command(command), suffix(suffix) {} COMMAND(int index, QString text, int command, bandType band) : - index(index), text(text), command(command), band(band), type(bandswitch) {} + index(index), text(text), command(command), band(band) {} COMMAND(int index, QString text, int command, mode_kind mode) : - index(index), text(text), command(command), mode(mode), type(modeswitch) {} + index(index), text(text), command(command), mode(mode) {} int index; QString text; @@ -55,7 +53,6 @@ struct COMMAND { unsigned char suffix; bandType band; mode_kind mode; - commandType type; }; struct BUTTON { diff --git a/wfmain.cpp b/wfmain.cpp index 228e5e2..7f70213 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -1686,20 +1686,46 @@ void wfmain::doShuttle(bool up, unsigned char level) void wfmain::buttonControl(const COMMAND* cmd) { - - if (cmd->type==normalCommand) { - //qDebug() << "Other command"; - issueCmdUniquePriority((cmds)cmd->command, cmd->suffix); - } - else if (cmd->type == bandswitch) - { - //qDebug() << "Bandswitch"; - //issueCmd((cmds)cmd->command, cmd->band); // Needs fixing! - } - else if (cmd->type == modeswitch) - { - //qDebug() << "Bandswitch"; + switch (cmd->command) { + case cmdGetBandStackReg: + issueCmd((cmds)cmd->command, cmd->band.band); + break; + case cmdSetBandUp: + break; + case cmdSetBandDown: + break; + case cmdSetMode: changeMode(cmd->mode); + break; + case cmdSetModeUp: + for (int i = 0; i < rigCaps.modes.size(); i++) { + if (rigCaps.modes[i].mk == currentModeInfo.mk) + { + if (i + 1 < rigCaps.modes.size()) { + changeMode(rigCaps.modes[i + 1].mk); + } + else { + changeMode(rigCaps.modes[0].mk); + } + } + } + break; + case cmdSetModeDown: + for (int i = 0; i < rigCaps.modes.size(); i++) { + if (rigCaps.modes[i].mk == currentModeInfo.mk) + { + if (i>0) { + changeMode(rigCaps.modes[i - 1].mk); + } + else { + changeMode(rigCaps.modes[rigCaps.modes.size()-1].mk); + } + } + } + break; + default: + issueCmdUniquePriority((cmds)cmd->command, cmd->suffix); + break; } } @@ -2314,10 +2340,10 @@ void wfmain::loadSettings() usbCommands.append(COMMAND(4, "Tune", cmdNone, 0x0)); usbCommands.append(COMMAND(5, "Step+", cmdNone, 0x0)); usbCommands.append(COMMAND(6, "Step-", cmdNone, 0x0)); - usbCommands.append(COMMAND(7, "Mode+", cmdNone, 0x0)); - usbCommands.append(COMMAND(8, "Mode-", cmdNone, 0x0)); - usbCommands.append(COMMAND(9, "Band+", cmdNone, 0x0)); - usbCommands.append(COMMAND(10, "Band-", cmdNone, 0x0)); + usbCommands.append(COMMAND(7, "Mode+", cmdSetModeUp, 0x0)); + usbCommands.append(COMMAND(8, "Mode-", cmdSetModeDown, 0x0)); + usbCommands.append(COMMAND(9, "Band+", cmdSetBandUp, 0x0)); + usbCommands.append(COMMAND(10, "Band-", cmdSetBandDown, 0x0)); usbCommands.append(COMMAND(11, "NR", cmdNone, 0x0)); usbCommands.append(COMMAND(12, "NB", cmdNone, 0x0)); usbCommands.append(COMMAND(13, "AGC", cmdNone, 0x0)); diff --git a/wfview.vcxproj.user b/wfview.vcxproj.user index e6fe3c4..55b6057 100644 --- a/wfview.vcxproj.user +++ b/wfview.vcxproj.user @@ -45,10 +45,10 @@ 2022-08-21T18:58:23.4329764Z - 2023-01-12T19:02:11.7122024Z + 2023-01-29T11:49:00.1257696Z - 2023-01-12T19:02:11.0783744Z + 2023-01-29T11:48:59.4191765Z 2022-08-22T10:47:49.1255783Z @@ -60,9 +60,9 @@ 2022-08-20T19:06:43.4553894Z - 2023-01-12T19:02:13.6556090Z + 2023-01-29T11:49:01.5629425Z - 2023-01-12T19:02:12.4064183Z + 2023-01-29T11:49:00.7644018Z \ No newline at end of file diff --git a/wfviewtypes.h b/wfviewtypes.h index ea4f282..fd019e4 100644 --- a/wfviewtypes.h +++ b/wfviewtypes.h @@ -157,7 +157,8 @@ enum cmds { cmdSelVFO, cmdVFOSwap, cmdVFOEqualAB, cmdVFOEqualMS, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna, cmdGetBandStackReg, cmdGetKeySpeed, cmdSetKeySpeed, cmdGetBreakMode, cmdSetBreakMode, cmdSendCW, cmdStopCW, - cmdSetTime, cmdSetDate, cmdSetUTCOffset + cmdSetTime, cmdSetDate, cmdSetUTCOffset, + cmdSetBandUp, cmdSetBandDown, cmdSetModeUp, cmdSetModeDown // Only used for USB Controller at the moment. }; struct commandtype {