diff --git a/internals/src/Tizen.Network.Tethering/Interop/Interop.TetheringExtension.cs b/internals/src/Tizen.Network.Tethering/Interop/Interop.TetheringExtension.cs
index d6cf65f05fc..2608a47e498 100644
--- a/internals/src/Tizen.Network.Tethering/Interop/Interop.TetheringExtension.cs
+++ b/internals/src/Tizen.Network.Tethering/Interop/Interop.TetheringExtension.cs
@@ -30,6 +30,8 @@ internal static partial class TetheringExtension
internal delegate void DisabledCallback(int result, TetheringDisabledCause cause, IntPtr userData);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void ConnectionStateChangedCallback(IntPtr client, bool opened, IntPtr userData);
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ internal delegate void ModeChangedCallback(int mode, IntPtr userData);
// Tethering Manager
@@ -57,6 +59,12 @@ internal static partial class TetheringExtension
[DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_unset_connection_state_changed_cb")]
internal static extern int UnsetConnectionStateChangedCallback(IntPtr tethering);
+ [DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_set_mode_changed_cb")]
+ internal static extern int SetModeChangedCallback(IntPtr tethering, ModeChangedCallback callback, IntPtr userData);
+
+ [DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_unset_mode_changed_cb")]
+ internal static extern int UnsetModeChangedCallback(IntPtr tethering);
+
[DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_activate")]
internal static extern int Activate(IntPtr tethering);
@@ -72,6 +80,9 @@ internal static partial class TetheringExtension
[DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_set_passphrase")]
internal static extern int SetPassphrase(IntPtr tethering, string ssid);
+ [DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_update_tethering_info")]
+ internal static extern int UpdateTetheringInfo(IntPtr tethering, string ssid, string passphrase);
+
[DllImport(Libraries.Tethering, EntryPoint = "tethering_ext_set_channel")]
internal static extern int SetChannel(IntPtr tethering, int channel);
diff --git a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEnumerations.cs b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEnumerations.cs
index 0f34aca2d5c..75620d2a5ab 100644
--- a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEnumerations.cs
+++ b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEnumerations.cs
@@ -164,4 +164,23 @@ public enum TetheringSecurityType
/// 13
Sae = 3,
}
+
+ ///
+ /// Enumeration for the Tethering Extension mode.
+ ///
+ /// 13
+ public enum TetheringExtensionMode
+ {
+ ///
+ /// Tethering is disabled.
+ ///
+ /// 13
+ Disabled = 0,
+
+ ///
+ /// Tethering is enabled.
+ ///
+ /// 13
+ Enabled = 1,
+ }
}
diff --git a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEvents.cs b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEvents.cs
index 2d049d5378e..7b4083afdeb 100644
--- a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEvents.cs
+++ b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionEvents.cs
@@ -7,10 +7,12 @@ internal partial class TetheringExtensionManagerImpl {
private event EventHandler _tetheringExtEnabled;
private event EventHandler _tetheringExtDisabled;
private event EventHandler _connectionStateChanged;
+ private event EventHandler _modeChanged;
private Interop.TetheringExtension.EnabledCallback _enabledCallback;
private Interop.TetheringExtension.DisabledCallback _disabledCallback;
private Interop.TetheringExtension.ConnectionStateChangedCallback _connectionStateChangedCallback;
+ private Interop.TetheringExtension.ModeChangedCallback _modeChangedCallback;
internal event EventHandler TetheringExtensionEnabled
{
@@ -117,6 +119,41 @@ internal event EventHandler ConnectionStateChan
}
}
+ internal event EventHandler ModeChanged
+ {
+ add
+ {
+ if (_modeChanged == null)
+ {
+ try
+ {
+ RegisterModeChangedEvent();
+ }
+ catch (Exception e)
+ {
+ Log.Error(Globals.LogTag, "Exception on adding ModeChanged\n" + e);
+ return;
+ }
+ }
+ _modeChanged += value;
+ }
+ remove
+ {
+ _modeChanged -= value;
+ if (_modeChanged == null)
+ {
+ try
+ {
+ UnregisterModeChangedEvent();
+ }
+ catch (Exception e)
+ {
+ Log.Error(Globals.LogTag, "Exception on removing ModeChanged\n" + e);
+ }
+ }
+ }
+ }
+
private void RegisterEnabledEvent()
{
@@ -196,6 +233,34 @@ private void UnregisterConnectionStatechangedEvent()
}
}
+ private void RegisterModeChangedEvent()
+ {
+ Log.Info(Globals.LogTag, "RegisterModeChangedEvent");
+ _modeChangedCallback = (int mode, IntPtr userData) =>
+ {
+ TetheringExtensionMode tetheringMode = (TetheringExtensionMode)mode;
+ TetheringExtensionModeChangedEventArgs e = new TetheringExtensionModeChangedEventArgs(tetheringMode);
+ _modeChanged?.Invoke(this, e);
+ };
+
+ int ret = Interop.TetheringExtension.SetModeChangedCallback(GetHandle(), _modeChangedCallback, IntPtr.Zero);
+ if (ret != (int)TetheringError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to set mode changed callback, Error - " + (TetheringError)ret);
+ }
+ }
+
+ private void UnregisterModeChangedEvent()
+ {
+ Log.Info(Globals.LogTag, "UnregisterModeChangedEvent");
+ int ret = Interop.TetheringExtension.UnsetModeChangedCallback(GetHandle());
+ if (ret != (int)TetheringError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to unset mode changed callback, Error - " + (TetheringError)ret);
+ }
+ _modeChangedCallback = null;
+ }
+
}
}
diff --git a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManager.cs b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManager.cs
index 6b60fc29d41..28e51bebb04 100644
--- a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManager.cs
+++ b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManager.cs
@@ -92,6 +92,27 @@ static public event EventHandler ConnectionStat
}
}
+ ///
+ /// ModeChanged is raised when the tethering mode is changed.
+ ///
+ /// 13
+ ///
+ /// http://tizen.org/privilege/tethering.admin
+ ///
+ /// Thrown when the method failed due to an invalid parameter.
+ /// Thrown when the method failed due to an invalid operation.
+ static public event EventHandler ModeChanged
+ {
+ add
+ {
+ TetheringExtensionManagerImpl.Instance.ModeChanged += value;
+ }
+ remove
+ {
+ TetheringExtensionManagerImpl.Instance.ModeChanged -= value;
+ }
+ }
+
///
/// Activates the TetheringExtension.
///
@@ -122,6 +143,22 @@ static public void Deactivate()
TetheringExtensionManagerImpl.Instance.DeActivate();
}
+ ///
+ /// Updates the tethering information with new SSID and passphrase.
+ ///
+ /// 13
+ ///
+ /// http://tizen.org/privilege/tethering.admin
+ ///
+ /// Thrown when SSID or passphrase is invalid.
+ /// Thrown when tethering is not active or settings match current values.
+ /// The new SSID
+ /// The new passphrase
+ static public void UpdateTetheringInfo(string ssid, string passphrase)
+ {
+ TetheringExtensionManagerImpl.Instance.UpdateTetheringInfo(ssid, passphrase);
+ }
+
///
/// Returns whethers TetheringExtension is enabled or not.
///
diff --git a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManagerImpl.cs b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManagerImpl.cs
index 652fb543ca6..f2d53cd3971 100644
--- a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManagerImpl.cs
+++ b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionManagerImpl.cs
@@ -153,6 +153,30 @@ internal void DeActivate()
CheckReturnValue(ret, "DeActivate", PrivilegeNetworkProfile);
}
+ internal void UpdateTetheringInfo(string ssid, string passphrase)
+ {
+ if (ssid == null)
+ {
+ Log.Error(Globals.LogTag, "SSID cannot be null");
+ throw new ArgumentException("SSID cannot be null");
+ }
+
+ if (passphrase == null)
+ {
+ Log.Error(Globals.LogTag, "Passphrase cannot be null");
+ throw new ArgumentException("Passphrase cannot be null");
+ }
+
+ Log.Info(Globals.LogTag, "Updating tethering info");
+ int ret = Interop.TetheringExtension.UpdateTetheringInfo(GetHandle(), ssid, passphrase);
+
+ if (ret != (int)TetheringError.None)
+ {
+ Log.Error(Globals.LogTag, "Failed to update tethering info, Error - " + (TetheringError)ret);
+ CheckReturnValue(ret, "UpdateTetheringInfo", PrivilegeNetworkProfile);
+ }
+ }
+
public TetheringInfo GetTetheringInfo()
{
Log.Info(Globals.LogTag, "GetTetheringInfo");
diff --git a/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionModeChangedEventArgs.cs b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionModeChangedEventArgs.cs
new file mode 100644
index 00000000000..43c9e441ba2
--- /dev/null
+++ b/internals/src/Tizen.Network.Tethering/Tizen.Network.Tethering/TetheringExtensionModeChangedEventArgs.cs
@@ -0,0 +1,27 @@
+using System;
+
+namespace Tizen.Network.Tethering
+{
+ ///
+ /// TetheringExtensionModeChangedEventArgs provides the mode information when the ModeChanged event is raised.
+ ///
+ /// 13
+ public class TetheringExtensionModeChangedEventArgs : EventArgs
+ {
+ ///
+ /// The tethering mode.
+ ///
+ /// 13
+ public TetheringExtensionMode Mode { get; }
+
+ ///
+ /// Constructor for TetheringExtensionModeChangedEventArgs.
+ ///
+ /// 13
+ /// The tethering mode (Enabled or Disabled).
+ public TetheringExtensionModeChangedEventArgs(TetheringExtensionMode mode)
+ {
+ Mode = mode;
+ }
+ }
+}