[Network.WiFi] Implement API to get MAC of TDLS connected peer (#6480)
authorakash1-kumar <115205462+akash1-kumar@users.noreply.github.com>
Wed, 11 Dec 2024 05:18:29 +0000 (10:48 +0530)
committerGitHub <noreply@github.com>
Wed, 11 Dec 2024 05:18:29 +0000 (14:18 +0900)
Signed-off-by: Akash Kumar <akash1.kumar@samsung.com>
src/Tizen.Network.WiFi/Interop/Interop.Libraries.cs
src/Tizen.Network.WiFi/Interop/Interop.WiFi.cs
src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManager.cs
src/Tizen.Network.WiFi/Tizen.Network.WiFi/WiFiManagerImpl.cs

index 1dbe019ec1b483ec8880eaef2718aa45c4930233..d966df68f4a932e19d8939c4eec5b366014933da 100755 (executable)
@@ -20,5 +20,6 @@ internal static partial class Interop
     {
         public const string WiFi = "libcapi-network-wifi-manager.so.1";
         public const string Glib = "libglib-2.0.so.0";
+        public const string Libc = "libc.so.6";
     }
 }
index 580f0cc02686c543110bf39085236200c30587bf..8c98b8a041fcc42216a0ddbf0fc736ba91a63c24 100755 (executable)
@@ -132,6 +132,8 @@ internal static partial class Interop
         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);
+        [DllImport(Libraries.WiFi, EntryPoint = "wifi_manager_tdls_get_connected_peer")]
+        internal static extern int GetTdlsConnectedPeer(SafeWiFiManagerHandle wifi, out IntPtr peerMacAddress);
 
         internal static class AP
         {
@@ -373,4 +375,10 @@ internal static partial class Interop
         [DllImport(Libraries.Glib, EntryPoint = "g_free", CallingConvention = CallingConvention.Cdecl)]
         public static extern void Free(IntPtr userData);
     }
+
+    internal static partial class Libc
+    {
+        [DllImport(Libraries.Libc, EntryPoint = "free")]
+        public static extern void Free(IntPtr userData);
+    }
 }
index d7dd257d003d1a23dae345b18cbbb7f1ccdcb079..0939ce97360b7eb375b0a944e6bd3c4959dad97b 100755 (executable)
@@ -536,5 +536,20 @@ namespace Tizen.Network.WiFi
             WiFiManagerImpl.Instance.SetSpecificScanFreq(frequency);
             return WiFiManagerImpl.Instance.StartMultiScan();
         }
+
+        /// <summary>
+        /// Gets MAC address of peer connected through TDLS.
+        /// </summary>
+        /// <since_tizen> 11 </since_tizen>
+        /// <returns>MAC address of the TDLS peer if connected on success or an empty string.</returns>
+        /// <privilege>http://tizen.org/privilege/network.get</privilege>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        static public string TDLSConnectedPeer
+        {
+            get
+            {
+                return WiFiManagerImpl.Instance.TDLSConnectedPeer;
+            }
+        }
     }
 }
index 64c2740f7d0353fdca48afdc7b433ee2eb545e73..6853444473e36ce905422c88695c73ed70388db4 100644 (file)
@@ -57,6 +57,7 @@ namespace Tizen.Network.WiFi
 
         private int _requestId = 0;
         private string _macAddress;
+        private string _tdlsMacAddress;
         private IntPtr _specificScanHandle;
 
         //private string PrivilegeNetworkSet = "http://tizen.org/privilege/network.set";
@@ -724,6 +725,28 @@ namespace Tizen.Network.WiFi
             return task.Task;
         }
 
+        internal string TDLSConnectedPeer
+        {
+            get
+            {
+                IntPtr strPtr;
+                int ret = Interop.WiFi.GetTdlsConnectedPeer(GetSafeHandle(), out strPtr);
+                if (ret != (int)WiFiError.None)
+                {
+                    _tdlsMacAddress = "";
+                    Log.Error(Globals.LogTag, "Failed to get mac address, Error - " + (WiFiError)ret);
+                }
+                else
+                {
+                    _tdlsMacAddress = Marshal.PtrToStringAnsi(strPtr);
+                    Interop.Libc.Free(strPtr);
+                }
+
+                Log.Info(Globals.LogTag, "Tdls Mac address: " + _tdlsMacAddress);
+                return _tdlsMacAddress;
+            }
+        }
+
         private void CheckReturnValue(int ret, string method, string privilege)
         {
             if (ret != (int)WiFiError.None)