aboutsummaryrefslogtreecommitdiffstats
path: root/mock-jetting-controller/MockServer.h
diff options
context:
space:
mode:
Diffstat (limited to 'mock-jetting-controller/MockServer.h')
-rw-r--r--mock-jetting-controller/MockServer.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/mock-jetting-controller/MockServer.h b/mock-jetting-controller/MockServer.h
new file mode 100644
index 0000000..242cb32
--- /dev/null
+++ b/mock-jetting-controller/MockServer.h
@@ -0,0 +1,90 @@
+/**
+ * @file MockServer.h
+ * @brief Mock XPL2 server — connects out to the client on three protocol
+ * ports.
+ */
+#pragma once
+
+#include <QObject>
+#include <QTcpSocket>
+#include <QTimer>
+
+class MockServer : public QObject
+{
+ Q_OBJECT
+
+public:
+ explicit MockServer (const QString &host, QObject *parent = nullptr);
+ static void enableWireDebug ();
+
+private slots:
+ void onSocketConnected ();
+ void onSocketDisconnected ();
+ void onSocketMessageReady ();
+ /* Send KA_PING on connected sockets, retry connection on disconnected. */
+ void tick ();
+ void sendJcStatusMsg ();
+ void sendPhStatusMsg ();
+
+private:
+ struct Port
+ {
+ QTcpSocket socket;
+ const char *name = nullptr;
+ quint16 number = 0;
+ };
+
+ void setupPort (Port &port, const char *name, quint16 number);
+ void connectAll ();
+ /* Return a fixed-width "[Name:port]" tag for log lines. */
+ QString logTag (const QTcpSocket *socket) const;
+ /* Parse incoming line, log RX, and dispatch to the matching handler. */
+ void handleCommand (Port &port, const QByteArray &line);
+ void sendReply (QTcpSocket &socket, const QByteArray &data);
+ void handleKaPing (Port &port, const QByteArray &params);
+ void handleGsJcVersion (QTcpSocket &socket);
+ void handleGsPhVersion (QTcpSocket &socket, const QByteArray &params);
+ /* CN_ control command handlers */
+ void handleCnJcSuccess (QTcpSocket &socket, const QByteArray &cmd);
+ void handleCnPhSuccess (QTcpSocket &socket, const QByteArray &cmd,
+ const QByteArray &params);
+ void handleCnPhCalibrationData (QTcpSocket &socket,
+ const QByteArray &params);
+ void handleCnPhCalibrationRawData (QTcpSocket &socket,
+ const QByteArray &params);
+ void handleCnPhCalibratedBaseFrequency (QTcpSocket &socket,
+ const QByteArray &params);
+ void handleCnStatusMessagingStart (QTcpSocket &socket, const QByteArray &cmd,
+ const QByteArray &params);
+ void handleCnStatusMessagingStop (QTcpSocket &socket, const QByteArray &cmd);
+ /* CF_ configuration command handlers */
+ void handleCfJcSetPurgeSettings (QTcpSocket &socket,
+ const QByteArray &params);
+ void handleCfJcSetJettingParams (QTcpSocket &socket,
+ const QByteArray &params);
+ void handleCfPhJettingParams (QTcpSocket &socket, const QByteArray &cmd,
+ const QByteArray &params);
+ void handleCfJcSetter (QTcpSocket &socket, const QByteArray &params);
+ void handleCfPhSetter (QTcpSocket &socket, const QByteArray &params);
+ void handleCfJcGetter (QTcpSocket &socket, const QByteArray &params);
+ void handleCfPhGetter (QTcpSocket &socket, const QByteArray &params);
+ /* Imaging command handlers */
+ void handleImagingStart (QTcpSocket &socket, const QByteArray &params);
+ void handleImagingStop (QTcpSocket &socket);
+ void handleImagingMaskStart (QTcpSocket &socket, const QByteArray &cmd,
+ const QByteArray &params);
+ void handleImagingMaskEnd (QTcpSocket &socket, const QByteArray &cmd,
+ const QByteArray &params);
+ void handleImageCount (QTcpSocket &socket);
+
+ QString m_host;
+ Port m_command;
+ Port m_imaging;
+ Port m_status;
+ QTimer m_tickTimer;
+ QTimer m_jcStatusTimer;
+ QTimer m_phStatusTimer;
+ int m_jcStatusLevel = 1;
+ int m_phStatusLevel = 1;
+ static bool s_wireDebug;
+};