diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-13 11:47:00 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-03-13 11:47:00 +0100 |
| commit | a2b1ccf17845e55caef7f69a5e68f49a55b6a166 (patch) | |
| tree | a7e8c414dbadeeb9bcac29478cf3fbf7e99a4a05 /src/Xpl2Client.h | |
| parent | 34faf3cdea798c1948229ec1bb53c828e2b40bb7 (diff) | |
| download | QtXpl2-a2b1ccf17845e55caef7f69a5e68f49a55b6a166.tar.gz QtXpl2-a2b1ccf17845e55caef7f69a5e68f49a55b6a166.zip | |
XPL2 protocol foundation: wire framing, typed API, KA_PING, GS_JC_VERSION
Add Xpl2Protocol namespace with buildMessage/parseMessage for wire
serialization. Replace raw send/receive API on Xpl2Client with typed
protocol methods and internal dispatch. Auto-reply to KA_PING on all
sockets (qDebug only). Add GS_JC_VERSION as first typed command with
controllerId, firmwareVersion, hardwareVersion, printheadCount properties.
Upgrade mock server from echo to line-based command dispatch with 1s
KA_PING timer and canned GS_JC_VERSION response. Unknown commands
produce qWarning instead of echo.
Overhaul demo: remove raw send UI and port config, add wireDebug
toggle and Get JC Version button.
Diffstat (limited to 'src/Xpl2Client.h')
| -rw-r--r-- | src/Xpl2Client.h | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/src/Xpl2Client.h b/src/Xpl2Client.h index 7ce70ae..9212771 100644 --- a/src/Xpl2Client.h +++ b/src/Xpl2Client.h @@ -4,6 +4,8 @@ */ #pragma once +#include "Xpl2Protocol.h" + #include <QObject> #include <QQmlEngine> #include <QTcpSocket> @@ -15,13 +17,15 @@ class Xpl2Client : public QObject QML_SINGLETON Q_PROPERTY (QString host READ host WRITE setHost NOTIFY hostChanged) - Q_PROPERTY (quint16 commandPort READ commandPort WRITE setCommandPort NOTIFY - commandPortChanged) - Q_PROPERTY (quint16 imagingPort READ imagingPort WRITE setImagingPort NOTIFY - imagingPortChanged) - Q_PROPERTY (quint16 statusPort READ statusPort WRITE setStatusPort NOTIFY - statusPortChanged) Q_PROPERTY (bool connected READ isConnected NOTIFY connectedChanged) + Q_PROPERTY ( + bool wireDebug READ wireDebug WRITE setWireDebug NOTIFY wireDebugChanged) + Q_PROPERTY (int controllerId READ controllerId NOTIFY jcVersionReceived) + Q_PROPERTY ( + QString firmwareVersion READ firmwareVersion NOTIFY jcVersionReceived) + Q_PROPERTY ( + QString hardwareVersion READ hardwareVersion NOTIFY jcVersionReceived) + Q_PROPERTY (int printheadCount READ printheadCount NOTIFY jcVersionReceived) public: explicit Xpl2Client (QObject *parent = nullptr); @@ -29,52 +33,51 @@ public: QString host () const; void setHost (const QString &host); - quint16 commandPort () const; - void setCommandPort (quint16 port); - - quint16 imagingPort () const; - void setImagingPort (quint16 port); + bool isConnected () const; - quint16 statusPort () const; - void setStatusPort (quint16 port); + bool wireDebug () const; + void setWireDebug (bool enabled); - bool isConnected () const; + int controllerId () const; + QString firmwareVersion () const; + QString hardwareVersion () const; + int printheadCount () const; Q_INVOKABLE void connectToServer (); Q_INVOKABLE void disconnectFromServer (); - Q_INVOKABLE void sendToCommandSocket (const QString &message); - Q_INVOKABLE void sendToImagingSocket (const QString &message); - Q_INVOKABLE void sendToStatusSocket (const QString &message); + Q_INVOKABLE void getJcVersion (); signals: void hostChanged (); - void commandPortChanged (); - void imagingPortChanged (); - void statusPortChanged (); void connectedChanged (); - void commandSocketResponseReceived (const QString &response); - void imagingSocketResponseReceived (const QString &response); - void statusSocketResponseReceived (const QString &response); + void wireDebugChanged (); void errorOccurred (const QString &error); void statusMessage (const QString &message); + void wireDebugMessage (const QString &message); + void jcVersionReceived (); private slots: void onCommandSocketConnected (); void onCommandSocketDisconnected (); - void onCommandSocketReadyRead (); + void onCommandSocketMessageReady (); void onCommandSocketError (QAbstractSocket::SocketError error); void onImagingSocketConnected (); void onImagingSocketDisconnected (); - void onImagingSocketReadyRead (); + void onImagingSocketMessageReady (); void onImagingSocketError (QAbstractSocket::SocketError error); void onStatusSocketConnected (); void onStatusSocketDisconnected (); - void onStatusSocketReadyRead (); + void onStatusSocketMessageReady (); void onStatusSocketError (QAbstractSocket::SocketError error); private: - void sendToSocket (QTcpSocket &socket, const QString &label, - const QString &message); + void sendCommand (QTcpSocket &socket, const QByteArray &command, + const QVariantList ¶ms = {}); + void dispatchCommandMessage (const Xpl2Protocol::ParsedMessage &msg); + void dispatchImagingMessage (const Xpl2Protocol::ParsedMessage &msg); + void dispatchStatusMessage (const Xpl2Protocol::ParsedMessage &msg); + void handleKaPing (QTcpSocket &socket); + void handleGsJcVersion (const QVariantList ¶ms); void updateConnectedState (); QTcpSocket m_commandSocket; @@ -85,4 +88,9 @@ private: quint16 m_imagingPort = 9111; quint16 m_statusPort = 9112; bool m_connected = false; + bool m_wireDebug = false; + int m_controllerId = 0; + QString m_firmwareVersion; + QString m_hardwareVersion; + int m_printheadCount = 0; }; |
