Exemplo n.º 1
0
 private void WifiService_ConnectionFailed(object sender, Common.WiFi.ConnectionFailedEventArgs e)
 {
     OnFinishDevicePairing?.Invoke(this, new OnFinishDevicePairingEventArgs()
     {
         IsSuccess = false
     });
 }
Exemplo n.º 2
0
        bool ProvisionDeviceFail()
        {
            OnFinishDevicePairing?.Invoke(this, new OnFinishDevicePairingEventArgs
            {
                IsSuccess = false,
            });

            return(false);
        }
Exemplo n.º 3
0
        async Task <bool> ProvisionDeviceFail()
        {
            await wifiService.DisconnectFromWifiNetwork(deviceSetupService.CurrentDeviceHotspotNetwork);

            OnFinishDevicePairing?.Invoke(this, new OnFinishDevicePairingEventArgs
            {
                IsSuccess = false,
            });

            return(false);
        }
Exemplo n.º 4
0
        private async Task <bool> OnboardDevice()
        {
            var provisionSuccess = await onboardingRestService.ProvisionDevice(new RequestCommandProvisionDevice
            {
                DeviceCertificateInformation = new DeviceCertificateModel
                {
                    DeviceType  = certificateResponse.DeviceType,
                    Certificate = certificateResponse.Certificate,
                    DpsIdScope  = certificateResponse.DpsIdScope,
                    DpsInstance = certificateResponse.DpsInstance,
                },
            });

            SetPairingStatusText("Updating secrets on the device! Sit tight...");

            if (provisionSuccess == null || !provisionSuccess.IsSuccess)
            {
                return(await ProvisionDeviceFail());
            }

            var setDeviceKeysResponse = await onboardingRestService.SetDeviceSecretKeys(new RequestCommandSetDeviceSecretKeys
            {
                AccessPointPassword = generateKeysResponse.SSIDPassword,
                EncryptionKey       = generateKeysResponse.EncryptionKey,
                PortalPassword      = generateKeysResponse.PortalPassword,
            });

            if (setDeviceKeysResponse == null || !setDeviceKeysResponse.IsSuccess)
            {
                return(await ProvisionDeviceFail());
            }

            deviceSetupService.PortalPassword = generateKeysResponse.PortalPassword;
            deviceSetupService.WiFiPassword   = generateKeysResponse.SSIDPassword;

            onboardingRestService.SetBasicAuthentication(deviceSetupService.PortalPassword);

            SetPairingStatusText("Setting the Device Type");
            var setDeviceTypeResult = await onboardingRestService.SetDeviceType(new RequestCommandSetDeviceType
            {
                DeviceType = certificateResponse.DeviceType,
            });

            if (setDeviceTypeResult == null || !setDeviceTypeResult.IsSuccess)
            {
                return(await ProvisionDeviceFail());
            }

            OnFinishDevicePairing?.Invoke(this, new OnFinishDevicePairingEventArgs
            {
                IsSuccess = setDeviceTypeResult.IsSuccess,
            });

            SetPairingStatusText("Pairing Successful!");

            deviceSetupService.CurrentDeviceModel.DeviceType = certificateResponse.DeviceType;

            // stay connected to device to get available wifi networks on the next screen....

            return(true);
        }
Exemplo n.º 5
0
        public async Task <bool> ProvisionDevice(WifiNetwork wifiNetwork)
        {
            OnBeginDevicePairing?.Invoke();

            // connect to device
            SetPairingStatusText("Connecting to device...");

            var defaultWifiNetwork = await wifiService.GetCurrentlyConnectedWifiNetwork();

            var success = await wifiService.ConnectToWifiNetwork(wifiNetwork.SSID, deviceSetupService.DefaultPassword);

            await Task.Delay(2000);

            if (!success)
            {
                ProvisionDeviceFail();
            }


            // get stuff from device
            SetPairingStatusText("Grabbing some information from the device...");

            deviceSetupService.CurrentDeviceHotspotNetwork = success ? wifiNetwork : null;

            var deviceId = await onboardingRestService.GetDeviceId();

            var csrResult = await onboardingRestService.GetGeneratedCSR();

            // disconnect from device and connect to the internet to provision device with services
            await wifiService.DisconnectFromWifiNetwork(deviceSetupService.CurrentDeviceHotspotNetwork);

            await Task.Delay(2000);

            if (csrResult == null)
            {
                ProvisionDeviceFail();
            }


            // provision device with azure
            SetPairingStatusText("Provisioning device...");

            var certificateResponse = await deviceProvisioningRestService.GenerateDeviceCertificate(new DeviceCertificateRequestModel
            {
                Csr        = csrResult?.Csr ?? "MIIBbjCB2AIBADAvMS0wKwYDVQQDEyQ4OTJlYWM5YS1iOWFkLTQ0NDgtYWEwYS0wOTI0MDE1YWMwMWEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALeqOH+XoeXXERg8neKzr3IumxTDMKsPzKjZ/kfE1gu/FHmr1ugPuRTtQzP5WFVD5lWqtEKJyX+YDCjNevKeHBSpHTAAdVR8GbpDdvRvij0k6yrmrjTRVohO5bTaE611KNzXOW5K4Y8PhoTHasNnMEydfAh4ysut92lWObmg2CG1AgMBAAGgADANBgkqhkiG9w0BAQsFAAOBgQCg8dbM4gMxChp4MF67B/0ARv5Ezq3423v/Tkj5KOMxFql+NeYtM9JpIWABMw2xlARl+agp9e8eaj503grhHjYeGV0afC2/8AA2o/PyZOrS80QViDK6Z4cY+zUO5hp3darGCEH14fuAHKwrokSQxYReqdBELyT3r4ZnCdbi+NUx7A==",
                DeviceType = deviceSetupService.DeviceTypeAsString,
            });

            if (certificateResponse == null)
            {
                ProvisionDeviceFail();
            }

            await Task.Delay(1000);

            SetPairingStatusText("Reconnecting to device to finish up...");

            // reconnect to device to set device type
            var reconnectSuccess = await wifiService.ConnectToWifiNetwork(deviceSetupService.CurrentDeviceHotspotNetwork.SSID, deviceSetupService.DefaultPassword);

            await Task.Delay(2000);

            if (!reconnectSuccess)
            {
                ProvisionDeviceFail();
            }

            var provisionSuccess = await onboardingRestService.ProvisionDevice(new RequestCommandProvisionDevice
            {
                DeviceCertificateInformation = new DeviceCertificateModel
                {
                    DeviceType  = certificateResponse.DeviceType,
                    Certificate = certificateResponse.Certificate,
                    DpsIdScope  = certificateResponse.DpsIdScope,
                    DpsInstance = certificateResponse.DpsInstance,
                },
            });

            if (provisionSuccess == null || !provisionSuccess.IsSuccess)
            {
                ProvisionDeviceFail();
            }

            var setDeviceTypeResult = await onboardingRestService.SetDeviceType(new RequestCommandSetDeviceType
            {
                DeviceType = certificateResponse.DeviceType,
            });

            OnFinishDevicePairing?.Invoke(this, new OnFinishDevicePairingEventArgs
            {
                IsSuccess = setDeviceTypeResult.IsSuccess,
            });

            if (setDeviceTypeResult.IsSuccess)
            {
                SetPairingStatusText("Pairing Successful!");
            }
            else
            {
                ProvisionDeviceFail();
            }

            // disconnect from device and connect to the internet to provision device with services
            await wifiService.DisconnectFromWifiNetwork(deviceSetupService.CurrentDeviceHotspotNetwork);

            await Task.Delay(2000);

            return(setDeviceTypeResult.IsSuccess);
        }