Exemplo n.º 1
0
		private async Task WaitForState(CBCentralManagerState state)
		{
			while (_central.State != state)
			{
				await Task.Run(() => _stateChanged.WaitOne());
			}
		}
Exemplo n.º 2
0
 private async Task WaitForState(CBCentralManagerState state)
 {
     while (_central.State != state)
     {
         await Task.Run(() => _stateChanged.WaitOne());
     }
 }
        public static BluetoothState ToBluetoothState(this CBCentralManagerState state)
        {
            switch (state)
            {
            case CBCentralManagerState.Unknown:
                return(BluetoothState.Unknown);

            case CBCentralManagerState.Resetting:
                return(BluetoothState.Unknown);

            case CBCentralManagerState.Unsupported:
                return(BluetoothState.Unavailable);

            case CBCentralManagerState.Unauthorized:
                return(BluetoothState.Unauthorized);

            case CBCentralManagerState.PoweredOff:
                return(BluetoothState.Off);

            case CBCentralManagerState.PoweredOn:
                return(BluetoothState.On);

            default:
                return(BluetoothState.Unknown);
            }
        }
        private async void StateChanged(object sender, CBCentralManagerState state)
        {
            if (!this.alreadyScanned && state == CBCentralManagerState.PoweredOn)
            {
                try
                {
                    this.alreadyScanned = true;
                    var connectedDevice = this.bluetoothService.GetConnectedDevices("180A")
                                          ?.FirstOrDefault(x => x.Name.StartsWith(DeviceName, StringComparison.InvariantCulture));

                    if (connectedDevice != null)
                    {
                        this.DiscoveredDevice(this, connectedDevice);
                    }
                    else
                    {
                        await this.bluetoothService.Scan(ScanTime);
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex);
                }
            }
        }
Exemplo n.º 5
0
 private async Task WaitForState(CBCentralManagerState state)
 {
     Debug.WriteLine("Adapter: Waiting for state: " + state);
     while (_central.State != state)
     {
         await Task.Run(() => stateChanged.WaitOne());
     }
 }
Exemplo n.º 6
0
        public BeahatImplementation()
        {
            _beaconEventHolderDict = new Dictionary <string, iBeaconEventHolder>();
            _detectedBeaconDictFromClosestApproachedInfo = new Dictionary <string, iBeacon>();
            _detectedBeaconDictFromLastApproachedInfo    = new Dictionary <string, iBeacon>();
            _locationManager             = new CLLocationManager();
            _locationAvailabilityChecker = new CLLocationManager();
            _canUseLocation = true;
            _bluetoothAvailabilityChecker = new CBCentralManager();
            _bluetoothAvailability        = CBCentralManagerState.Unknown;

            _locationManager.DidRangeBeacons += didRangeBeacons;

            _locationAvailabilityChecker.RangingBeaconsDidFailForRegion += (s, e) =>
            {
                switch (e.Error.Code)
                {
                case (long)CLError.Denied:
                case (long)CLError.RangingFailure:
                    _canUseLocation = false;
                    return;

                default:
                    return;
                }
            };

            _locationAvailabilityChecker.AuthorizationChanged += (s, e) =>
            {
                switch (e.Status)
                {
                case CLAuthorizationStatus.AuthorizedAlways:
                case CLAuthorizationStatus.AuthorizedWhenInUse:
                    // 位置情報の取得が常時許可されている
                    // 位置情報の取得がアプリ使用時のみ許可されている
                    _canUseLocation = true;
                    return;

                case CLAuthorizationStatus.NotDetermined:
                case CLAuthorizationStatus.Denied:
                case CLAuthorizationStatus.Restricted:
                    // 位置情報の使用許可に関して、まだ選択がされていない
                    // 位置情報サービスが無効にされている
                    // 位置情報サービスを利用できない
                    _canUseLocation = false;
                    return;

                default:
                    return;
                }
            };

            _bluetoothAvailabilityChecker.UpdatedState += (s, e) =>
            {
                _bluetoothAvailability = ((CBCentralManager)s).State;
            };
        }
Exemplo n.º 7
0
        private async Task WaitForState(CBCentralManagerState state, CancellationToken cancellationToken, bool configureAwait = false)
        {
            Trace.Message("Adapter: Waiting for state: " + state);

            while (_centralManager.State != state && !cancellationToken.IsCancellationRequested)
            {
                await Task.Run(() => _stateChanged.WaitOne(2000), cancellationToken).ConfigureAwait(configureAwait);
            }
        }
Exemplo n.º 8
0
        public iBeaconEventTriggerService()
        {
            _beaconEventHolderDict       = new Dictionary <string, iBeaconEventHolder>();
            _detectedBeaconDict          = new Dictionary <string, iBeacon>();
            _locationManager             = new CLLocationManager();
            _locationAvailabilityChecker = new CLLocationManager();
            _canUseLocation = true;
            _bluetoothAvailabilityChecker = new CBCentralManager();
            _bluetoothAvailability        = CBCentralManagerState.Unknown;

            _locationManager.DidRangeBeacons += didRangeBeacons;

            _locationAvailabilityChecker.RangingBeaconsDidFailForRegion += (s, e) =>
            {
                switch (e.Error.Code)
                {
                case (long)CLError.Denied:
                case (long)CLError.RangingFailure:
                    _canUseLocation = false;
                    return;

                default:
                    return;
                }
            };

            _locationAvailabilityChecker.AuthorizationChanged += (s, e) =>
            {
                switch (e.Status)
                {
                case CLAuthorizationStatus.AuthorizedAlways:
                case CLAuthorizationStatus.AuthorizedWhenInUse:
                    _canUseLocation = true;
                    return;

                case CLAuthorizationStatus.Denied:
                    _canUseLocation = false;
                    return;

                default:
                    return;
                }
            };

            _bluetoothAvailabilityChecker.UpdatedState += (s, e) =>
            {
                _bluetoothAvailability = ((CBCentralManager)s).State;
            };
        }
Exemplo n.º 9
0
        private static RadioState CBCentalManagerStateToRadioState(CBCentralManagerState state)
        {
            switch (state)
            {
            case CBCentralManagerState.PoweredOn:
                return(RadioState.On);

            case CBCentralManagerState.PoweredOff:
                return(RadioState.Off);

            case CBCentralManagerState.Unauthorized:
                return(RadioState.Disabled);

            default:
                return(RadioState.Unknown);
            }
        }
Exemplo n.º 10
0
        public BtError checkBtSupport()
        {
            CBCentralManagerState error = centralManager.State;

            switch (error)
            {
            case CBCentralManagerState.PoweredOn:
                return(BtError.None);

            case CBCentralManagerState.PoweredOff:
                return(BtError.Disabled);

            case CBCentralManagerState.Unsupported:
                return(BtError.NoBluetooth);

            default:
                return(BtError.Unknown);
            }
        }
Exemplo n.º 11
0
        public static AccessState FromNative(this CBCentralManagerState state)
        {
            switch (state)
            {
            case CBCentralManagerState.PoweredOff:
                return(AccessState.Disabled);

            case CBCentralManagerState.Resetting:
            case CBCentralManagerState.PoweredOn:
                return(AccessState.Available);

            case CBCentralManagerState.Unauthorized:
                return(AccessState.Denied);

            case CBCentralManagerState.Unsupported:
                return(AccessState.NotSupported);

            case CBCentralManagerState.Unknown:
            default:
                return(AccessState.Unknown);
            }
        }
Exemplo n.º 12
0
        public void CheckBluetoothAccess()
        {
            if (cbManager == null)
            {
                cbManager = new CBCentralManager();
            }

            CBCentralManagerState state = cbManager.State;

            switch (state)
            {
            case CBCentralManagerState.Unknown:
                ShowAlert(DataClass.Bluetooth, "unknown");
                break;

            case CBCentralManagerState.Unauthorized:
                ShowAlert(DataClass.Bluetooth, "denied");
                break;

            default:
                ShowAlert(DataClass.Bluetooth, "granted");
                break;
            }
        }
 public static BLEAdapterState ToShared(this CBCentralManagerState state)
 => (BLEAdapterState)state;
Exemplo n.º 14
0
 public static AccessState FromNative(this CBCentralManagerState state) => state switch
 {
 public BLECBCentralManagerStateEventArgs(CBCentralManagerState oldState, CBCentralManagerState newState)
 {
     OldState = oldState;
     NewState = newState;
 }
Exemplo n.º 16
0
		async Task WaitForState (CBCentralManagerState state)
		{
			Debug.WriteLine ("Adapter: Waiting for state: " + state);

			while (_central.State != state) {
				await Task.Run (() => stateChanged.WaitOne ());
			}
		}
Exemplo n.º 17
0
        private async Task WaitForState(CBCentralManagerState state, CancellationToken cancellationToken)
        {
            Mvx.Trace("Adapter: Waiting for state: " + state);

            while (_central.State != state && !cancellationToken.IsCancellationRequested)
            {
                await Task.Run(() => _stateChanged.WaitOne(2000), cancellationToken).ConfigureAwait(false);
            }
        }
Exemplo n.º 18
0
        string CheckBluetoothAccess()
        {
            CBCentralManagerState state = cbManager.State;

            return(state.ToString());
        }
Exemplo n.º 19
0
 public override void BluetoothRoximityUsable(bool usable, CBCentralManagerState state)
 {
 }