Test some shuttle changes

half-duplex
Phil Taylor 2022-05-17 08:53:24 +01:00
rodzic 05f7283930
commit 62c48ac2c2
8 zmienionych plików z 134 dodań i 32 usunięć

Wyświetl plik

@ -107,12 +107,15 @@ void shuttleSetup::newDevice(unsigned char devType, QVector<BUTTON>* but, QVecto
switch (devType) {
case shuttleXpress:
image.load(":/resources/shuttlexpress.png");
deviceName = "shuttleXpress";
break;
case shuttlePro2:
image.load(":/resources/shuttlepro.png");
deviceName = "shuttlePro2";
break;
case RC28:
image.load(":/resources/rc28.png");
deviceName = "RC28";
break;
default:
textItem->show();

Wyświetl plik

@ -33,6 +33,9 @@ public:
explicit shuttleSetup(QWidget* parent = 0);
~shuttleSetup();
signals:
public slots:
void newDevice(unsigned char devType, QVector<BUTTON>* but, QVector<COMMAND>* cmd);
void mousePressed(QPoint p);
@ -54,6 +57,7 @@ private:
QComboBox offEvent;
QGraphicsProxyWidget* onEventProxy=Q_NULLPTR;
QGraphicsProxyWidget* offEventProxy=Q_NULLPTR;
QString deviceName;
};

Wyświetl plik

@ -57,7 +57,7 @@ int usbController::hidApiWrite(unsigned char* data, unsigned char length)
void usbController::run()
{
/*
commands.append(COMMAND(0, "None", cmdNone, 0x0));
commands.append(COMMAND(1, "PTT On", cmdSetPTT, 0x1));
commands.append(COMMAND(2, "PTT Off", cmdSetPTT, 0x0));
@ -94,7 +94,7 @@ void usbController::run()
commands.append(COMMAND(32, "2200m", cmdGetBandStackReg, band2200m));
commands.append(COMMAND(33, "GEN", cmdGetBandStackReg, bandGen));
*/
handle = hid_open(0x0b33, 0x0020, NULL);
if (!handle) {

Wyświetl plik

@ -11,7 +11,6 @@
#include <QColor>
#include <QVector>
#ifndef Q_OS_WIN
#include "hidapi/hidapi.h"
#else
@ -34,36 +33,18 @@ using namespace std;
#define MAX_STR 255
/* Any additions/modifications to cmds enum must also be made in wfmain.h */
enum cmds {
cmdNone, cmdGetRigID, cmdGetRigCIV, cmdGetFreq, cmdSetFreq, cmdGetMode, cmdSetMode,
cmdGetDataMode, cmdSetModeFilter, cmdSetDataModeOn, cmdSetDataModeOff, cmdGetRitEnabled, cmdGetRitValue,
cmdSpecOn, cmdSpecOff, cmdDispEnable, cmdDispDisable, cmdGetRxGain, cmdSetRxRfGain, cmdGetAfGain, cmdSetAfGain,
cmdGetSql, cmdSetSql, cmdGetIFShift, cmdSetIFShift, cmdGetTPBFInner, cmdSetTPBFInner,
cmdGetTPBFOuter, cmdSetTPBFOuter, cmdGetATUStatus,
cmdSetATU, cmdStartATU, cmdGetSpectrumMode,
cmdGetSpectrumSpan, cmdScopeCenterMode, cmdScopeFixedMode, cmdGetPTT, cmdSetPTT,
cmdGetTxPower, cmdSetTxPower, cmdGetMicGain, cmdSetMicGain, cmdSetModLevel,
cmdGetSpectrumRefLevel, cmdGetDuplexMode, cmdGetModInput, cmdGetModDataInput,
cmdGetCurrentModLevel, cmdStartRegularPolling, cmdStopRegularPolling, cmdQueNormalSpeed,
cmdGetVdMeter, cmdGetIdMeter, cmdGetSMeter, cmdGetCenterMeter, cmdGetPowerMeter,
cmdGetSWRMeter, cmdGetALCMeter, cmdGetCompMeter, cmdGetTxRxMeter,
cmdGetTone, cmdGetTSQL, cmdGetDTCS, cmdGetRptAccessMode, cmdGetPreamp, cmdGetAttenuator, cmdGetAntenna,
cmdGetBandStackReg,
cmdSetTime, cmdSetDate, cmdSetUTCOffset
};
struct COMMAND {
COMMAND() {}
COMMAND(int index, QString text, cmds command, char suffix) :
COMMAND(int index, QString text, int command, char suffix) :
index(index), text(text), command(command), suffix(suffix), bandswitch(false){}
COMMAND(int index, QString text, cmds command, bandType band) :
COMMAND(int index, QString text, int command, bandType band) :
index(index), text(text), command(command),band(band), bandswitch(true) {}
int index;
QString text;
cmds command;
int command;
unsigned char suffix;
bandType band;
bool bandswitch;
@ -107,9 +88,9 @@ signals:
void sendJog(int counter);
void doShuttle(bool plus, quint8 level);
void setBand(int band);
void button(const COMMAND* cmd);
void newDevice(unsigned char devType, QVector<BUTTON>* but,QVector<COMMAND>* cmd);
private:
hid_device* handle;
enum { NONE, shuttleXpress, shuttlePro2, RC28 }usbDevice;

Wyświetl plik

@ -1265,8 +1265,10 @@ void wfmain::setupUsbControllerDevice()
connect(usbControllerDev, SIGNAL(button(const COMMAND*)), this, SLOT(buttonControl(const COMMAND*)));
connect(usbControllerDev, SIGNAL(setBand(int)), this, SLOT(setBand(int)));
connect(this, SIGNAL(shuttleLed(bool, unsigned char)), usbControllerDev, SLOT(ledControl(bool, unsigned char)));
connect(usbControllerDev, SIGNAL(newDevice(unsigned char, QVector<BUTTON>*, QVector<COMMAND>*)), shut, SLOT(newDevice(unsigned char, QVector<BUTTON>*,QVector<COMMAND>*)));
connect(usbControllerDev, SIGNAL(newDevice(unsigned char, QVector<BUTTON>*, QVector<COMMAND>*)), shut, SLOT(newDevice(unsigned char, QVector<BUTTON>*, QVector<COMMAND>*)));
connect(shut, SIGNAL(setButtonCommand(QString, BUTTON*)), this, SLOT(getButtonCommand(QString, BUTTON*)));
usbControllerThread->start(QThread::LowestPriority);
}
void wfmain::pttToggle(bool status)
@ -1745,6 +1747,51 @@ void wfmain::loadSettings()
settings->endArray();
settings->endGroup();
/* Load USB buttons*/
settings->beginGroup("USB");
size=settings->beginReadArray("Buttons");
if (size == 0) {
settings->endArray();
// We have no buttons so create defaults
usbCommands.append(COMMAND(0, "None", cmdNone, 0x0));
usbCommands.append(COMMAND(1, "PTT On", cmdSetPTT, 0x1));
usbCommands.append(COMMAND(2, "PTT Off", cmdSetPTT, 0x0));
usbCommands.append(COMMAND(3, "PTT Toggle", cmdSetPTT, 0x1));
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(9, "NR", cmdNone, 0x0));
usbCommands.append(COMMAND(10, "NB", cmdNone, 0x0));
usbCommands.append(COMMAND(11, "AGC", cmdNone, 0x0));
usbCommands.append(COMMAND(12, "NB", cmdNone, 0x0));
usbCommands.append(COMMAND(14, "23cm", cmdGetBandStackReg, band23cm));
usbCommands.append(COMMAND(15, "70cm", cmdGetBandStackReg, band70cm));
usbCommands.append(COMMAND(16, "2m", cmdGetBandStackReg, band2m));
usbCommands.append(COMMAND(17, "AIR", cmdGetBandStackReg, bandAir));
usbCommands.append(COMMAND(18, "WFM", cmdGetBandStackReg, bandWFM));
usbCommands.append(COMMAND(19, "4m", cmdGetBandStackReg, band4m));
usbCommands.append(COMMAND(20, "6m", cmdGetBandStackReg, band6m));
usbCommands.append(COMMAND(21, "10m", cmdGetBandStackReg, band10m));
usbCommands.append(COMMAND(22, "12m", cmdGetBandStackReg, band12m));
usbCommands.append(COMMAND(23, "15m", cmdGetBandStackReg, band15m));
usbCommands.append(COMMAND(24, "17m", cmdGetBandStackReg, band17m));
usbCommands.append(COMMAND(25, "20m", cmdGetBandStackReg, band20m));
usbCommands.append(COMMAND(26, "30m", cmdGetBandStackReg, band30m));
usbCommands.append(COMMAND(27, "40m", cmdGetBandStackReg, band40m));
usbCommands.append(COMMAND(28, "60m", cmdGetBandStackReg, band60m));
usbCommands.append(COMMAND(29, "80m", cmdGetBandStackReg, band80m));
usbCommands.append(COMMAND(30, "160m", cmdGetBandStackReg, band160m));
usbCommands.append(COMMAND(31, "630m", cmdGetBandStackReg, band630m));
usbCommands.append(COMMAND(32, "2200m", cmdGetBandStackReg, band2200m));
usbCommands.append(COMMAND(33, "GEN", cmdGetBandStackReg, bandGen));
}
settings->endGroup();
}
void wfmain::serverAddUserLine(const QString& user, const QString& pass, const int& type)
@ -1965,7 +2012,7 @@ void wfmain::saveSettings()
settings->beginWriteArray("Channel", (int)mem.getNumPresets());
preset_kind temp;
for(int i=0; i < (int)mem.getNumPresets(); i++)
for (int i = 0; i < (int)mem.getNumPresets(); i++)
{
temp = mem.getPreset((int)i);
settings->setArrayIndex(i);
@ -2060,6 +2107,25 @@ void wfmain::saveSettings()
settings->endGroup();
settings->beginGroup("USB");
settings->beginGroup(usbDeviceName);
settings->beginWriteArray("Buttons");
QHashIterator<quint8, BUTTON*> i(usbButtons);
int count = 0;
while (i.hasNext()) {
i.next();
settings->setArrayIndex(count++);
settings->setValue("Number", i.value()->num);
settings->setValue("OnCommand", i.value()->onCommand->text);
settings->setValue("OffCommand", i.value()->offCommand->text);
}
settings->endArray();
settings->endGroup();
settings->endGroup();
settings->sync(); // Automatic, not needed (supposedly)
@ -6141,4 +6207,34 @@ void wfmain::on_audioSystemCombo_currentIndexChanged(int value)
{
prefs.audioSystem = static_cast<audioType>(value);
setAudioDevicesUI(); // Force all audio devices to update
}
void wfmain::on_usbControllerBtn_clicked()
{
if (shut != Q_NULLPTR) {
if (shut->isVisible()) {
shut->hide();
}
else {
shut->show();
}
}
}
void wfmain::getButtonCommand(QString device, BUTTON* but)
{
if (device != usbDeviceName) {
// New or unknown device?
usbDeviceName = device;
qDebug(logUsbControl()) << "New controller:" << device;
usbButtons.clear();
}
qDebug(logUsbControl()) << "Adding" << "Commands for" << device << "button" << but->num << "onCommand" << but->onCommand->text << "offCommand" << but->offCommand->text;
usbButtons.insert(but->num, but);
}
void wfmain::updateUsbButtons()
{
}

Wyświetl plik

@ -304,6 +304,9 @@ private slots:
void buttonControl(const COMMAND* cmd);
void getButtonCommand(QString dev, BUTTON* but);
// void on_getFreqBtn_clicked();
// void on_getModeBtn_clicked();
@ -337,6 +340,7 @@ private slots:
void on_fCEbtn_clicked();
void on_fEnterBtn_clicked();
void on_usbControllerBtn_clicked();
void on_scopeBWCombo_currentIndexChanged(int index);
@ -857,6 +861,8 @@ private:
cmds meterKindToMeterCommand(meterKind m);
void updateUsbButtons();
int oldFreqDialVal;
rigCapabilities rigCaps;
@ -918,6 +924,10 @@ private:
usbController *usbControllerDev = Q_NULLPTR;
QThread *usbControllerThread = Q_NULLPTR;
QHash<quint8, BUTTON*> usbButtons;
QString usbDeviceName;
QVector<COMMAND> usbCommands;
};
@ -937,6 +947,7 @@ Q_DECLARE_METATYPE(enum spectrumMode)
Q_DECLARE_METATYPE(QList<radio_cap_packet>)
Q_DECLARE_METATYPE(rigstate*)
Q_DECLARE_METATYPE(QVector <BUTTON>*)
Q_DECLARE_METATYPE(struct BUTTON*)
Q_DECLARE_METATYPE(QVector <COMMAND>*)
Q_DECLARE_METATYPE(const COMMAND*)

Wyświetl plik

@ -2066,7 +2066,7 @@
<item>
<widget class="QStackedWidget" name="settingsStack">
<property name="currentIndex">
<number>0</number>
<number>4</number>
</property>
<widget class="QWidget" name="radioAccess">
<layout class="QVBoxLayout" name="verticalLayout_21">
@ -3640,6 +3640,13 @@
</item>
</layout>
</item>
<item>
<widget class="QPushButton" name="usbControllerBtn">
<property name="text">
<string>Setup USB Controller</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_4">
<property name="orientation">

Wyświetl plik

@ -57,7 +57,7 @@
<ExceptionHandling>Sync</ExceptionHandling>
<ObjectFileName>release\</ObjectFileName>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2e";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="129348c";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2e";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="05f7283";HOST="wfview.org";UNAME="build";NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<ProgramDataBaseFileName></ProgramDataBaseFileName>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -85,7 +85,7 @@
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2e\";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"129348c\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2e\";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"05f7283\";HOST=\"wfview.org\";UNAME=\"build\";NDEBUG;QT_NO_DEBUG;QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<QtMoc><CompilerFlavor>msvc</CompilerFlavor><Include>./$(Configuration)/moc_predefs.h</Include><ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription><DynamicSource>output</DynamicSource><QtMocDir>$(Configuration)</QtMocDir><QtMocFileName>moc_%(Filename).cpp</QtMocFileName></QtMoc><QtRcc><Compression>default</Compression><ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription><QtRccDir>$(Configuration)</QtRccDir><QtRccFileName>qrc_%(Filename).cpp</QtRccFileName></QtRcc><QtUic><ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription><QtUicDir>$(ProjectDir)</QtUicDir><QtUicFileName>ui_%(Filename).h</QtUicFileName></QtUic></ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@ -99,7 +99,7 @@
<ExceptionHandling>Sync</ExceptionHandling>
<ObjectFileName>debug\</ObjectFileName>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2e";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="129348c";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION="1.2e";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX="/usr/local";GITSHORT="05f7283";HOST="wfview.org";UNAME="build";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessToFile>false</PreprocessToFile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -124,7 +124,7 @@
<WarningLevel>0</WarningLevel>
</Midl>
<ResourceCompile>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2e\";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"129348c\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WFVIEW_VERSION=\"1.2e\";BUILD_WFVIEW;__WINDOWS_WASAPI__;QT_DEPRECATED_WARNINGS;QCUSTOMPLOT_COMPILE_LIBRARY;USE_SSE;USE_SSE2;OUTSIDE_SPEEX;RANDOM_PREFIX=wf;EIGEN_MPL2_ONLY;EIGEN_DONT_VECTORIZE;EIGEN_VECTORIZE_SSE3;PREFIX=\"/usr/local\";GITSHORT=\"05f7283\";HOST=\"wfview.org\";UNAME=\"build\";QT_MULTIMEDIA_LIB;QT_PRINTSUPPORT_LIB;QT_WIDGETS_LIB;QT_GUI_LIB;QT_SERIALPORT_LIB;QT_NETWORK_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<QtMoc><CompilerFlavor>msvc</CompilerFlavor><Include>./$(Configuration)/moc_predefs.h</Include><ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription><DynamicSource>output</DynamicSource><QtMocDir>$(Configuration)</QtMocDir><QtMocFileName>moc_%(Filename).cpp</QtMocFileName></QtMoc><QtRcc><Compression>default</Compression><ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription><QtRccDir>$(Configuration)</QtRccDir><QtRccFileName>qrc_%(Filename).cpp</QtRccFileName></QtRcc><QtUic><ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription><QtUicDir>$(ProjectDir)</QtUicDir><QtUicFileName>ui_%(Filename).h</QtUicFileName></QtUic></ItemDefinitionGroup>
<ItemGroup>