[Tizen.Applications.EventManager] Add new apis for event system (#761)
authorkilig <inkyun.kil@samsung.com>
Thu, 28 Mar 2019 01:29:12 +0000 (10:29 +0900)
committerpjh9216 <jh9216.park@samsung.com>
Thu, 28 Mar 2019 01:29:12 +0000 (10:29 +0900)
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
src/Tizen.Applications.EventManager/Interop/Interop.AppEvent.cs [new file with mode: 0755]
src/Tizen.Applications.EventManager/Interop/Interop.Libraries.cs [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications.EventManager.csproj [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications.EventManager.sln [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications/ApplicationEventManager.cs [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications/ErrorFactory.cs [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications/EventManagerEventArgs.cs [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications/EventReceiver.cs [new file with mode: 0755]
src/Tizen.Applications.EventManager/Tizen.Applications/SystemEvents.cs [new file with mode: 0755]

diff --git a/src/Tizen.Applications.EventManager/Interop/Interop.AppEvent.cs b/src/Tizen.Applications.EventManager/Interop/Interop.AppEvent.cs
new file mode 100755 (executable)
index 0000000..5921f53
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Runtime.InteropServices;
+
+using Tizen.Applications;
+
+internal static partial class Interop
+{
+    internal static partial class AppEvent
+    {
+        internal enum ErrorCode
+        {
+            None = Tizen.Internals.Errors.ErrorCode.None,
+            InvalidParameter = Tizen.Internals.Errors.ErrorCode.InvalidParameter,
+            OutOfMemory = Tizen.Internals.Errors.ErrorCode.OutOfMemory,
+            PermissionDenied = Tizen.Internals.Errors.ErrorCode.PermissionDenied,
+            IoError = Tizen.Internals.Errors.ErrorCode.IoError,
+            TimeOut = Tizen.Internals.Errors.ErrorCode.TimedOut,
+        }
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void EventCallback(string eventName, IntPtr eventData, IntPtr userData);
+
+        [DllImport(Libraries.AppEvent, EntryPoint = "event_add_event_handler")]
+        internal static extern ErrorCode EventAddHandler(string eventName, EventCallback cb, IntPtr userData, out IntPtr handle);
+
+        [DllImport(Libraries.AppEvent, EntryPoint = "event_remove_event_handler")]
+        internal static extern ErrorCode EventRemoveHandler(IntPtr handle);
+
+        [DllImport(Libraries.AppEvent, EntryPoint = "event_publish_app_event")]
+        internal static extern ErrorCode EventPublishAppEvent(string eventName, SafeBundleHandle eventData);
+
+        [DllImport(Libraries.AppEvent, EntryPoint = "event_publish_trusted_app_event")]
+        internal static extern ErrorCode EventPublishTrustedAppEvent(string eventName, SafeBundleHandle eventData);
+
+        [DllImport(Libraries.AppEvent, EntryPoint = "event_keep_last_event_data")]
+        internal static extern ErrorCode EventKeepLastEventData(string eventName);
+    }
+}
diff --git a/src/Tizen.Applications.EventManager/Interop/Interop.Libraries.cs b/src/Tizen.Applications.EventManager/Interop/Interop.Libraries.cs
new file mode 100755 (executable)
index 0000000..98ea422
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+internal static partial class Interop
+{
+    internal static partial class Libraries
+    {
+        public const string AppEvent = "libcapi-appfw-event.so.0";
+    }
+}
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications.EventManager.csproj b/src/Tizen.Applications.EventManager/Tizen.Applications.EventManager.csproj
new file mode 100755 (executable)
index 0000000..1c0b931
--- /dev/null
@@ -0,0 +1,10 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>netstandard2.0</TargetFramework>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\Tizen.Applications.Common\Tizen.Applications.Common.csproj" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications.EventManager.sln b/src/Tizen.Applications.EventManager/Tizen.Applications.EventManager.sln
new file mode 100755 (executable)
index 0000000..655fe6a
--- /dev/null
@@ -0,0 +1,46 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.27130.2036
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.EventManager", "Tizen.Applications.EventManager.csproj", "{463DEFEA-012A-4CC8-9321-0F0789B028B7}"
+       ProjectSection(ProjectDependencies) = postProject
+               {662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8} = {662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8}
+       EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Log", "..\Tizen.Log\Tizen.Log.csproj", "{4F2489AC-A247-47C8-B481-EA2E593163AB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Applications.Common", "..\Tizen.Applications.Common\Tizen.Applications.Common.csproj", "{662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen", "..\Tizen\Tizen.csproj", "{BE5AA891-FB94-4592-9B6B-796F8EA35A30}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {463DEFEA-012A-4CC8-9321-0F0789B028B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {463DEFEA-012A-4CC8-9321-0F0789B028B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {463DEFEA-012A-4CC8-9321-0F0789B028B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {463DEFEA-012A-4CC8-9321-0F0789B028B7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F2489AC-A247-47C8-B481-EA2E593163AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F2489AC-A247-47C8-B481-EA2E593163AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F2489AC-A247-47C8-B481-EA2E593163AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F2489AC-A247-47C8-B481-EA2E593163AB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {662BB8B3-379E-48E7-B6C6-08D1ADAFB5B8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BE5AA891-FB94-4592-9B6B-796F8EA35A30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BE5AA891-FB94-4592-9B6B-796F8EA35A30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BE5AA891-FB94-4592-9B6B-796F8EA35A30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BE5AA891-FB94-4592-9B6B-796F8EA35A30}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {50A7F582-5B1C-42FA-B85E-488D6EC877A3}
+       EndGlobalSection
+EndGlobal
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications/ApplicationEventManager.cs b/src/Tizen.Applications.EventManager/Tizen.Applications/ApplicationEventManager.cs
new file mode 100755 (executable)
index 0000000..bef1959
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Applications.EventManager
+{
+    /// <summary>
+    /// The EventManager Class provides functions to broadcast user-defined event.
+    /// </summary>
+    /// <example>
+    /// <code><![CDATA[
+    /// public class EventManagerSample
+    /// {
+    ///     /// ...
+    ///     Bundle bundle = new Bundle();
+    ///     bundle.AddItem("key", "value");
+    ///     ApplicationEventManager.Publish("event.org.example.helloworld.event, bundle);
+    /// }
+    /// ]]></code>
+    /// </example>
+    /// <since_tizen> 6 </since_tizen>
+    public static class ApplicationEventManager
+    {
+        /// <summary>
+        /// Sends the User-Event to receiver applications.
+        /// </summary>
+        /// <param name="eventName">The event's name to send.</param>
+        /// <param name="eventData"> The event's data to send.</param>
+        /// <remarks>The format of User-Event's name MUST be "event.{sender's appid}.{user-defined name}", refer to 'The name-format of User-Event' section,
+        /// If the event_name is invalid, throw InvalidOperationException</remarks>
+        /// <exception cref="ArgumentException">Thrown in case of an invalid parameter.</exception>
+        /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception>
+        /// <since_tizen> 6 </since_tizen>
+        public static void Publish(string eventName, Bundle eventData)
+        {
+            Interop.AppEvent.ErrorCode err = Interop.AppEvent.EventPublishAppEvent(eventName, eventData.SafeBundleHandle);
+            if (err != Interop.AppEvent.ErrorCode.None)
+            {
+                ErrorFactory.ThrowException(err, "Publish event");
+            }
+        }
+
+        /// <summary>
+        /// Sends the User-Event to trusted receiver-applications.
+        /// </summary>
+        /// <param name="eventName">The event's name to send.</param>
+        /// <param name="eventData"> The event's data to send.</param>
+        /// <param name="isTrusted"> Whether the event is trusted or not.</param>
+        /// <remarks>The application which has same certification with sender can receive the event.
+        /// The format of User-Event's name MUST be "event.{sender's appid}.{user-defined name}", refer to 'The name-format of User-Event' section,
+        /// If the event_name is invalid, throw InvalidOperationException</remarks>
+        /// <exception cref="ArgumentException">Thrown in case of an invalid parameter.</exception>
+        /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception>
+        /// <since_tizen> 6 </since_tizen>
+        public static void Publish(string eventName, Bundle eventData, bool isTrusted)
+        {
+            if (isTrusted)
+            {
+                Interop.AppEvent.ErrorCode err = Interop.AppEvent.EventPublishTrustedAppEvent(eventName, eventData.SafeBundleHandle);
+                if (err != Interop.AppEvent.ErrorCode.None)
+                {
+                    ErrorFactory.ThrowException(err, "Publish trusted event");
+                }
+            }
+            else
+            {
+                Publish(eventName, eventData);
+            }
+        }
+
+        /// <summary>
+        /// Keeps last User-Event data for receiver applications.
+        /// </summary>
+        /// <param name="eventName">The event's name to send.</param>
+        /// <remarks>The receiver applications will receive this last event data after adding their new handlers via ApplicationEventReceiver since the sender application called this method.
+        /// If a sender application sends same event via trusted method and non-trusted method, then a trusted receiver will get latest data regardless of trusted or non-trusted,
+        /// but non-trusted receiver will get the last data only from non-trusted method. The effect of this API continues during runtime.
+        /// That means when the sender application process restarts, the sender application needs to call this api again to make the event to keep the last event.</remarks>
+        /// <exception cref="ArgumentException">Thrown in case of an invalid parameter.</exception>
+        /// <exception cref="InvalidOperationException">Thrown in case of any internal error.</exception>
+        /// <since_tizen> 6 </since_tizen>
+        public static void KeepLastEvent(string eventName)
+        {
+            Interop.AppEvent.ErrorCode err = Interop.AppEvent.EventKeepLastEventData(eventName);
+            if (err != Interop.AppEvent.ErrorCode.None)
+            {
+                ErrorFactory.ThrowException(err, "Keep last event");
+            }
+        }
+    }
+}
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications/ErrorFactory.cs b/src/Tizen.Applications.EventManager/Tizen.Applications/ErrorFactory.cs
new file mode 100755 (executable)
index 0000000..cfd59b5
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Runtime.CompilerServices;
+
+namespace Tizen.Applications.EventManager
+{
+    internal static class ErrorFactory
+    {
+        private const string LogTag = "Tizen.Applications.EventManager";
+
+        internal static void ThrowException(Interop.AppEvent.ErrorCode errorCode, string errorMessage = null,
+            [CallerMemberName] string memberName = "", [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0)
+        {
+            Log.Error(LogTag, $"{memberName}({lineNumber.ToString()}) : {filePath}");
+
+            switch (errorCode)
+            {
+                case Interop.AppEvent.ErrorCode.None:
+                    return;
+                case Interop.AppEvent.ErrorCode.OutOfMemory:
+                case Interop.AppEvent.ErrorCode.IoError:
+                    throw new InvalidOperationException(string.IsNullOrEmpty(errorMessage) ? "error code : " + errorCode.ToString() :
+                        $"{errorMessage} - {errorCode}");
+                case Interop.AppEvent.ErrorCode.InvalidParameter:
+                    Log.Error(LogTag, "Invalid parameter : " + errorMessage);
+                    throw new ArgumentException(string.IsNullOrEmpty(errorMessage) ? "Invalid parameter" : "Invalid parameter : " + errorMessage);
+                case Interop.AppEvent.ErrorCode.PermissionDenied:
+                    Log.Error(LogTag, "Permission denied : " + errorMessage);
+                    throw new UnauthorizedAccessException(string.IsNullOrEmpty(errorMessage) ? "Permission denied" : "Permission denied : " + errorMessage);
+                case Interop.AppEvent.ErrorCode.TimeOut:
+                    Log.Error(LogTag, "Timeout : " + errorMessage);
+                    throw new TimeoutException(string.IsNullOrEmpty(errorMessage) ? "Timeout" : "Timeout : " + errorMessage);
+                default:
+                    Log.Error(LogTag, $"Unknown error : {errorMessage} - {errorCode}");
+                    throw new InvalidOperationException(string.IsNullOrEmpty(errorMessage) ? "Unknown error : " + errorCode.ToString() :
+                        $"Unknown error : {errorMessage} - {errorCode}");
+            }
+        }
+    }
+}
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications/EventManagerEventArgs.cs b/src/Tizen.Applications.EventManager/Tizen.Applications/EventManagerEventArgs.cs
new file mode 100755 (executable)
index 0000000..53cc3a4
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Applications.EventManager
+{
+    /// <summary>
+    /// Arguments for the event raised when the application event is received
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public class EventManagerEventArgs : EventArgs
+    {
+        private readonly Bundle _eventData;
+        private readonly string _eventName;
+
+        internal EventManagerEventArgs(string eventName, Bundle eventData)
+        {
+            _eventName = eventName;
+            _eventData = eventData;
+        }
+
+        /// <summary>
+        /// The Name of the event.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public string Name
+        {
+            get
+            {
+                return _eventName;
+            }
+        }
+
+        /// <summary>
+        /// The event data of the application event.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public Bundle Data
+        {
+            get
+            {
+                return _eventData;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications/EventReceiver.cs b/src/Tizen.Applications.EventManager/Tizen.Applications/EventReceiver.cs
new file mode 100755 (executable)
index 0000000..cf82817
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Applications.EventManager
+{
+    /// <summary>
+    /// The ApplicationEventReceiver Class provides functions to add event handler.
+    /// </summary>
+    /// <example>
+    /// <code><![CDATA[
+    /// using Tizen.Applications.EventManager.SystemEvents;
+    /// void OnReceived(object sender, ApplicationEventArgs e)
+    /// {
+    ///     if (e.Name == "event.org.tizen.example.AppEventTestApp.Tizen.Mobile.AppEvent")
+    ///         LogUtils.Write(LogUtils.DEBUG, LOG_TAG, "On Received : " + e.Name);
+    ///
+    ///     if (e.Name == EarjackStatus.EventName)
+    ///     {
+    ///         Bundle eventData = e.Data;
+    ///         object aValue = eventData.GetItem(EarjackStatus.StatusKey);
+    ///         if (eventData.Is<string>(EarjackStatus.StatusKey))
+    ///         {
+    ///             string statusValue = (string)aValue;
+    ///             LogUtils.Write(LogUtils.DEBUG, LOG_TAG, "EarjackStatus : " + statusValue);
+    ///         }
+    ///     }
+    /// }
+    /// public class EventManagerSample
+    /// {
+    ///    ...
+    ///    EventReceiver receiver = new EventReceiver("event.org.tizen.example.helloworld.AppEvent");
+    ///    receiver.Received += OnReceived;
+    /// }
+    /// ]]></code>
+    /// </example>
+    /// <since_tizen> 6 </since_tizen>
+    public class EventReceiver : IDisposable
+    {
+        private bool disposedValue = false;
+        private string _eventName;
+        private IntPtr _eventHandle;
+
+        private EventHandler<EventManagerEventArgs> eventHandler;
+        private Interop.AppEvent.EventCallback callback;
+
+        /// <summary>
+        /// Initializer of class.
+        /// </summary>
+        /// <param name="eventName">The interested event name.</param>
+        /// <since_tizen> 6 </since_tizen>
+        public EventReceiver(string eventName)
+        {
+            _eventName = eventName;
+        }
+
+        /// <summary>
+        /// Finalizer of class.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        ~EventReceiver()
+        {
+            Dispose(false);
+        }
+
+        /// <summary>
+        /// Gets the eventname.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public string EventName
+        {
+            get
+            {
+                return _eventName;
+            }
+        }
+
+        private void OnEvent(string eventName, IntPtr eventData, IntPtr userData)
+        {
+            SafeBundleHandle sbh = new SafeBundleHandle(eventData, false);
+            eventHandler?.Invoke(null, new EventManagerEventArgs(eventName, new Bundle(sbh)));
+        }
+
+        /// <summary>
+        /// Occurs when events are received.
+        /// </summary>
+        /// <remarks> If you want to add the privileged event, you MUST declare right privilege first.
+        /// Unless that, throw UnauthorizedAccessException.
+        /// The privileged events are commented on remarks of it's definitions. </remarks>
+        /// <since_tizen> 6 </since_tizen>
+        public event EventHandler<EventManagerEventArgs> Received
+        {
+            add
+            {
+                if (eventHandler == null)
+                {
+                    if (callback == null)
+                    {
+                        callback = new Interop.AppEvent.EventCallback(OnEvent);
+                    }
+
+                    Interop.AppEvent.ErrorCode err = Interop.AppEvent.EventAddHandler(_eventName, callback, IntPtr.Zero, out _eventHandle);
+
+                    if (err != Interop.AppEvent.ErrorCode.None)
+                    {
+                        ErrorFactory.ThrowException(err, "Add event handler");
+                    }
+                }
+
+                eventHandler += value;
+            }
+
+            remove
+            {
+                eventHandler -= value;
+                if (eventHandler == null)
+                {
+                    Interop.AppEvent.ErrorCode err = Interop.AppEvent.EventRemoveHandler(_eventHandle);
+
+                    if (err != Interop.AppEvent.ErrorCode.None)
+                    {
+                        ErrorFactory.ThrowException(err, "Remove event handler");
+                    }
+
+                    callback = null;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Releases any unmanaged resources used by this object. Can also dispose any other disposable objects.
+        /// </summary>
+        /// <param name="disposing">If true, disposes any disposable objects. If false, does not dispose disposable objects.</param>
+        /// <since_tizen> 6 </since_tizen>
+        protected virtual void Dispose(bool disposing)
+        {
+            if (!disposedValue)
+            {
+                if (disposing)
+                {
+                }
+
+                if (eventHandler != null)
+                {
+                    Interop.AppEvent.ErrorCode err = Interop.AppEvent.EventRemoveHandler(_eventHandle);
+                }
+
+                disposedValue = true;
+            }
+        }
+
+        /// <summary>
+        /// Release all the resources used by the class.
+        /// </summary>
+        /// <since_tizen> 5 </since_tizen>
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+    }
+}
diff --git a/src/Tizen.Applications.EventManager/Tizen.Applications/SystemEvents.cs b/src/Tizen.Applications.EventManager/Tizen.Applications/SystemEvents.cs
new file mode 100755 (executable)
index 0000000..b87bbfd
--- /dev/null
@@ -0,0 +1,1242 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+namespace Tizen.Applications.EventManager.SystemEvents
+{
+    /// <summary>
+    /// Class for system-event of battery charger status
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class BatteryChargerStatus
+    {
+        /// <summary>
+        /// Eventname for system-event of battery charger status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.battery_charger_status"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of battery charger status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusKey
+        {
+            get { return "battery_charger_status"; }
+        }
+
+        /// <summary>
+        /// Value of connected battery charger
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueConnected
+        {
+            get { return "connected"; }
+        }
+
+        /// <summary>
+        /// Value of disconnected battery charger
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueDisconnected
+        {
+            get { return "disconnected"; }
+        }
+
+        /// <summary>
+        /// Value of charing battery charger
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueCharging
+        {
+            get { return "charging"; }
+        }
+
+        /// <summary>
+        /// Value of discharging battery charger
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueDischarging
+        {
+            get { return "discharging"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of battery level status
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class BatteryLevelStatus
+    {
+        /// <summary>
+        /// Eventname for system-event of battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.battery_level_status"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusKey
+        {
+            get { return "battery_level_status"; }
+        }
+
+        /// <summary>
+        /// Value of empty battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueEmpty
+        {
+            get { return "empty"; }
+        }
+
+        /// <summary>
+        /// Value of critical battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueCritical
+        {
+            get { return "critical"; }
+        }
+
+        /// <summary>
+        /// Value of low battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueLow
+        {
+            get { return "low"; }
+        }
+
+        /// <summary>
+        /// Value of high battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueHigh
+        {
+            get { return "high"; }
+        }
+
+        /// <summary>
+        /// Value of full battery level status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueFull
+        {
+            get { return "full"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of usb status
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class UsbStatus
+    {
+        /// <summary>
+        /// Eventname for system-event of usb status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.usb_status"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of usb status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusKey
+        {
+            get { return "usb_status"; }
+        }
+
+        /// <summary>
+        /// Value of disconnected usb status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueDisconnected
+        {
+            get { return "disconnected"; }
+        }
+
+        /// <summary>
+        /// Value of connected usb status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueConnected
+        {
+            get { return "connected"; }
+        }
+
+        /// <summary>
+        /// Value of available usb status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueAvailable
+        {
+            get { return "available"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of earjack status
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class EarjackStatus
+    {
+        /// <summary>
+        /// Eventname for system-event of earjack status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.earjack_status"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of earjack status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusKey
+        {
+            get { return "earjack_status"; }
+        }
+
+        /// <summary>
+        /// Value of disconnected earjack status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueDisconnected
+        {
+            get { return "disconnected"; }
+        }
+
+        /// <summary>
+        /// Value of connected earjack status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueConnected
+        {
+            get { return "connected"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of display state
+    /// </summary>
+    /// <privilege> http://tizen.org/privilege/display </privilege>
+    /// <remarks> If you want to receive this event, you must declare this privilege. </remarks>
+    /// <since_tizen> 6 </since_tizen>
+    public static class DisplayState
+    {
+        /// <summary>
+        /// Eventname for system-event of display state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.display_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of display state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "display_state"; }
+        }
+
+        /// <summary>
+        /// Value of normal display state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueNormal
+        {
+            get { return "normal"; }
+        }
+
+        /// <summary>
+        /// Value of dim display state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueDim
+        {
+            get { return "dim"; }
+        }
+
+        /// <summary>
+        /// Value of off display state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOff
+        {
+            get { return "off"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of boot completed
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class BootCompleted
+    {
+        /// <summary>
+        /// Eventname for system-event of boot completed
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.boot_completed"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of system shutdown
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class SystemShutdown
+    {
+        /// <summary>
+        /// Eventname for system-event of system shutdown
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.system_shutdown"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of low memory
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class LowMemory
+    {
+        /// <summary>
+        /// Eventname for system-event of low memory
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.low_memory"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of low memory
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "low_memory"; }
+        }
+
+        /// <summary>
+        /// Value of normal low memory
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string ValueNormal
+        {
+            get { return "normal"; }
+        }
+
+        /// <summary>
+        /// Value of soft warning low memory
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string ValueSoftWarning
+        {
+            get { return "soft_warning"; }
+        }
+
+        /// <summary>
+        /// Value of hard warning low memory
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string ValueHardWarning
+        {
+            get { return "hard_warning"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of wifi state
+    /// </summary>
+    /// <privilege> http://tizen.org/privilege/network.get </privilege>
+    /// <remarks> If you want to receive this event, you must declare this privilege. </remarks>
+    /// <since_tizen> 6 </since_tizen>
+    public static class WifiState
+    {
+        /// <summary>
+        /// Eventname for system-event of wifi state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.wifi_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of wifi state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "wifi_state"; }
+        }
+
+        /// <summary>
+        /// Value of off wifi state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOff
+        {
+            get { return "off"; }
+        }
+
+        /// <summary>
+        /// Value of on wifi state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Value of connected wifi state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueConnected
+        {
+            get { return "connected"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of bluetooth state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class Btstate
+    {
+        /// <summary>
+        /// Eventname for system-event of bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.bt_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "bt_state"; }
+        }
+
+        /// <summary>
+        /// Value of off bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOff
+        {
+            get { return "off"; }
+        }
+
+        /// <summary>
+        /// Value of on bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of low energy bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string LeStateKey
+        {
+            get { return "bt_le_state"; }
+        }
+
+        /// <summary>
+        /// Value of off low energy bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string LeStateValueOff
+        {
+            get { return "off"; }
+        }
+
+        /// <summary>
+        /// Value of on low energy bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string LeStateValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of transfering bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TransferStateKey
+        {
+            get { return "bt_transfering_state"; }
+        }
+
+        /// <summary>
+        /// Value of non transfering bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TransferStateValueNontransfering
+        {
+            get { return "non_transfering"; }
+        }
+
+        /// <summary>
+        /// Value of transfering bluetooth state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TransferStateValueTransfering
+        {
+            get { return "transfering"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of location enable state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class LocatingEnableState
+    {
+        /// <summary>
+        /// Eventname for system-event of location enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.location_enable_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of location enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "location_enable_state"; }
+        }
+
+        /// <summary>
+        /// Value of disabled location enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueDisabled
+        {
+            get { return "disabled"; }
+        }
+
+        /// <summary>
+        /// Value of enabled location enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueEnabled
+        {
+            get { return "enabled"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of gps enable state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class GpsEnableState
+    {
+        /// <summary>
+        /// Eventname for system-event of gps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.gps_enable_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of gps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "gps_enable_state"; }
+        }
+
+        /// <summary>
+        /// Value of disabled gps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueDisabled
+        {
+            get { return "disabled"; }
+        }
+
+        /// <summary>
+        /// Value of enabled gps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueEnabled
+        {
+            get { return "enabled"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of nps enable state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class NpsEnableState
+    {
+        /// <summary>
+        /// Eventname for system-event of nps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.nps_enable_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of nps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "nps_enable_state"; }
+        }
+
+        /// <summary>
+        /// Value of diabled nps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueDisabled
+        {
+            get { return "disabled"; }
+        }
+
+        /// <summary>
+        /// Value of enabled nps enable state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueEnabled
+        {
+            get { return "enabled"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of incoming message
+    /// </summary>
+    /// <privilege> http://tizen.org/privilege/message.read </privilege>
+    /// <remarks> If you want to receive this event, you must declare this privilege. </remarks>
+    /// <since_tizen> 6 </since_tizen>
+    public static class IncomingMsg
+    {
+        /// <summary>
+        /// Event for system-event of incoming message
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.incoming_msg"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of incoming message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeKey
+        {
+            get { return "msg_type"; }
+        }
+
+        /// <summary>
+        /// Value of sms incoming message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeValueSms
+        {
+            get { return "sms"; }
+        }
+
+        /// <summary>
+        /// Value of mms incoming message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeValueMms
+        {
+            get { return "mms"; }
+        }
+
+        /// <summary>
+        /// Value of push incoming message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeValuePush
+        {
+            get { return "push"; }
+        }
+
+        /// <summary>
+        /// Value of cb incoming message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeValueCb
+        {
+            get { return "cb"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of incoming message id
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string IdKey
+        {
+            get { return "msg_id"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of outgoing message
+    /// </summary>
+    /// <privilege> http://tizen.org/privilege/message.read </privilege>
+    /// <remarks> If you want to receive this event, you must declare this privilege. </remarks>
+    /// <since_tizen> 6 </since_tizen>
+    public static class OutgoingMsg
+    {
+        /// <summary>
+        /// Eventname for system-event of outgoing message
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.outgoing_msg"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of outgoing message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeKey
+        {
+            get { return "msg_type"; }
+        }
+
+        /// <summary>
+        /// Value of sms outgoing message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeValueSms
+        {
+            get { return "sms"; }
+        }
+
+        /// <summary>
+        /// Value of mms outgoing message type
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string TypeValueMms
+        {
+            get { return "mms"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of outgoing message id
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string IdKey
+        {
+            get { return "msg_id"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of time changed
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class TimeChanged
+    {
+        /// <summary>
+        /// Eventname for system-event of time changed
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.time_changed"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of time zone
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class TimeZone
+    {
+        /// <summary>
+        /// Eventname for system-event of time zone
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.time_zone"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of time zone
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "time_zone"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of hour format
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class HourFormat
+    {
+        /// <summary>
+        /// Eventname for system-event of hour format
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.hour_format"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of hour format
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "hour_format"; }
+        }
+
+        /// <summary>
+        /// Value of 12 hour format
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Value12
+        {
+            get { return "12"; }
+        }
+
+        /// <summary>
+        /// Value of 24 hour format
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Value24
+        {
+            get { return "24"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of language set
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class LanguageSet
+    {
+        /// <summary>
+        /// Eventname for system-event of language set
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.language_set"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of language set
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "language_set"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of region format
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class RegionFormat
+    {
+        /// <summary>
+        /// Eventname for system-event of region format
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.region_format"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of region format
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "region_format"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of silent mode
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class SilentMode
+    {
+        /// <summary>
+        /// Event for system-event of silent mode
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.silent_mode"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of silent mode
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "silent_mode"; }
+        }
+
+        /// <summary>
+        /// Value of silent mode on
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string ValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Value of silent mode off
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string ValueOff
+        {
+            get { return "off"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of vibration state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class VibrationState
+    {
+        /// <summary>
+        /// Eventname for system-event of vibration state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.vibration_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of vibration state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "vibration_state"; }
+        }
+
+        /// <summary>
+        /// Value vibration state on
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Value vibration state off
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOff
+        {
+            get { return "off"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of auto rotate state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class AutoRotateState
+    {
+        /// <summary>
+        /// Eventname for system-event of auto rotate state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.autorotate_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of auto rotate state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "autorotate_state"; }
+        }
+
+        /// <summary>
+        /// Value of auto rotate state on
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Value of auto rotate state off
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateOff
+        {
+            get { return "off"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of mobile data state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class MobileDataState
+    {
+        /// <summary>
+        /// Eventname for system-event of mobile data state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.mobile_data_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of mobile data state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "mobile_data_state"; }
+        }
+
+        /// <summary>
+        /// Value of mobile data state on
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Value of mobile data state off
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOff
+        {
+            get { return "off"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of data roaming state
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class DataRoamingState
+    {
+        /// <summary>
+        /// Eventname for system-event of data roaming state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.data_roaming_state"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of data roaming state
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateKey
+        {
+            get { return "data_roaming_state"; }
+        }
+
+        /// <summary>
+        /// Value of data roaming state on
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOn
+        {
+            get { return "on"; }
+        }
+
+        /// <summary>
+        /// Value of data roaming state off
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StateValueOff
+        {
+            get { return "off"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of data font set
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class FontSet
+    {
+        /// <summary>
+        /// Eventname for system-event of data font set
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.font_set"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of data font set
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string Key
+        {
+            get { return "font_set"; }
+        }
+    }
+
+    /// <summary>
+    /// Class for system-event of network status
+    /// </summary>
+    /// <since_tizen> 6 </since_tizen>
+    public static class NetworkStatus
+    {
+        /// <summary>
+        /// Eventname for system-event of network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string EventName
+        {
+            get { return "tizen.system.event.network_status"; }
+        }
+
+        /// <summary>
+        /// Key for system-event of network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusKey
+        {
+            get { return "network_status"; }
+        }
+
+        /// <summary>
+        /// Value of disconnected network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueDisconnected
+        {
+            get { return "disconnected"; }
+        }
+
+        /// <summary>
+        /// Value of wifi network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueWifi
+        {
+            get { return "wifi"; }
+        }
+
+        /// <summary>
+        /// Value of cellular network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueCellular
+        {
+            get { return "cellular"; }
+        }
+
+        /// <summary>
+        /// Value of ethernet network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueEthernet
+        {
+            get { return "ethernet"; }
+        }
+
+        /// <summary>
+        /// Value of bt network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueBt
+        {
+            get { return "bt"; }
+        }
+
+        /// <summary>
+        /// Value of net proxy network status
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public static string StatusValueNetProxy
+        {
+            get { return "net_proxy"; }
+        }
+    }
+}