From: Seonah Moon <31679495+SeonahMoon@users.noreply.github.com>
Date: Mon, 19 Nov 2018 01:17:10 +0000 (+0900)
Subject: [Tizen.Network.WiFi][TCSACR-192] Add new API to check wifi scan state (#544)
X-Git-Tag: 5.5_M2~411
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a5740a797eea3e3423014d73487dadb048b25bc1;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git
[Tizen.Network.WiFi][TCSACR-192] Add new API to check wifi scan state (#544)
* Add new API to check wifi scan state
* Correct API version
* [Tizen.Network.WiFi] remove unnecessary ToString()
* [Tizen.Network.WiFi] Fix typo
* Use auto-generate property
* Indent correctly
* Use ?. operator for readability
* Fix typo
---
diff --git a/src/Tizen.Network.WiFi/Interop/Interop.WiFi.cs b/src/Tizen.Network.WiFi/Interop/Interop.WiFi.cs
index 35c108e..70458db 100755
--- a/src/Tizen.Network.WiFi/Interop/Interop.WiFi.cs
+++ b/src/Tizen.Network.WiFi/Interop/Interop.WiFi.cs
@@ -36,6 +36,8 @@ internal static partial class Interop
internal delegate void ConnectionStateChangedCallback(int connectionState, IntPtr ap, IntPtr userData);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void RssiLevelChangedCallback(int level, IntPtr userData);
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ internal delegate void ScanStateChangedCallback(int scanState, IntPtr userData);
//capi-network-wifi-1.0.65-19.23.armv7l
[DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_initialize_cs")]
@@ -110,6 +112,12 @@ internal static partial class Interop
internal static extern int SetRssiLevelchangedCallback(SafeWiFiManagerHandle wifi, RssiLevelChangedCallback callback, IntPtr userData);
[DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_unset_rssi_level_changed_cb")]
internal static extern int UnsetRssiLevelchangedCallback(SafeWiFiManagerHandle wifi);
+ [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_get_scan_state")]
+ internal static extern int GetScanState(SafeWiFiManagerHandle wifi, out int scanState);
+ [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_set_scan_state_changed_cb")]
+ internal static extern int SetScanStateChangedCallback(SafeWiFiManagerHandle wifi, ScanStateChangedCallback callback, IntPtr userData);
+ [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_unset_scan_state_changed_cb")]
+ internal static extern int UnsetScanStateChangedCallback(SafeWiFiManagerHandle wifi);
internal static class AP
{
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/ScanStateChangedEventArgs.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/ScanStateChangedEventArgs.cs
new file mode 100755
index 0000000..a6fc725
--- /dev/null
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/ScanStateChangedEventArgs.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Network.WiFi
+{
+ ///
+ /// An extended EventArgs class which contains the changed scan state.
+ ///
+ /// 6
+ public class ScanStateChangedEventArgs : EventArgs
+ {
+ internal ScanStateChangedEventArgs(WiFiScanState s)
+ {
+ State = s;
+ }
+
+ ///
+ /// The Wi-Fi scan state.
+ ///
+ /// 6
+ public WiFiScanState State {get; private set;}
+ }
+}
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiEnumerations.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiEnumerations.cs
index 2fc3656..d110106 100755
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiEnumerations.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiEnumerations.cs
@@ -195,4 +195,22 @@ namespace Tizen.Network.WiFi
/// 3
Md5 = 5
}
+
+ ///
+ /// Enumeration for the Wi-Fi scanning state.
+ ///
+ /// 6
+ public enum WiFiScanState
+ {
+ ///
+ /// Scan is not running.
+ ///
+ /// 6
+ NotScanning = 0,
+ ///
+ /// Scan is running.
+ ///
+ /// 6
+ Scanning = 1
+ }
}
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
index 28f0442..4eb5636 100755
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
@@ -129,6 +129,19 @@ namespace Tizen.Network.WiFi
}
///
+ /// The Wi-Fi scan state.
+ ///
+ /// 6
+ /// Represents the scan state of the Wi-Fi.
+ static public WiFiScanState ScanState
+ {
+ get
+ {
+ return WiFiManagerImpl.Instance.ScanState;
+ }
+ }
+
+ ///
/// DeviceStateChanged is raised when the device state is changed.
///
/// 3
@@ -202,6 +215,23 @@ namespace Tizen.Network.WiFi
}
///
+ /// ScanStateChanged is raised when the scan state is changed.
+ ///
+ /// 6
+ /// http://tizen.org/feature/network.wifi
+ static public event EventHandler ScanStateChanged
+ {
+ add
+ {
+ WiFiManagerImpl.Instance.ScanStateChanged += value;
+ }
+ remove
+ {
+ WiFiManagerImpl.Instance.ScanStateChanged -= value;
+ }
+ }
+
+ ///
/// Gets the Wi-Fi safe handle.
///
/// 3
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
index ac2d232..a5cb7aa 100644
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
@@ -128,6 +128,21 @@ namespace Tizen.Network.WiFi
}
}
+ internal WiFiScanState ScanState
+ {
+ get
+ {
+ int state;
+ int ret = Interop.WiFi.GetScanState(GetSafeHandle(), out state);
+ if (ret != (int)WiFiError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to get scan state, Error - " + (WiFiError)ret);
+ return WiFiScanState.NotScanning;
+ }
+ return (WiFiScanState)state;
+ }
+ }
+
internal static WiFiManagerImpl Instance
{
get
diff --git a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs
index 76edc7b..3db144d 100755
--- a/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs
+++ b/src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiNetworkChange.cs
@@ -46,11 +46,13 @@ namespace Tizen.Network.WiFi
private event EventHandler _deviceStateChanged;
private event EventHandler _connectionStateChanged;
private event EventHandler _rssiLevelChanged;
+ private event EventHandler _scanStateChanged;
private event EventHandler _backgroundScanFinished;
private Interop.WiFi.DeviceStateChangedCallback _deviceChangedCallback;
private Interop.WiFi.ConnectionStateChangedCallback _connectionChangedCallback;
private Interop.WiFi.RssiLevelChangedCallback _rssiChangedCallback;
+ private Interop.WiFi.ScanStateChangedCallback _scanChangedCallback;
private Interop.WiFi.VoidCallback _backgroundScanFinishedCallback;
internal event EventHandler DeviceStateChanged
@@ -175,6 +177,47 @@ namespace Tizen.Network.WiFi
}
}
+ internal event EventHandler ScanStateChanged
+ {
+ add
+ {
+ context.Post((x) =>
+ {
+ if (_scanStateChanged == null)
+ {
+ try
+ {
+ RegisterScanStateChangedEvent();
+ }
+ catch (Exception e)
+ {
+ Log.Error(Globals.LogTag, "Exception on adding ScanStateChanged\n" + e);
+ return;
+ }
+ }
+ _scanStateChanged += value;
+ }, null);
+ }
+ remove
+ {
+ context.Post((x) =>
+ {
+ _scanStateChanged -= value;
+ if (_scanStateChanged == null)
+ {
+ try
+ {
+ UnregisterScanStateChangedEvent();
+ }
+ catch (Exception e)
+ {
+ Log.Error(Globals.LogTag, "Exception on removing ScanStateChanged\n" + e);
+ }
+ }
+ }, null);
+ }
+ }
+
internal event EventHandler BackgroundScanFinished
{
add
@@ -294,6 +337,28 @@ namespace Tizen.Network.WiFi
}
}
+ private void RegisterScanStateChangedEvent()
+ {
+ _scanChangedCallback = (int scanState, IntPtr userData) =>
+ {
+ _scanStateChanged?.Invoke(null, new ScanStateChangedEventArgs((WiFiScanState)scanState));
+ };
+ int ret = Interop.WiFi.SetScanStateChangedCallback(GetSafeHandle(), _scanChangedCallback, IntPtr.Zero);
+ if (ret != (int)WiFiError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to set scan state changed callback, Error - " + (WiFiError)ret);
+ }
+ }
+
+ private void UnregisterScanStateChangedEvent()
+ {
+ int ret = Interop.WiFi.UnsetScanStateChangedCallback(GetSafeHandle());
+ if (ret != (int)WiFiError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to unset scan state changed callback, Error - " + (WiFiError)ret);
+ }
+ }
+
private void RegisterBackgroundScanFinishedEvent()
{
_backgroundScanFinishedCallback = (int result, IntPtr userDate) =>