Compare commits

...

3 Commits

8 changed files with 60 additions and 37 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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();
} }

View File

@ -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);

View File

@ -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