private async Task TryGetNetworksAsync()
        {
            try
            {
                IsBusy = true;
                var bluetoothClient = new BluetoothModel();
                WiFiNetworksResponse wifiResponse = await bluetoothClient.GetNetworksAsync(_mMContext.Device);

                if (wifiResponse.IsSuccess)
                {
                    HasNetworks = wifiResponse.Networks.Any();
                    if (HasNetworks)
                    {
                        Networks = new ObservableCollection <string>(wifiResponse.Networks);
                    }
                    else
                    {
                        await App.Current.MainPage.DisplayAlert("Alert", "Not determine wifi networks. Please try again", "OK");

                        IsNotSuccessResult = true;
                    }
                }
                else
                {
                    _navigation.NextPage <WiFiSetupCredentialsPage>();

                    /*if (wifiResponse.ErrorCode == 2)
                     * {
                     *  //todo вручную вводить имя сети и пароль и потом перезапустить зеркало
                     *  IsNotSuccessResult = true;
                     * }
                     * else
                     * {
                     *  //display this error wifiResponse.ErrorInfo
                     *  await App.Current.MainPage.DisplayAlert("Alert", "Something went wrong, please reconnect", "OK");
                     *  await _bluetoothService.DisconnectAsync(_mMContext.Device);
                     *  _navigation.NextPage(typeof(SearchingDevicePage));
                     * }*/
                }
            }
            finally
            {
                IsBusy = false;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Получение списка wifi сетей
        /// </summary>
        /// <param name="device">Устройство к которому подключились</param>
        /// <returns>Список сетей</returns>
        public async Task <WiFiNetworksResponse> GetNetworksAsync(IDevice device)
        {
            try
            {
                if (device.State == Plugin.BLE.Abstractions.DeviceState.Connected)
                {
                    WiFiResponse response = await GetCharacteristicAsync(device, Constants.WiFiNetworksCharacteristicsGuid);

                    if (response.IsSuccess)
                    {
                        var result = await response.Characteristic.WriteAsync(new byte[] { });

                        var data = await response.Characteristic.ReadAsync();

                        var wifiResponseJson = Encoding.UTF8.GetString(data);
                        WiFiNetworksResponse wifiResponse = JsonConvert.DeserializeObject <WiFiNetworksResponse>(wifiResponseJson);
                        return(wifiResponse);
                    }
                    else
                    {
                        return(new WiFiNetworksResponse()
                        {
                            IsSuccess = false, ErrorCode = response.ErrorCode
                        });
                    }
                }
                else
                {
                    return(new WiFiNetworksResponse()
                    {
                        IsSuccess = false, ErrorCode = (int)BluetoothErrorCode.NoConnection
                    });
                }
            }
            catch (Exception ex)
            {
                return(new WiFiNetworksResponse()
                {
                    IsSuccess = false, ErrorCode = (int)BluetoothErrorCode.Unknown, ErrorInfo = ex.ToString()
                });
            }
        }