internal class HandleHolder
{
- private Interop.WiFi.SafeWiFiManagerHandle _handle;
+ private SafeWiFiManagerHandle _handle;
internal HandleHolder()
{
- Log.Debug(Globals.LogTag, "HandleHolder() Constructor");
_handle = WiFiManagerImpl.Instance.Initialize();
Log.Debug(Globals.LogTag, "Handle: " + _handle);
}
- internal Interop.WiFi.SafeWiFiManagerHandle GetSafeHandle()
+ internal SafeWiFiManagerHandle GetSafeHandle()
{
Log.Debug(Globals.LogTag, "Handleholder safehandle = " + _handle);
return _handle;
internal partial class WiFiManagerImpl
{
- private static WiFiManagerImpl _instance = null;
+ private static readonly Lazy<WiFiManagerImpl> _instance =
+ new Lazy<WiFiManagerImpl>(() => new WiFiManagerImpl());
private Dictionary<IntPtr, Interop.WiFi.VoidCallback> _callback_map = new Dictionary<IntPtr, Interop.WiFi.VoidCallback>();
private int _requestId = 0;
private string _macAddress;
{
get
{
- Log.Debug(Globals.LogTag, "Instance getter");
- if (_instance == null)
- {
- Log.Debug(Globals.LogTag, "Instance is null");
- _instance = new WiFiManagerImpl();
- }
-
- return _instance;
+ return _instance.Value;
}
}
private WiFiManagerImpl()
{
+ Log.Info(Globals.LogTag, "WiFiManagerImpl constructor");
}
- internal Interop.WiFi.SafeWiFiManagerHandle GetSafeHandle()
+ internal SafeWiFiManagerHandle GetSafeHandle()
{
- Log.Debug(Globals.LogTag, "GetHandle, Thread Id = " + Thread.CurrentThread.ManagedThreadId);
return s_threadName.Value.GetSafeHandle();
}
- internal Interop.WiFi.SafeWiFiManagerHandle Initialize()
+ internal SafeWiFiManagerHandle Initialize()
{
- Interop.WiFi.SafeWiFiManagerHandle handle = new Interop.WiFi.SafeWiFiManagerHandle();
+ SafeWiFiManagerHandle handle;
int ret = Interop.WiFi.Initialize(out handle);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to initialize wifi, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, "http://tizen.org/privilege/network.get");
}
return handle;
}
internal IEnumerable<WiFiAP> GetFoundAPs()
{
+ Log.Debug(Globals.LogTag, "GetFoundAPs");
List<WiFiAP> apList = new List<WiFiAP>();
Interop.WiFi.HandleCallback callback = (IntPtr apHandle, IntPtr userData) =>
{
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to get all APs, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.get");
}
return apList;
internal IEnumerable<WiFiAP> GetFoundSpecificAPs()
{
+ Log.Debug(Globals.LogTag, "GetFoundSpecificAPs");
List<WiFiAP> apList = new List<WiFiAP>();
Interop.WiFi.HandleCallback callback = (IntPtr apHandle, IntPtr userData) =>
{
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to get specific APs, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.get");
}
return apList;
internal IEnumerable<WiFiConfiguration> GetWiFiConfigurations()
{
+ Log.Debug(Globals.LogTag, "GetWiFiConfigurations");
List<WiFiConfiguration> configList = new List<WiFiConfiguration>();
Interop.WiFi.HandleCallback callback = (IntPtr configHandle, IntPtr userData) =>
{
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to get configurations, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.profile");
}
return configList;
internal void SaveWiFiNetworkConfiguration(WiFiConfiguration config)
{
+ Log.Debug(Globals.LogTag, "SaveWiFiNetworkConfiguration");
+ if (config == null)
+ {
+ throw new ArgumentNullException("WiFi configuration is null");
+ }
+
IntPtr configHandle = config.GetHandle();
int ret = Interop.WiFi.Config.SaveConfiguration(GetSafeHandle(), configHandle);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to save configuration, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.profile");
}
}
internal WiFiAP GetConnectedAP()
{
+ Log.Debug(Globals.LogTag, "GetConnectedAP");
IntPtr apHandle;
-
int ret = Interop.WiFi.GetConnectedAP(GetSafeHandle(), out apHandle);
if (ret != (int)WiFiError.None)
{
- Log.Error(Globals.LogTag, "Failed to connect with AP, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ if (ret == (int)WiFiError.NoConnectionError)
+ {
+ Log.Error(Globals.LogTag, "No connection " + (WiFiError)ret);
+ return null;
+ }
+ else
+ {
+ Log.Error(Globals.LogTag, "Failed to get connected AP, Error - " + (WiFiError)ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle(), "http://tizen.org/privilege/network.get");
+ }
}
WiFiAP ap = new WiFiAP(apHandle);
return ap;
internal Task ActivateAsync()
{
+ Log.Debug(Globals.LogTag, "ActivateAsync");
TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
IntPtr id;
lock (_callback_map)
Log.Error(Globals.LogTag, "Error occurs during WiFi activating, " + (WiFiError)error);
task.SetException(new InvalidOperationException("Error occurs during WiFi activating, " + (WiFiError)error));
}
- task.SetResult(true);
+ else
+ {
+ task.SetResult(true);
+ }
lock (_callback_map)
{
_callback_map.Remove(key);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to activate wifi, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle());
}
return task.Task;
}
internal Task ActivateWithWiFiPickerTestedAsync()
{
+ Log.Debug(Globals.LogTag, "ActivateWithWiFiPickerTestedAsync");
TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
IntPtr id;
lock (_callback_map)
Log.Error(Globals.LogTag, "Error occurs during WiFi activating, " + (WiFiError)error);
task.SetException(new InvalidOperationException("Error occurs during WiFi activating, " + (WiFiError)error));
}
- task.SetResult(true);
+ else
+ {
+ task.SetResult(true);
+ }
lock (_callback_map)
{
_callback_map.Remove(key);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to activate wifi, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle());
}
return task.Task;
}
internal Task DeactivateAsync()
{
+ Log.Debug(Globals.LogTag, "DeactivateAsync");
TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
IntPtr id;
lock (_callback_map)
Log.Error(Globals.LogTag, "Error occurs during WiFi deactivating, " + (WiFiError)error);
task.SetException(new InvalidOperationException("Error occurs during WiFi deactivating, " + (WiFiError)error));
}
- task.SetResult(true);
+ else
+ {
+ task.SetResult(true);
+ }
lock (_callback_map)
{
_callback_map.Remove(key);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to deactivate wifi, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle());
}
return task.Task;
}
internal Task ScanAsync()
{
+ Log.Debug(Globals.LogTag, "ScanAsync");
TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
IntPtr id;
lock (_callback_map)
Log.Error(Globals.LogTag, "Error occurs during WiFi scanning, " + (WiFiError)error);
task.SetException(new InvalidOperationException("Error occurs during WiFi scanning, " + (WiFiError)error));
}
- task.SetResult(true);
+ else
+ {
+ task.SetResult(true);
+ }
lock (_callback_map)
{
_callback_map.Remove(key);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to scan all AP, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle());
}
return task.Task;
}
internal Task ScanSpecificAPAsync(string essid)
{
+ Log.Debug(Globals.LogTag, "ScanSpecificAPAsync " + essid);
TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
IntPtr id;
lock (_callback_map)
Log.Error(Globals.LogTag, "Error occurs during WiFi scanning, " + (WiFiError)error);
task.SetException(new InvalidOperationException("Error occurs during WiFi scanning, " + (WiFiError)error));
}
- task.SetResult(true);
+ else
+ {
+ task.SetResult(true);
+ }
lock (_callback_map)
{
_callback_map.Remove(key);
if (ret != (int)WiFiError.None)
{
Log.Error(Globals.LogTag, "Failed to scan with specific AP, Error - " + (WiFiError)ret);
- WiFiErrorFactory.ThrowWiFiException(ret);
+ WiFiErrorFactory.ThrowWiFiException(ret, GetSafeHandle().DangerousGetHandle());
}
return task.Task;
}