Scan crash fix & handling system wifi event
authork.stepaniuk <k.stepaniuk@samsung.com>
Wed, 25 Mar 2020 07:44:51 +0000 (08:44 +0100)
committerLukasz Stanislawski/IoT & UI Sample (PLT) /SRPOL/Engineer/Samsung Electronics <l.stanislaws@samsung.com>
Wed, 25 Mar 2020 08:01:41 +0000 (09:01 +0100)
Signed-off-by: k.stepaniuk <k.stepaniuk@samsung.com>
Oobe/OobeWifi/Controls/Wifi/WifiState.cs
Oobe/OobeWifi/Controls/Wifi/WifiView.cs

index 6de399d..bad16d0 100644 (file)
@@ -1,10 +1,11 @@
 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;
@@ -12,31 +13,28 @@ namespace Oobe.Wifi.Controls.Wifi
         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)
@@ -45,12 +43,40 @@ namespace Oobe.Wifi.Controls.Wifi
             }
         }
 
-        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();
+            }
         }
     }
 }
index c5ca0ad..ca9a86e 100644 (file)
@@ -247,6 +247,7 @@ namespace Oobe.Wifi.Controls.Wifi
         {
             view = null;
             ApManager.Dispose();
+            State.Dispose();
         }
     }
 }