diff --git a/src/core/seriallayer.h b/src/core/seriallayer.h --- a/src/core/seriallayer.h +++ b/src/core/seriallayer.h @@ -38,7 +38,7 @@ Q_OBJECT private: - class SerialLayerPrivate; + struct SerialLayerPrivate; SerialLayerPrivate *d; /** diff --git a/src/core/seriallayer.cpp b/src/core/seriallayer.cpp --- a/src/core/seriallayer.cpp +++ b/src/core/seriallayer.cpp @@ -29,12 +29,34 @@ Q_LOGGING_CATEGORY(SERIAL_LAYER, "org.kde.atelier.core.serialLayer") -namespace -{ -QByteArray _return = QByteArray("\r"); -QByteArray _newLine = QByteArray("\n"); -QByteArray _newLineReturn = QByteArray("\n\r"); -QStringList _validBaudRates = { +/** + * @brief The SerialLayerPrivate class + */ +struct SerialLayer::SerialLayerPrivate { + /** _lastError: the last reported error */ + QSerialPort::SerialPortError _lastError = QSerialPort::NoError; + /** New Line String */ + static const QByteArray _newLine; + /** New Line Return String */ + static const QByteArray _newLineReturn; + /** _rawData: the raw serial data */ + QByteArray _rawData; + /** _rByteCommand: received Messages */ + QVector _rByteCommands; + /** Return String */ + static const QByteArray _return; + /** _sByteCommand: sent Messages */ + QVector _sByteCommands; + /** _serialOpened: is Serial port opened */ + bool _serialOpened = false; + /** List of valid Baud Rates */ + static const QStringList _validBaudRates; +}; + +const QByteArray SerialLayer::SerialLayerPrivate::_newLine = QByteArray("\n"); +const QByteArray SerialLayer::SerialLayerPrivate::_newLineReturn = QByteArray("\n\r"); +const QByteArray SerialLayer::SerialLayerPrivate::_return = QByteArray("\r"); +const QStringList SerialLayer::SerialLayerPrivate::_validBaudRates = { QStringLiteral("9600"), QStringLiteral("14400"), QStringLiteral("19200"), @@ -48,25 +70,6 @@ QStringLiteral("500000"), QStringLiteral("1000000") }; -} - -/** - * @brief The SerialLayerPrivate class - */ -class SerialLayer::SerialLayerPrivate -{ -public: - /** _serialOpened: is Serial port opened */ - bool _serialOpened = false; - /** _lastError: the last reported error */ - QSerialPort::SerialPortError _lastError = QSerialPort::NoError; - /** _rawData: the raw serial data */ - QByteArray _rawData; - /** _rByteCommand: received Messages */ - QVector _rByteCommands; - /** _sByteCommand: sent Messages */ - QVector _sByteCommands; -}; SerialLayer::SerialLayer(const QString &port, int32_t baud, QObject *parent) : QSerialPort(parent), d(new SerialLayerPrivate()) @@ -87,9 +90,9 @@ //Remove any \r in the string, then split by \n. //This removes any trailing \r or \n from the commands // Proper line endings are added when the command is pushed. - d->_rawData = d->_rawData.replace(_return, QByteArray()); + d->_rawData = d->_rawData.replace(d->_return, QByteArray()); - QList tempList = d->_rawData.split(_newLine.at(0)); + QList tempList = d->_rawData.split(d->_newLine.at(0)); for (auto i = tempList.begin(); i != tempList.end(); ++i) { // Get finished line to _byteCommands if (i < tempList.end() - 1) { @@ -116,7 +119,7 @@ void SerialLayer::pushCommand(const QByteArray &comm) { - pushCommand(comm, _newLineReturn); + pushCommand(comm, d->_newLineReturn); } void SerialLayer::add(const QByteArray &comm, const QByteArray &term) @@ -127,7 +130,7 @@ void SerialLayer::add(const QByteArray &comm) { - add(comm, _newLineReturn); + add(comm, d->_newLineReturn); } void SerialLayer::push() @@ -150,7 +153,7 @@ QStringList SerialLayer::validBaudRates() const { - return _validBaudRates; + return d->_validBaudRates; } void SerialLayer::handleError(QSerialPort::SerialPortError error) diff --git a/src/core/temperature.h b/src/core/temperature.h --- a/src/core/temperature.h +++ b/src/core/temperature.h @@ -124,6 +124,6 @@ void extruderTargetTemperatureChanged(float temp); private: - class TemperaturePrivate; + struct TemperaturePrivate; TemperaturePrivate *d; }; diff --git a/src/core/temperature.cpp b/src/core/temperature.cpp --- a/src/core/temperature.cpp +++ b/src/core/temperature.cpp @@ -31,15 +31,31 @@ * * Private Data of Temperature */ -class Temperature::TemperaturePrivate -{ -public: - float extruderTemp = 0.0; //!< @param extruderTemp: Extruder current temperature - float extruderTargetTemp = 0.0; //!< @param extruderTargetTemp: Extruder target temperature - float bedTemp = 0.0; //!< @param bedTemp: Bed current temperature - float bedTargetTemp = 0.0; //!< @param bedTargetTemp: Bed target temperature + +struct Temperature::TemperaturePrivate { + /** Regex to capture Bed Temperature grabs : B: to the next space */ + static const QRegularExpression bedRegEx; + /** bedTemp: Bed current temperature */ + float bedTemp = 0.0; + /** bedTargetTemp: Bed target temperature */ + float bedTargetTemp = 0.0; + /** extruderTemp: Extruder current temperature */ + float extruderTemp = 0.0; + /** extruderTargetTemp: Extruder target temperature */ + float extruderTargetTemp = 0.0; + /** Regex to capture Bed Target Temperature: Find B:## /## and grab the second set of numbers */ + static const QRegularExpression targetBedRegEx; + /** Regex to capture Extruder Target Temperature Finds T:## /## and grabs the second set of numbers */ + static const QRegularExpression targetTempRegEx; + /** Regex to capture Extruder Temperature Grabs "T: to next space" */ + static const QRegularExpression tempRegEx; }; +const QRegularExpression Temperature::TemperaturePrivate::bedRegEx = QRegularExpression(QStringLiteral(R"(B:(?\d+\.\d*))")); +const QRegularExpression Temperature::TemperaturePrivate::targetBedRegEx = QRegularExpression(QStringLiteral(R"(B:[^\/]*\/(?\d+\.?\d*))")); +const QRegularExpression Temperature::TemperaturePrivate::targetTempRegEx = QRegularExpression(QStringLiteral(R"(T:[^\/]*\/(?\d+\.?\d*))")); +const QRegularExpression Temperature::TemperaturePrivate::tempRegEx = QRegularExpression(QStringLiteral(R"(T:(?\d+\.\d*))")); + Temperature::Temperature(QObject *parent) : QObject(parent) , d(new TemperaturePrivate) @@ -92,12 +108,9 @@ void Temperature::decodeTemp(const QByteArray &msg) { - //Capture after T: until next space - static const QRegularExpression tempRegEx(QStringLiteral(R"(T:(?\d+\.\d*))")); - QRegularExpressionMatch tempCheck = tempRegEx.match(QString::fromLatin1(msg)); - //Find T:## /## and store the second set of numbers - static const QRegularExpression targetTempRegEx(QStringLiteral(R"(T:[^\/]*\/(?\d+\.?\d*))")); - QRegularExpressionMatch targetTempCheck = targetTempRegEx.match(QString::fromLatin1(msg)); + QString msgString = QString::fromLatin1(msg); + QRegularExpressionMatch tempCheck = d->tempRegEx.match(msgString); + QRegularExpressionMatch targetTempCheck = d->targetTempRegEx.match(msgString); if (tempCheck.hasMatch()) { setExtruderTemperature(tempCheck.captured(QStringLiteral("extruder")).toFloat()); @@ -108,12 +121,8 @@ } if (msg.indexOf(QStringLiteral("B:")) != -1) { - //Capture after B: until next space - static const QRegularExpression bedRegEx(QStringLiteral(R"(B:(?\d+\.\d*))")); - QRegularExpressionMatch bedCheck = bedRegEx.match(QString::fromLatin1(msg)); - //Find B:## /## and store the second set of numbers - static QRegularExpression targetBedRegEx(QStringLiteral(R"(B:[^\/]*\/(?\d+\.?\d*))")); - QRegularExpressionMatch targetBedCheck = targetBedRegEx.match(QString::fromLatin1(msg)); + QRegularExpressionMatch bedCheck = d->bedRegEx.match(msgString); + QRegularExpressionMatch targetBedCheck = d->targetBedRegEx.match(msgString); if (bedCheck.hasMatch()) { setBedTemperature(bedCheck.captured(QStringLiteral("bed")).toFloat());