Compare commits
3 Commits
d8b17bdf51
...
bc66164fc3
Author | SHA1 | Date |
---|---|---|
|
bc66164fc3 | |
|
f245ab2fb5 | |
|
c1bddc3449 |
|
@ -47,7 +47,7 @@ jobs:
|
||||||
cmake --version
|
cmake --version
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/ProtocolParser/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DProtocolParser_BUILD_STATIC_LIB=ON -GNinja ..
|
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/ProtocolParser/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja ..
|
||||||
cmake --build . --target all --config Release --parallel
|
cmake --build . --target all --config Release --parallel
|
||||||
|
|
||||||
- name: package
|
- name: package
|
||||||
|
|
|
@ -55,7 +55,7 @@ jobs:
|
||||||
cmake --version
|
cmake --version
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/ProtocolParser/Qt/6.5.3/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DProtocolParser_BUILD_STATIC_LIB=ON -GNinja ..
|
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/ProtocolParser/Qt/6.5.3/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja ..
|
||||||
cmake --build . --target all --config Release --parallel
|
cmake --build . --target all --config Release --parallel
|
||||||
|
|
||||||
- name: install QT linux deploy
|
- name: install QT linux deploy
|
||||||
|
|
|
@ -64,7 +64,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\ProtocolParser\Qt\6.5.3\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DProtocolParser_BUILD_STATIC_LIB=ON -GNinja ..
|
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\ProtocolParser\Qt\6.5.3\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja ..
|
||||||
cmake --build . --target all --config Release --parallel
|
cmake --build . --target all --config Release --parallel
|
||||||
|
|
||||||
- name: package
|
- name: package
|
||||||
|
|
|
@ -2,14 +2,7 @@ cmake_minimum_required(VERSION 3.20)
|
||||||
|
|
||||||
project(ProtocolParser_APP VERSION 1.0.2 LANGUAGES CXX)
|
project(ProtocolParser_APP VERSION 1.0.2 LANGUAGES CXX)
|
||||||
|
|
||||||
add_definitions(-DFRAMELESSHELPER_CORE_NO_DEBUG_OUTPUT)
|
|
||||||
add_definitions(-DFRAMELESSHELPER_QUICK_NO_DEBUG_OUTPUT)
|
|
||||||
set(FRAMELESSHELPER_BUILD_STATIC ON)
|
|
||||||
set(FRAMELESSHELPER_BUILD_WIDGETS OFF)
|
|
||||||
set(FRAMELESSHELPER_NO_SUMMARY OFF)
|
|
||||||
set(FRAMELESSHELPER_REPRODUCIBLE_OUTPUT ON)
|
|
||||||
set(RIBBONUI_BUILD_FRAMELESSHEPLER ON)
|
set(RIBBONUI_BUILD_FRAMELESSHEPLER ON)
|
||||||
set(RIBBONUI_BUILD_EXAMPLES OFF)
|
set(RIBBONUI_BUILD_EXAMPLES OFF)
|
||||||
set(RIBBONUI_BUILD_STATIC_LIB ON)
|
|
||||||
add_subdirectory(3rdparty/RibbonUI)
|
add_subdirectory(3rdparty/RibbonUI)
|
||||||
add_subdirectory(app_source)
|
add_subdirectory(app_source)
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QQmlEngine>
|
#include <QQmlEngine>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QMutex>
|
||||||
|
|
||||||
class Config : public QObject
|
class Config : public QObject
|
||||||
{
|
{
|
||||||
|
@ -25,6 +26,7 @@ private:
|
||||||
Q_DISABLE_COPY_MOVE(Config)
|
Q_DISABLE_COPY_MOVE(Config)
|
||||||
QString m_qstrFileName;
|
QString m_qstrFileName;
|
||||||
QSettings *m_psetting=nullptr;
|
QSettings *m_psetting=nullptr;
|
||||||
|
QMutex _mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONFIG_H
|
#endif // CONFIG_H
|
||||||
|
|
|
@ -37,11 +37,13 @@ Config* Config::instance()
|
||||||
|
|
||||||
void Config::set(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
|
void Config::set(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker(&_mutex);
|
||||||
m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue);
|
m_psetting->setValue(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname), qvarvalue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Config::setArray(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
|
void Config::setArray(QString qstrnodename,QString qstrkeyname,QVariant qvarvalue)
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker(&_mutex);
|
||||||
m_psetting->beginWriteArray(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
|
m_psetting->beginWriteArray(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
|
||||||
QList<QVariant> list = qvarvalue.toList();
|
QList<QVariant> list = qvarvalue.toList();
|
||||||
for (int i = 0; i< list.length(); i++)
|
for (int i = 0; i< list.length(); i++)
|
||||||
|
@ -54,12 +56,14 @@ void Config::setArray(QString qstrnodename,QString qstrkeyname,QVariant qvarvalu
|
||||||
|
|
||||||
QVariant Config::get(QString qstrnodename,QString qstrkeyname)
|
QVariant Config::get(QString qstrnodename,QString qstrkeyname)
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker(&_mutex);
|
||||||
QVariant qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
|
QVariant qvar = m_psetting->value(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
|
||||||
return qvar;
|
return qvar;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant Config::getArray(QString qstrnodename,QString qstrkeyname)
|
QVariant Config::getArray(QString qstrnodename,QString qstrkeyname)
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker(&_mutex);
|
||||||
QList<QVariant> list;
|
QList<QVariant> list;
|
||||||
int size = m_psetting->beginReadArray(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
|
int size = m_psetting->beginReadArray(QString("/%1/%2").arg(qstrnodename).arg(qstrkeyname));
|
||||||
for (int i = 0; i< size; i++)
|
for (int i = 0; i< size; i++)
|
||||||
|
@ -73,5 +77,6 @@ QVariant Config::getArray(QString qstrnodename,QString qstrkeyname)
|
||||||
|
|
||||||
void Config::Clear()
|
void Config::Clear()
|
||||||
{
|
{
|
||||||
|
QMutexLocker locker(&_mutex);
|
||||||
m_psetting->clear();
|
m_psetting->clear();
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder);
|
FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder);
|
||||||
FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur);
|
FramelessConfig::instance()->set(Global::Option::WindowUseRoundCorners);
|
||||||
#endif
|
#endif
|
||||||
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
|
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
|
||||||
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);
|
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);
|
||||||
|
|
|
@ -104,13 +104,20 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
||||||
switch (zframe.getDesPort()) {
|
switch (zframe.getDesPort()) {
|
||||||
case 0x81:
|
case 0x81:
|
||||||
{
|
{
|
||||||
hframe = (hmac_frame*)frame;
|
|
||||||
QJsonObject object;
|
QJsonObject object;
|
||||||
|
hframe = (hmac_frame*)frame;
|
||||||
object.insert("text",QJsonValue(QString(zdata.toHex(' ').toUpper())));
|
object.insert("text",QJsonValue(QString(zdata.toHex(' ').toUpper())));
|
||||||
object.insert("sender", sender);
|
object.insert("sender", sender);
|
||||||
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的验证信息"));
|
|
||||||
object.insert("recieved", true);
|
object.insert("recieved", true);
|
||||||
object.insert("type","zigbee_identify_data");
|
object.insert("type","zigbee_identify_data");
|
||||||
|
if(*(u16*)frame != HMAC_FRAME_HEAD)
|
||||||
|
{
|
||||||
|
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的数据包,但并非验证信息,请检查下位机发送是否有误"));
|
||||||
|
emit data_send("zigbee_identify_data_view",object);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的验证信息"));
|
||||||
emit data_send("zigbee_identify_data_view",object);
|
emit data_send("zigbee_identify_data_view",object);
|
||||||
if (_allow_list.contains(node->first.addr))
|
if (_allow_list.contains(node->first.addr))
|
||||||
{
|
{
|
||||||
|
@ -238,38 +245,54 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
||||||
zigbee_protocol::ZigbeeFrame nzframe = zframe;
|
zigbee_protocol::ZigbeeFrame nzframe = zframe;
|
||||||
czdata = (crypto_zdata_frame*)frame;
|
czdata = (crypto_zdata_frame*)frame;
|
||||||
_protocol->zigbee_data_dectypt((uint8_t*)&ndata, &data_len, czdata, Crypto::SM4_decrypt);
|
_protocol->zigbee_data_dectypt((uint8_t*)&ndata, &data_len, czdata, Crypto::SM4_decrypt);
|
||||||
memcpy(nbframe.data, &ndata, ndata.data_length + DATA_FRAME_PREFIX_LEN);
|
if(*(u16 *)&ndata != DATA_FRAME_HEAD)
|
||||||
nbframe.length = BASE_FRAME_PREFIX_LEN + ndata.data_length + DATA_FRAME_PREFIX_LEN;
|
{
|
||||||
nzframe.setData((char*)&nbframe,nbframe.length);
|
note_text = "数据包错误,请检查是否解密失败或为数据帧";
|
||||||
zdata = QByteArray((char *)nzframe.data(), nzframe.size());
|
}
|
||||||
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
|
else
|
||||||
ddata = (data_frame*)&ndata;
|
{
|
||||||
|
memcpy(nbframe.data, &ndata, ndata.data_length + DATA_FRAME_PREFIX_LEN);
|
||||||
|
nbframe.length = BASE_FRAME_PREFIX_LEN + ndata.data_length + DATA_FRAME_PREFIX_LEN;
|
||||||
|
nzframe.setData((char*)&nbframe,nbframe.length);
|
||||||
|
zdata = QByteArray((char *)nzframe.data(), nzframe.size());
|
||||||
|
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
|
||||||
|
ddata = (data_frame*)&ndata;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (*(u16 *)frame != DATA_FRAME_HEAD)
|
||||||
|
{
|
||||||
|
object.insert("note_text",QJsonValue("收到节点0x"+sender+"发送的数据,但不是数据帧或加密帧,请检查下位机发送是否有误"));
|
||||||
|
emit data_send("zigbee_recv_data_view",object);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ddata = (data_frame*)frame;
|
ddata = (data_frame*)frame;
|
||||||
}
|
}
|
||||||
switch (ddata->type) {
|
if(ddata!=nullptr)
|
||||||
case SENSOR_DATA_TYPE:
|
|
||||||
{
|
{
|
||||||
QStringList name_list, type_list;
|
switch (ddata->type) {
|
||||||
name_list = Config::instance()->getArray("Protocol", "data_frame_name").toStringList();
|
case SENSOR_DATA_TYPE:
|
||||||
type_list = Config::instance()->getArray("Protocol", "data_frame_type").toStringList();
|
|
||||||
if (!name_list.length())
|
|
||||||
break;
|
|
||||||
note_text += "传感器数据:";
|
|
||||||
void* pdata = (void *)ddata->data;
|
|
||||||
for (uint8_t i = 0; i < name_list.length(); i++)
|
|
||||||
{
|
{
|
||||||
note_text += name_list[i]+ ":" + sensor_data_reader(&pdata,type_list[i]) + ' ';
|
QStringList name_list, type_list;
|
||||||
|
name_list = Config::instance()->getArray("Protocol", "data_frame_name").toStringList();
|
||||||
|
type_list = Config::instance()->getArray("Protocol", "data_frame_type").toStringList();
|
||||||
|
if (!name_list.length())
|
||||||
|
break;
|
||||||
|
note_text += "传感器数据:";
|
||||||
|
void* pdata = (void *)ddata->data;
|
||||||
|
for (uint8_t i = 0; i < name_list.length(); i++)
|
||||||
|
{
|
||||||
|
note_text += name_list[i]+ ":" + sensor_data_reader(&pdata,type_list[i]) + ' ';
|
||||||
|
}
|
||||||
|
object.insert("note_text",QJsonValue(note_text));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
object.insert("note_text",QJsonValue(note_text));
|
default:
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
if (QRandomGenerator::global()->bounded(2)!=0 && is_demo)
|
||||||
|
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
|
||||||
}
|
}
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (QRandomGenerator::global()->bounded(2)!=0 && is_demo)
|
|
||||||
object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper())));
|
|
||||||
emit data_send("zigbee_recv_data_view",object);
|
emit data_send("zigbee_recv_data_view",object);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue