From 50034b142dc851da7118032f7218cb1d25ea98e4 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Mon, 16 Mar 2026 15:14:13 +0100 Subject: CN_ control commands: typed API, dispatch, mock responses, demo UI --- mock-server/MockServer.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) (limited to 'mock-server/MockServer.cpp') diff --git a/mock-server/MockServer.cpp b/mock-server/MockServer.cpp index 981bd1c..d83ad17 100644 --- a/mock-server/MockServer.cpp +++ b/mock-server/MockServer.cpp @@ -121,6 +121,32 @@ MockServer::handleCommand (QTcpSocket *client, const QByteArray &line) handleGsJcVersion (client); else if (cmd == "GS_PH_VERSION") handleGsPhVersion (client, params); + /* CN_ JC success shape (no params needed) */ + else if (cmd == "CN_JETTING_ALL_ON" || cmd == "CN_JETTING_ON" + || cmd == "CN_JETTING_OFF" || cmd == "CN_JC_ID_LED_ON" + || cmd == "CN_JC_ID_LED_OFF" || cmd == "CN_JC_CALIBRATION" + || cmd == "CN_JC_RESET_FAULT_CODES") + handleCnJcSuccess (client, cmd); + /* CN_ PH success shape (params carry printheadId) */ + else if (cmd == "CN_PH_JETTING_ON" || cmd == "CN_PH_JETTING_OFF" + || cmd == "CN_PH_ID_LED_ON" || cmd == "CN_PH_ID_LED_OFF" + || cmd == "CN_PH_CALIBRATION" || cmd == "CN_PH_RESET_FAULT_CODES" + || cmd == "CN_PH_NOZZLES_DISABLED") + handleCnPhSuccess (client, cmd, params); + /* CN_ custom-shape commands */ + else if (cmd == "CN_PH_CALIBRATION_DATA") + handleCnPhCalibrationData (client, params); + else if (cmd == "CN_PH_CALIBRATION_RAW_DATA") + handleCnPhCalibrationRawData (client, params); + else if (cmd == "CN_PH_CALIBRATED_BASE_FREQUENCY") + handleCnPhCalibratedBaseFrequency (client, params); + /* CN_ status messaging (arrives on status port) */ + else if (cmd == "CN_JC_STATUS_MESSAGING_START" + || cmd == "CN_PH_STATUS_MESSAGING_START") + handleCnStatusMessagingStart (client, cmd, params); + else if (cmd == "CN_JC_STATUS_MESSAGING_STOP" + || cmd == "CN_PH_STATUS_MESSAGING_STOP") + handleCnStatusMessagingStop (client, cmd); else qWarning ("%s Unknown command: %s", qPrintable (logTag (client->localPort ())), cmd.constData ()); @@ -167,3 +193,80 @@ MockServer::handleGsPhVersion (QTcpSocket *client, const QByteArray ¶ms) + ",\"3.10\",\"1.00\",\"Standard\"," "\"2.05\",\"1.02\",\"0.9.1\"\n"); } + +void +MockServer::handleCnJcSuccess (QTcpSocket *client, const QByteArray &cmd) +{ + qDebug ("%s RX %s", qPrintable (logTag (client->localPort ())), + cmd.constData ()); + sendReply (client, cmd + ",1,1\n"); +} + +void +MockServer::handleCnPhSuccess (QTcpSocket *client, const QByteArray &cmd, + const QByteArray ¶ms) +{ + qDebug ("%s RX %s,%s", qPrintable (logTag (client->localPort ())), + cmd.constData (), params.constData ()); + /* Extract printhead ID (first field before any comma). */ + int comma = params.indexOf (','); + QByteArray phId = (comma >= 0) ? params.left (comma) : params; + sendReply (client, cmd + ",1," + phId + ",1\n"); +} + +void +MockServer::handleCnPhCalibrationData (QTcpSocket *client, + const QByteArray ¶ms) +{ + qDebug ("%s RX CN_PH_CALIBRATION_DATA,%s", + qPrintable (logTag (client->localPort ())), params.constData ()); + /* Reply: controllerId, phId, then 48 floats (-1 = uncalibrated). */ + QByteArray reply = "CN_PH_CALIBRATION_DATA,1," + params; + for (int i = 0; i < 48; ++i) + reply += ",-1"; + reply += '\n'; + sendReply (client, reply); +} + +void +MockServer::handleCnPhCalibrationRawData (QTcpSocket *client, + const QByteArray ¶ms) +{ + qDebug ("%s RX CN_PH_CALIBRATION_RAW_DATA,%s", + qPrintable (logTag (client->localPort ())), params.constData ()); + QByteArray reply = "CN_PH_CALIBRATION_RAW_DATA,1," + params; + for (int i = 0; i < 48; ++i) + reply += ",-1"; + reply += '\n'; + sendReply (client, reply); +} + +void +MockServer::handleCnPhCalibratedBaseFrequency (QTcpSocket *client, + const QByteArray ¶ms) +{ + qDebug ("%s RX CN_PH_CALIBRATED_BASE_FREQUENCY,%s", + qPrintable (logTag (client->localPort ())), params.constData ()); + sendReply (client, + "CN_PH_CALIBRATED_BASE_FREQUENCY,1," + params + ",10.0,10.0\n"); +} + +void +MockServer::handleCnStatusMessagingStart (QTcpSocket *client, + const QByteArray &cmd, + const QByteArray ¶ms) +{ + qDebug ("%s RX %s,%s", qPrintable (logTag (client->localPort ())), + cmd.constData (), params.constData ()); + /* Echo back: controllerId, level, interval, success. */ + sendReply (client, cmd + ",1," + params + ",1\n"); +} + +void +MockServer::handleCnStatusMessagingStop (QTcpSocket *client, + const QByteArray &cmd) +{ + qDebug ("%s RX %s", qPrintable (logTag (client->localPort ())), + cmd.constData ()); + sendReply (client, cmd + ",1,1\n"); +} -- cgit v1.2.3