summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradhavan.m <adhavan.m@samsung.com>2017-02-01 18:31:07 +0530
committeradhavan.m <adhavan.m@samsung.com>2017-02-06 11:40:22 +0530
commit76d76db54b34292fe226c3483f3549897770aea4 (patch)
tree569c38527d982b203c3156c00fdb1bc207e496fd
parent08662370d6cbada8892ee12c6f6c310ff1850eba (diff)
downloadwifi-76d76db54b34292fe226c3483f3549897770aea4.tar.gz
wifi-76d76db54b34292fe226c3483f3549897770aea4.tar.bz2
wifi-76d76db54b34292fe226c3483f3549897770aea4.zip
[WiFi] Fix for wifi initialization problem to avoid block TCT issues in emulator
Signed-off-by: adhavan.m <adhavan.m@samsung.com> Change-Id: I09e8c54ff9f166afcc00ab8524dc660b814ff1c4
-rwxr-xr-x[-rw-r--r--]Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs170
-rwxr-xr-x[-rw-r--r--]Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs25
2 files changed, 159 insertions, 36 deletions
diff --git a/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs b/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
index dd8b65a..d19ba8a 100644..100755
--- a/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
+++ b/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
@@ -33,7 +33,11 @@ namespace Tizen.Network.WiFi
{
get
{
- return WiFiManagerImpl.Instance.MacAddress;
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.MacAddress;
+ }
+ return null;
}
}
/// <summary>
@@ -43,7 +47,11 @@ namespace Tizen.Network.WiFi
{
get
{
- return WiFiManagerImpl.Instance.InterfaceName;
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.InterfaceName;
+ }
+ return null;
}
}
/// <summary>
@@ -53,7 +61,11 @@ namespace Tizen.Network.WiFi
{
get
{
- return WiFiManagerImpl.Instance.ConnectionState;
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.ConnectionState;
+ }
+ return default(WiFiConnectionState);
}
}
/// <summary>
@@ -63,7 +75,11 @@ namespace Tizen.Network.WiFi
{
get
{
- return WiFiManagerImpl.Instance.IsActivated;
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.IsActivated;
+ }
+ return false;
}
}
@@ -74,11 +90,17 @@ namespace Tizen.Network.WiFi
{
add
{
- WiFiManagerImpl.Instance.DeviceStateChanged += value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.DeviceStateChanged += value;
+ }
}
remove
{
- WiFiManagerImpl.Instance.DeviceStateChanged -= value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.DeviceStateChanged -= value;
+ }
}
}
/// <summary>
@@ -88,11 +110,17 @@ namespace Tizen.Network.WiFi
{
add
{
- WiFiManagerImpl.Instance.ConnectionStateChanged += value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.ConnectionStateChanged += value;
+ }
}
remove
{
- WiFiManagerImpl.Instance.ConnectionStateChanged -= value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.ConnectionStateChanged -= value;
+ }
}
}
/// <summary>
@@ -102,11 +130,17 @@ namespace Tizen.Network.WiFi
{
add
{
- WiFiManagerImpl.Instance.RssiLevelChanged += value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.RssiLevelChanged += value;
+ }
}
remove
{
- WiFiManagerImpl.Instance.RssiLevelChanged -= value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.RssiLevelChanged -= value;
+ }
}
}
/// <summary>
@@ -117,11 +151,17 @@ namespace Tizen.Network.WiFi
{
add
{
- WiFiManagerImpl.Instance.BackgroundScanFinished += value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.BackgroundScanFinished += value;
+ }
}
remove
{
- WiFiManagerImpl.Instance.BackgroundScanFinished -= value;
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.BackgroundScanFinished -= value;
+ }
}
}
/// <summary>
@@ -130,7 +170,11 @@ namespace Tizen.Network.WiFi
/// <returns> A task contains the lisf for WiFiApInformation objects.</returns>
static public IEnumerable<WiFiAp> GetFoundAps()
{
- return WiFiManagerImpl.Instance.GetFoundAps();
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.GetFoundAps();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Gets the result of specific ap scan asynchronously.
@@ -138,7 +182,11 @@ namespace Tizen.Network.WiFi
/// <returns> A task contains the WiFiApInformation object.</returns>
static public IEnumerable<WiFiAp> GetFoundSpecificAps()
{
- return WiFiManagerImpl.Instance.GetFoundSpecificAps();
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.GetFoundSpecificAps();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Gets the list of wifi configuration.
@@ -146,7 +194,11 @@ namespace Tizen.Network.WiFi
/// <returns>A task contains the lisf for WiFiConfiguration objects.</returns>
static public IEnumerable<WiFiConfiguration> GetWiFiConfigurations()
{
- return WiFiManagerImpl.Instance.GetWiFiConfigurations();
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.GetWiFiConfigurations();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Saves Wi-Fi configuration of access point.
@@ -154,7 +206,14 @@ namespace Tizen.Network.WiFi
/// <param name="configuration">The configuration to be stored</param>
static public void SaveWiFiNetworkConfiguration(WiFiConfiguration configuration)
{
- WiFiManagerImpl.Instance.SaveWiFiNetworkConfiguration(configuration);
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.SaveWiFiNetworkConfiguration(configuration);
+ }
+ else
+ {
+ throw new InvalidOperationException("Not initialized");
+ }
}
/// <summary>
/// Gets the handle of the connected access point.
@@ -162,8 +221,11 @@ namespace Tizen.Network.WiFi
/// <returns> The connected wifi access point(AP) information.</returns>
static public WiFiAp GetConnectedAp()
{
- return WiFiManagerImpl.Instance.GetConnectedAp();
-
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.GetConnectedAp();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Deletes the information of stored access point and disconnects it when it connected.<br>
@@ -172,7 +234,14 @@ namespace Tizen.Network.WiFi
/// <param name="ap">The access point to be removed</param>
static public void RemoveAP(WiFiAp ap)
{
- WiFiManagerImpl.Instance.RemoveAp(ap);
+ if (Globals.IsInitialize)
+ {
+ WiFiManagerImpl.Instance.RemoveAp(ap);
+ }
+ else
+ {
+ throw new InvalidOperationException("Not initialized");
+ }
}
/// <summary>
/// Activates Wi-Fi asynchronously.
@@ -180,8 +249,11 @@ namespace Tizen.Network.WiFi
/// <returns> A task indicates whether the Activate method is done or not.</returns>
static public Task ActivateAsync()
{
-
- return WiFiManagerImpl.Instance.ActivateAsync();
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.ActivateAsync();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Activates Wi-Fi asynchronously and displays Wi-Fi picker (popup) when Wi-Fi is not automatically connected.
@@ -189,7 +261,11 @@ namespace Tizen.Network.WiFi
/// <returns> A task indicates whether the ActivateWithPickerTeated method is done or not.</returns>
static public Task ActivateWithPickerTeatedAsync()
{
- return WiFiManagerImpl.Instance.ActivateWithWiFiPickerTestedAsync();
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.ActivateWithWiFiPickerTestedAsync();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Deactivates Wi-Fi asynchronously.
@@ -197,7 +273,11 @@ namespace Tizen.Network.WiFi
/// <returns> A task indicates whether the Deactivate method is done or not.</returns>
static public Task DeactivateAsync()
{
- return WiFiManagerImpl.Instance.DeactivateAsync();
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.DeactivateAsync();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Starts scan asynchronously.
@@ -205,8 +285,12 @@ namespace Tizen.Network.WiFi
/// <returns> A task indicates whether the Scan method is done or not.</returns>
static public Task ScanAsync()
{
- Log.Debug(Globals.LogTag, "ScanAsync");
- return WiFiManagerImpl.Instance.ScanAsync();
+ if (Globals.IsInitialize)
+ {
+ Log.Debug(Globals.LogTag, "ScanAsync");
+ return WiFiManagerImpl.Instance.ScanAsync();
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Starts specific ap scan, asynchronously.
@@ -215,7 +299,11 @@ namespace Tizen.Network.WiFi
/// <param name="essid">The essid of hidden ap</param>
static public Task ScanSpecificApAsync(string essid)
{
- return WiFiManagerImpl.Instance.ScanSpecificApAsync(essid);
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.ScanSpecificApAsync(essid);
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Connects the access point asynchronously.
@@ -224,8 +312,12 @@ namespace Tizen.Network.WiFi
/// <returns> A task indicates whether the Connect method is done or not.</returns>
static public Task ConnectAsync(WiFiAp ap)
{
- Log.Debug(Globals.LogTag, "ConnectAsync");
- return WiFiManagerImpl.Instance.ConnectAsync(ap);
+ if (Globals.IsInitialize)
+ {
+ Log.Debug(Globals.LogTag, "ConnectAsync");
+ return WiFiManagerImpl.Instance.ConnectAsync(ap);
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Connects the access point with WPS PBC asynchronously.
@@ -234,8 +326,12 @@ namespace Tizen.Network.WiFi
/// <param name="ap">The access point(AP)</param>
static public Task ConnectByWpsPbcAsync(WiFiAp ap)
{
- Log.Debug(Globals.LogTag, "ConnectByWpsPbcAsync");
- return WiFiManagerImpl.Instance.ConnectByWpsPbcAsync(ap);
+ if (Globals.IsInitialize)
+ {
+ Log.Debug(Globals.LogTag, "ConnectByWpsPbcAsync");
+ return WiFiManagerImpl.Instance.ConnectByWpsPbcAsync(ap);
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Connects the access point with WPS PIN asynchronously.
@@ -245,8 +341,12 @@ namespace Tizen.Network.WiFi
/// <param name="pin">The WPS PIN is a non-NULL string with length greater than 0 and less than or equal to 8.</param>
static public Task ConnectByWpsPinAsync(WiFiAp ap, string pin)
{
- Log.Debug(Globals.LogTag, "ConnectByWpsPinAsync");
- return WiFiManagerImpl.Instance.ConnectByWpsPinAsync(ap, pin);
+ if (Globals.IsInitialize)
+ {
+ Log.Debug(Globals.LogTag, "ConnectByWpsPinAsync");
+ return WiFiManagerImpl.Instance.ConnectByWpsPinAsync(ap, pin);
+ }
+ throw new InvalidOperationException("Not initialized");
}
/// <summary>
/// Disconnects the access point asynchronously.
@@ -254,7 +354,11 @@ namespace Tizen.Network.WiFi
/// <returns> A task indicates whether the Disconnect method is done or not.</returns>
static public Task DisconnectAsync(WiFiAp ap)
{
- return WiFiManagerImpl.Instance.DisconnectAsync(ap);
+ if (Globals.IsInitialize)
+ {
+ return WiFiManagerImpl.Instance.DisconnectAsync(ap);
+ }
+ throw new InvalidOperationException("Not initialized");
}
}
}
diff --git a/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs b/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
index 7ea0a01..f64c917 100644..100755
--- a/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
+++ b/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs
@@ -23,11 +23,24 @@ namespace Tizen.Network.WiFi
static internal class Globals
{
internal const string LogTag = "Tizen.Network.WiFi";
+ internal static bool s_isInitialize = false;
+
+ internal static bool IsInitialize
+ {
+ get
+ {
+ if (!Globals.s_isInitialize)
+ {
+ WiFiManagerImpl.Instance.Initialize();
+ }
+ return Globals.s_isInitialize;
+ }
+ }
}
internal partial class WiFiManagerImpl : IDisposable
{
- private static readonly WiFiManagerImpl _instance = new WiFiManagerImpl();
+ private static WiFiManagerImpl _instance;
private Dictionary<IntPtr, Interop.WiFi.VoidCallback> _callback_map = new Dictionary<IntPtr, Interop.WiFi.VoidCallback>();
private int _requestId = 0;
private string _macAddress;
@@ -100,13 +113,17 @@ namespace Tizen.Network.WiFi
{
get
{
+ if (_instance == null)
+ {
+ _instance = new WiFiManagerImpl();
+ }
+
return _instance;
}
}
private WiFiManagerImpl()
{
- initialize();
}
~WiFiManagerImpl()
@@ -135,7 +152,7 @@ namespace Tizen.Network.WiFi
disposed = true;
}
- private void initialize()
+ internal void Initialize()
{
int ret = Interop.WiFi.Initialize();
if (ret != (int)WiFiError.None)
@@ -143,6 +160,7 @@ namespace Tizen.Network.WiFi
Log.Error(Globals.LogTag, "Failed to initialize wifi, Error - " + (WiFiError)ret);
WiFiErrorFactory.ThrowWiFiException(ret);
}
+ Globals.s_isInitialize = true;
string address;
ret = Interop.WiFi.GetMacAddress(out address);
if (ret != (int)WiFiError.None)
@@ -161,6 +179,7 @@ namespace Tizen.Network.WiFi
Log.Error(Globals.LogTag, "Failed to deinitialize wifi, Error - " + (WiFiError)ret);
WiFiErrorFactory.ThrowWiFiException(ret);
}
+ Globals.s_isInitialize = false;
}
internal IEnumerable<WiFiAp> GetFoundAps()