[Network.WiFiDirect] Implement API for creating group with SSID (#6408)
authorakash1-kumar <115205462+akash1-kumar@users.noreply.github.com>
Mon, 28 Oct 2024 06:13:50 +0000 (11:43 +0530)
committerGitHub <noreply@github.com>
Mon, 28 Oct 2024 06:13:50 +0000 (15:13 +0900)
* Implement CreateGroup with ssid

Signed-off-by: Akash Kumar <akash1.kumar@samsung.com>
* Update src/Tizen.Network.WiFiDirect/Tizen.Network.WiFiDirect/WiFiDirectManager.cs

Update duscription

Co-authored-by: Piotr Szydełko <wiertel@users.sourceforge.net>
---------

Signed-off-by: Akash Kumar <akash1.kumar@samsung.com>
Co-authored-by: Piotr Szydełko <wiertel@users.sourceforge.net>
src/Tizen.Network.WiFiDirect/Interop/Interop.WiFiDirect.cs
src/Tizen.Network.WiFiDirect/Tizen.Network.WiFiDirect/WiFiDirectManager.cs
src/Tizen.Network.WiFiDirect/Tizen.Network.WiFiDirect/WiFiDirectManagerImpl.cs

index 6ff39f1530653d10dc61383255ff57ad59619a5f..366588859315b3347c36f02633548ca94896021a 100644 (file)
@@ -113,6 +113,8 @@ internal static partial class Interop
         internal static extern int GetConnectedPeers(ConnectedPeerCallback callback, IntPtr userData);
         [DllImport(Libraries.WiFiDirect,EntryPoint = "wifi_direct_create_group")]
         internal static extern int CreateGroup();
+        [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_create_group_with_ssid")]
+        internal static extern int CreateGroupWithSsid(string ssid);
         [DllImport(Libraries.WiFiDirect,EntryPoint = "wifi_direct_destroy_group")]
         internal static extern int DestroyGroup();
         [DllImport(Libraries.WiFiDirect,EntryPoint = "wifi_direct_is_group_owner")]
index cd26d3da168983657e378ef1fdef7e970fc7e483..612b01850fbf293bee2543a8d503a9e50c9a741f 100644 (file)
@@ -1251,6 +1251,38 @@ namespace Tizen.Network.WiFiDirect
             }
         }
 
+        /// <summary>
+        /// Creates a Wi-Fi Direct group with given SSID and sets up device as the group owner.
+        /// </summary>
+        /// <privilege>
+        /// http://tizen.org/privilege/wifidirect
+        /// </privilege>
+        /// <feature>
+        /// http://tizen.org/feature/network.wifidirect
+        /// </feature>
+        /// <remarks>
+        /// Wi-Fi Direct must be activated.
+        /// If this succeeds, <see cref="ConnectionStatusChanged"/> event will be invoked with <see cref="WiFiDirectConnectionState.GroupCreated"/>.
+        /// </remarks>
+        /// <exception cref="InvalidOperationException">The object is in invalid state.</exception>
+        /// <exception cref="NotSupportedException">The required feature is not supported.</exception>
+        /// <exception cref="UnauthorizedAccessException">Thrown when application does not have privilege to access this method.</exception>
+        /// <since_tizen> 12 </since_tizen>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public static void CreateGroup(string ssid)
+        {
+            if (Globals.IsActivated)
+            {
+                WiFiDirectManagerImpl.Instance.CreateGroup(ssid);
+            }
+
+            else
+            {
+                Log.Error(Globals.LogTag, "Wifi-direct is not activated");
+                WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
+            }
+        }
+
         /// <summary>
         /// Destroys the Wi-Fi Direct group owned by a local device.If creating a group is in progress, this API cancels that process.
         /// </summary>
index 252afa1daefe8bba0f7ea53ca7c4d8e3bdd0e90a..dc5bee0f0dbd686630ebb51790fcf9be167ad284 100644 (file)
@@ -973,6 +973,16 @@ namespace Tizen.Network.WiFiDirect
             }
         }
 
+        internal void CreateGroup(string ssid)
+        {
+            int ret = Interop.WiFiDirect.CreateGroupWithSsid(ssid);
+            if (ret != (int)WiFiDirectError.None)
+            {
+                Log.Error(Globals.LogTag, "Failed to create a WiFi-Direct group with ssid, Error - " + (WiFiDirectError)ret);
+                WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+            }
+        }
+
         internal void DestroyGroup()
         {
             int ret = Interop.WiFiDirect.DestroyGroup();