private async void ConnectToNetwork(WiFiAdapter adapter, WiFiAvailableNetwork network)
{
lock (_stateLock)
{
_state = OnboardingState.ConfiguredValidating;
}
WiFiConnectionResult connectionResult;
if (network.SecuritySettings.NetworkAuthenticationType == NetworkAuthenticationType.Open80211)
{
connectionResult = await adapter.ConnectAsync(network, WiFiReconnectionKind.Automatic);
}
else
{
connectionResult = await adapter.ConnectAsync(network, WiFiReconnectionKind.Automatic, new PasswordCredential { Password = _personalApPassword });
}
lock (_stateLock)
{
if (connectionResult.ConnectionStatus == WiFiConnectionStatus.Success)
{
_error = OnboardingError.Validated;
_errorMessage = null;
_state = OnboardingState.ConfiguredValidated;
}
else
{
_state = OnboardingState.ConfiguredError;
_errorMessage = connectionResult.ConnectionStatus.ToString();
switch (connectionResult.ConnectionStatus)
{
case WiFiConnectionStatus.AccessRevoked:
case WiFiConnectionStatus.InvalidCredential:
{
_error = OnboardingError.Unauthorized;
break;
}
case WiFiConnectionStatus.UnsupportedAuthenticationProtocol:
{
_error = OnboardingError.UnsupportedProtocol;
break;
}
case WiFiConnectionStatus.NetworkNotAvailable:
case WiFiConnectionStatus.Timeout:
case WiFiConnectionStatus.UnspecifiedFailure:
default:
{
_error = OnboardingError.ErrorMessage;
break;
}
}
}
}
}