wfview/commhandler.h

96 wiersze
2.3 KiB
C
Czysty Zwykły widok Historia

2018-06-19 19:58:52 +00:00
#ifndef COMMHANDLER_H
#define COMMHANDLER_H
#include <QObject>
#include <QMutex>
#include <QDataStream>
#include <QtSerialPort/QSerialPort>
#include <QTime>
2022-05-14 10:35:41 +00:00
#include <QTimer>
2018-06-19 19:58:52 +00:00
2023-01-05 19:37:53 +00:00
#include "wfviewtypes.h"
2018-06-19 19:58:52 +00:00
// This class abstracts the comm port in a useful way and connects to
// the command creator and command parser.
class commHandler : public QObject
{
Q_OBJECT
public:
commHandler(QObject* parent = nullptr);
commHandler(QString portName, quint32 baudRate, quint8 wfFormat,QObject* parent = nullptr);
bool serialError;
bool rtsStatus();
2018-06-19 19:58:52 +00:00
~commHandler();
public slots:
void setUseRTSforPTT(bool useRTS);
void setRTS(bool rtsOn);
void handleError(QSerialPort::SerialPortError error);
2022-05-14 10:35:41 +00:00
void init();
2018-06-19 19:58:52 +00:00
private slots:
void receiveDataIn(); // from physical port
2018-06-19 19:58:52 +00:00
void receiveDataFromUserToRig(const QByteArray &data);
void debugThis();
signals:
void haveTextMessage(QString message); // status, debug only
void sendDataOutToPort(const QByteArray &writeData); // not used
2018-06-19 19:58:52 +00:00
void haveDataFromPort(QByteArray data); // emit this when we have data, connect to rigcommander
2023-01-05 19:37:53 +00:00
void havePortError(errorType err);
2021-02-05 20:26:18 +00:00
void haveStatusUpdate(const QString text);
2018-06-19 19:58:52 +00:00
private:
void setupComm();
void openPort();
void closePort();
void sendDataOut(const QByteArray &writeData); // out to radio
2018-06-19 19:58:52 +00:00
void debugMe();
void hexPrint();
//QDataStream stream;
QByteArray outPortData;
QByteArray inPortData;
2023-02-11 11:40:30 +00:00
QByteArray previousSent;
2018-06-19 19:58:52 +00:00
//QDataStream outStream;
//QDataStream inStream;
unsigned char buffer[256];
QString portName;
2022-05-14 10:35:41 +00:00
QSerialPort *port=Q_NULLPTR;
2018-06-19 19:58:52 +00:00
qint32 baudrate;
unsigned char stopbits;
bool rolledBack;
2018-06-19 19:58:52 +00:00
QSerialPort *pseudoterm;
int ptfd; // pseudo-terminal file desc.
mutable QMutex ptMutex;
bool havePt;
QString ptDevSlave;
bool PTTviaRTS = false;
2018-06-19 19:58:52 +00:00
bool isConnected; // port opened
mutable QMutex mutex;
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);
bool combineWf = false;
QByteArray spectrumData;
quint8 spectrumDivisionNumber;
quint8 spectrumDivisionMax;
quint8 spectrumCenterOrFixed;
quint8 spectrumInformation;
quint8 spectrumOutOfRange;
quint8 lastSpectrum = 0;
QTime lastDataReceived;
2018-06-19 19:58:52 +00:00
};
#endif // COMMHANDLER_H