diff --git a/libnymea-core/jsonrpc/zigbeehandler.cpp b/libnymea-core/jsonrpc/zigbeehandler.cpp index 24e7d5bc..453e3add 100644 --- a/libnymea-core/jsonrpc/zigbeehandler.cpp +++ b/libnymea-core/jsonrpc/zigbeehandler.cpp @@ -433,6 +433,9 @@ QVariantMap ZigbeeHandler::packNetwork(ZigbeeNetwork *network) case Zigbee::ZigbeeBackendTypeNxp: networkMap.insert("backend", ZigbeeAdapter::backendNames().value(ZigbeeAdapter::ZigbeeBackendTypeNxp)); break; + case Zigbee::ZigbeeBackendTypeTi: + networkMap.insert("backend", ZigbeeAdapter::backendNames().value(ZigbeeAdapter::ZigbeeBackendTypeTi)); + break; } switch (network->state()) { diff --git a/libnymea-core/zigbee/zigbeeadapter.cpp b/libnymea-core/zigbee/zigbeeadapter.cpp index 43b411e6..6c5b1884 100644 --- a/libnymea-core/zigbee/zigbeeadapter.cpp +++ b/libnymea-core/zigbee/zigbeeadapter.cpp @@ -127,6 +127,7 @@ QHash ZigbeeAdapter::backendNames() QHash backendNameHash; backendNameHash.insert(ZigbeeBackendTypeDeconz, "deCONZ"); backendNameHash.insert(ZigbeeBackendTypeNxp, "NXP"); + backendNameHash.insert(ZigbeeBackendTypeTi, "TI"); return backendNameHash; } diff --git a/libnymea-core/zigbee/zigbeeadapter.h b/libnymea-core/zigbee/zigbeeadapter.h index a2419292..10ac176d 100644 --- a/libnymea-core/zigbee/zigbeeadapter.h +++ b/libnymea-core/zigbee/zigbeeadapter.h @@ -52,7 +52,8 @@ class ZigbeeAdapter public: enum ZigbeeBackendType { ZigbeeBackendTypeDeconz, - ZigbeeBackendTypeNxp + ZigbeeBackendTypeNxp, + ZigbeeBackendTypeTi }; Q_ENUM(ZigbeeBackendType) diff --git a/libnymea-core/zigbee/zigbeemanager.cpp b/libnymea-core/zigbee/zigbeemanager.cpp index 2f2ae3fb..d796aa60 100644 --- a/libnymea-core/zigbee/zigbeemanager.cpp +++ b/libnymea-core/zigbee/zigbeemanager.cpp @@ -266,8 +266,8 @@ void ZigbeeManager::saveNetwork(ZigbeeNetwork *network) case Zigbee::ZigbeeBackendTypeNxp: settings.setValue("backendType", static_cast(ZigbeeAdapter::ZigbeeBackendTypeNxp)); break; - default: - qCWarning(dcZigbee()) << "Unhandled backend type" << network->backendType() << "which is not implemented in nymea yet."; + case Zigbee::ZigbeeBackendTypeTi: + settings.setValue("backendType", static_cast(ZigbeeAdapter::ZigbeeBackendTypeTi)); break; } settings.setValue("panId", network->panId()); @@ -315,6 +315,10 @@ void ZigbeeManager::loadZigbeeNetworks() } ZigbeeNetwork *network = buildNetworkObject(networkUuid, backendType); + if (!network) { + qCWarning(dcZigbee()) << "Invalid zigbee network configuration. Skipping network" << networkUuid; + continue; + } network->setSerialPortName(serialPortName); network->setSerialBaudrate(serialBaudRate); network->setSerialNumber(serialNumber); @@ -442,8 +446,13 @@ ZigbeeNetwork *ZigbeeManager::buildNetworkObject(const QUuid &networkId, ZigbeeA case ZigbeeAdapter::ZigbeeBackendTypeNxp: network = ZigbeeNetworkManager::createZigbeeNetwork(networkId, Zigbee::ZigbeeBackendTypeNxp, this); break; + case ZigbeeAdapter::ZigbeeBackendTypeTi: + network = ZigbeeNetworkManager::createZigbeeNetwork(networkId, Zigbee::ZigbeeBackendTypeTi, this); + break; + } + if (network) { + network->setSettingsDirectory(QDir(NymeaSettings::settingsPath())); } - network->setSettingsDirectory(QDir(NymeaSettings::settingsPath())); return network; } @@ -613,8 +622,8 @@ ZigbeeAdapter ZigbeeManager::convertUartAdapterToAdapter(const ZigbeeUartAdapter case Zigbee::ZigbeeBackendTypeNxp: adapter.setBackendType(ZigbeeAdapter::ZigbeeBackendTypeNxp); break; - default: - qCWarning(dcZigbee()) << "Unhandled backend type" << uartAdapter.zigbeeBackend() << "which is not implemented in nymea yet."; + case Zigbee::ZigbeeBackendTypeTi: + adapter.setBackendType(ZigbeeAdapter::ZigbeeBackendTypeTi); break; } return adapter;