Merge PR #430: Make use of the new caching mechanism in nymea
This commit is contained in:
commit
86ebe59877
@ -179,12 +179,12 @@ int NetworkManager::disconnectInterface(const QString &interface)
|
|||||||
return m_engine->jsonRpcClient()->sendCommand("NetworkManager.DisconnectInterface", params, this, "disconnectResponse");
|
return m_engine->jsonRpcClient()->sendCommand("NetworkManager.DisconnectInterface", params, this, "disconnectResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::getStatusResponse(const QVariantMap ¶ms)
|
void NetworkManager::getStatusResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
m_loading = false;
|
m_loading = false;
|
||||||
emit loadingChanged();
|
emit loadingChanged();
|
||||||
|
|
||||||
if (params.value("params").toMap().value("networkManagerError").toString() != "NetworkManagerErrorNoError") {
|
if (params.value("networkManagerError").toString() != "NetworkManagerErrorNoError") {
|
||||||
qWarning() << "NetworkManager error:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qWarning() << "NetworkManager error:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
m_available = false;
|
m_available = false;
|
||||||
emit availableChanged();
|
emit availableChanged();
|
||||||
@ -194,10 +194,10 @@ void NetworkManager::getStatusResponse(const QVariantMap ¶ms)
|
|||||||
m_available = true;
|
m_available = true;
|
||||||
emit availableChanged();
|
emit availableChanged();
|
||||||
|
|
||||||
QVariantMap statusMap = params.value("params").toMap().value("status").toMap();
|
QVariantMap statusMap = params.value("status").toMap();
|
||||||
|
|
||||||
QMetaEnum stateEnum = QMetaEnum::fromType<NetworkManager::NetworkManagerState>();
|
QMetaEnum stateEnum = QMetaEnum::fromType<NetworkManager::NetworkManagerState>();
|
||||||
NetworkManagerState state = static_cast<NetworkManager::NetworkManagerState>(stateEnum.keyToValue(params.value("params").toMap().value("status").toMap().value("state").toString().toUtf8()));
|
NetworkManagerState state = static_cast<NetworkManager::NetworkManagerState>(stateEnum.keyToValue(statusMap.value("state").toString().toUtf8()));
|
||||||
if (m_state != state) {
|
if (m_state != state) {
|
||||||
m_state = state;
|
m_state = state;
|
||||||
emit stateChanged();
|
emit stateChanged();
|
||||||
@ -215,11 +215,11 @@ void NetworkManager::getStatusResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::getDevicesResponse(const QVariantMap ¶ms)
|
void NetworkManager::getDevicesResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Devices reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
// qDebug() << "Devices reply" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
|
|
||||||
foreach (const QVariant &deviceVariant, params.value("params").toMap().value("wiredNetworkDevices").toList()) {
|
foreach (const QVariant &deviceVariant, params.value("wiredNetworkDevices").toList()) {
|
||||||
QVariantMap deviceMap = deviceVariant.toMap();
|
QVariantMap deviceMap = deviceVariant.toMap();
|
||||||
WiredNetworkDevice *device = new WiredNetworkDevice(deviceMap.value("macAddress").toString(), deviceMap.value("interface").toString(), this);
|
WiredNetworkDevice *device = new WiredNetworkDevice(deviceMap.value("macAddress").toString(), deviceMap.value("interface").toString(), this);
|
||||||
device->setIpv4Addresses(deviceMap.value("ipv4Addresses").toStringList());
|
device->setIpv4Addresses(deviceMap.value("ipv4Addresses").toStringList());
|
||||||
@ -230,7 +230,7 @@ void NetworkManager::getDevicesResponse(const QVariantMap ¶ms)
|
|||||||
device->setPluggedIn(deviceMap.value("pluggedIn").toBool());
|
device->setPluggedIn(deviceMap.value("pluggedIn").toBool());
|
||||||
m_wiredNetworkDevices->addNetworkDevice(device);
|
m_wiredNetworkDevices->addNetworkDevice(device);
|
||||||
}
|
}
|
||||||
foreach (const QVariant &deviceVariant, params.value("params").toMap().value("wirelessNetworkDevices").toList()) {
|
foreach (const QVariant &deviceVariant, params.value("wirelessNetworkDevices").toList()) {
|
||||||
QVariantMap deviceMap = deviceVariant.toMap();
|
QVariantMap deviceMap = deviceVariant.toMap();
|
||||||
WirelessNetworkDevice *device = new WirelessNetworkDevice(deviceMap.value("macAddress").toString(), deviceMap.value("interface").toString(), this);
|
WirelessNetworkDevice *device = new WirelessNetworkDevice(deviceMap.value("macAddress").toString(), deviceMap.value("interface").toString(), this);
|
||||||
device->setIpv4Addresses(deviceMap.value("ipv4Addresses").toStringList());
|
device->setIpv4Addresses(deviceMap.value("ipv4Addresses").toStringList());
|
||||||
@ -251,16 +251,15 @@ void NetworkManager::getDevicesResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::getAccessPointsResponse(const QVariantMap ¶ms)
|
void NetworkManager::getAccessPointsResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Access points reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "Access points reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
|
|
||||||
int requestId = params.value("id").toInt();
|
if (!m_apRequests.contains(commandId)) {
|
||||||
if (!m_apRequests.contains(requestId)) {
|
|
||||||
qWarning() << "NetworkManager received a reply for a request we don't know!";
|
qWarning() << "NetworkManager received a reply for a request we don't know!";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QString interface = m_apRequests.take(requestId);
|
QString interface = m_apRequests.take(commandId);
|
||||||
|
|
||||||
WirelessNetworkDevice *dev = m_wirelessNetworkDevices->getWirelessNetworkDevice(interface);
|
WirelessNetworkDevice *dev = m_wirelessNetworkDevices->getWirelessNetworkDevice(interface);
|
||||||
if (!dev) {
|
if (!dev) {
|
||||||
@ -270,7 +269,7 @@ void NetworkManager::getAccessPointsResponse(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
dev->accessPoints()->clearModel();
|
dev->accessPoints()->clearModel();
|
||||||
|
|
||||||
foreach (const QVariant &apVariant, params.value("params").toMap().value("wirelessAccessPoints").toList()) {
|
foreach (const QVariant &apVariant, params.value("wirelessAccessPoints").toList()) {
|
||||||
QVariantMap apMap = apVariant.toMap();
|
QVariantMap apMap = apVariant.toMap();
|
||||||
WirelessAccessPoint* ap = new WirelessAccessPoint(this);
|
WirelessAccessPoint* ap = new WirelessAccessPoint(this);
|
||||||
ap->setMacAddress(apMap.value("macAddress").toString());
|
ap->setMacAddress(apMap.value("macAddress").toString());
|
||||||
@ -283,44 +282,39 @@ void NetworkManager::getAccessPointsResponse(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::connectToWiFiResponse(const QVariantMap ¶ms)
|
void NetworkManager::connectToWiFiResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "connect to wifi reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "connect to wifi reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
QString status = params.value("networkManagerError").toString();
|
||||||
QString status = params.value("params").toMap().value("networkManagerError").toString();
|
emit connectToWiFiReply(commandId, status);
|
||||||
emit connectToWiFiReply(id, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::disconnectResponse(const QVariantMap ¶ms)
|
void NetworkManager::disconnectResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "disconnect reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "disconnect reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
QString status = params.value("networkManagerError").toString();
|
||||||
QString status = params.value("params").toMap().value("networkManagerError").toString();
|
emit disconnectReply(commandId, status);
|
||||||
emit disconnectReply(id, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::enableNetworkingResponse(const QVariantMap ¶ms)
|
void NetworkManager::enableNetworkingResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "enable networking reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "enable networking reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
QString status = params.value("networkManagerError").toString();
|
||||||
QString status = params.value("params").toMap().value("networkManagerError").toString();
|
emit enableNetworkingReply(commandId, status);
|
||||||
emit enableNetworkingReply(id, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::enableWirelessNetworkingResponse(const QVariantMap ¶ms)
|
void NetworkManager::enableWirelessNetworkingResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "enable wireless networking reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "enable wireless networking reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
QString status = params.value("networkManagerError").toString();
|
||||||
QString status = params.value("params").toMap().value("networkManagerError").toString();
|
emit enableWirelessNetworkingReply(commandId, status);
|
||||||
emit enableWirelessNetworkingReply(id, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::startAccessPointResponse(const QVariantMap ¶ms)
|
void NetworkManager::startAccessPointResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Start access point reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "Start access point reply" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
QString status = params.value("networkManagerError").toString();
|
||||||
QString status = params.value("params").toMap().value("networkManagerError").toString();
|
emit startAccessPointReply(commandId, status);
|
||||||
emit startAccessPointReply(id, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkManager::notificationReceived(const QVariantMap ¶ms)
|
void NetworkManager::notificationReceived(const QVariantMap ¶ms)
|
||||||
|
|||||||
@ -113,14 +113,14 @@ signals:
|
|||||||
private slots:
|
private slots:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
void getStatusResponse(const QVariantMap ¶ms);
|
void getStatusResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void getDevicesResponse(const QVariantMap ¶ms);
|
void getDevicesResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void getAccessPointsResponse(const QVariantMap ¶ms);
|
void getAccessPointsResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void connectToWiFiResponse(const QVariantMap ¶ms);
|
void connectToWiFiResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void disconnectResponse(const QVariantMap ¶ms);
|
void disconnectResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void enableNetworkingResponse(const QVariantMap ¶ms);
|
void enableNetworkingResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void enableWirelessNetworkingResponse(const QVariantMap ¶ms);
|
void enableWirelessNetworkingResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void startAccessPointResponse(const QVariantMap ¶ms);
|
void startAccessPointResponse(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
void notificationReceived(const QVariantMap ¶ms);
|
void notificationReceived(const QVariantMap ¶ms);
|
||||||
|
|
||||||
|
|||||||
@ -252,34 +252,34 @@ void NymeaConfiguration::deleteMqttPolicy(const QString &clientId)
|
|||||||
m_client->sendCommand("Configuration.DeleteMqttPolicy", params, this, "deleteMqttPolicyReply");
|
m_client->sendCommand("Configuration.DeleteMqttPolicy", params, this, "deleteMqttPolicyReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::getConfigurationsResponse(const QVariantMap ¶ms)
|
void NymeaConfiguration::getConfigurationsResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "have config reply" << params;
|
// qDebug() << "have config reply" << params;
|
||||||
QVariantMap basicConfig = params.value("params").toMap().value("basicConfiguration").toMap();
|
QVariantMap basicConfig = params.value("basicConfiguration").toMap();
|
||||||
m_debugServerEnabled = basicConfig.value("debugServerEnabled").toBool();
|
m_debugServerEnabled = basicConfig.value("debugServerEnabled").toBool();
|
||||||
emit debugServerEnabledChanged();
|
emit debugServerEnabledChanged();
|
||||||
m_serverName = basicConfig.value("serverName").toString();
|
m_serverName = basicConfig.value("serverName").toString();
|
||||||
emit serverNameChanged();
|
emit serverNameChanged();
|
||||||
QVariantMap cloudConfig = params.value("params").toMap().value("cloud").toMap();
|
QVariantMap cloudConfig = params.value("cloud").toMap();
|
||||||
m_cloudEnabled = cloudConfig.value("enabled").toBool();
|
m_cloudEnabled = cloudConfig.value("enabled").toBool();
|
||||||
emit cloudEnabledChanged();
|
emit cloudEnabledChanged();
|
||||||
|
|
||||||
tcpServerConfigurations()->clear();
|
tcpServerConfigurations()->clear();
|
||||||
foreach (const QVariant &tcpServerVariant, params.value("params").toMap().value("tcpServerConfigurations").toList()) {
|
foreach (const QVariant &tcpServerVariant, params.value("tcpServerConfigurations").toList()) {
|
||||||
// qDebug() << "tcp server config:" << tcpServerVariant;
|
// qDebug() << "tcp server config:" << tcpServerVariant;
|
||||||
QVariantMap tcpConfigMap = tcpServerVariant.toMap();
|
QVariantMap tcpConfigMap = tcpServerVariant.toMap();
|
||||||
ServerConfiguration *config = new ServerConfiguration(tcpConfigMap.value("id").toString(), QHostAddress(tcpConfigMap.value("address").toString()), tcpConfigMap.value("port").toInt(), tcpConfigMap.value("authenticationEnabled").toBool(), tcpConfigMap.value("sslEnabled").toBool());
|
ServerConfiguration *config = new ServerConfiguration(tcpConfigMap.value("id").toString(), QHostAddress(tcpConfigMap.value("address").toString()), tcpConfigMap.value("port").toInt(), tcpConfigMap.value("authenticationEnabled").toBool(), tcpConfigMap.value("sslEnabled").toBool());
|
||||||
m_tcpServerConfigurations->addConfiguration(config);
|
m_tcpServerConfigurations->addConfiguration(config);
|
||||||
}
|
}
|
||||||
webSocketServerConfigurations()->clear();
|
webSocketServerConfigurations()->clear();
|
||||||
foreach (const QVariant &websocketServerVariant, params.value("params").toMap().value("webSocketServerConfigurations").toList()) {
|
foreach (const QVariant &websocketServerVariant, params.value("webSocketServerConfigurations").toList()) {
|
||||||
QVariantMap websocketConfigMap = websocketServerVariant.toMap();
|
QVariantMap websocketConfigMap = websocketServerVariant.toMap();
|
||||||
ServerConfiguration *config = new ServerConfiguration(websocketConfigMap.value("id").toString(), QHostAddress(websocketConfigMap.value("address").toString()), websocketConfigMap.value("port").toInt(), websocketConfigMap.value("authenticationEnabled").toBool(), websocketConfigMap.value("sslEnabled").toBool());
|
ServerConfiguration *config = new ServerConfiguration(websocketConfigMap.value("id").toString(), QHostAddress(websocketConfigMap.value("address").toString()), websocketConfigMap.value("port").toInt(), websocketConfigMap.value("authenticationEnabled").toBool(), websocketConfigMap.value("sslEnabled").toBool());
|
||||||
m_webSocketServerConfigurations->addConfiguration(config);
|
m_webSocketServerConfigurations->addConfiguration(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
webServerConfigurations()->clear();
|
webServerConfigurations()->clear();
|
||||||
foreach (const QVariant &webServerVariant, params.value("params").toMap().value("webServerConfigurations").toList()) {
|
foreach (const QVariant &webServerVariant, params.value("webServerConfigurations").toList()) {
|
||||||
QVariantMap webServerConfigMap = webServerVariant.toMap();
|
QVariantMap webServerConfigMap = webServerVariant.toMap();
|
||||||
WebServerConfiguration* config = new WebServerConfiguration(webServerConfigMap.value("id").toString(), QHostAddress(webServerConfigMap.value("address").toString()), webServerConfigMap.value("port").toInt(), webServerConfigMap.value("authenticationEnabled").toBool(), webServerConfigMap.value("sslEnabled").toBool());
|
WebServerConfiguration* config = new WebServerConfiguration(webServerConfigMap.value("id").toString(), QHostAddress(webServerConfigMap.value("address").toString()), webServerConfigMap.value("port").toInt(), webServerConfigMap.value("authenticationEnabled").toBool(), webServerConfigMap.value("sslEnabled").toBool());
|
||||||
config->setPublicFolder(webServerConfigMap.value("publicFolder").toString());
|
config->setPublicFolder(webServerConfigMap.value("publicFolder").toString());
|
||||||
@ -287,9 +287,14 @@ void NymeaConfiguration::getConfigurationsResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setServerNameResponse(const QVariantMap ¶ms)
|
void NymeaConfiguration::setServerNameResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Server name set:" << params;
|
qDebug() << "Server name set:" << commandId << params;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NymeaConfiguration::setTimezoneResponse(int commandId, const QVariantMap ¶ms)
|
||||||
|
{
|
||||||
|
qDebug() << "Set timezone response" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::getCloudConfigurationResponse(const QVariantMap ¶ms)
|
void NymeaConfiguration::getCloudConfigurationResponse(const QVariantMap ¶ms)
|
||||||
@ -297,72 +302,71 @@ void NymeaConfiguration::getCloudConfigurationResponse(const QVariantMap ¶ms
|
|||||||
qDebug() << "Cloud config reply" << params;
|
qDebug() << "Cloud config reply" << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setCloudEnabledResponse(const QVariantMap ¶ms)
|
void NymeaConfiguration::setCloudEnabledResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Set cloud enabled:" << params;
|
qDebug() << "Set cloud enabled:" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setDebugServerEnabledResponse(const QVariantMap ¶ms)
|
void NymeaConfiguration::setDebugServerEnabledResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Debug server set:" << params;
|
qDebug() << "Debug server set:" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setTcpConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::setTcpConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Set TCP server config reply" << params;
|
qDebug() << "Set TCP server config reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::deleteTcpConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::deleteTcpConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("params").toMap().value("configurationError").toString() == "ConfigurationErrorNoError") {
|
qDebug() << "Deöete TCP server config reply" << commandId << params;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setWebSocketConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::setWebSocketConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "set websocket config reply" << params;
|
qDebug() << "set websocket config reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setWebConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::setWebConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "set web server config reply" << params;
|
qDebug() << "set web server config reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::deleteWebConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::deleteWebConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Delete web server config reply" << params;
|
qDebug() << "Delete web server config reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::deleteWebSocketConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::deleteWebSocketConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Delete web socket server config reply" << params;
|
qDebug() << "Delete web socket server config reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::getMqttServerConfigsReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::getMqttServerConfigsReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
m_mqttServerConfigurations->clear();
|
m_mqttServerConfigurations->clear();
|
||||||
foreach (const QVariant &mqttServerVariant, params.value("params").toMap().value("mqttServerConfigurations").toList()) {
|
foreach (const QVariant &mqttServerVariant, params.value("mqttServerConfigurations").toList()) {
|
||||||
QVariantMap mqttConfigMap = mqttServerVariant.toMap();
|
QVariantMap mqttConfigMap = mqttServerVariant.toMap();
|
||||||
ServerConfiguration *config = new ServerConfiguration(mqttConfigMap.value("id").toString(), QHostAddress(mqttConfigMap.value("address").toString()), mqttConfigMap.value("port").toInt(), mqttConfigMap.value("authenticationEnabled").toBool(), mqttConfigMap.value("sslEnabled").toBool());
|
ServerConfiguration *config = new ServerConfiguration(mqttConfigMap.value("id").toString(), QHostAddress(mqttConfigMap.value("address").toString()), mqttConfigMap.value("port").toInt(), mqttConfigMap.value("authenticationEnabled").toBool(), mqttConfigMap.value("sslEnabled").toBool());
|
||||||
m_mqttServerConfigurations->addConfiguration(config);
|
m_mqttServerConfigurations->addConfiguration(config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setMqttConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::setMqttConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Set mqtt config reply" << params;
|
qDebug() << "Set mqtt config reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::deleteMqttConfigReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::deleteMqttConfigReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Delete Mqtt Broker config reply:" << params;
|
qDebug() << "Delete Mqtt Broker config reply:" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::getMqttPoliciesReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::getMqttPoliciesReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "Mqtt polices:" << params;
|
// qDebug() << "Mqtt polices:" << params;
|
||||||
m_mqttPolicies->clear();
|
m_mqttPolicies->clear();
|
||||||
foreach (const QVariant &policyVariant, params.value("params").toMap().value("mqttPolicies").toList()) {
|
foreach (const QVariant &policyVariant, params.value("mqttPolicies").toList()) {
|
||||||
QVariantMap policyMap = policyVariant.toMap();
|
QVariantMap policyMap = policyVariant.toMap();
|
||||||
MqttPolicy *policy = new MqttPolicy(
|
MqttPolicy *policy = new MqttPolicy(
|
||||||
policyMap.value("clientId").toString(),
|
policyMap.value("clientId").toString(),
|
||||||
@ -374,14 +378,14 @@ void NymeaConfiguration::getMqttPoliciesReply(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::setMqttPolicyReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::setMqttPolicyReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Set MQTT policy reply" << params;
|
qDebug() << "Set MQTT policy reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::deleteMqttPolicyReply(const QVariantMap ¶ms)
|
void NymeaConfiguration::deleteMqttPolicyReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Delete MQTT policy reply" << params;
|
qDebug() << "Delete MQTT policy reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
void NymeaConfiguration::notificationReceived(const QVariantMap ¬ification)
|
||||||
|
|||||||
@ -106,23 +106,24 @@ public:
|
|||||||
void init();
|
void init();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_INVOKABLE void getConfigurationsResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getConfigurationsResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getCloudConfigurationResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getCloudConfigurationResponse(const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setDebugServerEnabledResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void setDebugServerEnabledResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setServerNameResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void setServerNameResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setCloudEnabledResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void setTimezoneResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setTcpConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void setCloudEnabledResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void deleteTcpConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void setTcpConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setWebSocketConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void deleteTcpConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void deleteWebSocketConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void setWebSocketConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setWebConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void deleteWebSocketConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void deleteWebConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void setWebConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getMqttServerConfigsReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void deleteWebConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setMqttConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void getMqttServerConfigsReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void deleteMqttConfigReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void setMqttConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getMqttPoliciesReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void deleteMqttConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setMqttPolicyReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void getMqttPoliciesReply(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void deleteMqttPolicyReply(const QVariantMap ¶ms);
|
Q_INVOKABLE void setMqttPolicyReply(int commandId, const QVariantMap ¶ms);
|
||||||
|
Q_INVOKABLE void deleteMqttPolicyReply(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
Q_INVOKABLE void notificationReceived(const QVariantMap ¬ification);
|
Q_INVOKABLE void notificationReceived(const QVariantMap ¬ification);
|
||||||
|
|
||||||
|
|||||||
@ -131,10 +131,10 @@ QString DeviceDiscovery::displayMessage() const
|
|||||||
return m_displayMessage;
|
return m_displayMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceDiscovery::discoverDevicesResponse(const QVariantMap ¶ms)
|
void DeviceDiscovery::discoverDevicesResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "response received" << params;
|
// qDebug() << "response received" << params;
|
||||||
QVariantList descriptors = params.value("params").toMap().value("deviceDescriptors").toList();
|
QVariantList descriptors = params.value("deviceDescriptors").toList();
|
||||||
foreach (const QVariant &descriptorVariant, descriptors) {
|
foreach (const QVariant &descriptorVariant, descriptors) {
|
||||||
qDebug() << "Found device. Descriptor:" << descriptorVariant;
|
qDebug() << "Found device. Descriptor:" << descriptorVariant;
|
||||||
if (!contains(descriptorVariant.toMap().value("id").toUuid())) {
|
if (!contains(descriptorVariant.toMap().value("id").toUuid())) {
|
||||||
@ -154,7 +154,7 @@ void DeviceDiscovery::discoverDevicesResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_displayMessage = params.value("params").toMap().value("displayMessage").toString();
|
m_displayMessage = params.value("displayMessage").toString();
|
||||||
m_busy = false;
|
m_busy = false;
|
||||||
emit busyChanged();
|
emit busyChanged();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,7 +93,7 @@ public:
|
|||||||
QString displayMessage() const;
|
QString displayMessage() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void discoverDevicesResponse(const QVariantMap ¶ms);
|
void discoverDevicesResponse(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void busyChanged();
|
void busyChanged();
|
||||||
|
|||||||
@ -36,7 +36,10 @@
|
|||||||
#include "thinggroup.h"
|
#include "thinggroup.h"
|
||||||
#include "types/interface.h"
|
#include "types/interface.h"
|
||||||
#include "types/ioconnections.h"
|
#include "types/ioconnections.h"
|
||||||
|
|
||||||
#include <QMetaEnum>
|
#include <QMetaEnum>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QStandardPaths>
|
||||||
|
|
||||||
DeviceManager::DeviceManager(JsonRpcClient* jsonclient, QObject *parent) :
|
DeviceManager::DeviceManager(JsonRpcClient* jsonclient, QObject *parent) :
|
||||||
JsonHandler(parent),
|
JsonHandler(parent),
|
||||||
@ -61,6 +64,8 @@ void DeviceManager::clear()
|
|||||||
|
|
||||||
void DeviceManager::init()
|
void DeviceManager::init()
|
||||||
{
|
{
|
||||||
|
m_connectionBenchmark = QDateTime::currentDateTime();
|
||||||
|
|
||||||
// For old nymea setups we need to register to Events.Notifications.
|
// For old nymea setups we need to register to Events.Notifications.
|
||||||
// Deprecated since JSONRPC 4.0/nymea 0.17
|
// Deprecated since JSONRPC 4.0/nymea 0.17
|
||||||
if (!m_jsonClient->ensureServerVersion("4.0")) {
|
if (!m_jsonClient->ensureServerVersion("4.0")) {
|
||||||
@ -151,14 +156,14 @@ bool DeviceManager::fetchingData() const
|
|||||||
return m_fetchingData;
|
return m_fetchingData;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::addDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams)
|
int DeviceManager::addDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams)
|
||||||
{
|
{
|
||||||
qDebug() << "add device " << deviceClassId.toString();
|
qDebug() << "add device " << deviceClassId.toString();
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("deviceClassId", deviceClassId.toString());
|
params.insert("deviceClassId", deviceClassId.toString());
|
||||||
params.insert("name", name);
|
params.insert("name", name);
|
||||||
params.insert("deviceParams", deviceParams);
|
params.insert("deviceParams", deviceParams);
|
||||||
m_jsonClient->sendCommand("Devices.AddConfiguredDevice", params, this, "addDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.AddConfiguredDevice", params, this, "addDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::notificationReceived(const QVariantMap &data)
|
void DeviceManager::notificationReceived(const QVariantMap &data)
|
||||||
@ -264,11 +269,11 @@ void DeviceManager::notificationReceived(const QVariantMap &data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::getVendorsResponse(const QVariantMap ¶ms)
|
void DeviceManager::getVendorsResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "Got GetSupportedVendors response" << params;
|
// qDebug() << "Got GetSupportedVendors response" << params;
|
||||||
if (params.value("params").toMap().keys().contains("vendors")) {
|
if (params.keys().contains("vendors")) {
|
||||||
QVariantList vendorList = params.value("params").toMap().value("vendors").toList();
|
QVariantList vendorList = params.value("vendors").toList();
|
||||||
foreach (QVariant vendorVariant, vendorList) {
|
foreach (QVariant vendorVariant, vendorList) {
|
||||||
Vendor *vendor = JsonTypes::unpackVendor(vendorVariant.toMap());
|
Vendor *vendor = JsonTypes::unpackVendor(vendorVariant.toMap());
|
||||||
m_vendors->addVendor(vendor);
|
m_vendors->addVendor(vendor);
|
||||||
@ -277,11 +282,11 @@ void DeviceManager::getVendorsResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::getSupportedDevicesResponse(const QVariantMap ¶ms)
|
void DeviceManager::getSupportedDevicesResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "DeviceClasses received:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
// qDebug() << "DeviceClasses received:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
if (params.value("params").toMap().keys().contains("deviceClasses")) {
|
if (params.keys().contains("deviceClasses")) {
|
||||||
QVariantList deviceClassList = params.value("params").toMap().value("deviceClasses").toList();
|
QVariantList deviceClassList = params.value("deviceClasses").toList();
|
||||||
foreach (QVariant deviceClassVariant, deviceClassList) {
|
foreach (QVariant deviceClassVariant, deviceClassList) {
|
||||||
DeviceClass *deviceClass = JsonTypes::unpackDeviceClass(deviceClassVariant.toMap(), deviceClasses());
|
DeviceClass *deviceClass = JsonTypes::unpackDeviceClass(deviceClassVariant.toMap(), deviceClasses());
|
||||||
m_thingClasses->addDeviceClass(deviceClass);
|
m_thingClasses->addDeviceClass(deviceClass);
|
||||||
@ -290,11 +295,11 @@ void DeviceManager::getSupportedDevicesResponse(const QVariantMap ¶ms)
|
|||||||
m_jsonClient->sendCommand("Devices.GetConfiguredDevices", this, "getConfiguredDevicesResponse");
|
m_jsonClient->sendCommand("Devices.GetConfiguredDevices", this, "getConfiguredDevicesResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::getPluginsResponse(const QVariantMap ¶ms)
|
void DeviceManager::getPluginsResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "received plugins";
|
// qDebug() << "received plugins";
|
||||||
if (params.value("params").toMap().keys().contains("plugins")) {
|
if (params.keys().contains("plugins")) {
|
||||||
QVariantList pluginList = params.value("params").toMap().value("plugins").toList();
|
QVariantList pluginList = params.value("plugins").toList();
|
||||||
foreach (QVariant pluginVariant, pluginList) {
|
foreach (QVariant pluginVariant, pluginList) {
|
||||||
Plugin *plugin = JsonTypes::unpackPlugin(pluginVariant.toMap(), plugins());
|
Plugin *plugin = JsonTypes::unpackPlugin(pluginVariant.toMap(), plugins());
|
||||||
m_plugins->addPlugin(plugin);
|
m_plugins->addPlugin(plugin);
|
||||||
@ -310,7 +315,7 @@ void DeviceManager::getPluginsResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::getPluginConfigResponse(const QVariantMap ¶ms)
|
void DeviceManager::getPluginConfigResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "plugin config response" << params;
|
// qDebug() << "plugin config response" << params;
|
||||||
Plugin *p = m_plugins->get(m_currentGetConfigIndex);
|
Plugin *p = m_plugins->get(m_currentGetConfigIndex);
|
||||||
@ -318,7 +323,7 @@ void DeviceManager::getPluginConfigResponse(const QVariantMap ¶ms)
|
|||||||
qDebug() << "Received a plugin config for a plugin we don't know";
|
qDebug() << "Received a plugin config for a plugin we don't know";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QVariantList pluginParams = params.value("params").toMap().value("configuration").toList();
|
QVariantList pluginParams = params.value("configuration").toList();
|
||||||
foreach (const QVariant ¶mVariant, pluginParams) {
|
foreach (const QVariant ¶mVariant, pluginParams) {
|
||||||
Param* param = new Param();
|
Param* param = new Param();
|
||||||
JsonTypes::unpackParam(paramVariant.toMap(), param);
|
JsonTypes::unpackParam(paramVariant.toMap(), param);
|
||||||
@ -333,10 +338,10 @@ void DeviceManager::getPluginConfigResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::getConfiguredDevicesResponse(const QVariantMap ¶ms)
|
void DeviceManager::getConfiguredDevicesResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("params").toMap().keys().contains("devices")) {
|
if (params.keys().contains("devices")) {
|
||||||
QVariantList deviceList = params.value("params").toMap().value("devices").toList();
|
QVariantList deviceList = params.value("devices").toList();
|
||||||
foreach (QVariant deviceVariant, deviceList) {
|
foreach (QVariant deviceVariant, deviceList) {
|
||||||
Device *device = JsonTypes::unpackDevice(this, deviceVariant.toMap(), m_thingClasses);
|
Device *device = JsonTypes::unpackDevice(this, deviceVariant.toMap(), m_thingClasses);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
@ -369,6 +374,7 @@ void DeviceManager::getConfiguredDevicesResponse(const QVariantMap ¶ms)
|
|||||||
// qDebug() << "*** Added device:" << endl << device;
|
// qDebug() << "*** Added device:" << endl << device;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
qDebug() << "Initializing thing manager took" << m_connectionBenchmark.msecsTo(QDateTime::currentDateTime()) << "ms";
|
||||||
m_fetchingData = false;
|
m_fetchingData = false;
|
||||||
emit fetchingDataChanged();
|
emit fetchingDataChanged();
|
||||||
|
|
||||||
@ -377,12 +383,12 @@ void DeviceManager::getConfiguredDevicesResponse(const QVariantMap ¶ms)
|
|||||||
m_jsonClient->sendCommand("Devices.GetPlugins", this, "getPluginsResponse");
|
m_jsonClient->sendCommand("Devices.GetPlugins", this, "getPluginsResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::addDeviceResponse(const QVariantMap ¶ms)
|
void DeviceManager::addDeviceResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("params").toMap().value("deviceError").toString() != "DeviceErrorNoError") {
|
if (params.value("deviceError").toString() != "DeviceErrorNoError") {
|
||||||
qWarning() << "Failed to add the device:" << params.value("params").toMap().value("deviceError").toString();
|
qWarning() << "Failed to add the device:" << params.value("deviceError").toString();
|
||||||
} else if (params.value("params").toMap().keys().contains("device")) {
|
} else if (params.keys().contains("device")) {
|
||||||
QVariantMap deviceVariant = params.value("params").toMap().value("device").toMap();
|
QVariantMap deviceVariant = params.value("device").toMap();
|
||||||
Device *device = JsonTypes::unpackDevice(this, deviceVariant, m_thingClasses);
|
Device *device = JsonTypes::unpackDevice(this, deviceVariant, m_thingClasses);
|
||||||
if (!device) {
|
if (!device) {
|
||||||
qWarning() << "Couldn't parse json in addDeviceResponse";
|
qWarning() << "Couldn't parse json in addDeviceResponse";
|
||||||
@ -392,57 +398,57 @@ void DeviceManager::addDeviceResponse(const QVariantMap ¶ms)
|
|||||||
qDebug() << "Device added" << device->id().toString();
|
qDebug() << "Device added" << device->id().toString();
|
||||||
m_devices->addDevice(device);
|
m_devices->addDevice(device);
|
||||||
}
|
}
|
||||||
emit addDeviceReply(params.value("params").toMap());
|
emit addDeviceReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::removeDeviceResponse(const QVariantMap ¶ms)
|
void DeviceManager::removeDeviceResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Device removed response" << params;
|
qDebug() << "Device removed response" << params;
|
||||||
emit removeDeviceReply(params.value("params").toMap());
|
emit removeDeviceReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::pairDeviceResponse(const QVariantMap ¶ms)
|
void DeviceManager::pairDeviceResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Pair device response:" << params;
|
qDebug() << "Pair device response:" << params;
|
||||||
emit pairDeviceReply(params.value("params").toMap());
|
emit pairDeviceReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::confirmPairingResponse(const QVariantMap ¶ms)
|
void DeviceManager::confirmPairingResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "ConfirmPairingResponse" << params;
|
qDebug() << "ConfirmPairingResponse" << params;
|
||||||
emit confirmPairingReply(params.value("params").toMap());
|
emit confirmPairingReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::setPluginConfigResponse(const QVariantMap ¶ms)
|
void DeviceManager::setPluginConfigResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "set plugin config respionse" << params;
|
qDebug() << "set plugin config response" << params;
|
||||||
emit savePluginConfigReply(params);
|
emit savePluginConfigReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::editDeviceResponse(const QVariantMap ¶ms)
|
void DeviceManager::editDeviceResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Edit device response" << params;
|
qDebug() << "Edit device response" << params;
|
||||||
emit editDeviceReply(params);
|
emit editDeviceReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::executeActionResponse(const QVariantMap ¶ms)
|
void DeviceManager::executeActionResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Execute Action response" << params;
|
qDebug() << "Execute Action response" << params;
|
||||||
emit executeActionReply(params);
|
emit executeActionReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::reconfigureDeviceResponse(const QVariantMap ¶ms)
|
void DeviceManager::reconfigureDeviceResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Reconfigure device response" << params;
|
qDebug() << "Reconfigure device response" << params;
|
||||||
emit reconfigureDeviceReply(params.value("params").toMap());
|
emit reconfigureDeviceReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::savePluginConfig(const QUuid &pluginId)
|
int DeviceManager::savePluginConfig(const QUuid &pluginId)
|
||||||
{
|
{
|
||||||
Plugin *p = m_plugins->getPlugin(pluginId);
|
Plugin *p = m_plugins->getPlugin(pluginId);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
qWarning()<< "Error: can't find plugin with id" << pluginId;
|
qWarning()<< "Error: can't find plugin with id" << pluginId;
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("pluginId", pluginId);
|
params.insert("pluginId", pluginId);
|
||||||
@ -451,7 +457,7 @@ void DeviceManager::savePluginConfig(const QUuid &pluginId)
|
|||||||
pluginParams.append(JsonTypes::packParam(p->params()->get(i)));
|
pluginParams.append(JsonTypes::packParam(p->params()->get(i)));
|
||||||
}
|
}
|
||||||
params.insert("configuration", pluginParams);
|
params.insert("configuration", pluginParams);
|
||||||
m_jsonClient->sendCommand("Devices.SetPluginConfiguration", params, this, "setPluginConfigResponse");
|
return m_jsonClient->sendCommand("Devices.SetPluginConfiguration", params, this, "setPluginConfigResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
ThingGroup *DeviceManager::createGroup(Interface *interface, DevicesProxy *things)
|
ThingGroup *DeviceManager::createGroup(Interface *interface, DevicesProxy *things)
|
||||||
@ -461,7 +467,7 @@ ThingGroup *DeviceManager::createGroup(Interface *interface, DevicesProxy *thing
|
|||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name, const QVariantList &deviceParams)
|
int DeviceManager::addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name, const QVariantList &deviceParams)
|
||||||
{
|
{
|
||||||
qDebug() << "JsonRpc: add discovered device " << deviceClassId.toString();
|
qDebug() << "JsonRpc: add discovered device " << deviceClassId.toString();
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
@ -469,10 +475,10 @@ void DeviceManager::addDiscoveredDevice(const QUuid &deviceClassId, const QUuid
|
|||||||
params.insert("name", name);
|
params.insert("name", name);
|
||||||
params.insert("deviceDescriptorId", deviceDescriptorId.toString());
|
params.insert("deviceDescriptorId", deviceDescriptorId.toString());
|
||||||
params.insert("deviceParams", deviceParams);
|
params.insert("deviceParams", deviceParams);
|
||||||
m_jsonClient->sendCommand("Devices.AddConfiguredDevice", params, this, "addDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.AddConfiguredDevice", params, this, "addDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::pairDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QVariantList &deviceParams, const QString &name)
|
int DeviceManager::pairDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QVariantList &deviceParams, const QString &name)
|
||||||
{
|
{
|
||||||
qDebug() << "JsonRpc: pair discovered device " << deviceDescriptorId.toString();
|
qDebug() << "JsonRpc: pair discovered device " << deviceDescriptorId.toString();
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
@ -484,20 +490,20 @@ void DeviceManager::pairDiscoveredDevice(const QUuid &deviceClassId, const QUuid
|
|||||||
params.insert("deviceClassId", deviceClassId);
|
params.insert("deviceClassId", deviceClassId);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::pairDevice(const QUuid &deviceClassId, const QVariantList &deviceParams, const QString &name)
|
int DeviceManager::pairDevice(const QUuid &deviceClassId, const QVariantList &deviceParams, const QString &name)
|
||||||
{
|
{
|
||||||
qDebug() << "JsonRpc: pair device " << deviceClassId.toString();
|
qDebug() << "JsonRpc: pair device " << deviceClassId.toString();
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("deviceClassId", deviceClassId.toString());
|
params.insert("deviceClassId", deviceClassId.toString());
|
||||||
params.insert("deviceParams", deviceParams);
|
params.insert("deviceParams", deviceParams);
|
||||||
params.insert("name", name);
|
params.insert("name", name);
|
||||||
m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::rePairDevice(const QUuid &deviceId, const QVariantList &deviceParams, const QString &name)
|
int DeviceManager::rePairDevice(const QUuid &deviceId, const QVariantList &deviceParams, const QString &name)
|
||||||
{
|
{
|
||||||
qDebug() << "JsonRpc: pair device (reconfigure)" << deviceId;
|
qDebug() << "JsonRpc: pair device (reconfigure)" << deviceId;
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
@ -506,10 +512,10 @@ void DeviceManager::rePairDevice(const QUuid &deviceId, const QVariantList &devi
|
|||||||
if (!name.isEmpty()) {
|
if (!name.isEmpty()) {
|
||||||
params.insert("name", name);
|
params.insert("name", name);
|
||||||
}
|
}
|
||||||
m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QString &secret, const QString &username)
|
int DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QString &secret, const QString &username)
|
||||||
{
|
{
|
||||||
qDebug() << "JsonRpc: confirm pairing" << pairingTransactionId.toString();
|
qDebug() << "JsonRpc: confirm pairing" << pairingTransactionId.toString();
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
@ -518,10 +524,10 @@ void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QStr
|
|||||||
if (!username.isEmpty()) {
|
if (!username.isEmpty()) {
|
||||||
params.insert("username", username);
|
params.insert("username", username);
|
||||||
}
|
}
|
||||||
m_jsonClient->sendCommand("Devices.ConfirmPairing", params, this, "confirmPairingResponse");
|
return m_jsonClient->sendCommand("Devices.ConfirmPairing", params, this, "confirmPairingResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::removeDevice(const QUuid &deviceId, RemovePolicy removePolicy)
|
int DeviceManager::removeDevice(const QUuid &deviceId, RemovePolicy removePolicy)
|
||||||
{
|
{
|
||||||
qDebug() << "JsonRpc: delete device" << deviceId.toString();
|
qDebug() << "JsonRpc: delete device" << deviceId.toString();
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
@ -530,34 +536,34 @@ void DeviceManager::removeDevice(const QUuid &deviceId, RemovePolicy removePolic
|
|||||||
QMetaEnum policyEnum = QMetaEnum::fromType<DeviceManager::RemovePolicy>();
|
QMetaEnum policyEnum = QMetaEnum::fromType<DeviceManager::RemovePolicy>();
|
||||||
params.insert("removePolicy", policyEnum.valueToKey(removePolicy));
|
params.insert("removePolicy", policyEnum.valueToKey(removePolicy));
|
||||||
}
|
}
|
||||||
m_jsonClient->sendCommand("Devices.RemoveConfiguredDevice", params, this, "removeDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.RemoveConfiguredDevice", params, this, "removeDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::editDevice(const QUuid &deviceId, const QString &name)
|
int DeviceManager::editDevice(const QUuid &deviceId, const QString &name)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("deviceId", deviceId.toString());
|
params.insert("deviceId", deviceId.toString());
|
||||||
params.insert("name", name);
|
params.insert("name", name);
|
||||||
m_jsonClient->sendCommand("Devices.EditDevice", params, this, "editDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.EditDevice", params, this, "editDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::setDeviceSettings(const QUuid &deviceId, const QVariantList &settings)
|
int DeviceManager::setDeviceSettings(const QUuid &deviceId, const QVariantList &settings)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("deviceId", deviceId);
|
params.insert("deviceId", deviceId);
|
||||||
params.insert("settings", settings);
|
params.insert("settings", settings);
|
||||||
m_jsonClient->sendCommand("Devices.SetDeviceSettings", params);
|
return m_jsonClient->sendCommand("Devices.SetDeviceSettings", params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::reconfigureDevice(const QUuid &deviceId, const QVariantList &deviceParams)
|
int DeviceManager::reconfigureDevice(const QUuid &deviceId, const QVariantList &deviceParams)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("deviceId", deviceId.toString());
|
params.insert("deviceId", deviceId.toString());
|
||||||
params.insert("deviceParams", deviceParams);
|
params.insert("deviceParams", deviceParams);
|
||||||
m_jsonClient->sendCommand("Devices.ReconfigureDevice", params, this, "reconfigureDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.ReconfigureDevice", params, this, "reconfigureDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId, const QVariantList ¶mOverride)
|
int DeviceManager::reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId, const QVariantList ¶mOverride)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("deviceId", deviceId.toString());
|
params.insert("deviceId", deviceId.toString());
|
||||||
@ -566,7 +572,7 @@ void DeviceManager::reconfigureDiscoveredDevice(const QUuid &deviceId, const QUu
|
|||||||
params.insert("deviceParams", paramOverride);
|
params.insert("deviceParams", paramOverride);
|
||||||
}
|
}
|
||||||
qDebug() << "Calling ReconfigureDevice" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
qDebug() << "Calling ReconfigureDevice" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
m_jsonClient->sendCommand("Devices.ReconfigureDevice", params, this, "reconfigureDeviceResponse");
|
return m_jsonClient->sendCommand("Devices.ReconfigureDevice", params, this, "reconfigureDeviceResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
int DeviceManager::executeAction(const QUuid &deviceId, const QUuid &actionTypeId, const QVariantList ¶ms)
|
int DeviceManager::executeAction(const QUuid &deviceId, const QUuid &actionTypeId, const QVariantList ¶ms)
|
||||||
@ -627,16 +633,15 @@ BrowserItem *DeviceManager::browserItem(const QUuid &deviceId, const QString &it
|
|||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::browseDeviceResponse(const QVariantMap ¶ms)
|
void DeviceManager::browseDeviceResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "Browsing response:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
// qDebug() << "Browsing response:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
if (!m_browsingRequests.contains(commandId)) {
|
||||||
if (!m_browsingRequests.contains(id)) {
|
|
||||||
qWarning() << "Received a browsing reply for an id we don't know.";
|
qWarning() << "Received a browsing reply for an id we don't know.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPointer<BrowserItems> itemModel = m_browsingRequests.take(id);
|
QPointer<BrowserItems> itemModel = m_browsingRequests.take(commandId);
|
||||||
if (!itemModel) {
|
if (!itemModel) {
|
||||||
qDebug() << "BrowserItems model seems to have disappeared. Discarding browsing result.";
|
qDebug() << "BrowserItems model seems to have disappeared. Discarding browsing result.";
|
||||||
return;
|
return;
|
||||||
@ -644,7 +649,7 @@ void DeviceManager::browseDeviceResponse(const QVariantMap ¶ms)
|
|||||||
|
|
||||||
QList<BrowserItem*> itemsToRemove = itemModel->list();
|
QList<BrowserItem*> itemsToRemove = itemModel->list();
|
||||||
|
|
||||||
foreach (const QVariant &itemVariant, params.value("params").toMap().value("items").toList()) {
|
foreach (const QVariant &itemVariant, params.value("items").toList()) {
|
||||||
QVariantMap itemMap = itemVariant.toMap();
|
QVariantMap itemMap = itemVariant.toMap();
|
||||||
QString itemId = itemMap.value("id").toString();
|
QString itemId = itemMap.value("id").toString();
|
||||||
BrowserItem *item = itemModel->getBrowserItem(itemId);
|
BrowserItem *item = itemModel->getBrowserItem(itemId);
|
||||||
@ -676,22 +681,21 @@ void DeviceManager::browseDeviceResponse(const QVariantMap ¶ms)
|
|||||||
itemModel->setBusy(false);
|
itemModel->setBusy(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::browserItemResponse(const QVariantMap ¶ms)
|
void DeviceManager::browserItemResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Browser item details response:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qDebug() << "Browser item details response:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
int id = params.value("id").toInt();
|
if (!m_browserDetailsRequests.contains(commandId)) {
|
||||||
if (!m_browserDetailsRequests.contains(id)) {
|
|
||||||
qWarning() << "Received a browser item details reply for an id we don't know.";
|
qWarning() << "Received a browser item details reply for an id we don't know.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPointer<BrowserItem> item = m_browserDetailsRequests.take(id);
|
QPointer<BrowserItem> item = m_browserDetailsRequests.take(commandId);
|
||||||
if (!item) {
|
if (!item) {
|
||||||
qDebug() << "BrowserItem seems to have disappeared. Discarding browser item details result.";
|
qDebug() << "BrowserItem seems to have disappeared. Discarding browser item details result.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap itemMap = params.value("params").toMap().value("item").toMap();
|
QVariantMap itemMap = params.value("item").toMap();
|
||||||
item->setDisplayName(itemMap.value("displayName").toString());
|
item->setDisplayName(itemMap.value("displayName").toString());
|
||||||
item->setDescription(itemMap.value("description").toString());
|
item->setDescription(itemMap.value("description").toString());
|
||||||
item->setIcon(itemMap.value("icon").toString());
|
item->setIcon(itemMap.value("icon").toString());
|
||||||
@ -712,10 +716,10 @@ int DeviceManager::executeBrowserItem(const QUuid &deviceId, const QString &item
|
|||||||
return m_jsonClient->sendCommand("Actions.ExecuteBrowserItem", params, this, "executeBrowserItemResponse");
|
return m_jsonClient->sendCommand("Actions.ExecuteBrowserItem", params, this, "executeBrowserItemResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::executeBrowserItemResponse(const QVariantMap ¶ms)
|
void DeviceManager::executeBrowserItemResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Execute Browser Item finished" << params;
|
qDebug() << "Execute Browser Item finished" << params;
|
||||||
emit executeBrowserItemReply(params);
|
emit executeBrowserItemReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
int DeviceManager::executeBrowserItemAction(const QUuid &deviceId, const QString &itemId, const QUuid &actionTypeId, const QVariantList ¶ms)
|
int DeviceManager::executeBrowserItemAction(const QUuid &deviceId, const QString &itemId, const QUuid &actionTypeId, const QVariantList ¶ms)
|
||||||
@ -747,17 +751,17 @@ int DeviceManager::disconnectIO(const QUuid &ioConnectionId)
|
|||||||
return m_jsonClient->sendCommand("Integrations.DisconnectIO", data, this, "disconnectIOResponse");
|
return m_jsonClient->sendCommand("Integrations.DisconnectIO", data, this, "disconnectIOResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::executeBrowserItemActionResponse(const QVariantMap ¶ms)
|
void DeviceManager::executeBrowserItemActionResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Execute Browser Item Action finished" << params;
|
qDebug() << "Execute Browser Item Action finished" << params;
|
||||||
emit executeBrowserItemActionReply(params);
|
emit executeBrowserItemActionReply(commandId, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::getIOConnectionsResponse(const QVariantMap ¶ms)
|
void DeviceManager::getIOConnectionsResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
// qDebug() << "Get IO connections response" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
// qDebug() << "Get IO connections response" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
|
|
||||||
foreach (const QVariant &connectionVariant, params.value("params").toMap().value("ioConnections").toList()) {
|
foreach (const QVariant &connectionVariant, params.value("ioConnections").toList()) {
|
||||||
QVariantMap connectionMap = connectionVariant.toMap();
|
QVariantMap connectionMap = connectionVariant.toMap();
|
||||||
QUuid id = connectionMap.value("id").toUuid();
|
QUuid id = connectionMap.value("id").toUuid();
|
||||||
QUuid inputThingId = connectionMap.value("inputThingId").toUuid();
|
QUuid inputThingId = connectionMap.value("inputThingId").toUuid();
|
||||||
@ -770,13 +774,13 @@ void DeviceManager::getIOConnectionsResponse(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::connectIOResponse(const QVariantMap ¶ms)
|
void DeviceManager::connectIOResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "ConnectIO response" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
qDebug() << "ConnectIO response" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::disconnectIOResponse(const QVariantMap ¶ms)
|
void DeviceManager::disconnectIOResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "DisconnectIO response" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
qDebug() << "DisconnectIO response" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -86,19 +86,19 @@ public:
|
|||||||
|
|
||||||
bool fetchingData() const;
|
bool fetchingData() const;
|
||||||
|
|
||||||
Q_INVOKABLE void addDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams);
|
Q_INVOKABLE int addDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams);
|
||||||
// param deviceClassId is deprecated and should be removed when minimum JSONRPC version is 3.1
|
// param deviceClassId is deprecated and should be removed when minimum JSONRPC version is 3.1
|
||||||
Q_INVOKABLE void addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name, const QVariantList &deviceParams);
|
Q_INVOKABLE int addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name, const QVariantList &deviceParams);
|
||||||
Q_INVOKABLE void pairDevice(const QUuid &deviceClassId, const QVariantList &deviceParams, const QString &name);
|
Q_INVOKABLE int pairDevice(const QUuid &deviceClassId, const QVariantList &deviceParams, const QString &name);
|
||||||
// param deviceClassId is deprecated and should be removed when minimum JSONRPC version is 3.1
|
// param deviceClassId is deprecated and should be removed when minimum JSONRPC version is 3.1
|
||||||
Q_INVOKABLE void pairDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QVariantList &deviceParams, const QString &name);
|
Q_INVOKABLE int pairDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QVariantList &deviceParams, const QString &name);
|
||||||
Q_INVOKABLE void rePairDevice(const QUuid &deviceId, const QVariantList &deviceParams, const QString &name = QString());
|
Q_INVOKABLE int rePairDevice(const QUuid &deviceId, const QVariantList &deviceParams, const QString &name = QString());
|
||||||
Q_INVOKABLE void confirmPairing(const QUuid &pairingTransactionId, const QString &secret = QString(), const QString &username = QString());
|
Q_INVOKABLE int confirmPairing(const QUuid &pairingTransactionId, const QString &secret = QString(), const QString &username = QString());
|
||||||
Q_INVOKABLE void removeDevice(const QUuid &deviceId, RemovePolicy policy = RemovePolicyNone);
|
Q_INVOKABLE int removeDevice(const QUuid &deviceId, RemovePolicy policy = RemovePolicyNone);
|
||||||
Q_INVOKABLE void editDevice(const QUuid &deviceId, const QString &name);
|
Q_INVOKABLE int editDevice(const QUuid &deviceId, const QString &name);
|
||||||
Q_INVOKABLE void setDeviceSettings(const QUuid &deviceId, const QVariantList &settings);
|
Q_INVOKABLE int setDeviceSettings(const QUuid &deviceId, const QVariantList &settings);
|
||||||
Q_INVOKABLE void reconfigureDevice(const QUuid &deviceId, const QVariantList &deviceParams);
|
Q_INVOKABLE int reconfigureDevice(const QUuid &deviceId, const QVariantList &deviceParams);
|
||||||
Q_INVOKABLE void reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId, const QVariantList ¶mOverride);
|
Q_INVOKABLE int reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId, const QVariantList ¶mOverride);
|
||||||
Q_INVOKABLE int executeAction(const QUuid &deviceId, const QUuid &actionTypeId, const QVariantList ¶ms = QVariantList());
|
Q_INVOKABLE int executeAction(const QUuid &deviceId, const QUuid &actionTypeId, const QVariantList ¶ms = QVariantList());
|
||||||
Q_INVOKABLE BrowserItems* browseDevice(const QUuid &deviceId, const QString &itemId = QString());
|
Q_INVOKABLE BrowserItems* browseDevice(const QUuid &deviceId, const QString &itemId = QString());
|
||||||
Q_INVOKABLE void refreshBrowserItems(BrowserItems *browserItems);
|
Q_INVOKABLE void refreshBrowserItems(BrowserItems *browserItems);
|
||||||
@ -111,43 +111,43 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Q_INVOKABLE void notificationReceived(const QVariantMap &data);
|
Q_INVOKABLE void notificationReceived(const QVariantMap &data);
|
||||||
Q_INVOKABLE void getVendorsResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getVendorsResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getSupportedDevicesResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getSupportedDevicesResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getPluginsResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getPluginsResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getPluginConfigResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getPluginConfigResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getConfiguredDevicesResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getConfiguredDevicesResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void addDeviceResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void addDeviceResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void removeDeviceResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void removeDeviceResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void pairDeviceResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void pairDeviceResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void confirmPairingResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void confirmPairingResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void setPluginConfigResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void setPluginConfigResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void editDeviceResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void editDeviceResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void executeActionResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void executeActionResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void reconfigureDeviceResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void reconfigureDeviceResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void browseDeviceResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void browseDeviceResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void browserItemResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void browserItemResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void executeBrowserItemResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void executeBrowserItemResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void executeBrowserItemActionResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void executeBrowserItemActionResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void getIOConnectionsResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void getIOConnectionsResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void connectIOResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void connectIOResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void disconnectIOResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void disconnectIOResponse(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void savePluginConfig(const QUuid &pluginId);
|
int savePluginConfig(const QUuid &pluginId);
|
||||||
|
|
||||||
ThingGroup* createGroup(Interface *interface, DevicesProxy *things);
|
ThingGroup* createGroup(Interface *interface, DevicesProxy *things);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void pairDeviceReply(const QVariantMap ¶ms);
|
void pairDeviceReply(int commandId, const QVariantMap ¶ms);
|
||||||
void confirmPairingReply(const QVariantMap ¶ms);
|
void confirmPairingReply(int commandId, const QVariantMap ¶ms);
|
||||||
void addDeviceReply(const QVariantMap ¶ms);
|
void addDeviceReply(int commandId, const QVariantMap ¶ms);
|
||||||
void removeDeviceReply(const QVariantMap ¶ms);
|
void removeDeviceReply(int commandId, const QVariantMap ¶ms);
|
||||||
void savePluginConfigReply(const QVariantMap ¶ms);
|
void savePluginConfigReply(int commandId, const QVariantMap ¶ms);
|
||||||
void editDeviceReply(const QVariantMap ¶ms);
|
void editDeviceReply(int commandId, const QVariantMap ¶ms);
|
||||||
void reconfigureDeviceReply(const QVariantMap ¶ms);
|
void reconfigureDeviceReply(int commandId, const QVariantMap ¶ms);
|
||||||
void executeActionReply(const QVariantMap ¶ms);
|
void executeActionReply(int commandId, const QVariantMap ¶ms);
|
||||||
void executeBrowserItemReply(const QVariantMap ¶ms);
|
void executeBrowserItemReply(int commandId, const QVariantMap ¶ms);
|
||||||
void executeBrowserItemActionReply(const QVariantMap ¶ms);
|
void executeBrowserItemActionReply(int commandId, const QVariantMap ¶ms);
|
||||||
void fetchingDataChanged();
|
void fetchingDataChanged();
|
||||||
void notificationReceived(const QString &deviceId, const QString &eventTypeId, const QVariantList ¶ms);
|
void notificationReceived(const QString &deviceId, const QString &eventTypeId, const QVariantList ¶ms);
|
||||||
|
|
||||||
@ -169,6 +169,7 @@ private:
|
|||||||
QHash<int, QPointer<BrowserItems> > m_browsingRequests;
|
QHash<int, QPointer<BrowserItems> > m_browsingRequests;
|
||||||
QHash<int, QPointer<BrowserItem> > m_browserDetailsRequests;
|
QHash<int, QPointer<BrowserItem> > m_browserDetailsRequests;
|
||||||
|
|
||||||
|
QDateTime m_connectionBenchmark;
|
||||||
|
|
||||||
// Deprecated stuff for nymea < 0.17 (JSONRPC < 4.0)
|
// Deprecated stuff for nymea < 0.17 (JSONRPC < 4.0)
|
||||||
EventHandler *m_eventHandler = nullptr;
|
EventHandler *m_eventHandler = nullptr;
|
||||||
|
|||||||
@ -94,7 +94,31 @@ void JsonRpcClient::unregisterNotificationHandler(JsonHandler *handler)
|
|||||||
|
|
||||||
int JsonRpcClient::sendCommand(const QString &method, const QVariantMap ¶ms, QObject *caller, const QString &callbackMethod)
|
int JsonRpcClient::sendCommand(const QString &method, const QVariantMap ¶ms, QObject *caller, const QString &callbackMethod)
|
||||||
{
|
{
|
||||||
|
|
||||||
JsonRpcReply *reply = createReply(method, params, caller, callbackMethod);
|
JsonRpcReply *reply = createReply(method, params, caller, callbackMethod);
|
||||||
|
|
||||||
|
if (m_cacheHashes.contains(method)) {
|
||||||
|
QString hash = m_cacheHashes.value(method);
|
||||||
|
QString callSignature = method + '-' + QJsonDocument::fromVariant(params).toJson() + '-' + QLocale().name();
|
||||||
|
QString callSignatureHash = QCryptographicHash::hash(callSignature.toUtf8(), QCryptographicHash::Md5).toHex();
|
||||||
|
QFile f(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + '/' + method + '-' + callSignatureHash + '-' + hash + ".cache");
|
||||||
|
if (f.exists() && f.open(QFile::ReadOnly)) {
|
||||||
|
QJsonParseError error;
|
||||||
|
QVariantMap cachedParams = QJsonDocument::fromJson(f.readAll(), &error).toVariant().toMap();
|
||||||
|
f.close();
|
||||||
|
if (error.error == QJsonParseError::NoError) {
|
||||||
|
qDebug() << "Loaded results for" << reply->nameSpace() + '.' + reply->method() << "from cache";
|
||||||
|
// We want to make sure this is an async operation even if we have stuff in cache, so only call callbacks using Qt::QueuedConnection
|
||||||
|
if (!reply->caller().isNull() && !reply->callback().isEmpty()) {
|
||||||
|
QMetaObject::invokeMethod(reply->caller(), reply->callback().toLatin1().data(), Qt::QueuedConnection, Q_ARG(int, reply->commandId()), Q_ARG(QVariantMap, cachedParams));
|
||||||
|
}
|
||||||
|
QMetaObject::invokeMethod(this, "responseReceived", Qt::QueuedConnection, Q_ARG(int, reply->commandId()), Q_ARG(QVariantMap, cachedParams));
|
||||||
|
QMetaObject::invokeMethod(reply, "deleteLater", Qt::QueuedConnection);
|
||||||
|
return reply->commandId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_replies.insert(reply->commandId(), reply);
|
m_replies.insert(reply->commandId(), reply);
|
||||||
sendRequest(reply->requestMap());
|
sendRequest(reply->requestMap());
|
||||||
return reply->commandId();
|
return reply->commandId();
|
||||||
@ -102,6 +126,7 @@ int JsonRpcClient::sendCommand(const QString &method, const QVariantMap ¶ms,
|
|||||||
|
|
||||||
int JsonRpcClient::sendCommand(const QString &method, QObject *caller, const QString &callbackMethod)
|
int JsonRpcClient::sendCommand(const QString &method, QObject *caller, const QString &callbackMethod)
|
||||||
{
|
{
|
||||||
|
|
||||||
return sendCommand(method, QVariantMap(), caller, callbackMethod);
|
return sendCommand(method, QVariantMap(), caller, callbackMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +163,7 @@ void JsonRpcClient::getCloudConnectionStatus()
|
|||||||
sendRequest(reply->requestMap());
|
sendRequest(reply->requestMap());
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::setNotificationsEnabledResponse(const QVariantMap ¶ms)
|
void JsonRpcClient::setNotificationsEnabledResponse(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Notifications enabled:" << params;
|
qDebug() << "Notifications enabled:" << params;
|
||||||
|
|
||||||
@ -187,28 +212,28 @@ void JsonRpcClient::notificationReceived(const QVariantMap &data)
|
|||||||
qDebug() << "JsonRpcClient: Unhandled notification received" << data;
|
qDebug() << "JsonRpcClient: Unhandled notification received" << data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::isCloudConnectedReply(const QVariantMap &data)
|
void JsonRpcClient::isCloudConnectedReply(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
// qDebug() << "Cloud is connected" << data;
|
// qDebug() << "Cloud is connected" << data;
|
||||||
QMetaEnum connectionStateEnum = QMetaEnum::fromType<CloudConnectionState>();
|
QMetaEnum connectionStateEnum = QMetaEnum::fromType<CloudConnectionState>();
|
||||||
m_cloudConnectionState = static_cast<CloudConnectionState>(connectionStateEnum.keyToValue(data.value("params").toMap().value("connectionState").toByteArray().data()));
|
m_cloudConnectionState = static_cast<CloudConnectionState>(connectionStateEnum.keyToValue(data.value("connectionState").toByteArray().data()));
|
||||||
emit cloudConnectionStateChanged();
|
emit cloudConnectionStateChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::setupRemoteAccessReply(const QVariantMap &data)
|
void JsonRpcClient::setupRemoteAccessReply(int commandId, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
qDebug() << "Setup Remote Access reply" << data;
|
qDebug() << "Setup Remote Access reply" << commandId << data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::deployCertificateReply(const QVariantMap &data)
|
void JsonRpcClient::deployCertificateReply(int commandId, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
qDebug() << "deploy certificate reply:" << data;
|
qDebug() << "deploy certificate reply:" << commandId << data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::getVersionsReply(const QVariantMap &data)
|
void JsonRpcClient::getVersionsReply(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
m_serverQtVersion = data.value("params").toMap().value("qtVersion").toString();
|
m_serverQtVersion = data.value("qtVersion").toString();
|
||||||
m_serverQtBuildVersion = data.value("params").toMap().value("qtBuildVersion").toString();
|
m_serverQtBuildVersion = data.value("qtBuildVersion").toString();
|
||||||
if (!m_serverQtVersion.isEmpty()) {
|
if (!m_serverQtVersion.isEmpty()) {
|
||||||
emit serverQtVersionChanged();
|
emit serverQtVersionChanged();
|
||||||
}
|
}
|
||||||
@ -287,6 +312,11 @@ void JsonRpcClient::deployCertificate(const QByteArray &rootCA, const QByteArray
|
|||||||
sendCommand("JSONRPC.SetupCloudConnection", params, this, "deployCertificateReply");
|
sendCommand("JSONRPC.SetupCloudConnection", params, this, "deployCertificateReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QHash<QString, QString> JsonRpcClient::cacheHashes() const
|
||||||
|
{
|
||||||
|
return m_cacheHashes;
|
||||||
|
}
|
||||||
|
|
||||||
QString JsonRpcClient::serverVersion() const
|
QString JsonRpcClient::serverVersion() const
|
||||||
{
|
{
|
||||||
return m_serverVersion;
|
return m_serverVersion;
|
||||||
@ -353,13 +383,13 @@ int JsonRpcClient::requestPushButtonAuth(const QString &deviceName)
|
|||||||
return reply->commandId();
|
return reply->commandId();
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::setupRemoteAccess(const QString &idToken, const QString &userId)
|
int JsonRpcClient::setupRemoteAccess(const QString &idToken, const QString &userId)
|
||||||
{
|
{
|
||||||
qDebug() << "Calling SetupRemoteAccess";
|
qDebug() << "Calling SetupRemoteAccess";
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("idToken", idToken);
|
params.insert("idToken", idToken);
|
||||||
params.insert("userId", userId);
|
params.insert("userId", userId);
|
||||||
sendCommand("JSONRPC.SetupRemoteAccess", params, this, "setupRemoteAccessReply");
|
return sendCommand("JSONRPC.SetupRemoteAccess", params, this, "setupRemoteAccessReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool JsonRpcClient::ensureServerVersion(const QString &jsonRpcVersion)
|
bool JsonRpcClient::ensureServerVersion(const QString &jsonRpcVersion)
|
||||||
@ -367,11 +397,11 @@ bool JsonRpcClient::ensureServerVersion(const QString &jsonRpcVersion)
|
|||||||
return QVersionNumber(m_jsonRpcVersion) >= QVersionNumber::fromString(jsonRpcVersion);
|
return QVersionNumber(m_jsonRpcVersion) >= QVersionNumber::fromString(jsonRpcVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::processAuthenticate(const QVariantMap &data)
|
void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
if (data.value("status").toString() == "success" && data.value("params").toMap().value("success").toBool()) {
|
if (data.value("success").toBool()) {
|
||||||
qDebug() << "authentication successful";
|
qDebug() << "authentication successful";
|
||||||
m_token = data.value("params").toMap().value("token").toByteArray();
|
m_token = data.value("token").toByteArray();
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
settings.beginGroup("jsonTokens");
|
settings.beginGroup("jsonTokens");
|
||||||
settings.setValue(m_serverUuid, m_token);
|
settings.setValue(m_serverUuid, m_token);
|
||||||
@ -388,24 +418,24 @@ void JsonRpcClient::processAuthenticate(const QVariantMap &data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::processCreateUser(const QVariantMap &data)
|
void JsonRpcClient::processCreateUser(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
qDebug() << "create user response:" << data;
|
qDebug() << "create user response:" << data;
|
||||||
if (data.value("status").toString() == "success" && data.value("params").toMap().value("error").toString() == "UserErrorNoError") {
|
if (data.value("error").toString() == "UserErrorNoError") {
|
||||||
emit createUserSucceeded();
|
emit createUserSucceeded();
|
||||||
m_initialSetupRequired = false;
|
m_initialSetupRequired = false;
|
||||||
emit initialSetupRequiredChanged();
|
emit initialSetupRequiredChanged();
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "Emitting create user failed";
|
qDebug() << "Emitting create user failed";
|
||||||
emit createUserFailed(data.value("params").toMap().value("error").toString());
|
emit createUserFailed(data.value("error").toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::processRequestPushButtonAuth(const QVariantMap &data)
|
void JsonRpcClient::processRequestPushButtonAuth(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
qDebug() << "requestPushButtonAuth response" << data;
|
qDebug() << "requestPushButtonAuth response" << data;
|
||||||
if (data.value("status").toString() == "success" && data.value("params").toMap().value("success").toBool()) {
|
if (data.value("success").toBool()) {
|
||||||
m_pendingPushButtonTransaction = data.value("params").toMap().value("transactionId").toInt();
|
m_pendingPushButtonTransaction = data.value("transactionId").toInt();
|
||||||
} else {
|
} else {
|
||||||
emit pushButtonAuthFailed();
|
emit pushButtonAuthFailed();
|
||||||
}
|
}
|
||||||
@ -449,7 +479,7 @@ void JsonRpcClient::sendRequest(const QVariantMap &request)
|
|||||||
{
|
{
|
||||||
QVariantMap newRequest = request;
|
QVariantMap newRequest = request;
|
||||||
newRequest.insert("token", m_token);
|
newRequest.insert("token", m_token);
|
||||||
// qDebug() << "Sending request" << qUtf8Printable(QJsonDocument::fromVariant(newRequest).toJson());
|
// qDebug() << "Sending request" << qUtf8Printable(QJsonDocument::fromVariant(newRequest).toJson());
|
||||||
m_connection->sendData(QJsonDocument::fromVariant(newRequest).toJson(QJsonDocument::Compact) + "\n");
|
m_connection->sendData(QJsonDocument::fromVariant(newRequest).toJson(QJsonDocument::Compact) + "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -506,7 +536,7 @@ void JsonRpcClient::onInterfaceConnectedChanged(bool connected)
|
|||||||
|
|
||||||
void JsonRpcClient::dataReceived(const QByteArray &data)
|
void JsonRpcClient::dataReceived(const QByteArray &data)
|
||||||
{
|
{
|
||||||
// qDebug() << "JsonRpcClient: received data:" << qUtf8Printable(data);
|
// qDebug() << "JsonRpcClient: received data:" << qUtf8Printable(data);
|
||||||
m_receiveBuffer.append(data);
|
m_receiveBuffer.append(data);
|
||||||
|
|
||||||
int splitIndex = m_receiveBuffer.indexOf("}\n{") + 1;
|
int splitIndex = m_receiveBuffer.indexOf("}\n{") + 1;
|
||||||
@ -516,10 +546,10 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
|
|||||||
QJsonParseError error;
|
QJsonParseError error;
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(m_receiveBuffer.left(splitIndex), &error);
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(m_receiveBuffer.left(splitIndex), &error);
|
||||||
if (error.error != QJsonParseError::NoError) {
|
if (error.error != QJsonParseError::NoError) {
|
||||||
// qWarning() << "Could not parse json data from nymea" << m_receiveBuffer.left(splitIndex) << error.errorString();
|
// qWarning() << "Could not parse json data from nymea" << m_receiveBuffer.left(splitIndex) << error.errorString();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// qDebug() << "received response" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
// qDebug() << "received response" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||||
m_receiveBuffer = m_receiveBuffer.right(m_receiveBuffer.length() - splitIndex - 1);
|
m_receiveBuffer = m_receiveBuffer.right(m_receiveBuffer.length() - splitIndex - 1);
|
||||||
if (!m_receiveBuffer.isEmpty()) {
|
if (!m_receiveBuffer.isEmpty()) {
|
||||||
staticMetaObject.invokeMethod(this, "dataReceived", Qt::QueuedConnection, Q_ARG(QByteArray, QByteArray()));
|
staticMetaObject.invokeMethod(this, "dataReceived", Qt::QueuedConnection, Q_ARG(QByteArray, QByteArray()));
|
||||||
@ -529,7 +559,7 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
|
|||||||
|
|
||||||
// check if this is a notification
|
// check if this is a notification
|
||||||
if (dataMap.contains("notification")) {
|
if (dataMap.contains("notification")) {
|
||||||
// qDebug() << "Incoming notification:" << jsonDoc.toJson();
|
// qDebug() << "Incoming notification:" << jsonDoc.toJson();
|
||||||
QStringList notification = dataMap.value("notification").toString().split(".");
|
QStringList notification = dataMap.value("notification").toString().split(".");
|
||||||
QString nameSpace = notification.first();
|
QString nameSpace = notification.first();
|
||||||
foreach (JsonHandler *handler, m_notificationHandlers.values(nameSpace)) {
|
foreach (JsonHandler *handler, m_notificationHandlers.values(nameSpace)) {
|
||||||
@ -543,7 +573,7 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
|
|||||||
JsonRpcReply *reply = m_replies.take(commandId);
|
JsonRpcReply *reply = m_replies.take(commandId);
|
||||||
if (reply) {
|
if (reply) {
|
||||||
reply->deleteLater();
|
reply->deleteLater();
|
||||||
// qDebug() << QString("JsonRpc: got response for %1.%2: %3").arg(reply->nameSpace(), reply->method(), QString::fromUtf8(jsonDoc.toJson(QJsonDocument::Indented))) << reply->callback() << reply->callback();
|
// qDebug() << QString("JsonRpc: got response for %1.%2: %3").arg(reply->nameSpace(), reply->method(), QString::fromUtf8(jsonDoc.toJson(QJsonDocument::Indented))) << reply->callback() << reply->callback();
|
||||||
|
|
||||||
if (dataMap.value("status").toString() == "unauthorized") {
|
if (dataMap.value("status").toString() == "unauthorized") {
|
||||||
qWarning() << "Something's off with the token";
|
qWarning() << "Something's off with the token";
|
||||||
@ -558,106 +588,134 @@ void JsonRpcClient::dataReceived(const QByteArray &data)
|
|||||||
emit authenticatedChanged();
|
emit authenticatedChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dataMap.value("status").toString() == "error") {
|
||||||
|
qWarning() << "An error happened in the JSONRPC layer!";
|
||||||
|
if (reply->nameSpace() == "JSONRPC" && reply->method() == "Hello") {
|
||||||
|
qWarning() << "Hello call failed. Trying again without locale";
|
||||||
|
m_id = 0;
|
||||||
|
sendCommand("JSONRPC.Hello", QVariantMap(), this, "helloReply");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Note: We're still forwarding a failed call, params will be empty tho...
|
||||||
|
// This should never really happen as errors on this layer indicate a but in the caller code in the first place
|
||||||
|
// Some methods however, like authenticate might fail on an invalid token tho and stil need to act on it
|
||||||
|
|
||||||
if (!reply->caller().isNull() && !reply->callback().isEmpty()) {
|
if (!reply->caller().isNull() && !reply->callback().isEmpty()) {
|
||||||
QMetaObject::invokeMethod(reply->caller(), reply->callback().toLatin1().data(), Q_ARG(QVariantMap, dataMap));
|
QMetaObject::invokeMethod(reply->caller(), reply->callback().toLatin1().data(), Q_ARG(int, commandId), Q_ARG(QVariantMap, dataMap.value("params").toMap()));
|
||||||
}
|
}
|
||||||
|
|
||||||
emit responseReceived(reply->commandId(), dataMap.value("params").toMap());
|
emit responseReceived(reply->commandId(), dataMap.value("params").toMap());
|
||||||
|
|
||||||
|
|
||||||
|
// If the server supports cache hashes, cache stuff locally
|
||||||
|
QString fullMethod = reply->nameSpace() + '.' + reply->method();
|
||||||
|
if (m_cacheHashes.contains(fullMethod)) {
|
||||||
|
QString hash = m_cacheHashes.value(fullMethod);
|
||||||
|
QString callSignature = fullMethod + '-' + QJsonDocument::fromVariant(reply->params()).toJson() + '-' + QLocale().name();
|
||||||
|
QString callSignatureHash = QCryptographicHash::hash(callSignature.toUtf8(), QCryptographicHash::Md5).toHex();
|
||||||
|
QFile f(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + '/' + fullMethod + '-' + callSignatureHash + '-' + hash + ".cache");
|
||||||
|
if (!f.exists() && f.open(QFile::WriteOnly | QFile::Truncate)) {
|
||||||
|
f.write(QJsonDocument::fromVariant(dataMap.value("params")).toJson());
|
||||||
|
f.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void JsonRpcClient::helloReply(const QVariantMap ¶ms)
|
void JsonRpcClient::helloReply(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("status").toString() == "error") {
|
m_initialSetupRequired = params.value("initialSetupRequired").toBool();
|
||||||
qWarning() << "Hello call failed. Trying again without locale";
|
m_authenticationRequired = params.value("authenticationRequired").toBool();
|
||||||
m_id = 0;
|
m_pushButtonAuthAvailable = params.value("pushButtonAuthAvailable").toBool();
|
||||||
sendCommand("JSONRPC.Hello", QVariantMap(), this, "helloReply");
|
emit pushButtonAuthAvailableChanged();
|
||||||
} else {
|
|
||||||
QVariantMap dataMap = params.value("params").toMap();
|
|
||||||
m_initialSetupRequired = dataMap.value("initialSetupRequired").toBool();
|
|
||||||
m_authenticationRequired = dataMap.value("authenticationRequired").toBool();
|
|
||||||
m_pushButtonAuthAvailable = dataMap.value("pushButtonAuthAvailable").toBool();
|
|
||||||
emit pushButtonAuthAvailableChanged();
|
|
||||||
|
|
||||||
m_serverUuid = dataMap.value("uuid").toString();
|
m_serverUuid = params.value("uuid").toString();
|
||||||
m_serverVersion = dataMap.value("version").toString();
|
m_serverVersion = params.value("version").toString();
|
||||||
|
|
||||||
QString protoVersionString = dataMap.value("protocol version").toString();
|
QString protoVersionString = params.value("protocol version").toString();
|
||||||
if (!protoVersionString.contains('.')) {
|
if (!protoVersionString.contains('.')) {
|
||||||
protoVersionString.prepend("0.");
|
protoVersionString.prepend("0.");
|
||||||
}
|
}
|
||||||
|
|
||||||
m_jsonRpcVersion = QVersionNumber::fromString(protoVersionString);
|
m_jsonRpcVersion = QVersionNumber::fromString(protoVersionString);
|
||||||
|
|
||||||
qDebug() << "Handshake reply:" << "Protocol version:" << protoVersionString << "InitRequired:" << m_initialSetupRequired << "AuthRequired:" << m_authenticationRequired << "PushButtonAvailable:" << m_pushButtonAuthAvailable;;
|
qDebug() << "Handshake reply:" << "Protocol version:" << protoVersionString << "InitRequired:" << m_initialSetupRequired << "AuthRequired:" << m_authenticationRequired << "PushButtonAvailable:" << m_pushButtonAuthAvailable;;
|
||||||
|
|
||||||
QVersionNumber minimumRequiredVersion = QVersionNumber(1, 10);
|
QVersionNumber minimumRequiredVersion = QVersionNumber(1, 10);
|
||||||
if (m_jsonRpcVersion < minimumRequiredVersion) {
|
if (m_jsonRpcVersion < minimumRequiredVersion) {
|
||||||
qWarning() << "Nymea core doesn't support minimum required version. Required:" << minimumRequiredVersion << "Found:" << m_jsonRpcVersion;
|
qWarning() << "Nymea core doesn't support minimum required version. Required:" << minimumRequiredVersion << "Found:" << m_jsonRpcVersion;
|
||||||
m_connection->disconnect();
|
m_connection->disconnect();
|
||||||
emit invalidProtocolVersion(m_jsonRpcVersion.toString(), minimumRequiredVersion.toString());
|
emit invalidProtocolVersion(m_jsonRpcVersion.toString(), minimumRequiredVersion.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify SSL certificate
|
// Verify SSL certificate
|
||||||
if (m_connection->isEncrypted()) {
|
if (m_connection->isEncrypted()) {
|
||||||
QByteArray pem;
|
QByteArray pem;
|
||||||
if (!loadPem(m_serverUuid, pem)) {
|
if (!loadPem(m_serverUuid, pem)) {
|
||||||
qDebug() << "No SSL certificate for this host stored. Accepting and pinning new certificate.";
|
qDebug() << "No SSL certificate for this host stored. Accepting and pinning new certificate.";
|
||||||
// No certificate yet! Inform ui about it.
|
// No certificate yet! Inform ui about it.
|
||||||
emit newSslCertificate();
|
emit newSslCertificate();
|
||||||
storePem(m_serverUuid, m_connection->sslCertificate().toPem());
|
storePem(m_serverUuid, m_connection->sslCertificate().toPem());
|
||||||
} else {
|
} else {
|
||||||
// We have a certificate pinned already. Check if it's the same
|
// We have a certificate pinned already. Check if it's the same
|
||||||
if (m_connection->sslCertificate().toPem() != pem) {
|
if (m_connection->sslCertificate().toPem() != pem) {
|
||||||
// Uh oh, the certificate has changed
|
// Uh oh, the certificate has changed
|
||||||
qWarning() << "This connections certificate has changed!";
|
qWarning() << "This connections certificate has changed!";
|
||||||
|
|
||||||
QSslCertificate certificate = m_connection->sslCertificate();
|
QSslCertificate certificate = m_connection->sslCertificate();
|
||||||
QVariantMap issuerInfo = certificateIssuerInfo();
|
QVariantMap issuerInfo = certificateIssuerInfo();
|
||||||
emit verifyConnectionCertificate(m_serverUuid, issuerInfo, certificate.toPem());
|
emit verifyConnectionCertificate(m_serverUuid, issuerInfo, certificate.toPem());
|
||||||
|
|
||||||
// Reject the connection until the UI explicitly accepts this...
|
// Reject the connection until the UI explicitly accepts this...
|
||||||
m_connection->disconnectFromHost();
|
m_connection->disconnectFromHost();
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
qDebug() << "This connections certificate is trusted.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
emit handshakeReceived();
|
|
||||||
|
|
||||||
if (m_connection->currentHost()->uuid().isNull()) {
|
|
||||||
qDebug() << "Updating Server UUID in connection:" << m_connection->currentHost()->uuid().toString() << "->" << m_serverUuid;
|
|
||||||
m_connection->currentHost()->setUuid(m_serverUuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_initialSetupRequired) {
|
|
||||||
emit initialSetupRequiredChanged();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_authenticationRequired) {
|
|
||||||
QSettings settings;
|
|
||||||
settings.beginGroup("jsonTokens");
|
|
||||||
m_token = settings.value(m_serverUuid).toByteArray();
|
|
||||||
settings.endGroup();
|
|
||||||
emit authenticationRequiredChanged();
|
|
||||||
|
|
||||||
if (m_token.isEmpty()) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
qDebug() << "This connections certificate is trusted.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_authenticated = true;
|
m_cacheHashes.clear();
|
||||||
emit authenticatedChanged();
|
qDebug() << "Hello reply:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
|
QVariantList cacheHashes = params.value("cacheHashes").toList();
|
||||||
|
foreach (const QVariant &cacheHash, cacheHashes) {
|
||||||
|
m_cacheHashes.insert(cacheHash.toMap().value("method").toString(), cacheHash.toMap().value("hash").toString());
|
||||||
|
}
|
||||||
|
qDebug() << "Caches:" << m_cacheHashes;
|
||||||
|
|
||||||
|
emit handshakeReceived();
|
||||||
|
|
||||||
|
if (m_connection->currentHost()->uuid().isNull()) {
|
||||||
|
qDebug() << "Updating Server UUID in connection:" << m_connection->currentHost()->uuid().toString() << "->" << m_serverUuid;
|
||||||
|
m_connection->currentHost()->setUuid(m_serverUuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_initialSetupRequired) {
|
||||||
|
emit initialSetupRequiredChanged();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_authenticationRequired) {
|
||||||
|
QSettings settings;
|
||||||
|
settings.beginGroup("jsonTokens");
|
||||||
|
m_token = settings.value(m_serverUuid).toByteArray();
|
||||||
|
settings.endGroup();
|
||||||
|
emit authenticationRequiredChanged();
|
||||||
|
|
||||||
|
if (m_token.isEmpty()) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setNotificationsEnabled();
|
m_authenticated = true;
|
||||||
getCloudConnectionStatus();
|
emit authenticatedChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setNotificationsEnabled();
|
||||||
|
getCloudConnectionStatus();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonRpcReply::JsonRpcReply(int commandId, QString nameSpace, QString method, QVariantMap params, QPointer<QObject> caller, const QString &callback):
|
JsonRpcReply::JsonRpcReply(int commandId, QString nameSpace, QString method, QVariantMap params, QPointer<QObject> caller, const QString &callback):
|
||||||
|
|||||||
@ -94,6 +94,7 @@ public:
|
|||||||
bool authenticated() const;
|
bool authenticated() const;
|
||||||
CloudConnectionState cloudConnectionState() const;
|
CloudConnectionState cloudConnectionState() const;
|
||||||
void deployCertificate(const QByteArray &rootCA, const QByteArray &certificate, const QByteArray &publicKey, const QByteArray &privateKey, const QString &endpoint);
|
void deployCertificate(const QByteArray &rootCA, const QByteArray &certificate, const QByteArray &publicKey, const QByteArray &privateKey, const QString &endpoint);
|
||||||
|
QHash<QString, QString> cacheHashes() const;
|
||||||
|
|
||||||
QString serverVersion() const;
|
QString serverVersion() const;
|
||||||
QString jsonRpcVersion() const;
|
QString jsonRpcVersion() const;
|
||||||
@ -111,7 +112,7 @@ public:
|
|||||||
Q_INVOKABLE int createUser(const QString &username, const QString &password);
|
Q_INVOKABLE int createUser(const QString &username, const QString &password);
|
||||||
Q_INVOKABLE int authenticate(const QString &username, const QString &password, const QString &deviceName);
|
Q_INVOKABLE int authenticate(const QString &username, const QString &password, const QString &deviceName);
|
||||||
Q_INVOKABLE int requestPushButtonAuth(const QString &deviceName);
|
Q_INVOKABLE int requestPushButtonAuth(const QString &deviceName);
|
||||||
Q_INVOKABLE void setupRemoteAccess(const QString &idToken, const QString &userId);
|
Q_INVOKABLE int setupRemoteAccess(const QString &idToken, const QString &userId);
|
||||||
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@ -142,7 +143,7 @@ private slots:
|
|||||||
void onInterfaceConnectedChanged(bool connected);
|
void onInterfaceConnectedChanged(bool connected);
|
||||||
void dataReceived(const QByteArray &data);
|
void dataReceived(const QByteArray &data);
|
||||||
|
|
||||||
void helloReply(const QVariantMap ¶ms);
|
void helloReply(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_id;
|
int m_id;
|
||||||
@ -168,21 +169,22 @@ private:
|
|||||||
QString m_serverQtBuildVersion;
|
QString m_serverQtBuildVersion;
|
||||||
QByteArray m_token;
|
QByteArray m_token;
|
||||||
QByteArray m_receiveBuffer;
|
QByteArray m_receiveBuffer;
|
||||||
|
QHash<QString, QString> m_cacheHashes;
|
||||||
|
|
||||||
void setNotificationsEnabled();
|
void setNotificationsEnabled();
|
||||||
void getCloudConnectionStatus();
|
void getCloudConnectionStatus();
|
||||||
|
|
||||||
// json handler
|
// json handler
|
||||||
Q_INVOKABLE void processAuthenticate(const QVariantMap &data);
|
Q_INVOKABLE void processAuthenticate(int commandId, const QVariantMap &data);
|
||||||
Q_INVOKABLE void processCreateUser(const QVariantMap &data);
|
Q_INVOKABLE void processCreateUser(int commandId, const QVariantMap &data);
|
||||||
Q_INVOKABLE void processRequestPushButtonAuth(const QVariantMap &data);
|
Q_INVOKABLE void processRequestPushButtonAuth(int commandId, const QVariantMap &data);
|
||||||
|
|
||||||
Q_INVOKABLE void setNotificationsEnabledResponse(const QVariantMap ¶ms);
|
Q_INVOKABLE void setNotificationsEnabledResponse(int commandId, const QVariantMap ¶ms);
|
||||||
Q_INVOKABLE void notificationReceived(const QVariantMap &data);
|
Q_INVOKABLE void notificationReceived(const QVariantMap &data);
|
||||||
Q_INVOKABLE void isCloudConnectedReply(const QVariantMap &data);
|
Q_INVOKABLE void isCloudConnectedReply(int commandId, const QVariantMap &data);
|
||||||
Q_INVOKABLE void setupRemoteAccessReply(const QVariantMap &data);
|
Q_INVOKABLE void setupRemoteAccessReply(int commandId, const QVariantMap &data);
|
||||||
Q_INVOKABLE void deployCertificateReply(const QVariantMap &data);
|
Q_INVOKABLE void deployCertificateReply(int commandId, const QVariantMap &data);
|
||||||
Q_INVOKABLE void getVersionsReply(const QVariantMap &data);
|
Q_INVOKABLE void getVersionsReply(int commandId, const QVariantMap &data);
|
||||||
|
|
||||||
void sendRequest(const QVariantMap &request);
|
void sendRequest(const QVariantMap &request);
|
||||||
|
|
||||||
|
|||||||
@ -205,15 +205,15 @@ LogEntry *LogsModel::get(int index) const
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogsModel::logsReply(const QVariantMap &data)
|
void LogsModel::logsReply(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
int offset = data.value("params").toMap().value("offset").toInt();
|
int offset = data.value("offset").toInt();
|
||||||
int count = data.value("params").toMap().value("count").toInt();
|
int count = data.value("count").toInt();
|
||||||
|
|
||||||
// qDebug() << qUtf8Printable(QJsonDocument::fromVariant(data).toJson());
|
// qDebug() << qUtf8Printable(QJsonDocument::fromVariant(data).toJson());
|
||||||
|
|
||||||
QList<LogEntry*> newBlock;
|
QList<LogEntry*> newBlock;
|
||||||
QList<QVariant> logEntries = data.value("params").toMap().value("logEntries").toList();
|
QList<QVariant> logEntries = data.value("logEntries").toList();
|
||||||
foreach (const QVariant &logEntryVariant, logEntries) {
|
foreach (const QVariant &logEntryVariant, logEntries) {
|
||||||
QVariantMap entryMap = logEntryVariant.toMap();
|
QVariantMap entryMap = logEntryVariant.toMap();
|
||||||
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
|
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
|
||||||
|
|||||||
@ -112,7 +112,7 @@ signals:
|
|||||||
void logEntryAdded(LogEntry *entry);
|
void logEntryAdded(LogEntry *entry);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
virtual void logsReply(const QVariantMap &data);
|
virtual void logsReply(int commandId, const QVariantMap &data);
|
||||||
void newLogEntryReceived(const QVariantMap &data);
|
void newLogEntryReceived(const QVariantMap &data);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@ -237,15 +237,15 @@ LogEntry *LogsModelNg::get(int index) const
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LogsModelNg::logsReply(const QVariantMap &data)
|
void LogsModelNg::logsReply(int commandId, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
int offset = data.value("params").toMap().value("offset").toInt();
|
int offset = data.value("offset").toInt();
|
||||||
int count = data.value("params").toMap().value("count").toInt();
|
int count = data.value("count").toInt();
|
||||||
|
|
||||||
// qDebug() << qUtf8Printable(QJsonDocument::fromVariant(data).toJson());
|
// qDebug() << qUtf8Printable(QJsonDocument::fromVariant(data).toJson());
|
||||||
|
|
||||||
QList<LogEntry*> newBlock;
|
QList<LogEntry*> newBlock;
|
||||||
QList<QVariant> logEntries = data.value("params").toMap().value("logEntries").toList();
|
QList<QVariant> logEntries = data.value("logEntries").toList();
|
||||||
foreach (const QVariant &logEntryVariant, logEntries) {
|
foreach (const QVariant &logEntryVariant, logEntries) {
|
||||||
QVariantMap entryMap = logEntryVariant.toMap();
|
QVariantMap entryMap = logEntryVariant.toMap();
|
||||||
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
|
QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(entryMap.value("timestamp").toLongLong());
|
||||||
|
|||||||
@ -129,7 +129,7 @@ signals:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void newLogEntryReceived(const QVariantMap &data);
|
void newLogEntryReceived(const QVariantMap &data);
|
||||||
void logsReply(const QVariantMap &data);
|
void logsReply(int commandId, const QVariantMap &data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<LogEntry*> m_list;
|
QList<LogEntry*> m_list;
|
||||||
|
|||||||
@ -48,7 +48,6 @@ void TagsProxyModel::setTags(Tags *tags)
|
|||||||
m_tags = tags;
|
m_tags = tags;
|
||||||
setSourceModel(tags);
|
setSourceModel(tags);
|
||||||
connect(tags, &Tags::countChanged, this, [=](){
|
connect(tags, &Tags::countChanged, this, [=](){
|
||||||
qWarning() << "Tag count changed!";
|
|
||||||
invalidateFilter();
|
invalidateFilter();
|
||||||
emit countChanged();
|
emit countChanged();
|
||||||
}, Qt::QueuedConnection);
|
}, Qt::QueuedConnection);
|
||||||
|
|||||||
@ -96,26 +96,25 @@ int RuleManager::addRule(Rule *rule)
|
|||||||
return m_jsonClient->sendCommand("Rules.AddRule", params, this, "onAddRuleReply");
|
return m_jsonClient->sendCommand("Rules.AddRule", params, this, "onAddRuleReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::removeRule(const QUuid &ruleId)
|
int RuleManager::removeRule(const QUuid &ruleId)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("ruleId", ruleId);
|
params.insert("ruleId", ruleId);
|
||||||
m_jsonClient->sendCommand("Rules.RemoveRule", params, this, "removeRuleReply");
|
return m_jsonClient->sendCommand("Rules.RemoveRule", params, this, "removeRuleReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::editRule(Rule *rule)
|
int RuleManager::editRule(Rule *rule)
|
||||||
{
|
{
|
||||||
QVariantMap params = packRule(rule);
|
QVariantMap params = packRule(rule);
|
||||||
qWarning() << "Packed rule:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
qWarning() << "Packed rule:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson(QJsonDocument::Indented));
|
||||||
m_jsonClient->sendCommand("Rules.EditRule", params, this, "onEditRuleReply");
|
return m_jsonClient->sendCommand("Rules.EditRule", params, this, "onEditRuleReply");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::executeActions(const QString &ruleId)
|
int RuleManager::executeActions(const QString &ruleId)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("ruleId", ruleId);
|
params.insert("ruleId", ruleId);
|
||||||
m_jsonClient->sendCommand("Rules.ExecuteActions", params, this, "onExecuteRuleActionsReply");
|
return m_jsonClient->sendCommand("Rules.ExecuteActions", params, this, "onExecuteRuleActionsReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::handleRulesNotification(const QVariantMap ¶ms)
|
void RuleManager::handleRulesNotification(const QVariantMap ¶ms)
|
||||||
@ -153,14 +152,10 @@ void RuleManager::handleRulesNotification(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::getRulesReply(const QVariantMap ¶ms)
|
void RuleManager::getRulesReply(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("status").toString() != "success") {
|
|
||||||
qWarning() << "Error getting rules:" << params.value("error").toString();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// qDebug() << "Get Rules reply" << params;
|
// qDebug() << "Get Rules reply" << params;
|
||||||
foreach (const QVariant &ruleDescriptionVariant, params.value("params").toMap().value("ruleDescriptions").toList()) {
|
foreach (const QVariant &ruleDescriptionVariant, params.value("ruleDescriptions").toList()) {
|
||||||
QUuid ruleId = ruleDescriptionVariant.toMap().value("id").toUuid();
|
QUuid ruleId = ruleDescriptionVariant.toMap().value("id").toUuid();
|
||||||
QString name = ruleDescriptionVariant.toMap().value("name").toString();
|
QString name = ruleDescriptionVariant.toMap().value("name").toString();
|
||||||
bool enabled = ruleDescriptionVariant.toMap().value("enabled").toBool();
|
bool enabled = ruleDescriptionVariant.toMap().value("enabled").toBool();
|
||||||
@ -180,9 +175,9 @@ void RuleManager::getRulesReply(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::getRuleDetailsReply(const QVariantMap ¶ms)
|
void RuleManager::getRuleDetailsReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
QVariantMap ruleMap = params.value("params").toMap().value("rule").toMap();
|
QVariantMap ruleMap = params.value("rule").toMap();
|
||||||
Rule* rule = m_rules->getRule(ruleMap.value("id").toUuid());
|
Rule* rule = m_rules->getRule(ruleMap.value("id").toUuid());
|
||||||
if (!rule) {
|
if (!rule) {
|
||||||
qWarning() << "Got rule details for a rule we don't know";
|
qWarning() << "Got rule details for a rule we don't know";
|
||||||
@ -197,36 +192,33 @@ void RuleManager::getRuleDetailsReply(const QVariantMap ¶ms)
|
|||||||
// qDebug() << "Rule JSON:" << qUtf8Printable(QJsonDocument::fromVariant(ruleMap).toJson());
|
// qDebug() << "Rule JSON:" << qUtf8Printable(QJsonDocument::fromVariant(ruleMap).toJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::onAddRuleReply(const QVariantMap ¶ms)
|
void RuleManager::onAddRuleReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("params").toMap().value("ruleError").toString() != "RuleErrorNoError") {
|
if (params.value("ruleError").toString() != "RuleErrorNoError") {
|
||||||
qWarning() << "Failed to add rule:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
qWarning() << "Failed to add rule:" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "Rule added successfully. Rule ID:" << params.value("params").toMap().value("ruleId").toString();
|
qDebug() << "Rule added successfully. Rule ID:" << params.value("ruleId").toString();
|
||||||
}
|
}
|
||||||
emit addRuleReply(params.value("id").toInt(), params.value("params").toMap().value("ruleError").toString(), params.value("params").toMap().value("ruleId").toString());
|
emit addRuleReply(commandId, params.value("ruleError").toString(), params.value("ruleId").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::removeRuleReply(const QVariantMap ¶ms)
|
void RuleManager::removeRuleReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Have remove rule reply" << params;
|
qDebug() << "Have remove rule reply" << commandId << params;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::onEditRuleReply(const QVariantMap ¶ms)
|
void RuleManager::onEditRuleReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
if (params.value("status").toString() == "error") {
|
if (params.value("ruleError").toString() != "RuleErrorNoError") {
|
||||||
qDebug() << "Bad request editing rule:" << params.value("error").toString();
|
qDebug() << "Bad rule:" << params.value("ruleError").toString();
|
||||||
}
|
}
|
||||||
if (params.value("params").toMap().value("ruleError").toString() != "RuleErrorNoError") {
|
emit editRuleReply(commandId, params.value("ruleError").toString());
|
||||||
qDebug() << "Bad rule:" << params.value("params").toMap().value("ruleError").toString();
|
|
||||||
}
|
|
||||||
emit editRuleReply(params.value("params").toMap().value("ruleError").toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RuleManager::onExecuteRuleActionsReply(const QVariantMap ¶ms)
|
void RuleManager::onExecuteRuleActionsReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Execute rule actions reply:" << params;
|
qDebug() << "Execute rule actions reply:" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
Rule *RuleManager::parseRule(const QVariantMap &ruleMap)
|
Rule *RuleManager::parseRule(const QVariantMap &ruleMap)
|
||||||
|
|||||||
@ -65,18 +65,18 @@ public:
|
|||||||
|
|
||||||
Q_INVOKABLE int addRule(const QVariantMap params);
|
Q_INVOKABLE int addRule(const QVariantMap params);
|
||||||
Q_INVOKABLE int addRule(Rule *rule);
|
Q_INVOKABLE int addRule(Rule *rule);
|
||||||
Q_INVOKABLE void removeRule(const QUuid &ruleId);
|
Q_INVOKABLE int removeRule(const QUuid &ruleId);
|
||||||
Q_INVOKABLE void editRule(Rule *rule);
|
Q_INVOKABLE int editRule(Rule *rule);
|
||||||
Q_INVOKABLE void executeActions(const QString &ruleId);
|
Q_INVOKABLE int executeActions(const QString &ruleId);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleRulesNotification(const QVariantMap ¶ms);
|
void handleRulesNotification(const QVariantMap ¶ms);
|
||||||
void getRulesReply(const QVariantMap ¶ms);
|
void getRulesReply(int commandId, const QVariantMap ¶ms);
|
||||||
void getRuleDetailsReply(const QVariantMap ¶ms);
|
void getRuleDetailsReply(int commandId, const QVariantMap ¶ms);
|
||||||
void onAddRuleReply(const QVariantMap ¶ms);
|
void onAddRuleReply(int commandId, const QVariantMap ¶ms);
|
||||||
void removeRuleReply(const QVariantMap ¶ms);
|
void removeRuleReply(int commandId, const QVariantMap ¶ms);
|
||||||
void onEditRuleReply(const QVariantMap ¶ms);
|
void onEditRuleReply(int commandId, const QVariantMap ¶ms);
|
||||||
void onExecuteRuleActionsReply(const QVariantMap ¶ms);
|
void onExecuteRuleActionsReply(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Rule *parseRule(const QVariantMap &ruleMap);
|
Rule *parseRule(const QVariantMap &ruleMap);
|
||||||
@ -98,7 +98,7 @@ private:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void addRuleReply(int commandId, const QString &ruleError, const QString &ruleId);
|
void addRuleReply(int commandId, const QString &ruleError, const QString &ruleId);
|
||||||
void editRuleReply(const QString &ruleError);
|
void editRuleReply(int commandId, const QString &ruleError);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
JsonRpcClient *m_jsonClient;
|
JsonRpcClient *m_jsonClient;
|
||||||
|
|||||||
@ -96,9 +96,9 @@ int ScriptManager::fetchScript(const QUuid &id)
|
|||||||
return m_client->sendCommand("Scripts.GetScriptContent", params, this, "onScriptFetched");
|
return m_client->sendCommand("Scripts.GetScriptContent", params, this, "onScriptFetched");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onScriptsFetched(const QVariantMap ¶ms)
|
void ScriptManager::onScriptsFetched(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
foreach (const QVariant &variant, params.value("params").toMap().value("scripts").toList()) {
|
foreach (const QVariant &variant, params.value("scripts").toList()) {
|
||||||
QUuid id = variant.toMap().value("id").toUuid();
|
QUuid id = variant.toMap().value("id").toUuid();
|
||||||
Script *script = new Script(id);
|
Script *script = new Script(id);
|
||||||
script->setName(variant.toMap().value("name").toString());
|
script->setName(variant.toMap().value("name").toString());
|
||||||
@ -106,38 +106,38 @@ void ScriptManager::onScriptsFetched(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onScriptFetched(const QVariantMap ¶ms)
|
void ScriptManager::onScriptFetched(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
emit fetchScriptReply(params.value("id").toInt(),
|
emit fetchScriptReply(commandId,
|
||||||
params.value("params").toMap().value("scriptError").toString(),
|
params.value("scriptError").toString(),
|
||||||
params.value("params").toMap().value("content").toString());
|
params.value("content").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onScriptAdded(const QVariantMap ¶ms)
|
void ScriptManager::onScriptAdded(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
emit addScriptReply(params.value("id").toInt(),
|
emit addScriptReply(commandId,
|
||||||
params.value("params").toMap().value("scriptError").toString(),
|
params.value("scriptError").toString(),
|
||||||
params.value("params").toMap().value("script").toMap().value("id").toUuid(),
|
params.value("script").toMap().value("id").toUuid(),
|
||||||
params.value("params").toMap().value("errors").toStringList());
|
params.value("errors").toStringList());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onScriptEdited(const QVariantMap ¶ms)
|
void ScriptManager::onScriptEdited(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
emit editScriptReply(params.value("id").toInt(),
|
emit editScriptReply(commandId,
|
||||||
params.value("params").toMap().value("scriptError").toString(),
|
params.value("scriptError").toString(),
|
||||||
params.value("params").toMap().value("errors").toStringList());
|
params.value("errors").toStringList());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onScriptRenamed(const QVariantMap ¶ms)
|
void ScriptManager::onScriptRenamed(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
emit renameScriptReply(params.value("id").toInt(), params.value("params").toMap().value("scriptError").toString());
|
emit renameScriptReply(commandId, params.value("scriptError").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onScriptRemoved(const QVariantMap ¶ms)
|
void ScriptManager::onScriptRemoved(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
emit removeScriptReply(params.value("id").toInt(), params.value("params").toMap().value("scriptError").toString());
|
emit removeScriptReply(commandId, params.value("scriptError").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptManager::onNotificationReceived(const QVariantMap ¶ms)
|
void ScriptManager::onNotificationReceived(const QVariantMap ¶ms)
|
||||||
@ -154,16 +154,11 @@ void ScriptManager::onNotificationReceived(const QVariantMap ¶ms)
|
|||||||
Script *script = new Script(scriptMap.value("id").toUuid());
|
Script *script = new Script(scriptMap.value("id").toUuid());
|
||||||
script->setName(scriptMap.value("name").toString());
|
script->setName(scriptMap.value("name").toString());
|
||||||
m_scripts->addScript(script);
|
m_scripts->addScript(script);
|
||||||
emit addScriptReply(params.value("id").toInt(),
|
|
||||||
params.value("params").toMap().value("scriptError").toString(),
|
|
||||||
params.value("params").toMap().value("scriptId").toUuid(),
|
|
||||||
params.value("params").toMap().value("errors").toStringList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (params.value("notification").toString() == "Scripts.ScriptRemoved") {
|
else if (params.value("notification").toString() == "Scripts.ScriptRemoved") {
|
||||||
QUuid id = params.value("params").toMap().value("id").toUuid();
|
QUuid id = params.value("params").toMap().value("id").toUuid();
|
||||||
m_scripts->removeScript(id);
|
m_scripts->removeScript(id);
|
||||||
emit removeScriptReply(params.value("id").toInt(), params.value("params").toMap().value("scriptError").toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (params.value("notification").toString() == "Scripts.ScriptChanged") {
|
else if (params.value("notification").toString() == "Scripts.ScriptChanged") {
|
||||||
|
|||||||
@ -68,12 +68,12 @@ signals:
|
|||||||
void scriptMessage(const QUuid &scriptId, const QString &type, const QString &message);
|
void scriptMessage(const QUuid &scriptId, const QString &type, const QString &message);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onScriptsFetched(const QVariantMap ¶ms);
|
void onScriptsFetched(int commandId, const QVariantMap ¶ms);
|
||||||
void onScriptFetched(const QVariantMap ¶ms);
|
void onScriptFetched(int commandId, const QVariantMap ¶ms);
|
||||||
void onScriptAdded(const QVariantMap ¶ms);
|
void onScriptAdded(int commandId, const QVariantMap ¶ms);
|
||||||
void onScriptEdited(const QVariantMap ¶ms);
|
void onScriptEdited(int commandId, const QVariantMap ¶ms);
|
||||||
void onScriptRenamed(const QVariantMap ¶ms);
|
void onScriptRenamed(int commandId, const QVariantMap ¶ms);
|
||||||
void onScriptRemoved(const QVariantMap ¶ms);
|
void onScriptRemoved(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
void onNotificationReceived(const QVariantMap ¶ms);
|
void onNotificationReceived(const QVariantMap ¶ms);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -152,13 +152,13 @@ QDateTime SystemController::serverTime() const
|
|||||||
return m_serverTime;
|
return m_serverTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::setServerTime(const QDateTime &serverTime)
|
int SystemController::setServerTime(const QDateTime &serverTime)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("automaticTime", false);
|
params.insert("automaticTime", false);
|
||||||
params.insert("time", serverTime.toSecsSinceEpoch());
|
params.insert("time", serverTime.toSecsSinceEpoch());
|
||||||
params.insert("timeZone", serverTime.timeZone().id());
|
params.insert("timeZone", serverTime.timeZone().id());
|
||||||
m_jsonRpcClient->sendCommand("System.SetTime", params, this, "setTimeResponse");
|
return m_jsonRpcClient->sendCommand("System.SetTime", params, this, "setTimeResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList SystemController::timeZones() const
|
QStringList SystemController::timeZones() const
|
||||||
@ -179,11 +179,11 @@ QString SystemController::serverTimeZone() const
|
|||||||
return m_serverTimeZone;
|
return m_serverTimeZone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::setServerTimeZone(const QString &serverTimeZone)
|
int SystemController::setServerTimeZone(const QString &serverTimeZone)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("timeZone", serverTimeZone);
|
params.insert("timeZone", serverTimeZone);
|
||||||
m_jsonRpcClient->sendCommand("System.SetTime", params, this, "setTimeResponse");
|
return m_jsonRpcClient->sendCommand("System.SetTime", params, this, "setTimeResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SystemController::automaticTimeAvailable() const
|
bool SystemController::automaticTimeAvailable() const
|
||||||
@ -196,22 +196,22 @@ bool SystemController::automaticTime() const
|
|||||||
return m_automaticTime;
|
return m_automaticTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::setAutomaticTime(bool automaticTime)
|
int SystemController::setAutomaticTime(bool automaticTime)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
params.insert("automaticTime", automaticTime);
|
params.insert("automaticTime", automaticTime);
|
||||||
m_jsonRpcClient->sendCommand("System.SetTime", params, this, "setTimeResponse");
|
return m_jsonRpcClient->sendCommand("System.SetTime", params, this, "setTimeResponse");
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::getCapabilitiesResponse(const QVariantMap &data)
|
void SystemController::getCapabilitiesResponse(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
m_powerManagementAvailable = data.value("params").toMap().value("powerManagement").toBool();
|
m_powerManagementAvailable = data.value("powerManagement").toBool();
|
||||||
emit powerManagementAvailableChanged();
|
emit powerManagementAvailableChanged();
|
||||||
|
|
||||||
m_updateManagementAvailable = data.value("params").toMap().value("updateManagement").toBool();
|
m_updateManagementAvailable = data.value("updateManagement").toBool();
|
||||||
emit updateManagementAvailableChanged();
|
emit updateManagementAvailableChanged();
|
||||||
|
|
||||||
m_timeManagementAvailable = data.value("params").toMap().value("timeManagement").toBool();
|
m_timeManagementAvailable = data.value("timeManagement").toBool();
|
||||||
emit timeManagementAvailableChanged();
|
emit timeManagementAvailableChanged();
|
||||||
|
|
||||||
if (m_updateManagementAvailable) {
|
if (m_updateManagementAvailable) {
|
||||||
@ -227,16 +227,16 @@ void SystemController::getCapabilitiesResponse(const QVariantMap &data)
|
|||||||
qDebug() << "nymea:core capabilities: Power management:" << m_powerManagementAvailable << "Update management:" << m_updateManagementAvailable << "Time management:" << m_timeManagementAvailable;
|
qDebug() << "nymea:core capabilities: Power management:" << m_powerManagementAvailable << "Update management:" << m_updateManagementAvailable << "Time management:" << m_timeManagementAvailable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::getUpdateStatusResponse(const QVariantMap &data)
|
void SystemController::getUpdateStatusResponse(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
m_updateManagementBusy = data.value("params").toMap().value("busy").toBool();
|
m_updateManagementBusy = data.value("busy").toBool();
|
||||||
m_updateRunning = data.value("params").toMap().value("updateRunning").toBool();
|
m_updateRunning = data.value("updateRunning").toBool();
|
||||||
emit updateRunningChanged();
|
emit updateRunningChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::getPackagesResponse(const QVariantMap &data)
|
void SystemController::getPackagesResponse(int commandId, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
foreach (const QVariant &packageVariant, data.value("params").toMap().value("packages").toList()) {
|
foreach (const QVariant &packageVariant, data.value("packages").toList()) {
|
||||||
QString id = packageVariant.toMap().value("id").toString();
|
QString id = packageVariant.toMap().value("id").toString();
|
||||||
QString displayName = packageVariant.toMap().value("displayName").toString();
|
QString displayName = packageVariant.toMap().value("displayName").toString();
|
||||||
Package *p = new Package(id, displayName);
|
Package *p = new Package(id, displayName);
|
||||||
@ -251,9 +251,9 @@ void SystemController::getPackagesResponse(const QVariantMap &data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::getRepositoriesResponse(const QVariantMap &data)
|
void SystemController::getRepositoriesResponse(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
foreach (const QVariant &repoVariant, data.value("params").toMap().value("repositories").toList()) {
|
foreach (const QVariant &repoVariant, data.value("repositories").toList()) {
|
||||||
QString id = repoVariant.toMap().value("id").toString();
|
QString id = repoVariant.toMap().value("id").toString();
|
||||||
QString displayName = repoVariant.toMap().value("displayName").toString();
|
QString displayName = repoVariant.toMap().value("displayName").toString();
|
||||||
Repository *repo = new Repository(id, displayName);
|
Repository *repo = new Repository(id, displayName);
|
||||||
@ -262,61 +262,58 @@ void SystemController::getRepositoriesResponse(const QVariantMap &data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::removePackageResponse(const QVariantMap ¶ms)
|
void SystemController::removePackageResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Remove result" << params;
|
qDebug() << "Remove result" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::enableRepositoryResponse(const QVariantMap ¶ms)
|
void SystemController::enableRepositoryResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Enable repo response" << params;
|
qDebug() << "Enable repo response" << params;
|
||||||
emit enableRepositoryFinished(params.value("id").toInt(), params.value("params").toMap().value("success").toBool());
|
emit enableRepositoryFinished(commandId, params.value("success").toBool());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::getServerTimeResponse(const QVariantMap ¶ms)
|
void SystemController::getServerTimeResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
m_serverTime = QDateTime::fromSecsSinceEpoch(params.value("params").toMap().value("time").toUInt());
|
m_serverTime = QDateTime::fromSecsSinceEpoch(params.value("time").toUInt());
|
||||||
|
|
||||||
// NOTE: Ideally we'd just set the TimeZone of our serverTime prooperly, however, there's a bug on Android
|
// NOTE: Ideally we'd just set the TimeZone of our serverTime prooperly, however, there's a bug on Android
|
||||||
// Which doesn't allow to create QTimeZone objects by IANA id.... So, let's keep that separated in a string
|
// Which doesn't allow to create QTimeZone objects by IANA id.... So, let's keep that separated in a string
|
||||||
// https://bugreports.qt.io/browse/QTBUG-83438
|
// https://bugreports.qt.io/browse/QTBUG-83438
|
||||||
|
|
||||||
// m_serverTime.setTimeZone(QTimeZone(params.value("params").toMap().value("timeZone").toString().toUtf8()));
|
// m_serverTime.setTimeZone(QTimeZone(params.value("timeZone").toString().toUtf8()));
|
||||||
m_serverTimeZone = params.value("params").toMap().value("timeZone").toString();
|
m_serverTimeZone = params.value("timeZone").toString();
|
||||||
|
|
||||||
emit serverTimeChanged();
|
emit serverTimeChanged();
|
||||||
emit serverTimeZoneChanged();
|
emit serverTimeZoneChanged();
|
||||||
m_automaticTimeAvailable = params.value("params").toMap().value("automaticTimeAvailable").toBool();
|
m_automaticTimeAvailable = params.value("automaticTimeAvailable").toBool();
|
||||||
emit automaticTimeAvailableChanged();
|
emit automaticTimeAvailableChanged();
|
||||||
m_automaticTime = params.value("params").toMap().value("automaticTime").toBool();
|
m_automaticTime = params.value("automaticTime").toBool();
|
||||||
emit automaticTimeChanged();
|
emit automaticTimeChanged();
|
||||||
qDebug() << "Server time:" << m_serverTime << "Automatic Time available:" << m_automaticTimeAvailable << "Automatic time:" << m_automaticTime;
|
qDebug() << "Server time:" << m_serverTime << "Automatic Time available:" << m_automaticTimeAvailable << "Automatic time:" << m_automaticTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::setTimeResponse(const QVariantMap ¶ms)
|
void SystemController::setTimeResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "set time response" << params;
|
qDebug() << "set time response" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::restartResponse(const QVariantMap ¶ms)
|
void SystemController::restartResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
int id = params.value("id").toInt();
|
bool success = params.value("success").toBool();
|
||||||
bool success = params.value("params").toMap().value("success").toBool();
|
emit restartReply(commandId, success);
|
||||||
emit restartReply(id, success);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::rebootResponse(const QVariantMap ¶ms)
|
void SystemController::rebootResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
int id = params.value("id").toInt();
|
bool success = params.value("success").toBool();
|
||||||
bool success = params.value("params").toMap().value("success").toBool();
|
emit rebootReply(commandId, success);
|
||||||
emit rebootReply(id, success);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::shutdownResponse(const QVariantMap ¶ms)
|
void SystemController::shutdownResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
int id = params.value("id").toInt();
|
bool success = params.value("success").toBool();
|
||||||
bool success = params.value("params").toMap().value("success").toBool();
|
emit shutdownReply(commandId, success);
|
||||||
emit shutdownReply(id, success);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SystemController::notificationReceived(const QVariantMap &data)
|
void SystemController::notificationReceived(const QVariantMap &data)
|
||||||
|
|||||||
@ -80,13 +80,13 @@ public:
|
|||||||
|
|
||||||
bool timeManagementAvailable() const;
|
bool timeManagementAvailable() const;
|
||||||
QDateTime serverTime() const;
|
QDateTime serverTime() const;
|
||||||
void setServerTime(const QDateTime &serverTime);
|
int setServerTime(const QDateTime &serverTime);
|
||||||
QStringList timeZones() const;
|
QStringList timeZones() const;
|
||||||
QString serverTimeZone() const;
|
QString serverTimeZone() const;
|
||||||
void setServerTimeZone(const QString &serverTimeZone);
|
int setServerTimeZone(const QString &serverTimeZone);
|
||||||
bool automaticTimeAvailable() const;
|
bool automaticTimeAvailable() const;
|
||||||
bool automaticTime() const;
|
bool automaticTime() const;
|
||||||
void setAutomaticTime(bool automaticTime);
|
int setAutomaticTime(bool automaticTime);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void powerManagementAvailableChanged();
|
void powerManagementAvailableChanged();
|
||||||
@ -105,17 +105,17 @@ signals:
|
|||||||
void shutdownReply(int id, bool success);
|
void shutdownReply(int id, bool success);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void getCapabilitiesResponse(const QVariantMap &data);
|
void getCapabilitiesResponse(int commandId, const QVariantMap &data);
|
||||||
void getUpdateStatusResponse(const QVariantMap &data);
|
void getUpdateStatusResponse(int commandId, const QVariantMap &data);
|
||||||
void getPackagesResponse(const QVariantMap &data);
|
void getPackagesResponse(int commandId, const QVariantMap &data);
|
||||||
void getRepositoriesResponse(const QVariantMap &data);
|
void getRepositoriesResponse(int commandId, const QVariantMap &data);
|
||||||
void removePackageResponse(const QVariantMap ¶ms);
|
void removePackageResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void enableRepositoryResponse(const QVariantMap ¶ms);
|
void enableRepositoryResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void getServerTimeResponse(const QVariantMap ¶ms);
|
void getServerTimeResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void setTimeResponse(const QVariantMap ¶ms);
|
void setTimeResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void restartResponse(const QVariantMap ¶ms);
|
void restartResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void rebootResponse(const QVariantMap ¶ms);
|
void rebootResponse(int commandId, const QVariantMap ¶ms);
|
||||||
void shutdownResponse(const QVariantMap ¶ms);
|
void shutdownResponse(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
void notificationReceived(const QVariantMap &data);
|
void notificationReceived(const QVariantMap &data);
|
||||||
|
|
||||||
|
|||||||
@ -68,7 +68,7 @@ Tags *TagsManager::tags() const
|
|||||||
return m_tags;
|
return m_tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::tagDevice(const QString &deviceId, const QString &tagId, const QString &value)
|
int TagsManager::tagDevice(const QString &deviceId, const QString &tagId, const QString &value)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
QVariantMap tag;
|
QVariantMap tag;
|
||||||
@ -77,10 +77,10 @@ void TagsManager::tagDevice(const QString &deviceId, const QString &tagId, const
|
|||||||
tag.insert("tagId", tagId);
|
tag.insert("tagId", tagId);
|
||||||
tag.insert("value", value);
|
tag.insert("value", value);
|
||||||
params.insert("tag", tag);
|
params.insert("tag", tag);
|
||||||
m_jsonClient->sendCommand("Tags.AddTag", params, this, "addTagReply");
|
return m_jsonClient->sendCommand("Tags.AddTag", params, this, "addTagReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::untagDevice(const QString &deviceId, const QString &tagId)
|
int TagsManager::untagDevice(const QString &deviceId, const QString &tagId)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
QVariantMap tag;
|
QVariantMap tag;
|
||||||
@ -88,10 +88,10 @@ void TagsManager::untagDevice(const QString &deviceId, const QString &tagId)
|
|||||||
tag.insert("appId", "nymea:app");
|
tag.insert("appId", "nymea:app");
|
||||||
tag.insert("tagId", tagId);
|
tag.insert("tagId", tagId);
|
||||||
params.insert("tag", tag);
|
params.insert("tag", tag);
|
||||||
m_jsonClient->sendCommand("Tags.RemoveTag", params, this, "removeTagReply");
|
return m_jsonClient->sendCommand("Tags.RemoveTag", params, this, "removeTagReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::tagRule(const QString &ruleId, const QString &tagId, const QString &value)
|
int TagsManager::tagRule(const QString &ruleId, const QString &tagId, const QString &value)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
QVariantMap tag;
|
QVariantMap tag;
|
||||||
@ -100,10 +100,10 @@ void TagsManager::tagRule(const QString &ruleId, const QString &tagId, const QSt
|
|||||||
tag.insert("tagId", tagId);
|
tag.insert("tagId", tagId);
|
||||||
tag.insert("value", value);
|
tag.insert("value", value);
|
||||||
params.insert("tag", tag);
|
params.insert("tag", tag);
|
||||||
m_jsonClient->sendCommand("Tags.AddTag", params, this, "addTagReply");
|
return m_jsonClient->sendCommand("Tags.AddTag", params, this, "addTagReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::untagRule(const QString &ruleId, const QString &tagId)
|
int TagsManager::untagRule(const QString &ruleId, const QString &tagId)
|
||||||
{
|
{
|
||||||
QVariantMap params;
|
QVariantMap params;
|
||||||
QVariantMap tag;
|
QVariantMap tag;
|
||||||
@ -111,7 +111,7 @@ void TagsManager::untagRule(const QString &ruleId, const QString &tagId)
|
|||||||
tag.insert("appId", "nymea:app");
|
tag.insert("appId", "nymea:app");
|
||||||
tag.insert("tagId", tagId);
|
tag.insert("tagId", tagId);
|
||||||
params.insert("tag", tag);
|
params.insert("tag", tag);
|
||||||
m_jsonClient->sendCommand("Tags.RemoveTag", params, this, "removeTagReply");
|
return m_jsonClient->sendCommand("Tags.RemoveTag", params, this, "removeTagReply");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::handleTagsNotification(const QVariantMap ¶ms)
|
void TagsManager::handleTagsNotification(const QVariantMap ¶ms)
|
||||||
@ -164,10 +164,10 @@ void TagsManager::handleTagsNotification(const QVariantMap ¶ms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::getTagsReply(const QVariantMap ¶ms)
|
void TagsManager::getTagsReply(int /*commandId*/, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
QList<Tag*> tags;
|
QList<Tag*> tags;
|
||||||
foreach (const QVariant &tagVariant, params.value("params").toMap().value("tags").toList()) {
|
foreach (const QVariant &tagVariant, params.value("tags").toList()) {
|
||||||
Tag *tag = unpackTag(tagVariant.toMap());
|
Tag *tag = unpackTag(tagVariant.toMap());
|
||||||
if (tag) {
|
if (tag) {
|
||||||
tags.append(tag);
|
tags.append(tag);
|
||||||
@ -179,14 +179,14 @@ void TagsManager::getTagsReply(const QVariantMap ¶ms)
|
|||||||
emit busyChanged();
|
emit busyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::addTagReply(const QVariantMap ¶ms)
|
void TagsManager::addTagReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "AddTag reply" << params;
|
qDebug() << "AddTag reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagsManager::removeTagReply(const QVariantMap ¶ms)
|
void TagsManager::removeTagReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "RemoveTag reply" << params;
|
qDebug() << "RemoveTag reply" << commandId << params;
|
||||||
}
|
}
|
||||||
|
|
||||||
Tag* TagsManager::unpackTag(const QVariantMap &tagMap)
|
Tag* TagsManager::unpackTag(const QVariantMap &tagMap)
|
||||||
|
|||||||
@ -52,19 +52,19 @@ public:
|
|||||||
|
|
||||||
Tags* tags() const;
|
Tags* tags() const;
|
||||||
|
|
||||||
Q_INVOKABLE void tagDevice(const QString &deviceId, const QString &tagId, const QString &value);
|
Q_INVOKABLE int tagDevice(const QString &deviceId, const QString &tagId, const QString &value);
|
||||||
Q_INVOKABLE void untagDevice(const QString &deviceId, const QString &tagId);
|
Q_INVOKABLE int untagDevice(const QString &deviceId, const QString &tagId);
|
||||||
Q_INVOKABLE void tagRule(const QString &ruleId, const QString &tagId, const QString &value);
|
Q_INVOKABLE int tagRule(const QString &ruleId, const QString &tagId, const QString &value);
|
||||||
Q_INVOKABLE void untagRule(const QString &ruleId, const QString &tagId);
|
Q_INVOKABLE int untagRule(const QString &ruleId, const QString &tagId);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void busyChanged();
|
void busyChanged();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleTagsNotification(const QVariantMap ¶ms);
|
void handleTagsNotification(const QVariantMap ¶ms);
|
||||||
void getTagsReply(const QVariantMap ¶ms);
|
void getTagsReply(int commandId, const QVariantMap ¶ms);
|
||||||
void addTagReply(const QVariantMap ¶ms);
|
void addTagReply(int commandId, const QVariantMap ¶ms);
|
||||||
void removeTagReply(const QVariantMap ¶ms);
|
void removeTagReply(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Tag *unpackTag(const QVariantMap &tagMap);
|
Tag *unpackTag(const QVariantMap &tagMap);
|
||||||
|
|||||||
@ -56,11 +56,11 @@ ThingGroup::ThingGroup(DeviceManager *deviceManager, DeviceClass *deviceClass, D
|
|||||||
syncStates();
|
syncStates();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(m_thingManager, &DeviceManager::executeActionReply, this, [this](const QVariantMap ¶ms){
|
connect(m_thingManager, &DeviceManager::executeActionReply, this, [this](int commandId, const QVariantMap &/*params*/){
|
||||||
int returningId = params.value("id").toInt();
|
// This should maybe check the params and only emit NoError if there is at least one thing that returned without error?
|
||||||
foreach (int id, m_pendingActions.keys()) {
|
foreach (int id, m_pendingActions.keys()) {
|
||||||
if (m_pendingActions.value(id).contains(returningId)) {
|
if (m_pendingActions.value(id).contains(commandId)) {
|
||||||
m_pendingActions[id].removeAll(returningId);
|
m_pendingActions[id].removeAll(commandId);
|
||||||
if (m_pendingActions[id].isEmpty()) {
|
if (m_pendingActions[id].isEmpty()) {
|
||||||
m_pendingActions.remove(id);
|
m_pendingActions.remove(id);
|
||||||
emit actionExecutionFinished(id, "DeviceErrorNoError");
|
emit actionExecutionFinished(id, "DeviceErrorNoError");
|
||||||
|
|||||||
@ -73,17 +73,17 @@ void UserManager::notificationReceived(const QVariantMap &data)
|
|||||||
qDebug() << "Users notification" << data;
|
qDebug() << "Users notification" << data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserManager::getUserInfoReply(const QVariantMap &data)
|
void UserManager::getUserInfoReply(int commandId, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
qDebug() << "User info reply" << data;
|
qDebug() << "User info reply" << commandId << data;
|
||||||
|
|
||||||
m_userInfo->setUsername(data.value("params").toMap().value("userInfo").toMap().value("username").toString());
|
m_userInfo->setUsername(data.value("userInfo").toMap().value("username").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserManager::getTokensReply(const QVariantMap &data)
|
void UserManager::getTokensReply(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (const QVariant &tokenVariant, data.value("params").toMap().value("tokenInfoList").toList()) {
|
foreach (const QVariant &tokenVariant, data.value("tokenInfoList").toList()) {
|
||||||
// qDebug() << "Token received" << tokenVariant.toMap();
|
// qDebug() << "Token received" << tokenVariant.toMap();
|
||||||
QVariantMap token = tokenVariant.toMap();
|
QVariantMap token = tokenVariant.toMap();
|
||||||
QUuid id = token.value("id").toString();
|
QUuid id = token.value("id").toString();
|
||||||
@ -98,32 +98,28 @@ void UserManager::getTokensReply(const QVariantMap &data)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void UserManager::deleteTokenReply(const QVariantMap &payload)
|
void UserManager::deleteTokenReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Delete token reply" << payload;
|
qDebug() << "Delete token reply" << commandId << params;
|
||||||
int callId = payload.value("id").toInt();
|
QUuid tokenId = m_tokensToBeRemoved.take(commandId);
|
||||||
QUuid tokenId = m_tokensToBeRemoved.take(callId);
|
|
||||||
QVariantMap params = payload.value("params").toMap();
|
|
||||||
QString errorString = params.value("error").toString();
|
QString errorString = params.value("error").toString();
|
||||||
QMetaEnum metaEnum = QMetaEnum::fromType<UserManager::UserError>();
|
QMetaEnum metaEnum = QMetaEnum::fromType<UserManager::UserError>();
|
||||||
UserError error = static_cast<UserError>(metaEnum.keyToValue(errorString.toUtf8()));
|
UserError error = static_cast<UserError>(metaEnum.keyToValue(errorString.toUtf8()));
|
||||||
|
|
||||||
emit deleteTokenResponse(callId, error);
|
emit deleteTokenResponse(commandId, error);
|
||||||
|
|
||||||
if (error == UserErrorNoError) {
|
if (error == UserErrorNoError) {
|
||||||
m_tokenInfos->removeToken(tokenId);
|
m_tokenInfos->removeToken(tokenId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserManager::changePasswordReply(const QVariantMap &data)
|
void UserManager::changePasswordReply(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qDebug() << "Change password reply" << data;
|
qDebug() << "Change password reply" << commandId << params;
|
||||||
|
|
||||||
int callId = data.value("id").toInt();
|
|
||||||
QVariantMap params = data.value("params").toMap();
|
|
||||||
QString errorString = params.value("error").toString();
|
QString errorString = params.value("error").toString();
|
||||||
QMetaEnum metaEnum = QMetaEnum::fromType<UserManager::UserError>();
|
QMetaEnum metaEnum = QMetaEnum::fromType<UserManager::UserError>();
|
||||||
UserError error = static_cast<UserError>(metaEnum.keyToValue(errorString.toUtf8()));
|
UserError error = static_cast<UserError>(metaEnum.keyToValue(errorString.toUtf8()));
|
||||||
|
|
||||||
emit changePasswordResponse(callId, error);
|
emit changePasswordResponse(commandId, error);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,10 +55,10 @@ signals:
|
|||||||
private slots:
|
private slots:
|
||||||
void notificationReceived(const QVariantMap &data);
|
void notificationReceived(const QVariantMap &data);
|
||||||
|
|
||||||
void getUserInfoReply(const QVariantMap &data);
|
void getUserInfoReply(int commandId, const QVariantMap &data);
|
||||||
void getTokensReply(const QVariantMap &data);
|
void getTokensReply(int commandId, const QVariantMap &data);
|
||||||
void deleteTokenReply(const QVariantMap &data);
|
void deleteTokenReply(int commandId, const QVariantMap ¶ms);
|
||||||
void changePasswordReply(const QVariantMap &data);
|
void changePasswordReply(int commandId, const QVariantMap ¶ms);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Engine *m_engine = nullptr;
|
Engine *m_engine = nullptr;
|
||||||
|
|||||||
@ -99,10 +99,12 @@ ColumnLayout {
|
|||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
d.pendingActionId = -1
|
if (d.pendingActionId == commandId) {
|
||||||
if (d.valueCacheDirty) {
|
d.pendingActionId = -1
|
||||||
d.executeAction(d.valueCache)
|
if (d.valueCacheDirty) {
|
||||||
d.valueCacheDirty = false;
|
d.executeAction(d.valueCache)
|
||||||
|
d.valueCacheDirty = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,20 +66,18 @@ Page {
|
|||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteBrowserItemReply: actionExecuted(params)
|
onExecuteBrowserItemReply: actionExecuted(commandId, params)
|
||||||
onExecuteBrowserItemActionReply: actionExecuted(params)
|
onExecuteBrowserItemActionReply: actionExecuted(commandId, params)
|
||||||
}
|
}
|
||||||
function actionExecuted(params) {
|
function actionExecuted(commandId, params) {
|
||||||
if (params.id === d.pendingBrowserItemId) {
|
if (commandId === d.pendingBrowserItemId) {
|
||||||
d.pendingBrowserItemId = -1;
|
d.pendingBrowserItemId = -1;
|
||||||
d.pendingItemId = ""
|
d.pendingItemId = ""
|
||||||
if (params.status !== "success") {
|
if (params.deviceError !== "DeviceErrorNoError") {
|
||||||
header.showInfo(params.error, true);
|
if (params.displayMessage.length > 0) {
|
||||||
} else if (params.params.deviceError !== "DeviceErrorNoError") {
|
header.showInfo(qsTr("Error: %1").arg(params.displayMessage), true)
|
||||||
if (params.params.displayMessage.length > 0) {
|
|
||||||
header.showInfo(qsTr("Error: %1").arg(params.params.displayMessage), true)
|
|
||||||
} else {
|
} else {
|
||||||
header.showInfo(qsTr("Error: %1").arg(params.params.deviceError), true)
|
header.showInfo(qsTr("Error: %1").arg(params.deviceError), true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -192,7 +192,7 @@ DevicePageBase {
|
|||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
print("Execute action reply:", JSON.stringify(params));
|
print("Execute action reply:", JSON.stringify(params));
|
||||||
addUserPage.error = params["params"]["deviceError"] !== "DeviceErrorNoError"
|
addUserPage.error = params["deviceError"] !== "DeviceErrorNoError"
|
||||||
var masks =[]
|
var masks =[]
|
||||||
masks.push({x: 0, y: 0, width: 1, height: 1});
|
masks.push({x: 0, y: 0, width: 1, height: 1});
|
||||||
addUserPage.done = true
|
addUserPage.done = true
|
||||||
|
|||||||
@ -283,7 +283,7 @@ DevicePageBase {
|
|||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
if (stateDelegate.pendingActionId === params.id) {
|
if (stateDelegate.pendingActionId === commandId) {
|
||||||
stateDelegate.pendingActionId = -1
|
stateDelegate.pendingActionId = -1
|
||||||
if (stateDelegate.valueCacheDirty) {
|
if (stateDelegate.valueCacheDirty) {
|
||||||
stateDelegate.executeAction(stateDelegate.valueCache)
|
stateDelegate.executeAction(stateDelegate.valueCache)
|
||||||
@ -308,9 +308,9 @@ DevicePageBase {
|
|||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
if (params["id"] === actionDelegate.pendingActionId) {
|
if (commandId === actionDelegate.pendingActionId) {
|
||||||
pendingTimer.start();
|
pendingTimer.start();
|
||||||
actionDelegate.lastSuccess = params["params"]["deviceError"] === "DeviceErrorNoError"
|
actionDelegate.lastSuccess = params["deviceError"] === "DeviceErrorNoError"
|
||||||
actionDelegate.pendingActionId = -1
|
actionDelegate.pendingActionId = -1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -302,7 +302,7 @@ DevicePageBase {
|
|||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
print("action finished", JSON.stringify(params))
|
print("action finished", JSON.stringify(params))
|
||||||
if (params.id === colorPicker.pendingCommand) {
|
if (commandId === colorPicker.pendingCommand) {
|
||||||
colorPicker.pendingCommand = -1;
|
colorPicker.pendingCommand = -1;
|
||||||
if (colorPicker.queuedColor) {
|
if (colorPicker.queuedColor) {
|
||||||
colorPicker.sendColor(colorPicker.queuedColor);
|
colorPicker.sendColor(colorPicker.queuedColor);
|
||||||
|
|||||||
@ -108,15 +108,15 @@ DevicePageBase {
|
|||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteBrowserItemReply: executionFinished(params)
|
onExecuteBrowserItemReply: executionFinished(commandId, params)
|
||||||
onExecuteBrowserItemActionReply: executionFinished(params)
|
onExecuteBrowserItemActionReply: executionFinished(commandId, params)
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
print("actionfinished", params["id"])
|
print("actionfinished", commandId)
|
||||||
if (params["id"] === d.pendingVolumeId) {
|
if (commandId === d.pendingVolumeId) {
|
||||||
d.pendingVolumeId = -1
|
d.pendingVolumeId = -1
|
||||||
print("volume action finished")
|
print("volume action finished")
|
||||||
if (params.params.deviceError !== "DeviceErrorNoError") {
|
if (params.deviceError !== "DeviceErrorNoError") {
|
||||||
print("Error setting volume", params.params.deviceError)
|
print("Error setting volume", params.deviceError)
|
||||||
d.pendingVolumeValue = -1;
|
d.pendingVolumeValue = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -129,16 +129,16 @@ DevicePageBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function executionFinished(params) {
|
function executionFinished(commandId, params) {
|
||||||
print("Execute reply:", params, params.id, params["id"], d.pendingBrowserItemId)
|
print("Execute reply:", params, commandId, d.pendingBrowserItemId)
|
||||||
if (params.id === d.pendingBrowserItemId) {
|
if (commandId === d.pendingBrowserItemId) {
|
||||||
d.pendingBrowserItemId = -1;
|
d.pendingBrowserItemId = -1;
|
||||||
d.pendingItemId = ""
|
d.pendingItemId = ""
|
||||||
print("yep finished")
|
print("yep finished")
|
||||||
if (params.params.deviceError === "DeviceErrorNoError") {
|
if (params.deviceError === "DeviceErrorNoError") {
|
||||||
swipeView.currentIndex = 0;
|
swipeView.currentIndex = 0;
|
||||||
} else {
|
} else {
|
||||||
header.showInfo(qsTr("Error: %1").arg(params.params.deviceError), true)
|
header.showInfo(qsTr("Error: %1").arg(params.deviceError), true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,8 +119,8 @@ Item {
|
|||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onExecuteActionReply: {
|
onExecuteActionReply: {
|
||||||
print("executeActionReply:", params["id"])
|
print("executeActionReply:", commandId)
|
||||||
if (params["id"] === d.pendingCallId) {
|
if (commandId === d.pendingCallId) {
|
||||||
d.pendingCallId = -1;
|
d.pendingCallId = -1;
|
||||||
if (d.setTempPending) {
|
if (d.setTempPending) {
|
||||||
setTargetTemp(d.queuedTargetTemp)
|
setTargetTemp(d.queuedTargetTemp)
|
||||||
|
|||||||
@ -56,11 +56,11 @@ Page {
|
|||||||
Connections {
|
Connections {
|
||||||
target: engine.deviceManager
|
target: engine.deviceManager
|
||||||
onSavePluginConfigReply: {
|
onSavePluginConfigReply: {
|
||||||
if (params.params.deviceError === "DeviceErrorNoError") {
|
if (params.deviceError === "DeviceErrorNoError") {
|
||||||
pageStack.pop();
|
pageStack.pop();
|
||||||
} else {
|
} else {
|
||||||
console.warn("Error saving plugin params:", JSON.stringify(params))
|
console.warn("Error saving plugin params:", JSON.stringify(params))
|
||||||
var dialog = errorDialog.createObject(root, {errorCode: params.params.deviceError});
|
var dialog = errorDialog.createObject(root, {errorCode: params.deviceError});
|
||||||
dialog.open();
|
dialog.open();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user