move to dedicated driver
Some checks failed
Build / PC_Application_Ubuntu (push) Has been cancelled
Build / PC_Application_RPi5 (push) Has been cancelled
Build / PC_Application_Windows (push) Has been cancelled
Build / PC_Application_OSX (push) Has been cancelled
Build / PC_Application_OSX_13 (push) Has been cancelled
Build / Embedded_Firmware (push) Has been cancelled
HIL_Tests / Get_Repository (push) Has been cancelled
Unit_Tests / Tests (push) Has been cancelled
HIL_Tests / PC_Application_RPi5 (push) Has been cancelled
HIL_Tests / Embedded_Firmware (push) Has been cancelled
HIL_Tests / HIL (push) Has been cancelled

This commit is contained in:
Jan Käberich 2025-11-17 16:38:02 +01:00
parent 64791e6d4e
commit d853571aea
8 changed files with 61 additions and 19 deletions

View file

@ -0,0 +1,16 @@
#include "harogicb60.h"
HarogicB60::HarogicB60()
{
validUSBIDs.clear();
validUSBIDs.append({0x367F, 0x0200, "B60"});
for(auto &s : specificSettings) {
s.name.replace("LibreVNAUSBDriver", "HarogicB60Driver");
}
}
QString HarogicB60::getDriverName()
{
return "Harogic B60";
}

View file

@ -0,0 +1,19 @@
#ifndef HAROGICB60_H
#define HAROGICB60_H
#include "../LibreVNA/librevnausbdriver.h"
class HarogicB60 : public LibreVNAUSBDriver
{
Q_OBJECT
public:
HarogicB60();
/**
* @brief Returns the driver name. It must be unique across all implemented drivers and is used to identify the driver
* @return driver name
*/
virtual QString getDriverName() override;
};
#endif // HAROGICB60_H

View file

@ -8,16 +8,6 @@
using namespace std; using namespace std;
using USBID = struct {
int VID;
int PID;
};
static constexpr USBID IDs[] = {
{0x0483, 0x564e},
{0x0483, 0x4121},
{0x1209, 0x4121},
};
LibreVNAUSBDriver::LibreVNAUSBDriver() LibreVNAUSBDriver::LibreVNAUSBDriver()
: LibreVNADriver() : LibreVNADriver()
{ {
@ -30,6 +20,10 @@ LibreVNAUSBDriver::LibreVNAUSBDriver()
lastTimestamp = QDateTime::currentDateTime(); lastTimestamp = QDateTime::currentDateTime();
byteCnt = 0; byteCnt = 0;
validUSBIDs.append({0x0483, 0x564e, "VNA"});
validUSBIDs.append({0x0483, 0x4121, "VNA"});
validUSBIDs.append({0x1209, 0x4121, "VNA"});
specificSettings.push_back(Savable::SettingDescription(&captureRawReceiverValues, "LibreVNAUSBDriver.captureRawReceiverValues", false)); specificSettings.push_back(Savable::SettingDescription(&captureRawReceiverValues, "LibreVNAUSBDriver.captureRawReceiverValues", false));
specificSettings.push_back(Savable::SettingDescription(&harmonicMixing, "LibreVNAUSBDriver.harmonicMixing", false)); specificSettings.push_back(Savable::SettingDescription(&harmonicMixing, "LibreVNAUSBDriver.harmonicMixing", false));
specificSettings.push_back(Savable::SettingDescription(&SASignalID, "LibreVNAUSBDriver.signalID", true)); specificSettings.push_back(Savable::SettingDescription(&SASignalID, "LibreVNAUSBDriver.signalID", true));
@ -309,15 +303,15 @@ void LibreVNAUSBDriver::SearchDevices(std::function<bool (libusb_device_handle *
continue; continue;
} }
bool correctID = false; int IDindex = -1;
int numIDs = sizeof(IDs)/sizeof(IDs[0]); for(int i=0;i<validUSBIDs.size();i++) {
for(int i=0;i<numIDs;i++) { if(desc.idVendor == validUSBIDs[i].VID && desc.idProduct == validUSBIDs[i].PID) {
if(desc.idVendor == IDs[i].VID && desc.idProduct == IDs[i].PID) { IDindex = i;
correctID = true;
break; break;
} }
} }
if(!correctID) { if(IDindex == -1) {
// invalid VID/PID
continue; continue;
} }
@ -348,7 +342,7 @@ void LibreVNAUSBDriver::SearchDevices(std::function<bool (libusb_device_handle *
if (ret > 0) { if (ret > 0) {
/* managed to read the product string */ /* managed to read the product string */
QString product(c_product); QString product(c_product);
if (product == "VNA") { if (product == validUSBIDs[IDindex].deviceName) {
// this is a match // this is a match
if(!foundCallback(handle, QString(c_serial))) { if(!foundCallback(handle, QString(c_serial))) {
// abort search // abort search

View file

@ -54,7 +54,7 @@ private:
void USBHandleThread(); void USBHandleThread();
// foundCallback is called for every device that is found. If it returns true the search continues, otherwise it is aborted. // foundCallback is called for every device that is found. If it returns true the search continues, otherwise it is aborted.
// When the search is aborted the last found device is still opened // When the search is aborted the last found device is still opened
static void SearchDevices(std::function<bool(libusb_device_handle *handle, QString getSerial)> foundCallback, libusb_context *context, bool ignoreOpenError); void SearchDevices(std::function<bool(libusb_device_handle *handle, QString getSerial)> foundCallback, libusb_context *context, bool ignoreOpenError);
libusb_device_handle *m_handle; libusb_device_handle *m_handle;
libusb_context *m_context; libusb_context *m_context;
@ -82,6 +82,13 @@ private:
QDateTime lastTimestamp; QDateTime lastTimestamp;
unsigned long byteCnt; unsigned long byteCnt;
using USBID = struct {
int VID;
int PID;
QString deviceName;
};
protected:
QList<USBID> validUSBIDs;
}; };
#endif // LIBREVNAUSBDRIVER_H #endif // LIBREVNAUSBDRIVER_H

View file

@ -5,6 +5,7 @@
#include "LibreVNA/Compound/compounddriver.h" #include "LibreVNA/Compound/compounddriver.h"
#include "SSA3000X/ssa3000xdriver.h" #include "SSA3000X/ssa3000xdriver.h"
#include "SNA5000A/sna5000adriver.h" #include "SNA5000A/sna5000adriver.h"
#include "Harogic/harogicb60.h"
DeviceDriver *DeviceDriver::activeDriver = nullptr; DeviceDriver *DeviceDriver::activeDriver = nullptr;
@ -25,6 +26,7 @@ std::vector<DeviceDriver *> DeviceDriver::getDrivers()
ret.push_back(new CompoundDriver); ret.push_back(new CompoundDriver);
ret.push_back(new SSA3000XDriver); ret.push_back(new SSA3000XDriver);
ret.push_back(new SNA5000ADriver); ret.push_back(new SNA5000ADriver);
ret.push_back(new HarogicB60);
} }
return ret; return ret;
} }

View file

@ -20,6 +20,7 @@ HEADERS += \
CustomWidgets/toggleswitch.h \ CustomWidgets/toggleswitch.h \
CustomWidgets/touchstoneimport.h \ CustomWidgets/touchstoneimport.h \
CustomWidgets/tracesetselector.h \ CustomWidgets/tracesetselector.h \
Device/Harogic/harogicb60.h \
Device/LibreVNA/Compound/compounddevice.h \ Device/LibreVNA/Compound/compounddevice.h \
Device/LibreVNA/Compound/compounddeviceeditdialog.h \ Device/LibreVNA/Compound/compounddeviceeditdialog.h \
Device/LibreVNA/Compound/compounddriver.h \ Device/LibreVNA/Compound/compounddriver.h \
@ -191,6 +192,7 @@ SOURCES += \
CustomWidgets/toggleswitch.cpp \ CustomWidgets/toggleswitch.cpp \
CustomWidgets/touchstoneimport.cpp \ CustomWidgets/touchstoneimport.cpp \
CustomWidgets/tracesetselector.cpp \ CustomWidgets/tracesetselector.cpp \
Device/Harogic/harogicb60.cpp \
Device/LibreVNA/Compound/compounddevice.cpp \ Device/LibreVNA/Compound/compounddevice.cpp \
Device/LibreVNA/Compound/compounddeviceeditdialog.cpp \ Device/LibreVNA/Compound/compounddeviceeditdialog.cpp \
Device/LibreVNA/Compound/compounddriver.cpp \ Device/LibreVNA/Compound/compounddriver.cpp \

View file

@ -162,7 +162,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
if(!w) { if(!w) {
continue; continue;
} }
w->setObjectName(driver->getDriverName()); w->setObjectName(driver->getDriverName().replace(" ", ""));
ui->pageWidget->addWidget(w); ui->pageWidget->addWidget(w);
auto driverItem = new QTreeWidgetItem(); auto driverItem = new QTreeWidgetItem();
driverItem->setText(0, driver->getDriverName()); driverItem->setText(0, driver->getDriverName());

View file

@ -26,6 +26,7 @@ SOURCES += \
../LibreVNA-GUI/CustomWidgets/toggleswitch.cpp \ ../LibreVNA-GUI/CustomWidgets/toggleswitch.cpp \
../LibreVNA-GUI/CustomWidgets/touchstoneimport.cpp \ ../LibreVNA-GUI/CustomWidgets/touchstoneimport.cpp \
../LibreVNA-GUI/CustomWidgets/tracesetselector.cpp \ ../LibreVNA-GUI/CustomWidgets/tracesetselector.cpp \
../LibreVNA-GUI/Device/Harogic/harogicb60.cpp \
../LibreVNA-GUI/Device/LibreVNA/amplitudecaldialog.cpp \ ../LibreVNA-GUI/Device/LibreVNA/amplitudecaldialog.cpp \
../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.cpp \ ../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.cpp \
../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvd0.cpp \ ../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvd0.cpp \
@ -219,6 +220,7 @@ HEADERS += \
../LibreVNA-GUI/CustomWidgets/toggleswitch.h \ ../LibreVNA-GUI/CustomWidgets/toggleswitch.h \
../LibreVNA-GUI/CustomWidgets/touchstoneimport.h \ ../LibreVNA-GUI/CustomWidgets/touchstoneimport.h \
../LibreVNA-GUI/CustomWidgets/tracesetselector.h \ ../LibreVNA-GUI/CustomWidgets/tracesetselector.h \
../LibreVNA-GUI/Device/Harogic/harogicb60.h \
../LibreVNA-GUI/Device/LibreVNA/amplitudecaldialog.h \ ../LibreVNA-GUI/Device/LibreVNA/amplitudecaldialog.h \
../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.h \ ../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogv1.h \
../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvd0.h \ ../LibreVNA-GUI/Device/LibreVNA/deviceconfigurationdialogvd0.h \