internal DevicePairingResult(int error)
        {
            switch (error)
            {
            case 0:
                _status = DevicePairingResultStatus.Paired;
                break;

            case 258:     /* WAIT_TIMEOUT */
                _status = DevicePairingResultStatus.AuthenticationTimeout;
                break;

            case 259:     /*ERROR_NO_MORE_ITEMS*/
                _status = DevicePairingResultStatus.AlreadyPaired;
                break;

            case 1223:     /*ERROR_CANCELLED*/
                _status = DevicePairingResultStatus.PairingCanceled;
                break;

            case 1244:     /*ERROR_NOT_AUTHENTICATED*/
                _status = DevicePairingResultStatus.AuthenticationFailure;
                break;

            default:
                _status = DevicePairingResultStatus.Failed;
                break;
            }
        }
Beispiel #2
0
        static bool PlatformPairRequest(BluetoothAddress device, string pin)
        {
            BluetoothDevice bluetoothDevice = null;
            var             t = Task <bool> .Run(async() =>
            {
                bluetoothDevice = await BluetoothDevice.FromBluetoothAddressAsync(device.ToUInt64());
                DevicePairingResultStatus status = DevicePairingResultStatus.NotPaired;

                if (string.IsNullOrEmpty(pin))
                {
                    var result = await bluetoothDevice.DeviceInformation.Pairing.PairAsync();
                    status     = result.Status;
                }
                else
                {
                    pinMappings.Add(bluetoothDevice.DeviceId, pin);
                    bluetoothDevice.DeviceInformation.Pairing.Custom.PairingRequested += Custom_PairingRequested;
                    var result = await bluetoothDevice.DeviceInformation.Pairing.Custom.PairAsync(DevicePairingKinds.ProvidePin);
                    status     = result.Status;
                }

                return(status == DevicePairingResultStatus.Paired);
            });

            t.Wait();
            return(t.Result);
        }
        public static bool IsSuccessful(this DevicePairingResultStatus result)
        {
            switch (result)
            {
            case DevicePairingResultStatus.Paired:
            case DevicePairingResultStatus.AlreadyPaired:
                return(true);

            default:
                return(false);
            }
        }
Beispiel #4
0
        private void buttonPair_Click(object sender, EventArgs e)
        {
            if (listViewDevices.SelectedItems.Count == 0)
            {
                return;
            }

            DnaBluetoothLEDevice      device = (DnaBluetoothLEDevice)listViewDevices.SelectedItems[0].Tag;
            DevicePairingResultStatus result = DevicePairingResultStatus.Failed;

            Task.Run(async() =>
            {
                try
                {
                    // Try and connect
                    log("Pairing with " + device);
                    result = await watcher.PairToDeviceAsync(device.DeviceId);
                    if (result == DevicePairingResultStatus.Paired)
                    {
                        log("Pairing successful with " + device);
                        findDeviceTypeAsync(device);
                    }
                    else
                    {
                        log("Pairing failed: " + result, Color.Red);
                    }
                }
                catch (Exception ex)
                {
                    // Log it out
                    log("Failed to pair with " + device);
                    Console.WriteLine("Failed to pair to Contour device.");
                    Console.WriteLine(ex);
                }
            });
        }
        public static BT_PairingStatus ConvertStatus(this DevicePairingResultStatus result)
        {
            switch (result)
            {
            case DevicePairingResultStatus.Paired:
                return(BT_PairingStatus.Paired);

            case DevicePairingResultStatus.NotReadyToPair:
                return(BT_PairingStatus.NotReadyToPair);

            case DevicePairingResultStatus.NotPaired:
                return(BT_PairingStatus.NotPaired);

            case DevicePairingResultStatus.AlreadyPaired:
                return(BT_PairingStatus.AlreadyPaired);

            case DevicePairingResultStatus.ConnectionRejected:
                return(BT_PairingStatus.Rejected);

            case DevicePairingResultStatus.TooManyConnections:
                return(BT_PairingStatus.TooManyConnections);

            case DevicePairingResultStatus.HardwareFailure:
                return(BT_PairingStatus.HardwareFailure);

            case DevicePairingResultStatus.AuthenticationTimeout:
                return(BT_PairingStatus.AuthenticationTimeout);

            case DevicePairingResultStatus.AuthenticationNotAllowed:
                return(BT_PairingStatus.AuthenticationNotAllowed);

            case DevicePairingResultStatus.AuthenticationFailure:
                return(BT_PairingStatus.AuthenticationFailure);

            case DevicePairingResultStatus.NoSupportedProfiles:
                return(BT_PairingStatus.NoSupportedProfiles);

            case DevicePairingResultStatus.ProtectionLevelCouldNotBeMet:
                return(BT_PairingStatus.ProtectionLevelCouldNotBeMet);

            case DevicePairingResultStatus.AccessDenied:
                return(BT_PairingStatus.AccessDenied);

            case DevicePairingResultStatus.InvalidCeremonyData:
                return(BT_PairingStatus.InvalidCeremonyData);

            case DevicePairingResultStatus.PairingCanceled:
                return(BT_PairingStatus.PairingCanceled);

            case DevicePairingResultStatus.OperationAlreadyInProgress:
                return(BT_PairingStatus.OperationAlreadyInProgress);

            case DevicePairingResultStatus.RequiredHandlerNotRegistered:
                return(BT_PairingStatus.RequiredHandlerNotRegistered);

            case DevicePairingResultStatus.RejectedByHandler:
                return(BT_PairingStatus.RejectedByHandler);

            case DevicePairingResultStatus.RemoteDeviceHasAssociation:
                return(BT_PairingStatus.RemoteDeviceHasAssociation);

            case DevicePairingResultStatus.Failed:
                return(BT_PairingStatus.Failed);

            default:
                LogUtils.Net.Log.Error(9999, () => string.Format("Unknown Pair failure:{0}", result));
                return(BT_PairingStatus.Failed);
            }
        }
Beispiel #6
0
        private ERROR_CODE ConvertErrorCodePairing(DevicePairingResultStatus status)
        {
            var error_status = ERROR_CODE.UNKNOWN_ERROR;

            switch (status)
            {
            case DevicePairingResultStatus.Paired:
                error_status = ERROR_CODE.PAIRING_SUCCESS;
                break;

            case DevicePairingResultStatus.NotReadyToPair:
                error_status = ERROR_CODE.PAIRING_NOT_READY_TO_PAIR;
                break;

            case DevicePairingResultStatus.NotPaired:
                error_status = ERROR_CODE.PAIRING_NOT_PAIRED;
                break;

            case DevicePairingResultStatus.AlreadyPaired:
                error_status = ERROR_CODE.PAIRING_ALREADY_PAIRED;
                break;


            case DevicePairingResultStatus.ConnectionRejected:
                error_status = ERROR_CODE.PAIRING_CONNECTION_REJECTED;
                break;


            case DevicePairingResultStatus.TooManyConnections:
                error_status = ERROR_CODE.PAIRING_TOO_MANY_CONNECTIONS;
                break;


            case DevicePairingResultStatus.HardwareFailure:
                error_status = ERROR_CODE.PAIRING_HARDWARE_FAILURE;
                break;


            case DevicePairingResultStatus.AuthenticationTimeout:
                error_status = ERROR_CODE.PAIRING_AUTHENTICATION_TIMEOUT;
                break;


            case DevicePairingResultStatus.AuthenticationNotAllowed:
                error_status = ERROR_CODE.PAIRING_AUTHENTICATIION_NOT_ALLOWED;
                break;


            case DevicePairingResultStatus.AuthenticationFailure:
                error_status = ERROR_CODE.PAIRING_AUTHENTICATION_FAILURE;
                break;


            case DevicePairingResultStatus.NoSupportedProfiles:
                error_status = ERROR_CODE.PAIRING_NOT_SUPPORTED_PROFILES;
                break;


            case DevicePairingResultStatus.ProtectionLevelCouldNotBeMet:
                error_status = ERROR_CODE.PAIRING_PROTEDTION_LEVEL_COULDNOT_BE_MET;
                break;


            case DevicePairingResultStatus.AccessDenied:
                error_status = ERROR_CODE.PAIRING_ACCESS_DENIED;
                break;


            case DevicePairingResultStatus.InvalidCeremonyData:
                error_status = ERROR_CODE.PAIRING_INVALID_CEREMONYDATA;
                break;


            case DevicePairingResultStatus.PairingCanceled:
                error_status = ERROR_CODE.PAIRING_PAIRING_CANCELED;
                break;


            case DevicePairingResultStatus.OperationAlreadyInProgress:
                error_status = ERROR_CODE.PAIRING_OPERATION_ALREADY_INPROGRESS;
                break;


            case DevicePairingResultStatus.RequiredHandlerNotRegistered:
                error_status = ERROR_CODE.PAIRING_REQUIRED_HANDLER_NOT_REGISTERED;
                break;


            case DevicePairingResultStatus.RejectedByHandler:
                error_status = ERROR_CODE.PAIRING_REJECTED_BY_HANDLER;
                break;


            case DevicePairingResultStatus.RemoteDeviceHasAssociation:
                error_status = ERROR_CODE.PAIRING_REMOTE_DEVICE_HAS_ASSOCIATION;
                break;


            case DevicePairingResultStatus.Failed:
                error_status = ERROR_CODE.PAIRING_FAILED;
                break;
            }
            return(error_status);
        }
 internal DevicePairingResult(bool success)
 {
     _status = success ? DevicePairingResultStatus.Paired : DevicePairingResultStatus.Failed;
 }