Compare commits
4 commits
8d3cf90816
...
278db0b23f
Author | SHA1 | Date | |
---|---|---|---|
![]() |
278db0b23f | ||
![]() |
64e01ea599 | ||
![]() |
b2bd53be80 | ||
![]() |
7b6e49f770 |
14
.gitignore
vendored
Normal file
14
.gitignore
vendored
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
# Build directory
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Qt creator user files
|
||||||
|
*.user
|
||||||
|
*.pro.user
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
|
||||||
|
# CMake cache
|
||||||
|
CMakeCache.txt
|
||||||
|
CMakeFiles/
|
||||||
|
cmake_install.cmake
|
|
@ -11,8 +11,12 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
# Find Qt6
|
# Find Qt6
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Widgets)
|
find_package(Qt6 REQUIRED COMPONENTS Widgets)
|
||||||
|
|
||||||
# Add the libeismultiplexer library
|
# Enable automoc for Qt meta-object compiler
|
||||||
add_subdirectory(../libeismultiplexer)
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
|
||||||
|
# Include the libeismultiplexer library
|
||||||
|
include_directories(/workspace/libeismultiplexer)
|
||||||
|
link_directories(/workspace/libeismultiplexer/build)
|
||||||
|
|
||||||
# Add the application executable
|
# Add the application executable
|
||||||
add_executable(eismultiplexer-qt
|
add_executable(eismultiplexer-qt
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "channelwidget.h"
|
#include "channelwidget.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber, struct eismultiplexer* multiplexer,
|
ChannelWidget::ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber, struct eismultiplexer* multiplexer,
|
||||||
QWidget *parent)
|
QWidget *parent)
|
||||||
|
@ -31,18 +32,44 @@ ChannelWidget::~ChannelWidget()
|
||||||
// Nothing to clean up
|
// Nothing to clean up
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t ChannelWidget::getDeviceSerial() const
|
||||||
|
{
|
||||||
|
return deviceSerial;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t ChannelWidget::getChannelNumber() const
|
||||||
|
{
|
||||||
|
return channelNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ChannelWidget::isChecked() const
|
||||||
|
{
|
||||||
|
return checkbox->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
void ChannelWidget::onChannelToggled(bool checked)
|
void ChannelWidget::onChannelToggled(bool checked)
|
||||||
{
|
{
|
||||||
|
if (checked) {
|
||||||
|
// Emit signal before actually turning on the channel
|
||||||
|
emit channelAboutToBeTurnedOn(deviceSerial, channelNumber);
|
||||||
|
}
|
||||||
|
|
||||||
channel_t channelFlag = static_cast<channel_t>(1 << channelNumber);
|
channel_t channelFlag = static_cast<channel_t>(1 << channelNumber);
|
||||||
if (checked) {
|
if (checked) {
|
||||||
if (eismultiplexer_connect_channel(multiplexer, channelFlag) < 0) {
|
if (eismultiplexer_connect_channel(multiplexer, channelFlag) < 0) {
|
||||||
|
QMessageBox::warning(this, tr("Connection Failed"),
|
||||||
|
tr("Failed to connect channel %1 on device %2").arg(channelNumber).arg(deviceSerial));
|
||||||
qWarning() << "Failed to connect channel" << channelNumber << "on device" << deviceSerial;
|
qWarning() << "Failed to connect channel" << channelNumber << "on device" << deviceSerial;
|
||||||
checkbox->setChecked(false);
|
checkbox->setChecked(false);
|
||||||
|
setEnabled(false); // Gray out the widget
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (eismultiplexer_disconnect_channel(multiplexer, channelFlag) < 0) {
|
if (eismultiplexer_disconnect_channel(multiplexer, channelFlag) < 0) {
|
||||||
|
QMessageBox::warning(this, tr("Disconnection Failed"),
|
||||||
|
tr("Failed to disconnect channel %1 on device %2").arg(channelNumber).arg(deviceSerial));
|
||||||
qWarning() << "Failed to disconnect channel" << channelNumber << "on device" << deviceSerial;
|
qWarning() << "Failed to disconnect channel" << channelNumber << "on device" << deviceSerial;
|
||||||
checkbox->setChecked(true);
|
checkbox->setChecked(true);
|
||||||
|
setEnabled(false); // Gray out the widget
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,16 @@ class ChannelWidget : public QWidget
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber, struct eismultiplexer* multiplexer,
|
explicit ChannelWidget(uint16_t deviceSerial, uint16_t channelNumber, struct eismultiplexer* multiplexer,
|
||||||
QWidget *parent = nullptr);
|
QWidget *parent = nullptr);
|
||||||
~ChannelWidget();
|
~ChannelWidget() override;
|
||||||
|
|
||||||
|
uint16_t getDeviceSerial() const;
|
||||||
|
uint16_t getChannelNumber() const;
|
||||||
|
bool isChecked() const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void channelAboutToBeTurnedOn(uint16_t deviceSerial, uint16_t channelNumber);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onChannelToggled(bool checked);
|
void onChannelToggled(bool checked);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QMessageBox>
|
||||||
#include <eismultiplexer.h>
|
#include <eismultiplexer.h>
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
|
@ -48,7 +49,9 @@ void MainWindow::enumerateDevices()
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
uint16_t* serials = eismultiplexer_list_available_devices(&count);
|
uint16_t* serials = eismultiplexer_list_available_devices(&count);
|
||||||
|
|
||||||
if (!serials) {
|
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";
|
qWarning() << "No EIS multiplexer devices found";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -67,6 +70,8 @@ void MainWindow::enumerateDevices()
|
||||||
}
|
}
|
||||||
eismultiplexer_disconnect(&multiplexer);
|
eismultiplexer_disconnect(&multiplexer);
|
||||||
} else {
|
} 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;
|
qWarning() << "Failed to connect to device with serial" << serial;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,11 @@ class MainWindow : public QMainWindow
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MainWindow(QWidget *parent = nullptr);
|
explicit MainWindow(QWidget *parent = nullptr);
|
||||||
~MainWindow();
|
~MainWindow() override;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onChannelAboutToBeTurnedOn(uint16_t deviceSerial, uint16_t channelNumber);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enumerateDevices();
|
void enumerateDevices();
|
||||||
|
|
Loading…
Reference in a new issue