diff --git a/plugins/deviceplugins/mock/devicepluginmock.cpp b/plugins/deviceplugins/mock/devicepluginmock.cpp index 83d088e8..d9ae6b8f 100644 --- a/plugins/deviceplugins/mock/devicepluginmock.cpp +++ b/plugins/deviceplugins/mock/devicepluginmock.cpp @@ -97,16 +97,30 @@ DeviceManager::DeviceSetupStatus DevicePluginMock::setupDevice(Device *device) } return DeviceManager::DeviceSetupStatusSuccess; } else if (device->deviceClassId() == mockPushButtonDeviceClassId) { - qCDebug(dcMockDevice) << "Setup PushButton Mock device" << device->params(); + qCDebug(dcMockDevice) << "Setup PushButton mock device" << device->params(); return DeviceManager::DeviceSetupStatusSuccess; } else if (device->deviceClassId() == mockDisplayPinDeviceClassId) { - qCDebug(dcMockDevice) << "Setup DisplayPin Mock device" << device->params(); + qCDebug(dcMockDevice) << "Setup DisplayPin mock device" << device->params(); + return DeviceManager::DeviceSetupStatusSuccess; + } else if (device->deviceClassId() == mockParentDeviceClassId) { + qCDebug(dcMockDevice) << "Setup Parent mock device" << device->params(); + return DeviceManager::DeviceSetupStatusSuccess; + } else if (device->deviceClassId() == mockChildDeviceClassId) { + qCDebug(dcMockDevice) << "Setup Child mock device" << device->params(); + device->setParentId(DeviceId(device->params().paramValue("parent uuid").toString())); return DeviceManager::DeviceSetupStatusSuccess; } return DeviceManager::DeviceSetupStatusFailure; } +void DevicePluginMock::postSetupDevice(Device *device) +{ + if (device->deviceClassId() == mockParentDeviceClassId) { + onChildDeviceDiscovered(device->id()); + } +} + void DevicePluginMock::deviceRemoved(Device *device) { delete m_daemons.take(device); @@ -225,6 +239,12 @@ DeviceManager::DeviceError DevicePluginMock::executeAction(Device *device, const return DeviceManager::DeviceErrorAsync; } return DeviceManager::DeviceErrorActionTypeNotFound; + } else if (device->deviceClassId() == mockParentDeviceClassId || device->deviceClassId() == mockChildDeviceClassId) { + if (action.actionTypeId() == boolValueActionTypeId) { + device->setStateValue(boolValueStateTypeId, action.param("bool value").value().toBool()); + return DeviceManager::DeviceErrorNoError; + } + return DeviceManager::DeviceErrorActionTypeNotFound; } return DeviceManager::DeviceErrorDeviceClassNotFound; } @@ -374,3 +394,15 @@ void DevicePluginMock::onDisplayPinPairingFinished() qCDebug(dcMockDevice) << "Pairing DisplayPin Device finished"; emit pairingFinished(m_pairingId, DeviceManager::DeviceSetupStatusSuccess); } + +void DevicePluginMock::onChildDeviceDiscovered(const DeviceId &parentId) +{ + qCDebug(dcMockDevice) << "Child device discovered for parent" << parentId.toString(); + DeviceDescriptor mockDescriptor(mockChildDeviceClassId, "Child Mock Device (Auto created)"); + ParamList params; + params.append(Param("name", "Child")); + params.append(Param("parent uuid", parentId)); + mockDescriptor.setParams(params); + + emit autoDevicesAppeared(mockChildDeviceClassId, QList() << mockDescriptor); +} diff --git a/plugins/deviceplugins/mock/devicepluginmock.h b/plugins/deviceplugins/mock/devicepluginmock.h index 08ac1cd0..ee3f4045 100644 --- a/plugins/deviceplugins/mock/devicepluginmock.h +++ b/plugins/deviceplugins/mock/devicepluginmock.h @@ -43,6 +43,7 @@ public: DeviceManager::DeviceError discoverDevices(const DeviceClassId &deviceClassId, const ParamList ¶ms) override; DeviceManager::DeviceSetupStatus setupDevice(Device *device) override; + void postSetupDevice(Device *device) override; void deviceRemoved(Device *device) override; void startMonitoringAutoDevices() override; @@ -67,6 +68,7 @@ private slots: void onPushButtonPressed(); void onPushButtonPairingFinished(); void onDisplayPinPairingFinished(); + void onChildDeviceDiscovered(const DeviceId &parentId); private: QHash m_daemons; diff --git a/plugins/deviceplugins/mock/devicepluginmock.json b/plugins/deviceplugins/mock/devicepluginmock.json index ec7631ba..4c16e6ad 100644 --- a/plugins/deviceplugins/mock/devicepluginmock.json +++ b/plugins/deviceplugins/mock/devicepluginmock.json @@ -343,6 +343,59 @@ "name": "Timout action" } ] + }, + { + "deviceClassId": "a71fbde9-9a38-4bf8-beab-c8aade2608ba", + "idName": "mockParent", + "name": "Mock Device (Parent)", + "createMethods": ["user"], + "paramTypes": [ + { + "name": "name", + "type": "QString", + "inputType": "TextLine", + "defaultValue": "Parent Mock Device" + } + ], + "stateTypes": [ + { + "id": "d24ede5f-4064-4898-bb84-cfb533b1fbc0", + "idName": "boolValue", + "name": "bool value", + "type": "bool", + "defaultValue": false, + "writable": true + } + ] + }, + { + "deviceClassId": "40893c9f-bc47-40c1-8bf7-b390c7c1b4fc", + "idName": "mockChild", + "name": "Mock Device (Child)", + "createMethods": ["auto"], + "paramTypes": [ + { + "name": "name", + "type": "QString", + "inputType": "TextLine", + "defaultValue": "Child Mock Device" + }, + { + "name": "parent uuid", + "type": "QUuid", + "readOnly": true + } + ], + "stateTypes": [ + { + "id": "d24ede5f-4064-4898-bb84-cfb533b1fbc0", + "idName": "boolValue", + "name": "bool value", + "type": "bool", + "defaultValue": false, + "writable": true + } + ] } ] }