2023-09-04 19:06:44 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QtWidgets/QMainWindow>
|
|
|
|
#include "ui_QtSoundModem.h"
|
|
|
|
#include "ui_calibrateDialog.h"
|
|
|
|
#include "ui_devicesDialog.h"
|
|
|
|
#include "ui_filterWindow.h"
|
|
|
|
#include "ui_ModemDialog.h"
|
|
|
|
#include "QThread"
|
|
|
|
#include <QLabel>
|
|
|
|
#include <QTableWidget>
|
|
|
|
#include <QTcpServer>
|
|
|
|
#include <QTcpSocket>
|
|
|
|
#include <QUdpSocket>
|
|
|
|
#include <QSystemTrayIcon>
|
|
|
|
|
|
|
|
#include "tcpCode.h"
|
|
|
|
|
|
|
|
|
|
|
|
class QtSoundModem : public QMainWindow
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
QtSoundModem(QWidget *parent = Q_NULLPTR);
|
|
|
|
void changeEvent(QEvent * e);
|
|
|
|
void closeEvent(QCloseEvent * event);
|
|
|
|
~QtSoundModem();
|
|
|
|
|
|
|
|
void RefreshWaterfall(int snd_ch, unsigned char * Data);
|
2023-12-17 13:53:32 +00:00
|
|
|
void initWaterfall(int state);
|
2023-09-04 19:06:44 +01:00
|
|
|
void show_grid();
|
2023-10-07 12:21:48 +01:00
|
|
|
void checkforCWID();
|
|
|
|
|
|
|
|
public slots:
|
2023-09-04 19:06:44 +01:00
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
2023-10-07 12:21:48 +01:00
|
|
|
void CWIDTimer();
|
2023-09-04 19:06:44 +01:00
|
|
|
void doDevices();
|
2023-12-17 13:53:32 +00:00
|
|
|
void mysetstyle();
|
2023-10-07 12:21:48 +01:00
|
|
|
void updateFont();
|
2023-09-04 19:06:44 +01:00
|
|
|
void MinimizetoTray();
|
|
|
|
void TrayActivated(QSystemTrayIcon::ActivationReason reason);
|
2024-10-29 22:45:21 +00:00
|
|
|
void StatsTimer();
|
2023-09-04 19:06:44 +01:00
|
|
|
void MyTimerSlot();
|
|
|
|
void returnPressed();
|
|
|
|
void clickedSlotI(int i);
|
|
|
|
void doModems();
|
|
|
|
void doFilter(int Chan, int Filter);
|
|
|
|
void SoundModeChanged(bool State);
|
|
|
|
void DualPTTChanged(bool State);
|
|
|
|
void CATChanged(bool State);
|
|
|
|
void PTTPortChanged(int);
|
|
|
|
void deviceaccept();
|
|
|
|
void devicereject();
|
|
|
|
void modemaccept();
|
|
|
|
void modemSave();
|
|
|
|
void modemreject();
|
|
|
|
void doRSIDA();
|
|
|
|
void doRSIDB();
|
|
|
|
void doRSIDC();
|
|
|
|
void doRSIDD();
|
|
|
|
void handleButton(int Port, int Act);
|
|
|
|
void doCalibrate();
|
2023-10-07 12:21:48 +01:00
|
|
|
void RefreshSpectrum(unsigned char * Data);
|
2023-09-04 19:06:44 +01:00
|
|
|
void doAbout();
|
|
|
|
void doRestartWF();
|
|
|
|
void doupdateDCD(int, int);
|
|
|
|
void sendtoTrace(char * Msg, int tx);
|
|
|
|
void preEmphAllAChanged(int);
|
|
|
|
void preEmphAllBChanged(int);
|
|
|
|
void preEmphAllCChanged(int state);
|
|
|
|
void preEmphAllDChanged(int state);
|
|
|
|
void menuChecked();
|
|
|
|
void onTEselectionChanged();
|
2024-07-23 21:26:30 +01:00
|
|
|
void StartWatchdog();
|
|
|
|
void StopWatchdog();
|
|
|
|
void PTTWatchdogExpired();
|
2024-10-29 22:45:21 +00:00
|
|
|
void showRequest(QByteArray Data);
|
2023-09-04 19:06:44 +01:00
|
|
|
void clickedSlot();
|
2023-10-07 12:21:48 +01:00
|
|
|
void startCWIDTimerSlot();
|
2024-07-23 21:26:30 +01:00
|
|
|
void setWaterfallImage();
|
|
|
|
void setLevelImage();
|
|
|
|
void setConstellationImage(int chan, int Qual);
|
2023-09-04 19:06:44 +01:00
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
bool eventFilter(QObject * obj, QEvent * evt);
|
|
|
|
void resizeEvent(QResizeEvent *event) override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
Ui::QtSoundModemClass ui;
|
|
|
|
QTableWidget* sessionTable;
|
|
|
|
QStringList m_TableHeader;
|
|
|
|
|
|
|
|
QMenu *setupMenu;
|
|
|
|
QMenu *viewMenu;
|
|
|
|
|
|
|
|
QAction *actDevices;
|
|
|
|
QAction *actModems;
|
2023-10-07 12:21:48 +01:00
|
|
|
QAction *actFont;
|
2023-09-04 19:06:44 +01:00
|
|
|
QAction *actMintoTray;
|
|
|
|
QAction *actCalib;
|
|
|
|
QAction *actAbout;
|
|
|
|
QAction *actRestartWF;
|
|
|
|
QAction *actWaterfall1;
|
|
|
|
QAction *actWaterfall2;
|
|
|
|
|
2023-10-07 12:21:48 +01:00
|
|
|
signals:
|
2023-09-04 19:06:44 +01:00
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
class myResize : public QObject
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
|
|
|
};
|
|
|
|
|
2023-12-17 13:53:32 +00:00
|
|
|
|
|
|
|
#define WaterfallDisplayPixels 80
|
|
|
|
#define WaterfallHeaderPixels 38
|
|
|
|
#define WaterfallTotalPixels WaterfallDisplayPixels + WaterfallHeaderPixels
|
|
|
|
#define WaterfallImageHeight (WaterfallTotalPixels + WaterfallTotalPixels)
|
|
|
|
|
2024-10-29 22:45:21 +00:00
|
|
|
|
|
|
|
class serialThread : public QThread
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
void run() Q_DECL_OVERRIDE;
|
|
|
|
void startSlave(const QString &portName, int waitTimeout, const QString &response);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void request(const QByteArray &s);
|
|
|
|
void error(const QString &s);
|
|
|
|
void timeout(const QString &s);
|
|
|
|
|
|
|
|
private:
|
|
|
|
QString portName;
|
|
|
|
QString response;
|
|
|
|
int waitTimeout;
|
|
|
|
QMutex mutex;
|
|
|
|
bool quit;
|
|
|
|
};
|
|
|
|
|