Merge remote-tracking branch 'origin/API8' into tizen_6.0
[platform/core/csapi/tizenfx.git] / src / Tizen.Applications.Alarm / Interop / Interop.Alarm.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Runtime.InteropServices;
19
20 using Tizen.Internals;
21 using Tizen.Applications;
22 using Tizen.Applications.Notifications;
23
24 internal static partial class Interop
25 {
26     internal static partial class Alarm
27     {
28         [NativeStruct("struct tm", Include="time.h")]
29         [StructLayout(LayoutKind.Sequential)]
30         internal struct DateTime
31         {
32             internal int sec;
33             internal int min;
34             internal int hour;
35             internal int mday; /* day of the month, range 1 to 31*/
36             internal int mon;
37             internal int year;
38             internal int wday; /* day of the week, range 0 to 6*/
39             internal int yday; /* day in the year, range 0 to 365*/
40             internal int isdst; /* daylight saving time*/
41             internal IntPtr tm_gmtoff; // Workaround: Use IntPtr instead of long type to match struct size with "struct tm" in time.h
42             internal IntPtr tm_zone;
43         };
44
45         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_after_delay")]
46         internal static extern int CreateAlarmAfterDelay(SafeAppControlHandle appControl, int delay, int period, out int alarmId);
47
48         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_once_after_delay")]
49         internal static extern int CreateAlarmOnceAfterDelay(SafeAppControlHandle appControl, int delay, out int alarmId);
50
51         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_once_at_date")]
52         internal static extern int CreateAlarmOnceAtDate(SafeAppControlHandle appControl, ref DateTime date, out int alarmId);
53
54         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_with_recurrence_week_flag")]
55         internal static extern int CreateAlarmRecurWeek(SafeAppControlHandle appControl, ref DateTime date, int week, out int alarmId);
56
57         [DllImport(Libraries.Alarm, EntryPoint = "alarm_get_scheduled_recurrence_week_flag")]
58         internal static extern int GetAlarmWeekFlag(int alarmId, out int weekFlag);
59
60         [DllImport(Libraries.Alarm, EntryPoint = "alarm_cancel")]
61         internal static extern int CancelAlarm(int alarmId);
62
63         [DllImport(Libraries.Alarm, EntryPoint = "alarm_cancel_all")]
64         internal static extern int CancelAllAlarms();
65
66         [DllImport(Libraries.Alarm, EntryPoint = "alarm_get_scheduled_date")]
67         internal static extern int GetAlarmScheduledDate(int alarmId, out DateTime date);
68
69         [DllImport(Libraries.Alarm, EntryPoint = "alarm_get_current_time")]
70         internal static extern int GetCurrentTime(out DateTime date);
71
72         [DllImport(Libraries.Alarm, EntryPoint = "alarm_get_app_control")]
73         internal static extern int GetAlarmAppControl(int alarmId, out SafeAppControlHandle control);
74
75         [DllImport(Libraries.Alarm, EntryPoint = "alarm_get_scheduled_period")]
76         internal static extern int GetAlarmScheduledPeriod(int alarmId, out int period);
77
78         [DllImport(Libraries.Alarm, EntryPoint = "alarm_set_global")]
79         internal static extern int SetAlarmGlobalFlag(int alarmId, bool global);
80
81         [DllImport(Libraries.Alarm, EntryPoint = "alarm_get_global")]
82         internal static extern int GetAlarmGlobalFlag(int alarmId, out bool global);
83
84         [DllImport(Libraries.Alarm, EntryPoint = "alarm_foreach_registered_alarm")]
85         internal static extern int GetAllRegisteredAlarms(RegisteredAlarmCallback callback, IntPtr userData);
86
87         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_noti_once_at_date")]
88         internal static extern AlarmError CreateAlarmNotiOnceAtDate(NotificationSafeHandle noti, ref DateTime date, out int alarmId);
89
90         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_noti_after_delay")]
91         internal static extern AlarmError CreateAlarmNotiAfterDelay(NotificationSafeHandle noti, int delay, int period, out int alarmId);
92
93         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_noti_once_after_delay")]
94         internal static extern AlarmError CreateAlarmNotiOnceAfterDelay(NotificationSafeHandle noti, int delay, out int alarmId);
95
96         [DllImport(Libraries.Alarm, EntryPoint = "alarm_schedule_noti_with_recurrence_week_flag")]
97         internal static extern AlarmError CreateAlarmNotiRecurWeek(NotificationSafeHandle noti, ref DateTime date, int week, out int alarmId);
98
99         [DllImport(Libraries.Alarm, EntryPoint = "alarm_update_delay")]
100         internal static extern AlarmError UpdateDelay(int alarmId, int delay);
101
102         [DllImport(Libraries.Alarm, EntryPoint = "alarm_update_date")]
103         internal static extern AlarmError UpdateDate(int alarmId, ref DateTime date);
104
105         [DllImport(Libraries.Alarm, EntryPoint = "alarm_update_period")]
106         internal static extern AlarmError UpdatePeriod(int alarmId, int period);
107
108         [DllImport(Libraries.Alarm, EntryPoint = "alarm_update_week_flag")]
109         internal static extern AlarmError UpdateWeekFlag(int alarmId, int week);
110
111         //callback
112         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
113         internal delegate bool RegisteredAlarmCallback(int alarmId, IntPtr userData);
114     }
115 }