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

View File

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