Some fixes

This commit is contained in:
Michael Zanetti 2022-01-07 23:32:08 +01:00
parent 9c87f4c470
commit 5954d1b645
3 changed files with 25 additions and 1 deletions

View File

@ -671,6 +671,10 @@ void IntegrationPluginOwlet::executeAction(ThingActionInfo *info)
{
if (info->thing()->thingClassId() == digitalOutputThingClassId) {
OwletClient *client = m_clients.value(info->thing());
if (!client->isConnected()) {
info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Owlet is not connected."));
return;
}
QVariantMap params;
params.insert("id", info->thing()->paramValue(digitalOutputThingPinParamTypeId).toInt());
params.insert("power", info->action().paramValue(digitalOutputPowerActionPowerParamTypeId).toBool());
@ -689,12 +693,19 @@ void IntegrationPluginOwlet::executeAction(ThingActionInfo *info)
info->finish(Thing::ThingErrorHardwareFailure);
}
});
connect(client, &OwletClient::disconnected, info, [=](){
qCDebug(dcOwlet()) << "Owlet disconnected during pending action";
info->finish(Thing::ThingErrorHardwareFailure);
});
return;
}
if (info->thing()->thingClassId() == ws2812ThingClassId) {
OwletClient *client = m_clients.value(info->thing());
if (!client->isConnected()) {
info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Owlet is not connected."));
return;
}
QVariantMap params;
params.insert("id", info->thing()->paramValue(ws2812ThingPinParamTypeId).toUInt());
@ -721,11 +732,17 @@ void IntegrationPluginOwlet::executeAction(ThingActionInfo *info)
qCDebug(dcOwlet()) << "reply from owlet:" << params;
QString error = params.value("error").toString();
if (error == "GPIOErrorNoError") {
info->thing()->setStateValue(info->action().actionTypeId(), info->action().paramValue(info->action().actionTypeId()));
info->finish(Thing::ThingErrorNoError);
} else {
info->finish(Thing::ThingErrorHardwareFailure);
}
});
connect(client, &OwletClient::disconnected, info, [=](){
qCDebug(dcOwlet()) << "Owlet disconnected during pending action";
info->finish(Thing::ThingErrorHardwareFailure);
});
return;
}

View File

@ -22,6 +22,11 @@ OwletClient::OwletClient(OwletTransport *transport, QObject *parent) :
});
}
bool OwletClient::isConnected() const
{
return m_transport->connected();
}
OwletTransport *OwletClient::transport() const
{
return m_transport;

View File

@ -13,6 +13,8 @@ class OwletClient : public QObject
public:
explicit OwletClient(OwletTransport *transport, QObject *parent = nullptr);
bool isConnected() const;
OwletTransport *transport() const;
int sendCommand(const QString &method, const QVariantMap &params = QVariantMap());