deviceDeployed method
Indicate to stakeholders in the study deployment with studyDeploymentId
that the device with primaryDeviceRoleName was deployed successfully,
using the deployment with the specified deviceDeploymentLastUpdatedOn,
i.e., that the study deployment was loaded on the device and that the
necessary runtime is available to run it.
Returns null when:
- a deployment with
studyDeploymentIddoes not exist primaryDeviceRoleNameis not present in the deployment- the
deviceDeploymentLastUpdatedOndoes not match the expected date. The deployment might be outdated. - the deployment cannot be deployed yet, or the deployment has stopped.
Implementation
@override
Future<StudyDeploymentStatus?> deviceDeployed(
String studyDeploymentId,
String primaryDeviceRoleName,
DateTime? deviceDeploymentLastUpdatedOn,
) async {
if (_repository[studyDeploymentId] == null) return null;
deviceDeploymentLastUpdatedOn ??= DateTime.now();
StudyDeployment deployment = _repository[studyDeploymentId]!;
DeviceConfiguration device = deployment.registeredDevices.keys.firstWhere(
(configuration) => configuration.roleName == primaryDeviceRoleName);
if (device is! PrimaryDeviceConfiguration) {
warning(
"The specified device with role name '$primaryDeviceRoleName' is not a primary device.");
return null;
}
deployment.deviceDeployed(device, deviceDeploymentLastUpdatedOn);
return deployment.status;
}