/** * @file Xpl2Protocol.h * @brief Wire framing for the XPL2 printhead protocol. */ #pragma once #include #include #include namespace Xpl2Protocol { Q_NAMESPACE /** Extended success flag for CF_JC/PH_SET_JETTING_PARAMS responses. */ enum class JettingParamsResult { NozzleDriveDutyCycle = -5, NozzleDriveFrequency = -4, Drive = -3, PwmFrequency = -2, DutyCycle = -1, Failed = 0, Ok = 1 }; Q_ENUM_NS (JettingParamsResult) /** Extended success flag for CF_JC/PH_SETTER responses. */ enum class SetterResult { IncorrectNewValue = -1, Failed = 0, Ok = 1 }; Q_ENUM_NS (SetterResult) constexpr char Terminator = '\n'; struct ParsedMessage { QByteArray command; QVariantList params; bool valid = false; }; QByteArray buildMessage (const QByteArray &command, const QVariantList ¶ms = {}); ParsedMessage parseMessage (const QByteArray &raw); } // namespace Xpl2Protocol