internal static extern int SetSessionTimer(int seconds);
[DllImport(Libraries.WiFiDirect,EntryPoint = "wifi_direct_set_auto_group_removal")]
internal static extern int SetAutoGroupRemoval(bool enable);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_add_vsie")]
+ internal static extern int AddVsie(WiFiDirectVsieFrameType frameType, string vsie);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_get_vsie")]
+ internal static extern int GetVsie(WiFiDirectVsieFrameType frameType, out string vsie);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_remove_vsie")]
+ internal static extern int RemoveVsie(WiFiDirectVsieFrameType frameType, string vsie);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_get_connecting_peer_info")]
+ internal static extern int GetConnectingPeerInfo(out IntPtr peer);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_get_peer_vsie")]
+ internal static extern int GetPeerVsie(string macAddress, out string vsie);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_accept_connection")]
+ internal static extern int AcceptConnection(string macAddress);
+ [DllImport(Libraries.WiFiDirect, EntryPoint = "wifi_direct_reject_connection")]
+ internal static extern int RejectConnection(string macAddress);
}
}
/// </summary>
ConnectionCancelled = -0x01C60000 | 0x10
}
+
+ /// <summary>
+ /// Enumeration for Wi-Fi frame type.
+ /// </summary>
+ /// <since_tizen> 13 </since_tizen>
+ public enum WiFiDirectVsieFrameType
+ {
+ /// <summary>
+ /// P2P probe request frame.
+ /// </summary>
+ P2PProbeRequest,
+ /// <summary>
+ /// P2P probe response frame.
+ /// </summary>
+ P2PProbeResponse,
+ /// <summary>
+ ///P2P group owner probe response frame.
+ /// </summary>
+ P2PGOProbeResponse,
+ /// <summary>
+ /// P2P probe request frame.
+ /// </summary>
+ P2PGOBeacon,
+ /// <summary>
+ /// P2P provision discovery request frame.
+ /// </summary>
+ P2PProvisionDiscoveryRequest,
+ /// <summary>
+ /// P2P provision discovery response frame.
+ /// </summary>
+ P2PProvisionDiscoveryResponse,
+ /// <summary>
+ /// P2P probe request frame.
+ /// </summary>
+ P2PGONegotiationRequest,
+ /// <summary>
+ /// P2P group owner negotiation response frame.
+ /// </summary>
+ P2PGONegotiationResponse,
+ /// <summary>
+ /// P2P group owner negotiation confirmation frame.
+ /// </summary>
+ P2PGONegotiationConfirmation,
+ /// <summary>
+ /// P2P invitation request frame.
+ /// </summary>
+ P2PInvitationRequest,
+ /// <summary>
+ /// P2P invitation response frame.
+ /// </summary>
+ P2PInvitationResponse,
+ /// <summary>
+ /// P2P association request frame.
+ /// </summary>
+ P2PAssociationRequest,
+ /// <summary>
+ /// P2P association response frame.
+ /// </summary>
+ P2PAssociationResponse,
+ /// <summary>
+ /// Association request frame.
+ /// </summary>
+ AssociationRequest
+ }
}
WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
}
}
+
+ /// <summary>
+ /// Adds the Wi-Fi Vendor Specific Information Element (VSIE) to specific frame type.
+ /// </summary>
+ /// <param name="frameType">frame type for setting VSIE.</param>
+ /// <param name="vsie">VSIE value. A valid string contains hexadecimal characters i.e. [0-9a-f]</param>
+ /// <privilege>
+ /// http://tizen.org/privilege/wifidirect
+ /// </privilege>
+ /// <feature>
+ /// http://tizen.org/feature/network.wifidirect
+ /// </feature>
+ /// <remarks>
+ /// Wi-Fi Direct must be activated.
+ /// <paramref name="vsie"/> for <paramref name="frameType"/> will be in effect until Wi-Fi Direct is deactivated.
+ /// A valid value will be concatenated to already added VSIE values. If vsie value is invalid, InvalidOperationException
+ /// will be thrown. If same value for given frameType is already in effect, then there will be no change.
+ /// VSIE data structure is described in 802.11 specification.
+ /// </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> 13 </since_tizen>
+ public static void AddVsie(WiFiDirectVsieFrameType frameType, string vsie)
+ {
+ if (Globals.IsActivated)
+ {
+ WiFiDirectManagerImpl.Instance.AddVsie(frameType, vsie);
+ }
+
+ else
+ {
+ Log.Error(Globals.LogTag, "Wifi-direct is not activated");
+ WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
+ }
+ }
+
+ /// <summary>
+ /// Gets the Wi-Fi Vendor Specific Information Elements (VSIE) from specific frame type.
+ /// </summary>
+ /// <param name="frameType">frame type for getting VSIE.</param>
+ /// <returns>VSIE value if success else null value.</returns>
+ /// <privilege>
+ /// http://tizen.org/privilege/wifidirect
+ /// </privilege>
+ /// <feature>
+ /// http://tizen.org/feature/network.wifidirect
+ /// </feature>
+ /// <remarks>
+ /// Wi-Fi Direct must be activated.
+ /// </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> 13 </since_tizen>
+ public static string GetVsie(WiFiDirectVsieFrameType frameType)
+ {
+ if (Globals.IsActivated)
+ {
+ return WiFiDirectManagerImpl.Instance.GetVsie(frameType);
+ }
+
+ else
+ {
+ Log.Error(Globals.LogTag, "Wifi-direct is not activated");
+ WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
+ return null;
+ }
+ }
+
+ /// <summary>
+ /// Removes the Wi-Fi Vendor Specific Information Element (VSIE) from specific frame type.
+ /// </summary>
+ /// <param name="frameType">frame type for removing VSIE.</param>
+ /// <param name="vsie">VSIE value</param>
+ /// <privilege>
+ /// http://tizen.org/privilege/wifidirect
+ /// </privilege>
+ /// <feature>
+ /// http://tizen.org/feature/network.wifidirect
+ /// </feature>
+ /// <remarks>
+ /// Wi-Fi Direct must be activated.
+ /// A VSIE value if already added, will be removed from VSIE value else InvalidOperationException will be thrown.
+ /// </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> 13 </since_tizen>
+ public static void RemoveVsie(WiFiDirectVsieFrameType frameType, string vsie)
+ {
+ if (Globals.IsActivated)
+ {
+ WiFiDirectManagerImpl.Instance.RemoveVsie(frameType, vsie);
+ }
+
+ else
+ {
+ Log.Error(Globals.LogTag, "Wifi-direct is not activated");
+ WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
+ }
+ }
+
+ /// <summary>
+ /// Gets the information of peer devices which is in the connecting state.
+ /// </summary>
+ /// <returns>Connecting peer object.</returns>
+ /// <privilege>
+ /// http://tizen.org/privilege/wifidirect
+ /// </privilege>
+ /// <feature>
+ /// http://tizen.org/feature/network.wifidirect
+ /// </feature>
+ /// <remarks>
+ /// Wi-Fi Direct service must be in connecting state.
+ /// </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> 13 </since_tizen>
+ public static WiFiDirectPeer GetConnectingPeer()
+ {
+ if (Globals.IsActivated)
+ {
+ return WiFiDirectManagerImpl.Instance.GetConnectingPeer();
+ }
+
+ else
+ {
+ return null;
+ }
+ }
+
+ /// <summary>
+ /// Accepts a connection requested from peer.
+ /// </summary>
+ /// <param name="peerMacAddress">MAC Address of the peer.</param>
+ /// <privilege>
+ /// http://tizen.org/privilege/wifidirect
+ /// </privilege>
+ /// <feature>
+ /// http://tizen.org/feature/network.wifidirect
+ /// </feature>
+ /// <remarks>
+ /// Wi-Fi Direct must be activated.
+ /// </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> 13 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static void AcceptConnection(string peerMacAddress)
+ {
+ if (Globals.IsActivated)
+ {
+ WiFiDirectManagerImpl.Instance.AcceptConnection(peerMacAddress);
+ }
+
+ else
+ {
+ Log.Error(Globals.LogTag, "Wifi-direct is not activated");
+ WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
+ }
+ }
+
+ /// <summary>
+ /// Rejects the connection request from other device now in progress.
+ /// </summary>
+ /// <param name="peerMacAddress">The MAC address of rejected device.</param>
+ /// <privilege>
+ /// http://tizen.org/privilege/wifidirect
+ /// </privilege>
+ /// <feature>
+ /// http://tizen.org/feature/network.wifidirect
+ /// </feature>
+ /// <remarks>
+ /// Wi-Fi Direct must be activated.
+ /// </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> 13 </since_tizen>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static void RejectConnection(string peerMacAddress)
+ {
+ if (Globals.IsActivated)
+ {
+ WiFiDirectManagerImpl.Instance.RejectConnection(peerMacAddress);
+ }
+
+ else
+ {
+ Log.Error(Globals.LogTag, "Wifi-direct is not activated");
+ WiFiDirectErrorFactory.ThrowWiFiDirectException((int)WiFiDirectError.NotPermitted);
+ }
+ }
}
}
}
}
+ internal void AddVsie(WiFiDirectVsieFrameType frameType, string vsie)
+ {
+ int ret = Interop.WiFiDirect.AddVsie(frameType, vsie);
+
+ if (ret != (int)WiFiDirectError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to add vsie, Error - " + (WiFiDirectError)ret);
+ WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+ }
+ }
+
+ internal string GetVsie(WiFiDirectVsieFrameType frameType)
+ {
+ string vsie;
+ int ret = Interop.WiFiDirect.GetVsie(frameType, out vsie);
+
+ if (ret != (int)WiFiDirectError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to get vsie, Error - " + (WiFiDirectError)ret);
+ WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+ vsie = null;
+ }
+
+ return vsie;
+ }
+
+ internal void RemoveVsie(WiFiDirectVsieFrameType frameType, string vsie)
+ {
+ int ret = Interop.WiFiDirect.RemoveVsie(frameType, vsie);
+
+ if (ret != (int)WiFiDirectError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to remove vsie, Error - " + (WiFiDirectError)ret);
+ WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+ }
+ }
+
+ internal WiFiDirectPeer GetConnectingPeer()
+ {
+ IntPtr peer;
+ int ret = Interop.WiFiDirect.GetConnectingPeerInfo(out peer);
+
+ if (ret != (int)WiFiDirectError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to get connecting peer info, Error - " + (WiFiDirectError)ret);
+ WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+ return null;
+ }
+
+ DiscoveredPeerStruct peerStruct = (DiscoveredPeerStruct)Marshal.PtrToStructure(peer, typeof(DiscoveredPeerStruct));
+
+ return WiFiDirectUtils.ConvertStructToDiscoveredPeer(peerStruct);
+ }
+
+ internal void AcceptConnection(string peerMacAddress)
+ {
+ int ret = Interop.WiFiDirect.AcceptConnection(peerMacAddress);
+
+ if (ret != (int)WiFiDirectError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to accept connection, Error - " + (WiFiDirectError)ret);
+ WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+ }
+ }
+
+ internal void RejectConnection(string peerMacAddress)
+ {
+ int ret = Interop.WiFiDirect.RejectConnection(peerMacAddress);
+
+ if (ret != (int)WiFiDirectError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to reject connection, Error - " + (WiFiDirectError)ret);
+ WiFiDirectErrorFactory.ThrowWiFiDirectException(ret);
+ }
+ }
+
internal static WiFiDirectManagerImpl Instance
{
get