eismultiplexer-qt/mainwindow.cpp

77 lines
2 KiB
C++

#include "mainwindow.h"
#include <QDebug>
#include <eismultiplexer.h>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setupUi();
enumerateDevices();
}
MainWindow::~MainWindow()
{
// Clean up all channel widgets
for (auto widget : channelWidgets) {
delete widget;
}
}
void MainWindow::setupUi()
{
// Create central widget and main layout
centralWidget = new QWidget(this);
mainLayout = new QVBoxLayout(centralWidget);
// Create scroll area
scrollArea = new QScrollArea(this);
scrollContent = new QWidget();
scrollLayout = new QVBoxLayout(scrollContent);
// Set up scroll area properties
scrollArea->setWidget(scrollContent);
scrollArea->setWidgetResizable(true);
scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// Add scroll area to main layout
mainLayout->addWidget(scrollArea);
// Set central widget
setCentralWidget(centralWidget);
setWindowTitle("EIS Multiplexer Controller");
}
void MainWindow::enumerateDevices()
{
size_t count = 0;
uint16_t* serials = eismultiplexer_list_available_devices(&count);
if (!serials) {
qWarning() << "No EIS multiplexer devices found";
return;
}
for (size_t i = 0; i < count; i++) {
uint16_t serial = serials[i];
struct eismultiplexer multiplexer;
if (eismultiplexer_connect(&multiplexer, serial) == 0) {
uint16_t channelCount = 0;
if (eismultiplexer_get_channel_count(&multiplexer, &channelCount) == 0) {
for (uint16_t channel = 0; channel < channelCount; channel++) {
ChannelWidget* widget = new ChannelWidget(serial, channel, &multiplexer);
channelWidgets.push_back(widget);
scrollLayout->addWidget(widget);
}
}
eismultiplexer_disconnect(&multiplexer);
} else {
qWarning() << "Failed to connect to device with serial" << serial;
}
}
free(serials);
}