2018-06-19 19:58:52 +00:00
|
|
|
#ifndef COMMHANDLER_H
|
|
|
|
#define COMMHANDLER_H
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
|
|
|
#include <QMutex>
|
|
|
|
#include <QDataStream>
|
|
|
|
#include <QtSerialPort/QSerialPort>
|
|
|
|
|
|
|
|
// 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();
|
2020-03-30 21:09:52 +00:00
|
|
|
commHandler(QString portName, quint32 baudRate);
|
2021-02-02 09:05:59 +00:00
|
|
|
bool serialError;
|
2018-11-16 22:08:21 +00:00
|
|
|
|
2018-06-19 19:58:52 +00:00
|
|
|
~commHandler();
|
|
|
|
|
|
|
|
private slots:
|
2019-01-10 06:44:48 +00:00
|
|
|
void receiveDataIn(); // from physical port
|
|
|
|
void receiveDataInPt(); // from pseudo-term
|
2018-06-19 19:58:52 +00:00
|
|
|
void receiveDataFromUserToRig(const QByteArray &data);
|
|
|
|
void debugThis();
|
|
|
|
|
|
|
|
signals:
|
2019-01-10 06:44:48 +00:00
|
|
|
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
|
2021-02-02 09:05:59 +00:00
|
|
|
void haveSerialPortError(const QString port, const QString error);
|
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();
|
|
|
|
|
2019-01-10 06:44:48 +00:00
|
|
|
void initializePt(); // like ch constructor
|
|
|
|
void setupPtComm();
|
|
|
|
void openPtPort();
|
|
|
|
|
|
|
|
void sendDataOut(const QByteArray &writeData); // out to radio
|
|
|
|
void sendDataOutPt(const QByteArray &writeData); // out to pseudo-terminal
|
2018-06-19 19:58:52 +00:00
|
|
|
void debugMe();
|
|
|
|
void hexPrint();
|
|
|
|
|
|
|
|
//QDataStream stream;
|
|
|
|
QByteArray outPortData;
|
|
|
|
QByteArray inPortData;
|
|
|
|
|
|
|
|
//QDataStream outStream;
|
|
|
|
//QDataStream inStream;
|
|
|
|
|
|
|
|
unsigned char buffer[256];
|
|
|
|
|
|
|
|
QString portName;
|
|
|
|
QSerialPort *port;
|
|
|
|
qint32 baudrate;
|
|
|
|
unsigned char stopbits;
|
2018-06-22 23:31:52 +00:00
|
|
|
bool rolledBack;
|
2018-06-19 19:58:52 +00:00
|
|
|
|
2019-01-10 06:44:48 +00:00
|
|
|
QSerialPort *pseudoterm;
|
|
|
|
int ptfd; // pseudo-terminal file desc.
|
|
|
|
mutable QMutex ptMutex;
|
|
|
|
bool havePt;
|
|
|
|
QString ptDevSlave;
|
|
|
|
|
2018-06-19 19:58:52 +00:00
|
|
|
bool isConnected; // port opened
|
|
|
|
mutable QMutex mutex;
|
2018-06-22 23:31:52 +00:00
|
|
|
void printHex(const QByteArray &pdata, bool printVert, bool printHoriz);
|
|
|
|
|
2018-06-19 19:58:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // COMMHANDLER_H
|