update endpoints when a device is paired on the fly
This commit is contained in:
parent
c1d4adea17
commit
6334496c8c
@ -47,6 +47,7 @@ AWSConnector::AWSConnector(QObject *parent) : QObject(parent)
|
|||||||
m_disconnectContextData = std::shared_ptr<awsiotsdk::DisconnectCallbackContextData>(new DisconnectContext(this));
|
m_disconnectContextData = std::shared_ptr<awsiotsdk::DisconnectCallbackContextData>(new DisconnectContext(this));
|
||||||
m_subscriptionContextData = std::shared_ptr<awsiotsdk::mqtt::SubscriptionHandlerContextData>(new SubscriptionContext(this));
|
m_subscriptionContextData = std::shared_ptr<awsiotsdk::mqtt::SubscriptionHandlerContextData>(new SubscriptionContext(this));
|
||||||
|
|
||||||
|
qRegisterMetaType<AWSConnector::PushNotificationsEndpoint>();
|
||||||
m_clientName = readSyncedNameCache();
|
m_clientName = readSyncedNameCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +161,7 @@ void AWSConnector::setupSubscriptions()
|
|||||||
subscriptions.append(QString("%1/device/users/response").arg(m_clientId));
|
subscriptions.append(QString("%1/device/users/response").arg(m_clientId));
|
||||||
subscriptions.append(QString("%1/pair/response").arg(m_clientId));
|
subscriptions.append(QString("%1/pair/response").arg(m_clientId));
|
||||||
subscriptions.append(QString("%1/notify/response").arg(m_clientId));
|
subscriptions.append(QString("%1/notify/response").arg(m_clientId));
|
||||||
|
subscriptions.append(QString("%1/notify/info/endpoint").arg(m_clientId));
|
||||||
subscribe(subscriptions);
|
subscribe(subscriptions);
|
||||||
|
|
||||||
// fetch previous pairings
|
// fetch previous pairings
|
||||||
@ -475,6 +477,15 @@ ResponseCode AWSConnector::onSubscriptionReceivedCallback(util::String topic_nam
|
|||||||
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
||||||
qCDebug(dcAWS()) << "Push notification reply for transaction" << transactionId << " Status:" << status << jsonDoc.toVariant().toMap().value("message").toString();
|
qCDebug(dcAWS()) << "Push notification reply for transaction" << transactionId << " Status:" << status << jsonDoc.toVariant().toMap().value("message").toString();
|
||||||
emit connector->pushNotificationSent(transactionId, status);
|
emit connector->pushNotificationSent(transactionId, status);
|
||||||
|
} else if (topic == QString("%1/notify/info/endpoint").arg(connector->m_clientId)) {
|
||||||
|
QVariantMap endpoint = jsonDoc.toVariant().toMap().value("newPushNotificationsEndpoint").toMap();
|
||||||
|
Q_ASSERT(endpoint.keys().count() == 1);
|
||||||
|
QString cognitoId = endpoint.keys().first();
|
||||||
|
PushNotificationsEndpoint ep;
|
||||||
|
ep.userId = cognitoId;
|
||||||
|
ep.endpointId = endpoint.value(cognitoId).toMap().value("endpointId").toString();
|
||||||
|
ep.displayName = endpoint.value(cognitoId).toMap().value("displayName").toString();
|
||||||
|
emit connector->pushNotificationEndpointAdded(ep);
|
||||||
} else {
|
} else {
|
||||||
qCWarning(dcAWS) << "Unhandled subscription received!" << topic << QString::fromStdString(payload);
|
qCWarning(dcAWS) << "Unhandled subscription received!" << topic << QString::fromStdString(payload);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,8 @@ signals:
|
|||||||
void disconnected();
|
void disconnected();
|
||||||
void devicePaired(const QString &cognritoUserId, int errorCode, const QString &message);
|
void devicePaired(const QString &cognritoUserId, int errorCode, const QString &message);
|
||||||
void webRtcHandshakeMessageReceived(const QString &transactionId, const QVariantMap &data);
|
void webRtcHandshakeMessageReceived(const QString &transactionId, const QVariantMap &data);
|
||||||
void pushNotificationEndpointsUpdated(const QList<PushNotificationsEndpoint> pushNotificationEndpoints);
|
void pushNotificationEndpointsUpdated(const QList<AWSConnector::PushNotificationsEndpoint> pushNotificationEndpoints);
|
||||||
|
void pushNotificationEndpointAdded(const AWSConnector::PushNotificationsEndpoint &pushNotificationEndpoint);
|
||||||
void pushNotificationSent(int id, int status);
|
void pushNotificationSent(int id, int status);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
@ -134,5 +135,6 @@ private:
|
|||||||
static AWSConnector* s_instance;
|
static AWSConnector* s_instance;
|
||||||
static QHash<quint16, AWSConnector*> s_requestMap;
|
static QHash<quint16, AWSConnector*> s_requestMap;
|
||||||
};
|
};
|
||||||
|
Q_DECLARE_METATYPE(AWSConnector::PushNotificationsEndpoint)
|
||||||
|
|
||||||
#endif // AWSCONNECTOR_H
|
#endif // AWSCONNECTOR_H
|
||||||
|
|||||||
@ -38,6 +38,7 @@ CloudNotifications::CloudNotifications(AWSConnector* awsConnector, QObject *pare
|
|||||||
m_awsConnector(awsConnector)
|
m_awsConnector(awsConnector)
|
||||||
{
|
{
|
||||||
connect(m_awsConnector, &AWSConnector::pushNotificationEndpointsUpdated, this, &CloudNotifications::pushNotificationEndpointsUpdated);
|
connect(m_awsConnector, &AWSConnector::pushNotificationEndpointsUpdated, this, &CloudNotifications::pushNotificationEndpointsUpdated);
|
||||||
|
connect(m_awsConnector, &AWSConnector::pushNotificationEndpointAdded, this, &CloudNotifications::pushNotificationEndpointAdded);
|
||||||
connect(m_awsConnector, &AWSConnector::pushNotificationSent, this, &CloudNotifications::pushNotificationSent);
|
connect(m_awsConnector, &AWSConnector::pushNotificationSent, this, &CloudNotifications::pushNotificationSent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,7 +136,6 @@ QJsonObject CloudNotifications::metaData() const
|
|||||||
|
|
||||||
DeviceManager::DeviceSetupStatus CloudNotifications::setupDevice(Device *device)
|
DeviceManager::DeviceSetupStatus CloudNotifications::setupDevice(Device *device)
|
||||||
{
|
{
|
||||||
qWarning() << "--------------------------------------------------------------------- setupDevice" << device->id() << device->name();
|
|
||||||
Q_UNUSED(device)
|
Q_UNUSED(device)
|
||||||
return DeviceManager::DeviceSetupStatusSuccess;
|
return DeviceManager::DeviceSetupStatusSuccess;
|
||||||
}
|
}
|
||||||
@ -201,6 +201,18 @@ void CloudNotifications::pushNotificationEndpointsUpdated(const QList<AWSConnect
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CloudNotifications::pushNotificationEndpointAdded(const AWSConnector::PushNotificationsEndpoint &endpoint)
|
||||||
|
{
|
||||||
|
DeviceDescriptor descriptor(cloudNotificationsDeviceClassId, endpoint.displayName, QString("Send notifications to %1").arg(endpoint.displayName));
|
||||||
|
ParamList params;
|
||||||
|
Param userIdParam(cloudNotificationsDeviceClassUserParamId, endpoint.userId);
|
||||||
|
params.append(userIdParam);
|
||||||
|
Param endpointIdParam(cloudNotificationsDeviceClassEndpointParamId, endpoint.endpointId);
|
||||||
|
params.append(endpointIdParam);
|
||||||
|
descriptor.setParams(params);
|
||||||
|
emit autoDevicesAppeared(cloudNotificationsDeviceClassId, {descriptor});
|
||||||
|
}
|
||||||
|
|
||||||
void CloudNotifications::pushNotificationSent(int id, int status)
|
void CloudNotifications::pushNotificationSent(int id, int status)
|
||||||
{
|
{
|
||||||
qCDebug(dcCloud()) << "Push notification sent" << id << status;
|
qCDebug(dcCloud()) << "Push notification sent" << id << status;
|
||||||
|
|||||||
@ -42,6 +42,7 @@ public:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void pushNotificationEndpointsUpdated(const QList<AWSConnector::PushNotificationsEndpoint> &endpoints);
|
void pushNotificationEndpointsUpdated(const QList<AWSConnector::PushNotificationsEndpoint> &endpoints);
|
||||||
|
void pushNotificationEndpointAdded(const AWSConnector::PushNotificationsEndpoint &endpoint);
|
||||||
void pushNotificationSent(int id, int status);
|
void pushNotificationSent(int id, int status);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user