1
0
This repository has been archived on 2023-11-30. You can view files and clone it, but cannot push or open issues or pull requests.
dtux__zigbeemanager/zigateInit.cpp

712 lines
27 KiB
C++
Raw Normal View History

2023-04-20 13:42:00 +02:00
#include "zigateBackend.h"
2023-04-29 15:15:19 +02:00
#include "serial.inc.h"
2023-04-20 13:42:00 +02:00
#include <QByteArray>
extern ZigateBackend zigateBkd;
2023-04-29 15:15:19 +02:00
extern SerialManager serialManager;
2023-04-24 21:57:35 +02:00
extern QHash <QString, ResponseProperties *> responseListIndex;
2023-04-20 13:42:00 +02:00
using namespace std;
bool ZigateBackend::initBackend()
{
bool returnCode = false;
QString var;
ResponseProperties * temp;
foreach (var, responseListCode)
{
temp = new ResponseProperties();
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
responseListIndex.insert(var, temp) ;
}
temp = responseListIndex["004D"];
temp->code = QByteArray::fromHex("004D");
temp->description = "Device announce";
temp->properties =
{
// {rang, {designation, nbyte, isvalue}}
// isvalue = 0 => display value
// = 1 => is array of bits
2023-04-24 21:57:35 +02:00
// = 2 => is index of string in list
// = 3 => launch a subroutine pointed by propertyManagerList
// = 4 => is a list of objects
2023-04-20 13:42:00 +02:00
{0, {"Short address", 2, 0}}, // uint16_t
{1, {"IEEE address", 4, 0}}, // uint64_t
2023-04-24 21:57:35 +02:00
{2, {"MAC capability", 1, 3}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->propertyManagerList[2] = &macCapabilityManager;
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp->propertyDetail[2] =
{
{1, "Alternate PAN Coordinator"},
{2, "Device Type"},
{4, "Power source"},
{8, "Receiver On when Idle"},
{64, "Security capability"},
{128, "Allocate Address"}
};
// *****************************************************************************
// MAC capability
// Bit 0 - Alternate PAN Coordinator
// Bit 1 - Device Type
// Bit 2 - Power source
// Bit 3 - Receiver On when Idle
// Bit 4,5 - Reserved
// Bit 6 - Security capability
// Bit 7 - Allocate Address
// ******************************************************************************
temp = responseListIndex["8000"];
temp->code = QByteArray::fromHex("8000");
temp->description = "Status returned by command";
temp->properties =
{
{0, {"Status", 1, 2}}, // <uint8_t>
{1, {"Sequence number", 1, 0}}, // <uint8_t>
{2, {"Packet Type", 2, 0}}, // <uint16_t>
2023-04-24 21:57:35 +02:00
{3, {"Optional additional error information", -1, 5}} // <string>
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp->propertyDetail[0] =
{
{0, "Success"},
{1, "Incorrect parameters"},
{2, "Unhandled command"},
{3, "Command failed"},
{4, "Busy (Node is carrying out a lengthy operation and is currently unable to handle the incoming command)"},
{5, "Stack already started (no new configuration accepted)"},
{-1, "Failed"}
};
// *****************************************************************************
2023-04-24 21:57:35 +02:00
// // Status :
// // 0 = Success
// // 1 = Incorrect parameters
// // 2 = Unhandled command
// // 3 = Command failed
// // 4 = Busy (Node is carrying out a lengthy operation and is currently unable to handle the incoming command)
// // 5 = Stack already started (no new configuration accepted)
// // 128 244 = Failed (ZigBee event codes)
// // Packet Type: The value of the initiating command request.
2023-04-20 13:42:00 +02:00
// ******************************************************************************
temp = responseListIndex["8001"];
temp->code = QByteArray::fromHex("8001");
temp->description = "Log message";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Log level", 1, 2}}, // uint8_t
{1, {"Log message", -1, 5}} // string
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
temp->propertyDetail[0] =
{
{0, "Emergency"},
{1, "Alert"},
{2, "Critical"},
{3, "Error"},
{4, "Warning"},
{5, "Notice"},
{6, "Information"},
{7, "Debug"}
};
// *********************************************************************************
// 0 = Emergency
// 1 = Alert
// 2 = Critical
// 3 = Error
// 4 = Warning
// 5 = Notice
// 6 = Information
// 7 = Debug
// *********************************************************************************
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8002"];
temp->code = QByteArray::fromHex("8002");
temp->description = "Data indication";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"status", 1, 1}}, // uint8_t
{1, {"Profile ID", 2, 0}}, // uint16_t
{2, {"Cluster ID", 2, 0}}, // uint16_t
{3, {"Source endpoint", 1, 0}}, // uint8_t
{4, {"Destination endpoint", 1, 0}}, // uint8_t
{5, {"Source address mode", 1, 0}}, // uint8_t TODO
{6, {"Source address", 2, 0}}, // uint16_t or uint64_t
{7, {"Destination address mode", 0}}, // uint8_t TODO
2023-04-20 13:42:00 +02:00
{8, {"Destination address", 2}}, // uint16_t or uint64_t
{9, {"Payload size", 1}}, // uint8_t
{10, {"Payload", -1}} // data each element is uint8_t
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager; //dataIndicationManager
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8003"];
temp->code = QByteArray::fromHex("8003");
temp->description = "list of object's clusters";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Source endpoint", 1, 0}}, // uint8_t
{1, {"Profile ID", 2, 0}}, // uint16_t
{2, {"Cluster list", 0, 0}}, // data each entry is uint16_t
{3, {"Source endpoint", 1, 0}}, // uint8_t
{4, {"Profile ID", 2, 0}}, // uint16_t
{5, {"Cluster ID", 2, 0}}, // uint16_t
{6, {"Attribute list", 2 ,0}} // data each entry is uint16_t
2023-04-20 13:42:00 +02:00
};
temp->manager = &clustersListManager;
temp = responseListIndex["8004"];
temp->code = QByteArray::fromHex("8004");
temp->description = "list of object's attributes";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Source endpoint", 1, 0}}, // uint8_t
{1, {"Profile ID", 2, 0}}, // uint16_t
{2, {"Cluster ID", 2, 0}}, // uint16_t
{3, {"Attribute list", 2, 0}} // data each entry is uint16_t>
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager; //TODO
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8005"];
temp->code = QByteArray::fromHex("8005");
temp->description = "List of object's commands";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Source endpoint", 1, 0}}, // uint8_t
{1, {"Profile ID", 1, 0}}, // uint16_t
{2, {"Cluster ID", 1, 0}}, // uint16_t
{3, {"Command ID list", -1, 0}} // data each entry is uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager; //TODO
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8006"];
temp->code = QByteArray::fromHex("8006");
2023-04-24 21:57:35 +02:00
temp->description = "Status after restart";
2023-04-20 13:42:00 +02:00
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Status after restart: ", 1, 2}}
};
temp->manager = &defaultManager;
temp->propertyDetail[0] =
{
{0, "Startup"},
{1, "NFN_START"},
{2, "RUNNING"},
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
// *****************************************************************************
// 0 - STARTUP
// 2 - NFN_START
// 6 - RUNNING
// The node is provisioned from previous restart.
// *****************************************************************************
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8007"];
temp->code = QByteArray::fromHex("8007");
2023-04-24 21:57:35 +02:00
temp->description = "Status after start";
2023-04-20 13:42:00 +02:00
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Status after start: ", 1, 2}}
};
temp->manager = &defaultManager;
temp->propertyDetail[0] =
{
{0, "Startup"},
{1, "NFN_START"},
{2, "RUNNING"},
2023-04-20 13:42:00 +02:00
};
temp = responseListIndex["8008"];
temp->code = QByteArray::fromHex("8008");
temp->description = "HeartBeat";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"UTC time :", 4, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8009"];
temp->code = QByteArray::fromHex("8009");
temp->description = "Network state";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Short Address: ", 2, 0}},
{1, {"Extended Address: ", 8, 0}},
{2, {"PAN ID: ", 2, 0}},
{3, {"Extended PAN ID: ", 8, 0}},
{4, {"Channel: ", 8, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8010"];
temp->code = QByteArray::fromHex("8010");
temp->description = "Version List";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Major version number", 2, 0}}, // uint16_t
{1, {"Installer version number", 2, 0}} // uint16_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8011"];
temp->code = QByteArray::fromHex("8011");
temp->description = "Ack Data";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Status: ", 1, 0}},
{1, {"Destination address: ", 2, 0}},
{2, {"Destination endpoint: ", 1, 0}},
{3, {"Cluster ID :", 2, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8012"];
temp->code = QByteArray::fromHex("8012");
temp->description = "DATA_CONFIRM";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Status: ", 1, }},
{1, {"Source Endpoint: ", 1, 0}},
{2, {"Destination endpoint: ", 1, 0}},
{3, {"Destination Address mode:", 1, 0}},
{4, {"Destination IEEE address: ", 8, 0}},
{5, {"APS Sequence number: ", 1, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8014"];
temp->code = QByteArray::fromHex("8014");
temp->description = "Permit join status response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Status", 1, 2}} // bool_t
};
temp->manager = &defaultManager;
temp->propertyDetail[0] =
{
{0, "Off"},
{1, "On"}
2023-04-20 13:42:00 +02:00
};
temp = responseListIndex["8015"];
temp->code = QByteArray::fromHex("8015");
temp->description = "Device list";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Device List", 1, 4}} // bool_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &deviceListManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8017"];
temp->code = QByteArray::fromHex("8017");
temp->description = "Time server";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"UTC Time: ", 1, 0}} // <Timestamp UTC: uint32_t> from 2000-01-01 00:00:00
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8024"];
temp->code = QByteArray::fromHex("8024");
temp->description = "Network joined/formed";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Status", 1, 2}}, // uint8_t
{1, {"Short address", 2, 0}}, // uint16_t
{2, {"Extended address", 4, 0}}, // uint64_t
{3, {"Channel", 1, 0}} // uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
temp->propertyDetail[0] =
{
{0, "Joined"},
{1, "Formed new network"},
{-1, "Failed"}
2023-04-20 13:42:00 +02:00
};
temp = responseListIndex["8028"];
temp->code = QByteArray::fromHex("8028");
temp->description = "Authenticate response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"IEEE address of the Gateway: ", 8, 0}},
{1, {"Encrypted Key: ", 16, 0}},
{2, {"MIC: ", 4, 0}},
{3, {"IEEE address of the initiating node: ", 8, 0}},
{4, {"Active Key Sequence number: ", 1, 0}},
{5, {"Channel: ", 1, 0}},
{6, {"Short PAN Id: ", 2, 0}},
{7, {"Extended PAN ID: ", 8, 0}},
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["802B"];
temp->code = QByteArray::fromHex("802B");
temp->description = "User Descriptor Notify";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uin8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"Network address of interest", 2, 0}} // uint16_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["802C"];
temp->code = QByteArray::fromHex("802C");
temp->description = "User Descriptor Response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uin8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"Network address of interest", 2, 0}}, // uint16_6
{3, {"Length", 1, 0}}, // uint8_t
2023-04-20 13:42:00 +02:00
{4, {"Data", -1}} // uint8_t stream
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8030"];
temp->code = QByteArray::fromHex("8030");
temp->description = "Bind response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Status", 1}}, // uint8_t
{2, {"Source address mode: ", 1, 0}}, // uint8_t> (only from v3.1a)
{3, {"Source Address: ", 2, 0}} // uint16_t> (only from v3.1a)
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8031"];
temp->code = QByteArray::fromHex("8031");
temp->description = "Unbind response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1}}, // uint8_t
{1, {"Status", 1}}, // uint8_t
{2, {"Source address mode: ", 1, 0}}, // uint8_t> (only from v3.1a)
{3, {"Source Address: ", 2, 0}} // uint16_t> (only from v3.1a)
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8035"];
temp->code = QByteArray::fromHex("8035");
temp->description = "PDM event";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Event status: ", 1, 2}}, // uint8_t
{1, {"record ID: ", 4, 0}} // uint8_t
};
temp->manager = &defaultManager;
temp->propertyDetail[0] =
{
{0, "E_PDM_SYSTEM_EVENT_WEAR_COUNT_TRIGGER_VALUE_REACHED"},
{1, "E_PDM_SYSTEM_EVENT_DESCRIPTOR_SAVE_FAILED"},
{1, "E_PDM_SYSTEM_EVENT_PDM_NOT_ENOUGH_SPACE"},
{1, "E_PDM_SYSTEM_EVENT_LARGEST_RECORD_FULL_SAVE_NO_LONGER_POSSIBLE"},
{1, "E_PDM_SYSTEM_EVENT_SEGMENT_DATA_CHECKSUM_FAIL"},
{1, "E_PDM_SYSTEM_EVENT_SEGMENT_SAVE_OK"},
{1, "E_PDM_SYSTEM_EVENT_EEPROM_SEGMENT_HEADER_REPAIRED"},
{1, "E_PDM_SYSTEM_EVENT_SYSTEM_INTERNAL_BUFFER_WEAR_COUNT_SWAP"},
{1, "E_PDM_SYSTEM_EVENT_SYSTEM_DUPLICATE_FILE_SEGMENT_DETECTED"},
{1, "E_PDM_SYSTEM_EVENT_SYSTEM_ERROR"},
{1, "E_PDM_SYSTEM_EVENT_SEGMENT_PREWRITE"},
{1, "E_PDM_SYSTEM_EVENT_SEGMENT_POSTWRITE"},
{1, "E_PDM_SYSTEM_EVENT_SEQUENCE_DUPLICATE_DETECTED"},
{1, "E_PDM_SYSTEM_EVENT_SEQUENCE_VERIFY_FAIL"},
{1, "E_PDM_SYSTEM_EVENT_PDM_SMART_SAVE"},
{1, "E_PDM_SYSTEM_EVENT_PDM_FULL_SAVE"}
2023-04-20 13:42:00 +02:00
};
temp = responseListIndex["8040"];
temp->code = QByteArray::fromHex("8040");
temp->description = "Network Address response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uin8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"IEEE address", 4, 0}}, // uint64_t
{3, {"Short address", 2, 0}}, // uint16_t
{4, {"Number of associated devices", 1, 0}}, // uint8_t
{5, {"Start index", 1, 0}}, // uint8_t
{6, {"Device list", -1, 4}} // data each entry is uint16_t>
2023-04-20 13:42:00 +02:00
};
temp->manager = &networkAddressManager;
temp = responseListIndex["8041"];
temp->code = QByteArray::fromHex("8041");
temp->description = "IEEE Address response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uin8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"IEEE address", 4, 0}}, // uint64_t
{3, {"Short address", 2, 0}}, // uint16_t
{4, {"Number of associated devices", 1, 0}}, // uint8_t
{5, {"Start index", 1, 0}}, // uint8_t
{6, {"Device list", -1, 4}} // data each entry is uint16_t
2023-04-20 13:42:00 +02:00
};
temp->manager = &iEEEAddressManager;
temp = responseListIndex["8042"];
temp->code = QByteArray::fromHex("8042");
temp->description = "Node Descriptor response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Network address", 2, 0}}, // uint16_t
{2, {"Manufacturer code", 2, 0}}, // uint16_t
{3, {"Max Rx Size", 2, 0}}, // uint16_t
{4, {"Max Tx Size", 2, 0}}, // uint16_t
{5, {"Server mask", 2, 0}}, // uint16_t
{6, {"Descriptor capability", 1, 0}}, // uint8_t
{7, {"Mac flags", 1, 0}}, // uint8_t
{8, {"Max buffer size", 1, 0}}, // uint8_t
{9, {"Bit fields", 2, -1}} // uint16_t
2023-04-20 13:42:00 +02:00
};
temp->manager = &nodeDescriptorManager;
temp = responseListIndex["8043"];
temp->code = QByteArray::fromHex("8043");
temp->description = "Simple Descriptor response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"NwkAddress", 2, 0}}, // uint16_t
{3, {"Length", 1, 0}}, // uint8_t
{4, {"Endpoint", 1, 0}}, // uint8_t
{5, {"Profile", 2, 0}}, // uint16_t
{6, {"Device id", 2, 0}}, // uint16_t
{7, {"Bit fields", 1, 0}}, // uint8_t
{8, {"InClusterCount", 1, 0}}, // uint8_t
{9, {"In cluster list", 0, 0}}, // data each entry is uint16_t>
{10, {"Out Cluster Count", 1, 0}}, // uint8_t
{11, {"Out cluster list", -1, 0}} // data each entry is uint16_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager; //TODO
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8044"];
temp->code = QByteArray::fromHex("8044");
temp->description = "Power Descriptor response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uin8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"bit field", 2, }} // uint16_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
// ******************************************
// 0 to 3: current power mode
// 4 to 7: available power source
// 8 to 11: current power source
// 12 to 15: current power source level
// ******************************************
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8045"];
temp->code = QByteArray::fromHex("8045");
temp->description = "Active Endpoint response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"Address", 2, 0}}, // uint16_t
{3, {"Endpoint count", 1, 0}}, // uint8_t
{4, {"Active endpoint list", -1, 0}} // each data element of the type uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8046"];
temp->code = QByteArray::fromHex("8046");
temp->description = "Match Descriptor response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"Network address", 2, 0}}, // uint16_t
{3, {"Length of list", 1, 0}}, // uint8_t
{4, {"Match list", -1, 0}} // data each entry is uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8047"];
temp->code = QByteArray::fromHex("8047");
temp->description = "Management Leave response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Status", 1, 0}} // uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8048"];
temp->code = QByteArray::fromHex("8048");
temp->description = "Leave indication";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Extended address", 4, 0}}, // uint64_t
{1, {"Rejoin status", 1, 0}} // uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8049"];
temp->code = QByteArray::fromHex("8049");
temp->description = "PDM child table size";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Number of child: ", 1, 0}} // data each entry is uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["804A"];
temp->code = QByteArray::fromHex("804A");
temp->description = "Management Network Update response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"Status", 1, 0}}, // uint8_t
{2, {"Total transmission", 2, 0}}, // uint16_t
{3, {"Transmission failures", 2, 0}}, // uint16_t
{4, {"Scanned channels", 4, 0}}, // uint32_t
{5, {"Scanned channel list count", 1, 0}}, // uint8_t
{6, {"Channel list", -1, 0}} // list each element is uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["804B"];
temp->code = QByteArray::fromHex("804B");
temp->description = "System Server Discovery response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"status", 1, 0}}, // uint8_t
{2, {"Server mask", 2, 0}} // uint16_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["804E"];
temp->code = QByteArray::fromHex("804E");
temp->description = "Management LQI response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number", 1, 0}}, // uint8_t
{1, {"status", 1, 0}}, // uint8_t
{2, {"Neighbour Table Entries ", 1, 0}}, // uint8_t
{3, {"Neighbour Table List Count ", 1, 0}}, // uint8_t
{4, {"Start Index ", 1, 0}}, // uint8_t
{5, {"List of Entries elements described below", -1, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8060"];
temp->code = QByteArray::fromHex("8060");
temp->description = "Add group";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number: ", 1, 0}},
{1, {"Endpoint: ", 1, 0}},
{2, {"Cluster id: ", 2, 0}},
{3, {"Status: ", 1, 0}}, //(added only from 3.0f version)
{4, {"Group id :", 2, 0}}, //(added only from 3.0f version)
{5, {"Source Address: ", 2, 0}}, //(added only from 3.0f version)
{6, {"Number of child: ", 1, 0}} // data each entry is uint8_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8061"];
temp->code = QByteArray::fromHex("8061");
temp->description = "View group";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number: ", 1, 0}},
{1, {"Endpoint: ", 1, 0}},
{2, {"Cluster id: ", 2, 0}},
{3, {"Status: ", 1, 0}}, //(added only from 3.0f version)
{4, {"Group id :", 2, 0}}, //(added only from 3.0f version)
{5, {"Source Address: ", 2, 0}} //(added only from 3.0f version)
};
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8062"];
temp->code = QByteArray::fromHex("8062");
temp->description = "Group membership";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number: ", 1, 0}},
{1, {"Endpoint: ", 1, 0}},
{2, {"Cluster id: ", 2, 0}},
{3, {"Source Address:", 2, 0}}, //(added only from 3.0d version)
{4, {"Capacity: ", 1, 0}},
{5, {"Group count: ", 1, 0}},
{6, {"List of Group id: ", 2, 0}}, //list each data item uint16_t>
{7, {"Source Addr: ", 2, 0}} //(added only from 3.0f version)
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8063"];
temp->code = QByteArray::fromHex("8063");
temp->description = "Remove group";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number: ", 1, 0}},
{1, {"Endpoint: ", 1, 0}},
{2, {"Cluster id: ", 2, 0}},
{3, {"Source Address:", 2, 0}}, //(added only from 3.0d version)
{4, {"Status: ", 1, 0}},
{5, {"Group ID: ", 2, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8085"];
temp->code = QByteArray::fromHex("8085");
temp->description = "Level update";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number: ", 1, 0}},
{1, {"Endpoint: ", 1, 0}},
{2, {"Cluster id: ", 2, 0}},
{3, {"Source Address mode:", 1, 0}}, //(added only from 3.0d version)
{4, {"Source Address:", 2, 0}}, //(added only from 3.0d version)
{5, {"Status: ", 1, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8095"];
temp->code = QByteArray::fromHex("8095");
temp->description = "On/Off";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Sequence number: ", 1, 0}},
{1, {"Endpoint: ", 1, 0}},
{2, {"Cluster id: ", 2, 0}},
{3, {"Source Address mode:", 1, 0}}, //(added only from 3.0d version)
{4, {"Source Address:", 2, 0}}, //(added only from 3.0d version)
{5, {"Status: ", 1, 0}}
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
temp = responseListIndex["8140"];
temp->code = QByteArray::fromHex("8140");
temp->description = "Attribute Discovery response";
temp->properties =
{
2023-04-24 21:57:35 +02:00
{0, {"Complete", 1, 0}}, // uint8_t
{1, {"Attribute type", 1, 0}}, // uint8_t
{2, {"Attribute id", 2, 0}} // uint16_t
2023-04-20 13:42:00 +02:00
};
2023-04-24 21:57:35 +02:00
temp->manager = &defaultManager;
2023-04-20 13:42:00 +02:00
2023-04-29 15:15:19 +02:00
serialManager.initSerial();
connect(&serialManager, SIGNAL(datasReady(QByteArray)), this, SLOT(interpretResult(QByteArray)));
2023-04-20 13:42:00 +02:00
resetCoordinator();
2023-04-29 15:15:19 +02:00
getVersion();
2023-04-20 13:42:00 +02:00
return returnCode;
}
2023-04-24 21:57:35 +02:00
void infoOutput(Response *object)
2023-04-20 13:42:00 +02:00
{
2023-04-24 21:57:35 +02:00
cout << object->code.toHex().toStdString() << " : " << object->description.toStdString() << endl;
2023-04-20 13:42:00 +02:00
}