ZigBee: Try to improve performance in windows.
This commit is contained in:
parent
5b4cc11fc1
commit
f683bb7aa3
|
@ -11,8 +11,11 @@ class ZigBeeDataResolver : public QObject
|
|||
Q_OBJECT
|
||||
public:
|
||||
static ZigBeeDataResolver* instance();
|
||||
QList<uint16_t>& get_allow_list(){return _allow_list;};
|
||||
QList<uint16_t>& get_deny_list(){return _deny_list;};
|
||||
QList<uint16_t>& get_wait_queue(){return _wait_queue;};
|
||||
public slots:
|
||||
void message_parser(QJsonObject message, QString self_addr, QList<uint16_t> allow_list, QList<uint16_t> deny_list, QList<uint16_t> wait_queue);
|
||||
void message_parser(QJsonObject message, QString self_addr);
|
||||
private:
|
||||
explicit ZigBeeDataResolver(QObject *parent = nullptr);
|
||||
~ZigBeeDataResolver();
|
||||
|
@ -26,7 +29,7 @@ private:
|
|||
QMap<uint16_t, QPair<device,device>> nodes;
|
||||
QList<uint16_t> _allow_list,_deny_list,_wait_queue;
|
||||
signals:
|
||||
void data_send(QString type, QJsonObject data, QList<uint16_t> allow_list, QList<uint16_t> deny_list, QList<uint16_t> wait_queue);
|
||||
void data_send(QString type, QJsonObject data);
|
||||
};
|
||||
|
||||
#endif // ZIGBEEDATARESOLVER_H
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#include <QJsonObject>
|
||||
#include <QQueue>
|
||||
#include <zigbeeframe.h>
|
||||
#include "../3rdparty/RibbonUI/lib_source/definitions.h"
|
||||
#include "protocol.h"
|
||||
#include "eventsbus.h"
|
||||
#include "config.h"
|
||||
|
@ -19,14 +18,20 @@ class ZigBeeParser : public QObject
|
|||
QML_ELEMENT
|
||||
QML_SINGLETON
|
||||
QML_NAMED_ELEMENT(ZigBeeParser)
|
||||
Q_PROPERTY_RW(QList<uint16_t>, allow_list)
|
||||
Q_PROPERTY_RW(QList<uint16_t>, deny_list)
|
||||
Q_PROPERTY_RW(QList<uint16_t>, wait_queue)
|
||||
Q_PROPERTY(QList<uint16_t> allow_list READ allow_list WRITE setAllow_list NOTIFY allow_listChanged FINAL)
|
||||
Q_PROPERTY(QList<uint16_t> deny_list READ deny_list WRITE setDeny_list NOTIFY deny_listChanged FINAL)
|
||||
Q_PROPERTY(QList<uint16_t> wait_queue READ wait_queue WRITE setWait_queue NOTIFY wait_queueChanged FINAL)
|
||||
Q_PROPERTY(QString self_addr READ self_addr FINAL)
|
||||
Q_PROPERTY(QString hmac_verify_key READ hmac_verify_key WRITE setHmac_verify_key NOTIFY hmac_verify_keyChanged FINAL)
|
||||
Q_PROPERTY(QStringList pre_hmac_verify_key READ pre_hmac_verify_key WRITE setPre_hmac_verify_key NOTIFY pre_hmac_verify_keyChanged FINAL)
|
||||
public:
|
||||
Q_INVOKABLE QString self_addr(){ _self_addr = QString::number(_protocol->self_addr,16).toUpper(); return _self_addr;};
|
||||
QList<uint16_t> allow_list(){if(!_resolver)_resolver=ZigBeeDataResolver::instance();return _resolver->get_allow_list();};
|
||||
void setAllow_list(QList<uint16_t> allow_list){if(!_resolver)_resolver=ZigBeeDataResolver::instance();QList<uint16_t> &a=_resolver->get_allow_list();a=allow_list;emit allow_listChanged();};
|
||||
QList<uint16_t> deny_list(){if(!_resolver)_resolver=ZigBeeDataResolver::instance();return _resolver->get_deny_list();};
|
||||
void setDeny_list(QList<uint16_t> deny_list){if(!_resolver)_resolver=ZigBeeDataResolver::instance();QList<uint16_t> &a=_resolver->get_deny_list();a=deny_list;emit deny_listChanged();};
|
||||
QList<uint16_t> wait_queue(){if(!_resolver)_resolver=ZigBeeDataResolver::instance();return _resolver->get_wait_queue();};
|
||||
void setWait_queue(QList<uint16_t> wait_queue){if(!_resolver)_resolver=ZigBeeDataResolver::instance();QList<uint16_t> &a=_resolver->get_wait_queue();a=wait_queue;emit wait_queueChanged();};
|
||||
QString hmac_verify_key(){ return _protocol->hmac_verify_key;};
|
||||
void setHmac_verify_key(QString key){ _config->Set("Protocol","hmac_verify_key",key); _protocol->hmac_verify_key = key;emit hmac_verify_keyChanged();};
|
||||
QStringList pre_hmac_verify_key(){ return _protocol->pre_hmac_verify_key;};
|
||||
|
@ -37,7 +42,10 @@ public:
|
|||
signals:
|
||||
void hmac_verify_keyChanged();
|
||||
void pre_hmac_verify_keyChanged();
|
||||
void message_recved(QJsonObject message, QString self_addr, QList<uint16_t> allow_list, QList<uint16_t> deny_list, QList<uint16_t> wait_queue);
|
||||
void allow_listChanged();
|
||||
void deny_listChanged();
|
||||
void wait_queueChanged();
|
||||
void message_recved(QJsonObject message, QString self_addr);
|
||||
private:
|
||||
explicit ZigBeeParser(QObject *parent = nullptr);
|
||||
~ZigBeeParser();
|
||||
|
@ -50,6 +58,6 @@ private:
|
|||
ZigBeeDataResolver* _resolver = nullptr;
|
||||
QThread *_thread = nullptr;
|
||||
private slots:
|
||||
void bus_data_send(QString type, QJsonObject data, QList<uint16_t> allow_list, QList<uint16_t> deny_list, QList<uint16_t> wait_queue);
|
||||
void bus_data_send(QString type, QJsonObject data);
|
||||
};
|
||||
#endif // ZIGBEEPARSER_H
|
||||
|
|
|
@ -32,6 +32,8 @@ RibbonView{
|
|||
end_index = count-1
|
||||
//console.log('append:',begin_index,end_index)
|
||||
}
|
||||
if(count===0)
|
||||
show_model.clear()
|
||||
}
|
||||
}
|
||||
ListModel{
|
||||
|
@ -40,16 +42,17 @@ RibbonView{
|
|||
|
||||
ListView{
|
||||
id: message_list
|
||||
cacheBuffer: message_list.height * 2
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.preferredHeight: contentHeight
|
||||
Layout.preferredWidth: parent.width
|
||||
interactive: false
|
||||
model: show_model
|
||||
add: Transition {
|
||||
NumberAnimation { properties: "y"; from: message_list.height; duration: 200 }
|
||||
NumberAnimation { properties: "y"; from: message_list.height; duration: 100 }
|
||||
}
|
||||
displaced: Transition {
|
||||
NumberAnimation { properties: "y"; duration: 200 }
|
||||
NumberAnimation { properties: "y"; duration: 100 }
|
||||
}
|
||||
}
|
||||
Connections{
|
||||
|
|
|
@ -17,12 +17,13 @@ int main(int argc, char *argv[])
|
|||
QGuiApplication app(argc, argv);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder);
|
||||
FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur);
|
||||
FramelessConfig::instance()->set(Global::Option::UseCrossPlatformQtImplementation);
|
||||
//FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder);
|
||||
//FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur);
|
||||
#else
|
||||
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
|
||||
#endif
|
||||
FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow);
|
||||
FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow);
|
||||
|
||||
QTranslator translator;
|
||||
bool result = translator.load(QLocale::system(), u""_qs, u""_qs, u":/translations"_qs);
|
||||
if (result)
|
||||
|
|
|
@ -89,7 +89,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("recieved", true);
|
||||
object.insert("sender", sender);
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
return;
|
||||
}
|
||||
switch (zframe.getDesPort()) {
|
||||
|
@ -102,7 +102,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的验证信息"));
|
||||
object.insert("recieved", true);
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
if (_allow_list.contains(node->first.addr))
|
||||
{
|
||||
u8 hmac[33]="";
|
||||
|
@ -127,9 +127,9 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("recieved", false);
|
||||
object.insert("sender", QString::number(_protocol->self_addr,16).toUpper());
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
if(!is_demo)
|
||||
emit data_send("serial_port",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("serial_port",object);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -158,9 +158,9 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("recieved", false);
|
||||
object.insert("sender", QString::number(_protocol->self_addr,16).toUpper());
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
if(!is_demo)
|
||||
emit data_send("serial_port",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("serial_port",object);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("recieved", true);
|
||||
object.insert("sender", sender);
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
}
|
||||
}
|
||||
else if(_deny_list.contains(node->first.addr))
|
||||
|
@ -178,7 +178,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue("节点0x"+QString::number(((base_frame *)zframe.getData().data())->ori_addr,16).toUpper()+"被禁止接入"));
|
||||
object.insert("recieved", true);
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
}
|
||||
else {
|
||||
if (!_wait_queue.contains(node->first.addr))
|
||||
|
@ -189,7 +189,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue("节点0x"+QString::number(((base_frame *)zframe.getData().data())->ori_addr,16).toUpper()+"进入等待队列"));
|
||||
object.insert("recieved", true);
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -198,7 +198,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue("节点0x"+QString::number(((base_frame *)zframe.getData().data())->ori_addr,16).toUpper()+"已在等待队列"));
|
||||
object.insert("recieved", true);
|
||||
object.insert("type","zigbee_identify_data");
|
||||
emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_identify_data_view",object);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -231,7 +231,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("type","zigbee_recv_data");
|
||||
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,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_recv_data_view",object);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -240,7 +240,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue("收到节点0x"+sender+"发送的数据,但节点并未认证"));
|
||||
object.insert("recieved", true);
|
||||
object.insert("type","zigbee_recv_data");
|
||||
emit data_send("zigbee_recv_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_recv_data_view",object);
|
||||
node->second.id=0;
|
||||
new_data_frame(5) dframe;
|
||||
memset(&dframe,0,sizeof (dframe));
|
||||
|
@ -256,7 +256,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b
|
|||
object.insert("note_text",QJsonValue("向节点0x"+sender+"发送重置命令"));
|
||||
object.insert("recieved", false);
|
||||
object.insert("type","zigbee_recv_data");
|
||||
emit data_send("zigbee_recv_data_view",object,_allow_list,_deny_list,_wait_queue);
|
||||
emit data_send("zigbee_recv_data_view",object);
|
||||
}
|
||||
}
|
||||
default:
|
||||
|
@ -275,12 +275,9 @@ void ZigBeeDataResolver::remote_addr_parser(zigbee_protocol::ZigbeeFrame &zframe
|
|||
}
|
||||
}
|
||||
|
||||
void ZigBeeDataResolver::message_parser(QJsonObject message, QString self_addr, QList<uint16_t> allow_list, QList<uint16_t> deny_list, QList<uint16_t> wait_queue)
|
||||
void ZigBeeDataResolver::message_parser(QJsonObject message, QString self_addr)
|
||||
{
|
||||
_self_addr = self_addr;
|
||||
_allow_list = allow_list;
|
||||
_deny_list = deny_list;
|
||||
_wait_queue = wait_queue;
|
||||
if (message["type"] == "demo_verify_request")
|
||||
{
|
||||
hmac_frame frame;
|
||||
|
|
|
@ -49,13 +49,10 @@ ZigBeeParser* ZigBeeParser::instance()
|
|||
|
||||
void ZigBeeParser::message_parser(QJsonObject message)
|
||||
{
|
||||
emit message_recved(message, _self_addr, _allow_list, _deny_list, _wait_queue);
|
||||
emit message_recved(message, _self_addr);
|
||||
}
|
||||
|
||||
void ZigBeeParser::bus_data_send(QString type, QJsonObject data, QList<uint16_t> allow_list, QList<uint16_t> deny_list, QList<uint16_t> wait_queue)
|
||||
void ZigBeeParser::bus_data_send(QString type, QJsonObject data)
|
||||
{
|
||||
_bus->push_data(type, data);
|
||||
_allow_list = allow_list;
|
||||
_deny_list = deny_list;
|
||||
_wait_queue = wait_queue;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue