86 lines
2.7 KiB
C++
86 lines
2.7 KiB
C++
#include "mainwindow.h"
|
|
#include <QDebug>
|
|
#include <QMessageBox>
|
|
#include <eismultiplexer.h>
|
|
#include <memory>
|
|
|
|
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::onChannelAboutToBeTurnedOn(uint16_t deviceSerial, uint16_t channelNumber)
|
|
{}
|
|
|
|
void MainWindow::enumerateDevices()
|
|
{
|
|
size_t count = 0;
|
|
uint16_t* serials = eismultiplexer_list_available_devices(&count);
|
|
|
|
if (!serials || count == 0) {
|
|
QMessageBox::warning(this, tr("No Devices Found"),
|
|
tr("No EIS multiplexer devices were found. Please connect a device and try again."));
|
|
qWarning() << "No EIS multiplexer devices found";
|
|
close();
|
|
return;
|
|
}
|
|
|
|
for (size_t i = 0; i < count; i++) {
|
|
uint16_t serial = serials[i];
|
|
std::shared_ptr<struct eismultiplexer> multiplexer(new struct eismultiplexer);
|
|
if (eismultiplexer_connect(multiplexer.get(), serial) >= 0) {
|
|
uint16_t channelCount = 0;
|
|
qDebug()<<"Adding channels from device "<<serial;
|
|
if (eismultiplexer_get_channel_count(multiplexer.get(), &channelCount) >= 0) {
|
|
for (uint16_t channel = 0; channel < channelCount; channel++) {
|
|
ChannelWidget* widget = new ChannelWidget(serial, channel, multiplexer.get());
|
|
qDebug()<<"Added widget from device "<<serial<<" channel "<<channel;
|
|
channelWidgets.push_back(widget);
|
|
scrollLayout->addWidget(widget);
|
|
}
|
|
}
|
|
} else {
|
|
QMessageBox::warning(this, tr("Connection Failed"),
|
|
tr("Failed to connect to device with serial %1").arg(serial));
|
|
qWarning() << "Failed to connect to device with serial" << serial;
|
|
}
|
|
}
|
|
|
|
free(serials);
|
|
}
|
|
|