using System;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Tizen.Network.WiFi;
namespace Oobe.Wifi.Controls.Wifi
{
- internal class WifiState
+ internal class WifiState : IDisposable
{
public event Action OnTurningOnFailed;
public event Action OnTurnedOn;
public event Action OnScanStarted;
public event Action OnScanFinished;
- public bool IsTurnedOn => Tizen.Network.WiFi.WiFiManager.IsActive;
+ public bool IsTurnedOn => WiFiManager.IsActive;
+ public WifiState()
+ {
+ WiFiManager.DeviceStateChanged += WiFiManager_DeviceStateChanged;
+ }
+
public async Task TurnWifi()
{
try
{
if (IsTurnedOn)
{
- await Tizen.Network.WiFi.WiFiManager.DeactivateAsync();
- if (IsTurnedOn == false)
- {
- OnTurnedOff?.Invoke();
- }
+ await WiFiManager.DeactivateAsync();
}
else
{
- await Tizen.Network.WiFi.WiFiManager.ActivateAsync();
+ await WiFiManager.ActivateAsync();
if (IsTurnedOn == false)
{
OnTurningOnFailed?.Invoke();
}
- else
- {
- OnTurnedOn?.Invoke();
- }
}
}
catch (Exception ex)
}
}
- public async Task<IEnumerable<Tizen.Network.WiFi.WiFiAP>> Scan()
+ public async Task<IEnumerable<WiFiAP>> Scan()
+ {
+ try
+ {
+ OnScanStarted?.Invoke();
+ await WiFiManager.ScanAsync();
+ return WiFiManager.GetFoundAPs();
+ }
+ catch (Exception ex)
+ {
+ Tizen.Log.Error("oobe", $"{ex.ToString()}");
+ }
+ finally
+ {
+ OnScanFinished?.Invoke();
+ }
+ return new List<WiFiAP>();
+ }
+
+ public void Dispose()
{
- OnScanStarted?.Invoke();
- await Tizen.Network.WiFi.WiFiManager.ScanAsync();
- OnScanFinished?.Invoke();
- return Tizen.Network.WiFi.WiFiManager.GetFoundAPs();
+ WiFiManager.DeviceStateChanged -= WiFiManager_DeviceStateChanged;
+ }
+
+ private void WiFiManager_DeviceStateChanged(object sender, DeviceStateChangedEventArgs e)
+ {
+ if (e.State == WiFiDeviceState.Activated)
+ {
+ OnTurnedOn?.Invoke();
+ }
+ else
+ {
+ OnTurnedOff?.Invoke();
+ }
}
}
}