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")]
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
{
--- /dev/null
+/*
+ * 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
+{
+ /// <summary>
+ /// An extended EventArgs class which contains the changed scan state.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ public class ScanStateChangedEventArgs : EventArgs
+ {
+ internal ScanStateChangedEventArgs(WiFiScanState s)
+ {
+ State = s;
+ }
+
+ /// <summary>
+ /// The Wi-Fi scan state.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ public WiFiScanState State {get; private set;}
+ }
+}
/// <since_tizen> 3 </since_tizen>
Md5 = 5
}
+
+ /// <summary>
+ /// Enumeration for the Wi-Fi scanning state.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ public enum WiFiScanState
+ {
+ /// <summary>
+ /// Scan is not running.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ NotScanning = 0,
+ /// <summary>
+ /// Scan is running.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ Scanning = 1
+ }
}
}
/// <summary>
+ /// The Wi-Fi scan state.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ /// <value>Represents the scan state of the Wi-Fi.</value>
+ static public WiFiScanState ScanState
+ {
+ get
+ {
+ return WiFiManagerImpl.Instance.ScanState;
+ }
+ }
+
+ /// <summary>
/// DeviceStateChanged is raised when the device state is changed.
/// </summary>
/// <since_tizen> 3 </since_tizen>
}
/// <summary>
+ /// ScanStateChanged is raised when the scan state is changed.
+ /// </summary>
+ /// <since_tizen> 6 </since_tizen>
+ /// <feature>http://tizen.org/feature/network.wifi</feature>
+ static public event EventHandler<ScanStateChangedEventArgs> ScanStateChanged
+ {
+ add
+ {
+ WiFiManagerImpl.Instance.ScanStateChanged += value;
+ }
+ remove
+ {
+ WiFiManagerImpl.Instance.ScanStateChanged -= value;
+ }
+ }
+
+ /// <summary>
/// Gets the Wi-Fi safe handle.
/// </summary>
/// <since_tizen> 3 </since_tizen>
}
}
+ 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
private event EventHandler<DeviceStateChangedEventArgs> _deviceStateChanged;
private event EventHandler<ConnectionStateChangedEventArgs> _connectionStateChanged;
private event EventHandler<RssiLevelChangedEventArgs> _rssiLevelChanged;
+ private event EventHandler<ScanStateChangedEventArgs> _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<DeviceStateChangedEventArgs> DeviceStateChanged
}
}
+ internal event EventHandler<ScanStateChangedEventArgs> 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
}
}
+ 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) =>