Newer
Older
ZXSSCJ / DeviceHub / protocol / DeviceStatusProtocolBase.cpp
tan yue on 12 Nov 2021 2 KB 20211112 refact device hub
#include "DeviceStatusProtocolBase.h"
//#include "SignalGeneratorProtocolBM.h"
//#include "FrequencyTuningProtocolBM.h"
//#include "TimeSwitcherProtocolBM.h"
//#include "FreqSwitcherProtocolBM.h"
//#include "TimeReplicatorProtocolBM.h"
//#include "FreqReplicatorProtocolTX.h"
//#include "BCodeTerminalProtocolBM.h"

#include <iostream>

DeviceStatusProtocolBase::DeviceStatusProtocolBase(QObject *parent) : QObject(parent)
{

}

DeviceStatusProtocolBase * DeviceStatusProtocolBase::deviceStatusProtocolFactory(QString deviceType)
{
    std::cout << deviceType.toStdString() << std::endl;
//    if (deviceType.contains("SignalGenerator") == true)
//    {
//        return new SignalGeneratorProtocolBM();
//    } else if (deviceType.contains("FrequencyTuning") == true)
//    {
//        return new FrequencyTuningProtocolBM();
//    } else if (deviceType.contains("TimeSwitcher") == true)
//    {
//        return new TimeSwitcherProtocolBM();
//    } else if (deviceType.contains("FreqSwitcher") == true)
//    {
//        return new FreqSwitcherProtocolBM();
//    } else if (deviceType.contains("FreqReplicator") == true)
//    {
//        return new FreqReplicatorProtocolTX();
//    } else if (deviceType.contains("TimeReplicator") == true)
//    {
//        return new TimeReplicatorProtocolBM();
//    } else if (deviceType.contains("BCodeTerminal") == true)
//    {
//        return new BCodeTerminalProtocolBM();
//    }

    return nullptr;
}

QByteArray DeviceStatusProtocolBase::generateSettingCommand(QString commandType, QString valueSet)
{
    QByteArray commandBytes;
    commandBytes.append(commandType).append(",");
    commandBytes.append(valueSet);

    QString xorValue = this->calculateXOR(commandBytes);

    commandBytes.prepend("$");
    commandBytes.append("*");
    commandBytes.append(xorValue);

    return commandBytes;
}

QString DeviceStatusProtocolBase::calculateXOR(QByteArray byteArray)
{
    quint8 xorValue = 0;

    for (int i =0; i < byteArray.size(); i++)
    {
        xorValue = xorValue ^ byteArray.at(i);
    }

    QString str;
    str.sprintf("%02X", xorValue);
    return str;
}