From e5ff3716a768bddefde060cdd015c88179b85cd2 Mon Sep 17 00:00:00 2001 From: Daniel Tartavel Date: Mon, 1 May 2023 16:23:16 +0200 Subject: [PATCH] - breaking in 2 parts, main program and library --- library.cpp | 19 -- library.h | 14 - responseClasses.h | 38 --- serial.inc.cpp | 109 ------- serial.inc.h | 46 --- zigateBackend.cpp | 430 ---------------------------- zigateBackend.h | 336 ---------------------- zigateInit.cpp | 711 ---------------------------------------------- zigatecmd.cpp | 465 ------------------------------ 9 files changed, 2168 deletions(-) delete mode 100644 library.cpp delete mode 100644 library.h delete mode 100644 responseClasses.h delete mode 100644 serial.inc.cpp delete mode 100644 serial.inc.h delete mode 100644 zigateBackend.cpp delete mode 100644 zigateBackend.h delete mode 100644 zigateInit.cpp delete mode 100644 zigatecmd.cpp diff --git a/library.cpp b/library.cpp deleted file mode 100644 index 251865a..0000000 --- a/library.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -using namespace std; - -extern int debugLevel; - -void debug(QString text, int level) -{ - if (level & debugLevel) - { - cout << text.toStdString() << endl; - } -} - -void signal_handler(int signal) -{ - cout << "Received signal " << signal << endl; -} diff --git a/library.h b/library.h deleted file mode 100644 index 2b783a1..0000000 --- a/library.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef LIBRARY_H -#define LIBRARY_H - -#include - -#define DEBUG 1 -#define INFO 2 -#define WARNING 3 -#define ERROR 4 - -void debug(QString text, int level); -void signal_handler(int signal); - -#endif // LIBRARY_H diff --git a/responseClasses.h b/responseClasses.h deleted file mode 100644 index 5f37568..0000000 --- a/responseClasses.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef RESPONSECLASSES_H -#define RESPONSECLASSES_H -#include -#include -#include -#include -#include -#include - -//void (*propertyManager)(QByteArray); - -class Response -{ - public: - QByteArray code; - QByteArray datas; - QString description; - void manager(Response *); -}; - -class ResponseProperties -{ - public: - QByteArray code; - QByteArray datas; - QString description; - QMap > properties; - QMap > propertyDetail; - QHash propertyManagerList; - void (*manager)(Response *); -}; - -void infoOutput(Response *); -void defaultManager(Response *); -//void (*manager)(Response *); -void macCapabilityManager(QByteArray); - -#endif // RESPONSECLASSES_H diff --git a/serial.inc.cpp b/serial.inc.cpp deleted file mode 100644 index b8e29ef..0000000 --- a/serial.inc.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "serial.inc.h" -#include -#include "zigateBackend.h" - -extern QApplication a; -extern ZigateBackend zigateBkd; - -using namespace std; - -SerialManager::SerialManager() -{ -} - -SerialManager::~SerialManager() -{ - this->close(); -} - -void SerialManager::initSerial() -{ - bool test; - bool result; - - while (1) - { - result = this->findSerialDevice(); - if (result) - { - debug("Device found :" + this->serialDevicePath, INFO); - break; - }else - { - cout << "Device not found, waiting 10 seconds before retrying" << endl; - sleep(10); - } - } - - this->setBaudRate(115200); - this->setDataBits(QSerialPort::Data8); - this->setStopBits(QSerialPort::OneStop); - this->setParity(QSerialPort::NoParity); - this->setPortName(this->serialDevicePath); - - do - { - test = this->open(QIODevice::ReadWrite); - if (!test) - { - cout << this->errorString().toStdString() << "=>" << this->serialDevicePath.toStdString() << endl; - sleep(5); - } - }while(!test); - - - QFutureWatcher watcher; - QFuture future = QtConcurrent::run([=]() - { - do - { - this->dataRead.clear(); - //cout << "getData()" << endl; - if (this->waitForReadyRead()) - { - while (!this->atEnd()) - { - cout << "reading datas" << endl; - this->dataRead += this->readAll(); - //cout << this->dataRead.toHex().toStdString() << endl; - } - } - emit this->datasReady(this->dataRead); - //zigateBkd.interpretResult(this->dataRead); - }while(1); - }); - watcher.setFuture(future); -} - - - -void SerialManager::write(QByteArray msg) -{ - cout << "writing to serial" << endl; - dataWriteSize = msg.count(); - cout << "size = " << dataWriteSize << endl; - this->writeData(msg, msg.count()+1); - cout << msg.toHex().toStdString() << endl; -} - -bool SerialManager::findSerialDevice() -{ - const auto serialPortInfos = QSerialPortInfo::availablePorts(); - for (const QSerialPortInfo &portInfo : serialPortInfos) - { - cout << portInfo.serialNumber().toStdString() << this->deviceName.toStdString() << endl; - if (portInfo.serialNumber().contains(this->deviceName)) - { - this->portName = portInfo.portName(); - this->serialDevicePath = portInfo.systemLocation(); - this->serialDeviceDescription = portInfo.description(); - this->serialDeviceManufacturer = portInfo.manufacturer(); - this->serialDeviceNumber = portInfo.serialNumber(); - this->serialDeviceVendor = portInfo.vendorIdentifier(); - this->serialDeviceProduct = portInfo.productIdentifier(); - return true; - } - } - return false; -} - diff --git a/serial.inc.h b/serial.inc.h deleted file mode 100644 index 38f2282..0000000 --- a/serial.inc.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef SERIAL_INC_H -#define SERIAL_INC_H - -//#include -#include -#include -#include -#include -#include - -class SerialManager : public QSerialPort -{ - Q_OBJECT - - public: - //QSerialPort * sp; - QByteArray dataRead; - QByteArray dataWrite; - qint64 dataWriteSize; - QString serialDevicePath; - QString deviceName; - QString portName; - QString serialDeviceDescription; - QString serialDeviceManufacturer; - QString serialDeviceNumber; - QString serialDeviceVendor; - QString serialDeviceProduct; - quint32 baudRate = 115200; - void write(QByteArray datas); - - SerialManager(); - ~SerialManager(); - - void initSerial(); - bool findSerialDevice(); - //void getData(); - - signals: - void datasReady(QByteArray); - - public slots: - -}; - - -#endif // SERIAL_INC_H diff --git a/zigateBackend.cpp b/zigateBackend.cpp deleted file mode 100644 index f19aab5..0000000 --- a/zigateBackend.cpp +++ /dev/null @@ -1,430 +0,0 @@ -#include "main.h" -#include -#include -#include "serial.inc.h" - -class BackEnds; -extern SerialManager serialManager; -extern QMap backends; -using namespace std; - -ZigateBackend zigateBkd; - -ZigateBackend::ZigateBackend() -{ - BackEnds zigate; - backends["Zigate"] = zigate; - backends["zigate"].name = "Zigate"; - backends["zigate"].device = "ZIGATE"; -} - -ZigateBackend::~ZigateBackend() -{ -} - -QByteArray ZigateBackend::checksum(QByteArray msgType, QByteArray length, QByteArray datas) -{ - quint16 temp = 0; - int i; - QString str; - - str = msgType.mid(0,2); - temp ^= str.toInt(nullptr, 16); - str = msgType.mid(2,2); - temp ^= str.toInt(nullptr, 16); - str = length.mid(0,2); - temp ^= str.toInt(nullptr, 16); - str = length.mid(2,2); - temp ^= str.toInt(nullptr, 16); - for (i=0;i<=(datas.count());i+=2) - { - str = datas.mid(i,2); - temp ^= str.toInt(nullptr, 16); - } - return QByteArray::number(temp, 16); -} - -QByteArray ZigateBackend::transcode(QByteArray datas) -{ - QByteArray msg = ""; - int i; - QByteArray byte; - if (datas.count()%2 != 0) - { - return "-1"; - } - for (i=0;i 15) - { - msg += byte; - }else - { - msg.append("02"); - msg.append(QByteArray::number(byte.toUInt(nullptr, 16) ^ 16, 16)); - } - } - return msg; -} - -QByteArray ZigateBackend::unTranscode(QByteArray datas) -{ - QByteArray result; - int i; - char tmp; - - if (datas.isEmpty()) - { - return "-1"; - } - - for (i=1;i<=datas.count()-2;i++) - { - tmp = datas.at(i); - if (tmp == 0x02) - { - i++; - result.append(datas[i] ^ 16); - }else - { - if (tmp != 0 and tmp != 1) - { - result += tmp; - } - } - } - cout << result.toHex(' ').toStdString() << endl; - return result; -} - -void ZigateBackend::sendCmd(QByteArray cmd, QByteArray datas) -{ - QByteArray msg; - QByteArray len; - - len = QByteArray::number(datas.count()/2, 16).insert(0,"000").right(4); - msg = QByteArray::fromHex("01"); - msg += QByteArray::fromHex(transcode(cmd)); - msg += QByteArray::fromHex(transcode(len)); - if (!datas.isEmpty()) - { - msg += QByteArray::fromHex(checksum(cmd, len, datas)); - msg += QByteArray::fromHex(transcode(datas)); - }else{ - msg += QByteArray::fromHex(checksum(cmd, len, "")); - } - msg += QByteArray::fromHex("03"); - serialManager.write(msg); - if (!serialManager.waitForBytesWritten(10000)) - { - cout << "error : no acknoledge of bytes written" << endl; - } - //this->interpretResult(this->dataRead); -} - -/*void ZigateBackend::getResponse() -{ - //this->getData(); - this->interpretResult(this->dataRead); - this->dataRead.clear(); -}*/ - -void ZigateBackend::interpretResult(QByteArray payload) -{ - uint tab = 0; - int length = 0; - quint8 crctmp = 0; - uint i = 0; - int datasResultLength = 0; - Response responseObject; - QByteArray type; - uint ln; - quint8 crc; - QByteArray datasResult; - QByteArray quality; - QByteArray payloadD; - payloadD = unTranscode(payload); - length = payloadD.count(); - - while(length > 5) - { - crctmp = 0; - //type de message - type = payloadD.mid(0, 2); - ln = payloadD.mid(2, 2).toHex().toUInt(nullptr, 16); - - if ((unsigned char)type[0] == 128 or (unsigned char)type[0] == 0 or (unsigned char)type[0] == 153) - { - crctmp = crctmp ^ payloadD.at(0) ^ payloadD.at(1); - crctmp = crctmp ^ payloadD.at(2) ^ payloadD.at(3); - //acquisition du CRC - crc = payloadD.at(4); - //datasResult - datasResult = ""; - for(i=0;imanager != nullptr) - { - responseObject.code = type; - responseObject.datas = datasResult; - // responseObject.properties = responseListIndex[type]->properties - responseListIndex[type.toHex()]->manager(&responseObject); - - }else - { - cout << "unknown command or command not implemented :" << type.toHex().toStdString() << endl; - } - }else - { - tab=-2; - } - } - payloadD.remove(0,ln+6); - length = payloadD.count(); - } - //return tab; -} - -void defaultManager(Response *responseObject) -{ - int nbyte; - int isValue; - int offset = 0; - QByteArray datas = responseObject->datas; - QByteArray result; - QByteArray code = responseObject->code.toHex(); - - cout << responseObject->code.toStdString() << endl; - QMap >::iterator i = zigateBkd.responseListIndex[code]->properties.begin(); - QList propertyList; - QMap propertyDetail; - QMap var; - - infoOutput(responseObject); - while (i != zigateBkd.responseListIndex[code]->properties.end()) - { - propertyList = i.value(); - propertyDetail = zigateBkd.responseListIndex[code]->propertyDetail.value(i.key()); - cout << propertyList.at(0).toString().toStdString() << ": "; - nbyte = propertyList.at(1).toInt(); - isValue = propertyList.at(2).toInt(); - result = datas.mid(offset, nbyte); - offset += nbyte; - - switch (isValue) - { - case 0: - cout << result.toHex().toStdString() << endl; - break; - case 1: - cout << result.toHex().toStdString() << endl; - //foreach (var, propertyDetail) - //{ - - //} - break; - case 2: - if (propertyDetail.contains(result.toUInt())) - { - cout << propertyDetail.value(result.toUInt()).toStdString() << endl; - }else if (propertyDetail.contains(-1)) - { - cout << propertyDetail.value(-1).toStdString() << endl; - } - break; - case 3: - zigateBkd.responseListIndex[responseObject->code]->propertyManagerList[i.key()](result); - break; - case 4: - cout << "Liste" << endl; - break; - case 5: - cout << result.toStdString() << endl; - break; - } - i++; - } -} - -void macCapabilityManager(QByteArray mac) -{ - cout << "macCapabilityManger" << mac.toStdString() << endl; -} -/* void deviceAnnounceManager() -{ - infoOutput(responseListIndex("")); -} -*/ - -void dataIndicationManager(Response * response) -{ - infoOutput(response); -} - -void clustersListManager(Response * response) -{ - infoOutput(response); -} - -/* -void attributesListManager() -{ - infoOutput(attributesList); -} - -void commandsListManager() -{ - infoOutput(commandsList); -} - -void statusManager() -{ - infoOutput(status); -} - -void status2Manager() -{ - -} - -void versionListManager() -{ - infoOutput(versionList); -} -// **************************************************************************** -// 0 - Off -// 1 - On -// ******************************************************************************* - -void permitJoinManager() -{ - infoOutput(permitJoin); -} - -void networkJoinedFormedManager() -{ - infoOutput(networkJoinedFormed); -} -*/ - -void deviceListManager(Response * response) -{ - infoOutput(response); - // ************************************************************** - // - // - // - // - // 0 – battery 1- AC power - // 1-255 - // ************************************************************** - } - -/* -void bindResponseManager() -{ - infoOutput(bindResponse); -} - -void unbindResponseManager() -{ - infoOutput(unbindResponse); -} -*/ - -void networkAddressManager(Response * response) -{ - infoOutput(response); -} - - -void iEEEAddressManager(Response * response) -{ - infoOutput(response); -} - -void nodeDescriptorManager(Response * response) -{ - infoOutput(response); -} - -void simpleDescriptorManager(Response * response) -{ - infoOutput(response); -} - -/* -void powerDescriptorManager() -{ - infoOutput(powerDescriptor); -} - -void activeEndpointManager() -{ - infoOutput(activeEndpoint); -} - -void matchDescriptorManager() -{ - infoOutput(matchDescriptor); -} - -void userDescriptorNotifyManager() -{ - infoOutput(userDescriptorNotify); -} - -void userDescriptorManager() -{ - infoOutput(userDescriptor); -} - -void complexDescriptorManager() -{ - infoOutput(complexDescriptor); -} - -void managementLeaveManager() -{ - infoOutput(managementLeave); -} - -void leaveIndicationManager() -{ - infoOutput(leaveIndication); -} - -void managementNetworkUpdateManager() -{ - infoOutput(managementNetworkUpdate); -} - -void systemServerDiscoveryManager() -{ - infoOutput(systemServerDiscovery); -} -// ********************************* // -// Bitmask according to spec". // -// ********************************* // - -void managementLQIManager() -{ - infoOutput(managementLQI); -} - -void attributeDiscoveryManager() -{ - infoOutput(attributeDiscovery); -} -*/ diff --git a/zigateBackend.h b/zigateBackend.h deleted file mode 100644 index 2b609e7..0000000 --- a/zigateBackend.h +++ /dev/null @@ -1,336 +0,0 @@ -#ifndef ZIGATEBACKEND_H -#define ZIGATEBACKEND_H - -#define DEVICE_ANNOUNCE "004D" -#define STATUS_RETURNED "8000" -#define LOG_MESSAGE "8001" -#define DATA_INDICATION "8002" -#define CLUSTERS_LIST "8003" -#define ATTRIBUTES_LIST "8004" -#define COMMANDS_LIST "8005" -#define STATUS "8006" -#define STATUS2 "8007" -#define VERSION_LIST "8010" -#define PERMIT_JOIN "8014" -#define NETWORK_JOINED_FORMED "8024" -#define BIND_RESPONSE "8030" -#define UNBIND_RESPONSE "8031" -#define NETWORK_ADDRESS "8040" -#define IEEE_ADDRESS "8041" -#define NODE_DESCRIPTOR "8042" -#define SIMPLE_DESCRIPTOR "8043" -#define POWER_DESCRIPTOR "8044" -#define ACTIVE_ENDPOINT "8045" -#define MATCH_DESCRIPTOR "8046" -#define USER_DESCRIPTOR_NOTIFY "802B" -#define USER_DESCRIPTOR "802C" -#define MANAGEMENT_LEAVE "8047" -#define LEAVE_INDICATION "8048" -#define MANAGEMENT_NETWORK_UPDATE "804A" -#define SYSTEM_SERVER_DISCOVERY "804B" -#define MANAGEMENT_LQI "804E" -#define ATTRIBUTE_DISCOVERY "8140" -#define HEARTBEAT "8008" -#define NETWORK_STATE "8009" -#define ACK_DATA "8011" -#define DATA_CONFIRM "8012" -#define DEVICES_LIST "8015" -#define TIME_SERVER "8017" -#define AUTHENTICATE_RESPONSE "8028" -#define PDM_EVENT "8035" -#define PERMIT_JOINING "8049" -#define PDM_CHILD_TABLE_SIZE "8052" -#define ADD_GROUP "8060" -#define VIEW_GROUP "8061" -#define GROUP_MEMBERSHIP "8062" -#define REMOVE_GROUP "8063" -#define LEVEL_UPDATE "8085" -#define ON_OFF "8095" -#define VIEW_SCENE "80A0" -#define ADD_SCENE "80A1" -#define REMOVE_SCENE "80A2" -#define REMOVE_ALL_SCENE "80A3" -#define STORE_SCENE "80A4" -#define SCENE_MEMBERSHIP "80A6" -#define SCENES_UPDATE "80A7" -#define READ_INDIVIDUAL_ATTRIBUTE "8100" -#define DEFAULT_RESPONSE "8101" -#define REPORT_INDIVIDUAL_ATTRIBUTE "8102" -#define WRITE_ATTRIBUTE "8110" -#define CONFIGURE_REPORTING "8120" -#define READ_REPORT_CONFIG "8122" -#define COMPLEX_DESCRIPTOR "8531" -#define ROUTER_DISCOVERY "8701" -#define APS_DATA_CONFIRM_FAIL "8702" -#define EXTENDED_ERROR "9999" - -#include "library.h" -#include "serial.inc.h" -#include -#include -#include -#include "responseClasses.h" -#include - -//void deviceAnnounceManager(Response *); -//void commandReturnStatusManager(Response *); -//void logMessageManager(Response *); -//void dataIndicationManager(Response *); -void clustersListManager(Response *); -//void attributesListManager(Response *); -//void commandsListManager(Response *); -//void statusManager(Response *); -//void status2Manager(Response *); -//void versionListManager(Response *); -//void permitJoinManager(Response *); -//void networkJoinedFormedManager(Response *); -//void bindResponseManager(Response *); -//void unbindResponseManager(Response *); -//void networkAddressManager(Response *); -void iEEEAddressManager(Response *); -void nodeDescriptorManager(Response *); -void simpleDescriptorManager(Response *); -//void powerDescriptorManager(Response *); -//void activeEndpointManager(Response *); -//void matchDescriptorManager(Response *); -//void userDescriptorNotifyManager(Response *); -//void userDescriptorManager(Response *); -//void complexDescriptorManager(Response *); -//void managementLeaveManager(Response *); -//void leaveIndicationManager(Response *); -//void managementNetworkUpdateManager(Response *); -//void systemServerDiscoveryManager(Response *); -//void managementLQIManager(Response *); -//void attributeDiscoveryManager(Response *); -void deviceListManager(Response *); -void networkAddressManager(Response *); -void dataIndicationManager(Response *); - -class ZigbeeMgr; - -class ZigateBackend : QObject -{ - - Q_OBJECT - - public slots: - void interpretResult(QByteArray); - - public: - ZigateBackend(); - ~ZigateBackend(); - - bool initBackend(); - QByteArray checksum(QByteArray msgType, QByteArray length, QByteArray datas); - QByteArray transcode(QByteArray datas); - QByteArray unTranscode(QByteArray datas); - void sendCmd(QByteArray cmd, QByteArray datas); - //int interpretResult(QByteArray datas); - //void getResponse(); - bool resetCoordinator(); - void interpretResult(); - - // commands - void getVersion(); - - // commands - void getVersion(); - - QMap resultCodes; - QMap > cmdList = - { - {"setHeartBeat", {"0008", "0000", ""}}, - {"getNetWorkState", {"0009", "0000", ""}}, - {"getVersion", {"0010", "0000", ""}}, - {"reset", {"0011", "0000", ""}}, - {"erasePersistentData", {"0012", "0000", ""}}, - {"factoryReset", {"0013", "0000", ""}}, - {"permitJoin", {"0014", "0000", ""}}, - {"setExpendedPANID", {"0020", "0008", ""}}, - {"setChannelMask", {"0021", "0004", ""}}, - {"setSecurityStateandKey", {"0022", "0000", ""}}, - {"setDeviceType", {"0023", "0001", ""}}, - {"startNetwork", {"0024", "0000", ""}}, - {"startNetworkScan", {"0025", "0000", ""}}, - {"removeDevice", {"0026", "0010", ""}}, - {"enablePermissionsControlledJoins", {"0027", "0001", ""}}, - {"authenticateDevice", {"0028", "0018", ""}}, - {"outOfBandCommissioningDataRequest", {"0029", "0018", ""}}, - {"userDescriptorSet", {"002B", "0000", ""}}, - {"userDescritporRequest", {"002C", "0000", ""}}, - {"bind", {"0030", "", ""}}, - {"unbind", {"0031", "", ""}}, - {"complexDescriptorRequest", {"0034", "0004", ""}}, - {"networkAddressRequest", {"0040", "0012", ""}}, - {"ieeeAddressRequest", {"0041", "0006", ""}}, - {"nodeDescriptorRequest", {"0042", "0002", ""}}, - {"simpleDescriptorRequest", {"0043", "0003", ""}}, - {"powerDescriptorRequest", {"0044", "0002", ""}}, - {"activeEndpointRequest", {"0045", "0002", ""}}, - {"matchDescriptorRequest", {"0046", "", ""}}, - {"managementLeaveRequest", {"0047", "001C", ""}}, - {"permitJoiningRequest", {"0049", "0004", ""}}, - {"managementNetworkUpdateRequest", {"004A", "000B", ""}}, - {"systemServerDiscoveryRequest", {"004B", "0004", ""}}, - {"managementLQIRequest", {"004E", "0003", ""}}, - {"addGroup", {"0060", "0007", ""}}, - {"viewGroup", {"0061", "0007", ""}}, - {"getGroupMembership", {"0062", "", ""}}, - {"removeGroup", {"0063", "0007", ""}}, - {"removeAllGroups", {"0064", "0005", ""}}, - {"addGroupIfIdentify", {"0065", "0007", ""}}, - {"identifySend", {"0070", "0007", ""}}, - {"identifyQuery", {"0071", "0005", ""}}, - {"moveToLevel", {"0080", "0008", ""}}, - {"moveToLevelWithWithoutOnOff", {"0081", "0009", ""}}, - {"moveStep", {"0082", "000A", "0000"}}, - {"moveStopMove", {"0083", "0005", ""}}, - {"moveStopWithOnOff", {"0084", "0005", ""}}, - {"onOffWithNoEffects", {"0092", "0006", ""}}, - {"onOffTimedSend", {"0093", "000A", ""}}, - {"onOffWithEffectsSend", {"0094", "0007", ""}}, - {"viewScene", {"00A0", "0008", ""}}, - {"addScene", {"00A1", "000D", ""}}, - {"removeScene", {"00A2", "0008", ""}}, - {"removeAllScenes", {"00A3", "0007", ""}}, - {"storeScene", {"00A4", "0008", ""}}, - {"recallScene", {"00A5", "0008", ""}}, - {"sceneMembershipRequest", {"00A6", "0007", ""}}, - {"addEnhancedScene", {"00A7", "", ""}}, - {"viewEnhancedHostToNodeScene", {"00A8", "0008", ""}}, - {"copyScene", {"00A9", "000C", ""}}, - {"moveToHue", {"00B0", "0009", ""}}, - {"moveHue", {"00B1", "0007", ""}}, - {"stepHue", {"00B2", "0008", ""}}, - {"moveToSaturation", {"00B3", "0008", ""}}, - {"moveSaturation", {"00B4", "0006", ""}}, - {"stepSaturation", {"00B5", "0008", ""}}, - {"moveToHueAndSaturation", {"00B6", "0008", ""}}, - {"moveToColour", {"00B7", "000B", ""}}, - {"moveColour", {"00B8", "0009", ""}}, - {"stepColour", {"00B9", "000B", ""}}, - {"enhancedMoveToHue", {"00BA", "000A", ""}}, - {"enhancedMoveHue", {"00BB", "0007", ""}}, - {"enhancedStepHue", {"00BC", "0008", ""}}, - {"enhancedMoveToHueAndSaturation", {"00BD", "000E", ""}}, - {"colourLoopSet", {"00BE", "000D", ""}}, - {"stopMoveStep", {"00BF", "0005", ""}}, - {"moveToColourTemperature", {"00C0", "0009", ""}}, - {"moveColourTemperature", {"00C1", "000D", ""}}, - {"stepColourTemperature", {"00C2", "000E", ""}}, - {"Initiate Touchlink", {"00D0", "0000", ""}}, - {"touchLinkFactoryResetTarget", {"00D2", "0000", ""}}, - {"identifyTriggerEffect", {"00E0", "0007", ""}}, - {"lockUnlockDoor", {"00F0", "0006", ""}}, - {"readAttributeRequest", {"0100", "", ""}}, - {"writeAttributeRequest", {"0110", "000", ""}}, - {"configureReportingRequest", {"0120", "", ""}}, - {"attributeDiscoveryRequest", {"0140", "000E", ""}}, - {"iASZoneEnrollResponse", {"0400", "0007", ""}}, - {"rawApsDataRequest", {"0530", "000D", ""}} - }; - QHash responseListIndex; - - QList responseListCode - { - "004D", - "8000", - "8001", - "8002", - "8003", - "8004", - "8005", - "8006", - "8007", - "8010", - "8014", - "8024", - "8030", - "8031", - "8040", - "8041", - "8042", - "8043", - "8044", - "8045", - "8046", - "802B", - "802C", - "8047", - "8048", - "804A", - "804B", - "804E", - "8140", - "8008", - "8009", - "8011", - "8012", - "8015", - "8017", - "8028", - "8035", - "8049", - "8052", - "8060", - "8061", - "8062", - "8063", - "8085", - "8095", - "80A0", - "80A1", - "80A2", - "80A3", - "80A4", - "80A6", - "80A7", - "8100", - "8101", - "8102", - "8110", - "8120", - "8122", - "8531", - "8701", - "8702", - "9999" - }; - - //ZigbeeMgr serial; - QMap clusters - { - {"0000", " (General: Basic)"}, - {"0001", " (General: Power Config)"}, - {"0002", " (General: Temperature Config)"}, - {"0003", " (General: Identify)"}, - {"0004", " (General: Groups)"}, - {"0005", " (General: Scenes)"}, - {"0006", " (General: On/Off)"}, - {"0007", " (General: On/Off Config)"}, - {"0008", " (General: Level Control)"}, - {"0009", " (General: Alarms)"}, - {"000A", " (General: Time)"}, - {"000F", " (General: Binary Input Basic)"}, - {"0020", " (General: Poll Control)"}, - {"0019", " (General: OTA)"}, - {"0101", " (General: Door Lock"}, - {"0201", " (HVAC: Thermostat)"}, - {"0202", " (HVAC: Fan Control)"}, - {"0300", " (Lighting: Color Control)"}, - {"0400", " (Measurement: Illuminance)"}, - {"0402", " (Measurement: Temperature)"}, - {"0405", " (Measurement: Humidity)"}, - {"0406", " (Measurement: Occupancy Sensing)"}, - {"0500", " (Security & Safety: IAS Zone)"}, - {"0702", " (Smart Energy: Metering)"}, - {"0B05", " (Misc: Diagnostics)"}, - {"1000", " (ZLL: Commissioning)"}, - {"FF01", " Xiaomi private"}, - {"FF02", " Xiaomi private"}, - {"1234", " Xiaomi private"} - }; -}; - - -#endif // ZIGATEBACKEND_H diff --git a/zigateInit.cpp b/zigateInit.cpp deleted file mode 100644 index 4154cc0..0000000 --- a/zigateInit.cpp +++ /dev/null @@ -1,711 +0,0 @@ -#include "zigateBackend.h" -#include "serial.inc.h" - -#include - -extern ZigateBackend zigateBkd; -extern SerialManager serialManager; -extern QHash responseListIndex; - -using namespace std; - -bool ZigateBackend::initBackend() -{ - bool returnCode = false; - QString var; - ResponseProperties * temp; - - foreach (var, responseListCode) - { - temp = new ResponseProperties(); - temp->manager = &defaultManager; - 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 - // = 2 => is index of string in list - // = 3 => launch a subroutine pointed by propertyManagerList - // = 4 => is a list of objects - {0, {"Short address", 2, 0}}, // uint16_t - {1, {"IEEE address", 4, 0}}, // uint64_t - {2, {"MAC capability", 1, 3}} - }; - temp->propertyManagerList[2] = &macCapabilityManager; - temp->manager = &defaultManager; - 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}}, // - {1, {"Sequence number", 1, 0}}, // - {2, {"Packet Type", 2, 0}}, // - {3, {"Optional additional error information", -1, 5}} // - }; - temp->manager = &defaultManager; - 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"} - }; - // ***************************************************************************** - // // 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. - // ****************************************************************************** - - temp = responseListIndex["8001"]; - temp->code = QByteArray::fromHex("8001"); - temp->description = "Log message"; - temp->properties = - { - {0, {"Log level", 1, 2}}, // uint8_t - {1, {"Log message", -1, 5}} // string - }; - 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 - // ********************************************************************************* - temp = responseListIndex["8002"]; - temp->code = QByteArray::fromHex("8002"); - temp->description = "Data indication"; - temp->properties = - { - {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 - {8, {"Destination address", 2}}, // uint16_t or uint64_t - {9, {"Payload size", 1}}, // uint8_t - {10, {"Payload", -1}} // data each element is uint8_t - }; - temp->manager = &defaultManager; //dataIndicationManager - - temp = responseListIndex["8003"]; - temp->code = QByteArray::fromHex("8003"); - temp->description = "list of object's clusters"; - temp->properties = - { - {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 - }; - temp->manager = &clustersListManager; - - temp = responseListIndex["8004"]; - temp->code = QByteArray::fromHex("8004"); - temp->description = "list of object's attributes"; - temp->properties = - { - {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> - }; - temp->manager = &defaultManager; //TODO - - temp = responseListIndex["8005"]; - temp->code = QByteArray::fromHex("8005"); - temp->description = "List of object's commands"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; //TODO - - temp = responseListIndex["8006"]; - temp->code = QByteArray::fromHex("8006"); - temp->description = "Status after restart"; - temp->properties = - { - {0, {"Status after restart: ", 1, 2}} - }; - temp->manager = &defaultManager; - temp->propertyDetail[0] = - { - {0, "Startup"}, - {1, "NFN_START"}, - {2, "RUNNING"}, - }; - // ***************************************************************************** - // 0 - STARTUP - // 2 - NFN_START - // 6 - RUNNING - // The node is provisioned from previous restart. - // ***************************************************************************** - - temp = responseListIndex["8007"]; - temp->code = QByteArray::fromHex("8007"); - temp->description = "Status after start"; - temp->properties = - { - {0, {"Status after start: ", 1, 2}} - }; - temp->manager = &defaultManager; - temp->propertyDetail[0] = - { - {0, "Startup"}, - {1, "NFN_START"}, - {2, "RUNNING"}, - }; - temp = responseListIndex["8008"]; - temp->code = QByteArray::fromHex("8008"); - temp->description = "HeartBeat"; - temp->properties = - { - {0, {"UTC time :", 4, 0}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8009"]; - temp->code = QByteArray::fromHex("8009"); - temp->description = "Network state"; - temp->properties = - { - {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}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8010"]; - temp->code = QByteArray::fromHex("8010"); - temp->description = "Version List"; - temp->properties = - { - {0, {"Major version number", 2, 0}}, // uint16_t - {1, {"Installer version number", 2, 0}} // uint16_t - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8011"]; - temp->code = QByteArray::fromHex("8011"); - temp->description = "Ack Data"; - temp->properties = - { - {0, {"Status: ", 1, 0}}, - {1, {"Destination address: ", 2, 0}}, - {2, {"Destination endpoint: ", 1, 0}}, - {3, {"Cluster ID :", 2, 0}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8012"]; - temp->code = QByteArray::fromHex("8012"); - temp->description = "DATA_CONFIRM"; - temp->properties = - { - {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}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8014"]; - temp->code = QByteArray::fromHex("8014"); - temp->description = "Permit join status response"; - temp->properties = - { - {0, {"Status", 1, 2}} // bool_t - }; - temp->manager = &defaultManager; - temp->propertyDetail[0] = - { - {0, "Off"}, - {1, "On"} - }; - - temp = responseListIndex["8015"]; - temp->code = QByteArray::fromHex("8015"); - temp->description = "Device list"; - temp->properties = - { - {0, {"Device List", 1, 4}} // bool_t - }; - temp->manager = &deviceListManager; - - temp = responseListIndex["8017"]; - temp->code = QByteArray::fromHex("8017"); - temp->description = "Time server"; - temp->properties = - { - {0, {"UTC Time: ", 1, 0}} // from 2000-01-01 00:00:00 - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8024"]; - temp->code = QByteArray::fromHex("8024"); - temp->description = "Network joined/formed"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; - temp->propertyDetail[0] = - { - {0, "Joined"}, - {1, "Formed new network"}, - {-1, "Failed"} - }; - - temp = responseListIndex["8028"]; - temp->code = QByteArray::fromHex("8028"); - temp->description = "Authenticate response"; - temp->properties = - { - {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}}, - }; - temp->manager = &defaultManager; - - temp = responseListIndex["802B"]; - temp->code = QByteArray::fromHex("802B"); - temp->description = "User Descriptor Notify"; - temp->properties = - { - {0, {"Sequence number", 1, 0}}, // uin8_t - {1, {"Status", 1, 0}}, // uint8_t - {2, {"Network address of interest", 2, 0}} // uint16_t - }; - temp->manager = &defaultManager; - - temp = responseListIndex["802C"]; - temp->code = QByteArray::fromHex("802C"); - temp->description = "User Descriptor Response"; - temp->properties = - { - {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 - {4, {"Data", -1}} // uint8_t stream - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8030"]; - temp->code = QByteArray::fromHex("8030"); - temp->description = "Bind response"; - temp->properties = - { - {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) - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8031"]; - temp->code = QByteArray::fromHex("8031"); - temp->description = "Unbind response"; - temp->properties = - { - {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) - - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8035"]; - temp->code = QByteArray::fromHex("8035"); - temp->description = "PDM event"; - temp->properties = - { - {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"} - }; - - temp = responseListIndex["8040"]; - temp->code = QByteArray::fromHex("8040"); - temp->description = "Network Address response"; - temp->properties = - { - {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> - }; - temp->manager = &networkAddressManager; - - temp = responseListIndex["8041"]; - temp->code = QByteArray::fromHex("8041"); - temp->description = "IEEE Address response"; - temp->properties = - { - {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 - }; - temp->manager = &iEEEAddressManager; - - temp = responseListIndex["8042"]; - temp->code = QByteArray::fromHex("8042"); - temp->description = "Node Descriptor response"; - temp->properties = - { - {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 - }; - temp->manager = &nodeDescriptorManager; - - temp = responseListIndex["8043"]; - temp->code = QByteArray::fromHex("8043"); - temp->description = "Simple Descriptor response"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; //TODO - - temp = responseListIndex["8044"]; - temp->code = QByteArray::fromHex("8044"); - temp->description = "Power Descriptor response"; - temp->properties = - { - {0, {"Sequence number", 1, 0}}, // uin8_t - {1, {"Status", 1, 0}}, // uint8_t - {2, {"bit field", 2, }} // uint16_t - }; - 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 - // ****************************************** - - temp = responseListIndex["8045"]; - temp->code = QByteArray::fromHex("8045"); - temp->description = "Active Endpoint response"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8046"]; - temp->code = QByteArray::fromHex("8046"); - temp->description = "Match Descriptor response"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8047"]; - temp->code = QByteArray::fromHex("8047"); - temp->description = "Management Leave response"; - temp->properties = - { - {0, {"Sequence number", 1, 0}}, // uint8_t - {1, {"Status", 1, 0}} // uint8_t - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8048"]; - temp->code = QByteArray::fromHex("8048"); - temp->description = "Leave indication"; - temp->properties = - { - {0, {"Extended address", 4, 0}}, // uint64_t - {1, {"Rejoin status", 1, 0}} // uint8_t - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8049"]; - temp->code = QByteArray::fromHex("8049"); - temp->description = "PDM child table size"; - temp->properties = - { - {0, {"Number of child: ", 1, 0}} // data each entry is uint8_t - }; - temp->manager = &defaultManager; - - temp = responseListIndex["804A"]; - temp->code = QByteArray::fromHex("804A"); - temp->description = "Management Network Update response"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; - - temp = responseListIndex["804B"]; - temp->code = QByteArray::fromHex("804B"); - temp->description = "System Server Discovery response"; - temp->properties = - { - {0, {"Sequence number", 1, 0}}, // uint8_t - {1, {"status", 1, 0}}, // uint8_t - {2, {"Server mask", 2, 0}} // uint16_t - }; - temp->manager = &defaultManager; - - temp = responseListIndex["804E"]; - temp->code = QByteArray::fromHex("804E"); - temp->description = "Management LQI response"; - temp->properties = - { - {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}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8060"]; - temp->code = QByteArray::fromHex("8060"); - temp->description = "Add group"; - temp->properties = - { - {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 - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8061"]; - temp->code = QByteArray::fromHex("8061"); - temp->description = "View group"; - temp->properties = - { - {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; - - temp = responseListIndex["8062"]; - temp->code = QByteArray::fromHex("8062"); - temp->description = "Group membership"; - temp->properties = - { - {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) - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8063"]; - temp->code = QByteArray::fromHex("8063"); - temp->description = "Remove group"; - temp->properties = - { - {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}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8085"]; - temp->code = QByteArray::fromHex("8085"); - temp->description = "Level update"; - temp->properties = - { - {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}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8095"]; - temp->code = QByteArray::fromHex("8095"); - temp->description = "On/Off"; - temp->properties = - { - {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}} - }; - temp->manager = &defaultManager; - - temp = responseListIndex["8140"]; - temp->code = QByteArray::fromHex("8140"); - temp->description = "Attribute Discovery response"; - temp->properties = - { - {0, {"Complete", 1, 0}}, // uint8_t - {1, {"Attribute type", 1, 0}}, // uint8_t - {2, {"Attribute id", 2, 0}} // uint16_t - }; - temp->manager = &defaultManager; - - serialManager.initSerial(); - connect(&serialManager, SIGNAL(datasReady(QByteArray)), this, SLOT(interpretResult(QByteArray))); - - resetCoordinator(); - getVersion(); - return returnCode; -} - -void infoOutput(Response *object) -{ - cout << object->code.toHex().toStdString() << " : " << object->description.toStdString() << endl; - -} - diff --git a/zigatecmd.cpp b/zigatecmd.cpp deleted file mode 100644 index 32ae4aa..0000000 --- a/zigatecmd.cpp +++ /dev/null @@ -1,465 +0,0 @@ -#include "zigateBackend.h" - -using namespace std; - -bool ZigateBackend::resetCoordinator() -{ - bool returnCode = false; - - cout << "Sending reset to coordinator" << endl; - sendCmd("0011", ""); - cout << "***************************************************" << endl; - sleep(5); - return returnCode; -} - -void ZigateBackend::getVersion() -{ - sendCmd("0010", ""); -} -/* -bool ZigateBackend::setHeartBeat() -{ - -} - -bool ZigateBackend::getNetworkState() -{ - -} - -bool ZigateBackend::erasePersistentData() -{ - -} - -bool ZigateBackend::factoryNewReset() -{ - -} - -bool ZigateBackend::permitJoin() -{ - -} - -bool ZigateBackend::setExpendedPANID() -{ - -} - -bool ZigateBackend::setChannelMask() -{ - -} - -bool ZigateBackend::setSecurityStateKey() -{ - -} - -bool ZigateBackend::setDeviceType() -{ - -} - -bool ZigateBackend::startNetwork() -{ - -} - -bool ZigateBackend::startNetworkScan() -{ - -} - -bool ZigateBackend::removeDevice() -{ - -} - -bool ZigateBackend::enablePermissionsControlledJoins() -{ - -} - -bool ZigateBackend::authenticateDevice() -{ - -} - -bool ZigateBackend::outOfBandCommissioningDataRequest() -{ - -} - -bool ZigateBackend::userDescriptorSet() -{ - -} - -bool ZigateBackend::userDescriptorRequest() -{ - -} - -bool ZigateBackend::bind() -{ - -} - -bool ZigateBackend::unbind() -{ - -} - -bool ZigateBackend::complexDescriptorRequest() -{ - -} - -bool ZigateBackend::networkAddressRequest() -{ - -} - -bool ZigateBackend::iEEEAddressRequest() -{ - -} - -bool ZigateBackend::nodeDescriptorRequest() -{ - -} - -bool ZigateBackend::simpleDescriptorRequest() -{ - -} - -bool ZigateBackend::powerDescriptorRequest() -{ - -} - -bool ZigateBackend::activeEndpointRequest() -{ - -} - -bool ZigateBackend::matchDescriptorRequest() -{ - -} - -bool ZigateBackend::managementLeaveRequest() -{ - -} - -bool ZigateBackend::permitJoiningRequest() -{ - -} - -bool ZigateBackend::managementNetworkUpdateRequest() -{ - -} - -bool ZigateBackend::systemServerDiscoveryRequest() -{ - -} - -bool ZigateBackend::managementLQIRequest() -{ - -} - -bool ZigateBackend::addGroup() -{ - -} - -bool ZigateBackend::viewGroup() -{ - -} - -bool ZigateBackend::getGroupMembership() -{ - -} - -bool ZigateBackend::removeGroup() -{ - -} - -bool ZigateBackend::removeAllGroups() -{ - -} - -bool ZigateBackend::addGroupIfIdentify() -{ - -} - -bool ZigateBackend::identifySend() -{ - -} - -bool ZigateBackend::identifyQuery() -{ - -} - -bool ZigateBackend::moveToLevel() -{ - -} - -bool ZigateBackend::moveToLevelWithWithoutOnOoff() -{ - -} - -bool ZigateBackend::moveStep() -{ - -} - -bool ZigateBackend::moveStopMove() -{ - -} - -bool ZigateBackend::moveStopWithOnOff() -{ - -} - -bool ZigateBackend::onOffWithNEffects() -{ - -} - -bool ZigateBackend::onOffWithEffects() -{ - -} - -bool ZigateBackend::onOffTimedSend() -{ - -} - -bool ZigateBackend::onOffTimed() -{ - -} - -bool ZigateBackend::onOffWithEffectsSend() -{ - -} - -bool ZigateBackend::viewScene() -{ - -} - -bool ZigateBackend::addScene() -{ - -} - -bool ZigateBackend::removeScene() -{ - -} - -bool ZigateBackend::removeAllScenes() -{ - -} - -bool ZigateBackend::storeScene() -{ - -} - -bool ZigateBackend::recallScene() -{ - -} - -bool ZigateBackend::sceneMembershipRequest() -{ - -} - -bool ZigateBackend::addEnhancedScene() -{ - -} - -bool ZigateBackend::viewEnhancedHostToNodeScene() -{ - -} - -bool ZigateBackend::copyScene() -{ - -} - -bool ZigateBackend::moveToHue() -{ - -} - -bool ZigateBackend::moveHue() -{ - -} - -bool ZigateBackend::stepHue() -{ - -} - -bool ZigateBackend::moveToSaturation() -{ - -} - -bool ZigateBackend::moveSaturation() -{ - -} - -bool ZigateBackend::stepSaturation() -{ - -} - -bool ZigateBackend::moveToHueAndSaturation() -{ - -} - -bool ZigateBackend::moveToColour() -{ - -} - -bool ZigateBackend::moveColour() -{ - -} - -bool ZigateBackend::stepColour() -{ - -} - -bool ZigateBackend::enhancedMoveToHue() -{ - -} - -bool ZigateBackend::enhancedMoveHue() -{ - -} - -bool ZigateBackend::enhancedStepHue() -{ - -} - -bool ZigateBackend::enhancedMoveToHueAndSaturation() -{ - -} - -bool ZigateBackend::colourLoopSet() -{ - -} - -bool ZigateBackend::stopMoveStep() -{ - -} - -bool ZigateBackend::moveToColourTemperature() -{ - -} - -bool ZigateBackend::moveColourTemperature() -{ - -} - -bool ZigateBackend::stepColourTemperature() -{ - -} - -bool ZigateBackend::initiateTouchlink() -{ - -} - -bool ZigateBackend::touchLinkFactoryResetTarget() -{ - -} - -bool ZigateBackend::identifyTriggerEffect() -{ - -} - -bool ZigateBackend::lockUnlockDoor() -{ - -} - -bool ZigateBackend::readAttributerequest() -{ - -} - -bool ZigateBackend::writeAttributeRequest() -{ - -} - -bool ZigateBackend::configureReportingRequest() -{ - -} - -bool ZigateBackend::attributeDiscoveryRequest() -{ - -} - -bool ZigateBackend::iASZoneEnrollResponse() -{ - -} - -bool ZigateBackend::rawAPSDataRequest() -{ - -} -*/