/// <summary> /// Used internally by the SDK to create a new instance of the DeviceRegistrationResult class. /// This constructor is exposed to allow serialization and unit testing of applications using this SDK. /// </summary> public DeviceRegistrationResult( string registrationId, DateTime?createdDateTimeUtc, string assignedHub, string deviceId, ProvisioningRegistrationStatusType status, ProvisioningRegistrationSubstatusType substatus, string generationId, DateTime?lastUpdatedDateTimeUtc, int errorCode, string errorMessage, string etag) { RegistrationId = registrationId; CreatedDateTimeUtc = createdDateTimeUtc; AssignedHub = assignedHub; DeviceId = deviceId; Status = status; Substatus = substatus; GenerationId = generationId; LastUpdatedDateTimeUtc = lastUpdatedDateTimeUtc; ErrorCode = errorCode; ErrorMessage = errorMessage; Etag = etag; }
/// <summary> /// Used internally by the SDK to create a new instance of the DeviceRegistrationResult class. /// This constructor is exposed to allow serialization and unit testing of applications using this SDK. /// </summary> public DeviceRegistrationResult( string registrationId, DateTime?createdDateTimeUtc, string assignedHub, string deviceId, ProvisioningRegistrationStatusType status, string generationId, DateTime?lastUpdatedDateTimeUtc, int errorCode, string errorMessage, string etag) : this( registrationId, createdDateTimeUtc, assignedHub, deviceId, status, ProvisioningRegistrationSubstatusType.InitialAssignment, generationId, lastUpdatedDateTimeUtc, errorCode, errorMessage, etag) { }
protected void InitializeDevice(DeviceRegistrationResult result) { this.deviceId = result.DeviceId; this.assignedIoTHub = result.AssignedHub; this.registrationStatus = result.Status; this.ready = this.registrationStatus == ProvisioningRegistrationStatusType.Assigned; }
private async Task <ProvisioningRegistrationStatusType> RunDeviceProvisioning() { ProvisioningRegistrationStatusType registrationStatus = ProvisioningRegistrationStatusType.Failed; string registrationId = Dns.GetHostName().ToLower(); using (var security = new SecurityProviderTpmHsm(registrationId)) using (var transport = new ProvisioningTransportHandlerHttp()) { Logger.Log($"ProvisioningClient RegisterAsync({registrationId})... ", LoggingLevel.Verbose); ProvisioningDeviceClient provClient = ProvisioningDeviceClient.Create(GlobalDeviceEndpoint, s_idScope, security, transport); try { DeviceRegistrationResult result = await provClient.RegisterAsync().ConfigureAwait(false); Logger.Log($"ProvisioningClient RegisterAsync Result = {result.Status}", LoggingLevel.Verbose); Logger.Log($"ProvisioningClient AssignedHub: {result.AssignedHub}; DeviceID: {result.DeviceId}", LoggingLevel.Information); if (result.Status == ProvisioningRegistrationStatusType.Assigned) { // The symmetric key of the assigned device identity is stored in TPM (this is done in ProvisioningDeviceClient.RegisterAsync()), // for this use case (DM sample), we will need to store some other connection properties // such as device Id and IoT Hub hostname in TPM for later use to establish IoTHub connection try { var tpmDevice = new TpmDevice(); await tpmDevice.SetConnectionInfoAsync(-1, result.AssignedHub, result.DeviceId); } catch (Exception ex) { Logger.Log($"SetConnectionInfoAsync Error: Fail to set service Url in TPM. Exception: {ex.Message}", LoggingLevel.Error); } } registrationStatus = result.Status; } catch (Exception ex) { Logger.Log($"ProvisioningClient Exception: {ex.Message}", LoggingLevel.Error); } } return(registrationStatus); }