Update doxygen for app_control_set_defapp func
[platform/core/api/application.git] / include / app_alarm.h
1 /*
2  * Copyright (c) 2011 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
18 #ifndef __TIZEN_APPFW_ALARM_H__
19 #define __TIZEN_APPFW_ALARM_H__
20
21 #include <tizen.h>
22 #include <time.h>
23 #include <app_control.h>
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 /**
30  * @file app_alarm.h
31  */
32
33 /**
34  * @addtogroup CAPI_ALARM_MODULE
35  * @{
36  */
37
38 /**
39  * @brief Definition to app_control extra data : the ID of the alarm registered.
40  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
41  */
42 #define APP_CONTROL_DATA_ALARM_ID "http://tizen.org/appcontrol/data/alarm_id"
43
44 /**
45  * @brief Enumeration for Alarm Error.
46  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
47  */
48 typedef enum {
49         ALARM_ERROR_NONE = TIZEN_ERROR_NONE,    /**< Successful */
50         ALARM_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER,  /**< Invalid parameter */
51         ALARM_ERROR_INVALID_TIME = TIZEN_ERROR_APPLICATION | 0x05,      /**< Invalid time */
52         ALARM_ERROR_INVALID_DATE = TIZEN_ERROR_APPLICATION | 0x06,      /**< Invalid date */
53         ALARM_ERROR_CONNECTION_FAIL = TIZEN_ERROR_APPLICATION | 0x07,   /**< The alarm service connection failed */
54         ALARM_ERROR_NOT_PERMITTED_APP = TIZEN_ERROR_APPLICATION | 0x08, /**< Application is not permitted. (Since 2.4) */
55         ALARM_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY,  /**< Out of memory */
56         ALARM_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED   /**< Permission denied */
57 } alarm_error_e;
58
59
60 /**
61  * @brief Enumeration for Alarm Week Flag, the days of the week.
62  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
63  */
64 typedef enum {
65         ALARM_WEEK_FLAG_SUNDAY = 0x01,  /**< Sunday */
66         ALARM_WEEK_FLAG_MONDAY = 0x02,  /**< Monday */
67         ALARM_WEEK_FLAG_TUESDAY = 0x04, /**< Tuesday */
68         ALARM_WEEK_FLAG_WEDNESDAY = 0x08,       /**< Wednesday */
69         ALARM_WEEK_FLAG_THURSDAY = 0x10,        /**< Thursday */
70         ALARM_WEEK_FLAG_FRIDAY = 0x20,  /**< Friday */
71         ALARM_WEEK_FLAG_SATURDAY = 0x40 /**< Saturday */
72 } alarm_week_flag_e;
73
74 /**
75  * @brief Called once for each scheduled alarm to get the alarm ID.
76  *
77  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
78  * @param[in] alarm_id The alarm ID returned when the alarm is scheduled
79  * @param[in] user_data The user data passed from the foreach function
80  * @return @c true to continue with the next iteration of the loop,
81  *         otherwise @c false to break out of the loop
82  * @pre alarm_foreach_registered_alarm() will invoke this callback to get all the registered alarm IDs.
83  * @see alarm_foreach_registered_alarm()
84  */
85 typedef bool (*alarm_registered_alarm_cb)(int alarm_id, void *user_data);
86
87 /**
88  * @brief Sets an alarm to be triggered after a specific time.
89  * @details The alarm will first go off @a delay seconds later and then will go off every certain amount of time defined using @a period seconds.
90  *          To cancel the alarm, call alarm_cancel() with @a alarm_id.
91  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
92  * @privlevel   public
93  * @privilege   %http://tizen.org/privilege/alarm.set
94  * @remarks If the application is uninstalled after setting an alarm, the alarm is cancelled automatically.
95  *          If the operation of @a app_control is not specified, #APP_CONTROL_OPERATION_DEFAULT is used for the launch request.
96  *          If the operation of @a app_control is #APP_CONTROL_OPERATION_DEFAULT, the package information is mandatory to explicitly launch the application.
97  *          Since 2.4, this api does not support exact period and delay for minimizing the wakeups of the device. The system can adjust when the alarm expires.
98  *          If you want to trigger an alarm exactly, see @see alarm_schedule_once_after_delay()
99  *          Since 2.4 If @a app_control is specified with service-application, the application is only allowed to run on which has Background Category.
100  *          Since 2.4 If the appid of @a app_control is not specified, this api is not allowed. In other words, the explicit @a app_control is only allowed.
101  *
102  * @param[in] app_control The destination app_control to perform a specific task when the alarm is triggered
103  * @param[in] delay     The amount of time before the first execution (in seconds). Since 2.4, Although this is inexact, the alarm will not fire before this time
104  * @param[in] period The amount of time between subsequent alarms (in seconds). Since 2.4, This value does not guarantee the accuracy. The actual interval is calculated by the OS. The minimum value is 600sec
105  * @param[out] alarm_id The alarm ID that uniquely identifies an alarm
106  * @return      @c 0 on success,
107  *          otherwise a negative error value
108  * @retval  #ALARM_ERROR_NONE Successful
109  * @retval  #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
110  * @retval  #ALARM_ERROR_INVALID_TIME Triggered time is invalid
111  * @retval  #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
112  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
113  * @retval  #ALARM_ERROR_NOT_PERMITTED_APP @a app_control is not permitted
114  * @see alarm_cancel()
115  * @see alarm_cancel_all()
116  * @see alarm_get_scheduled_date()
117  * @see alarm_get_scheduled_period()
118  * @see alarm_schedule_once_after_delay()
119  */
120 int alarm_schedule_after_delay(app_control_h app_control, int delay, int period, int *alarm_id);
121
122
123 /**
124  * @deprecated Deprecated since 2.4. [Use alarm_schedule_once_at_date() instead]
125  * @brief Sets an alarm to be triggered at a specific time.
126  * @details The @a date describes the time of the first occurrence.
127  *          If @a period is bigger than @c 0, the alarm will be scheduled after the @a period time.
128  *          If @a period is set to @c 0, the alarm will go off just once without repetition.
129  *          To cancel the alarm, call alarm_cancel() with @a alarm_id.
130  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
131  * @privlevel   public
132  * @privilege   %http://tizen.org/privilege/alarm.set
133  * @remarks If application is uninstalled after setting an alarm, the alarm is cancelled automatically.
134  *          If the operation of @a app_control is not specified, #APP_CONTROL_OPERATION_DEFAULT is used for the launch request.
135  *          If the operation of @a app_control is #APP_CONTROL_OPERATION_DEFAULT, the package information is mandatory to explicitly launch the application.
136  *
137  * @param[in]   app_control The destination app_control to perform specific work when the alarm is triggered
138  * @param[in]   date    The first active alarm time
139  * @param[in]   period  The amount of time between subsequent alarms(in second)
140  * @param[out]  alarm_id        The alarm ID that uniquely identifies an alarm
141  * @return      @c 0 on success,
142  *          otherwise a negative error value
143  * @retval  #ALARM_ERROR_NONE   Successful
144  * @retval  #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
145  * @retval  #ALARM_ERROR_INVALID_DATE Triggered date is invalid
146  * @retval  #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
147  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
148  * @see alarm_cancel()
149  * @see alarm_cancel_all()
150  * @see alarm_get_scheduled_date()
151  * @see alarm_get_scheduled_period()
152  */
153 int alarm_schedule_at_date(app_control_h app_control, struct tm *date, int period, int *alarm_id);
154
155 /**
156  * @brief Sets an alarm to be triggered after a specific time.
157  * @details The alarm will go off @a delay seconds later.
158  *          To cancel the alarm, call alarm_cancel() with @a alarm_id.
159  * @since_tizen 2.4
160  * @privlevel   public
161  * @privilege   %http://tizen.org/privilege/alarm.set
162  * @remarks If the application is uninstalled after setting an alarm, the alarm is cancelled automatically.
163  *          If the operation of @a app_control is not specified, #APP_CONTROL_OPERATION_DEFAULT is used for the launch request.
164  *          If the operation of @a app_control is #APP_CONTROL_OPERATION_DEFAULT, the package information is mandatory to explicitly launch the application.
165  *          If the appid of @a app_control is not specified, this api is not allowed. In other words, the explicit @a app_control is only allowed.
166  *          The @a app_control only supports UI application with this api. If @a app_control is not UI application, #ALARM_ERROR_NOT_PERMITTED_APP returned.
167  *          When the alarm is expired, Alarm Manager will turn on LCD to prohibit background jobs.
168  *
169  * @param[in] app_control The destination app_control to perform a specific task when the alarm is triggered
170  * @param[in] delay     The amount of time before the execution (in seconds)
171  * @param[out] alarm_id The alarm ID that uniquely identifies an alarm
172  * @return      @c 0 on success,
173  *          otherwise a negative error value
174  * @retval  #ALARM_ERROR_NONE Successful
175  * @retval  #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
176  * @retval  #ALARM_ERROR_INVALID_TIME Triggered time is invalid
177  * @retval  #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
178  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
179  * @retval  #ALARM_ERROR_NOT_PERMITTED_APP @a app_control is not permitted. @a app_control for UI application is only permitted.
180  * @see alarm_cancel()
181  * @see alarm_cancel_all()
182  * @see alarm_get_scheduled_date()
183  */
184 int alarm_schedule_once_after_delay(app_control_h app_control, int delay, int *alarm_id);
185
186
187 /**
188  * @brief Sets an alarm to be triggered at a specific time.
189  * @details The @a date describes the time of the first occurrence.
190  *          To cancel the alarm, call alarm_cancel() with @a alarm_id.
191  * @since_tizen 2.4
192  * @privlevel   public
193  * @privilege   %http://tizen.org/privilege/alarm.set
194  * @remarks If application is uninstalled after setting an alarm, the alarm is cancelled automatically.
195  *          If the operation of @a app_control is not specified, #APP_CONTROL_OPERATION_DEFAULT is used for the launch request.
196  *          If the operation of @a app_control is #APP_CONTROL_OPERATION_DEFAULT, the package information is mandatory to explicitly launch the application.
197  *          If the appid of @a app_control is not specified, this api is not allowed. In other words, the explicit @a app_control is only allowed.
198  *          The @a app_control only supports UI application with this api. If @a app_control is not UI application, #ALARM_ERROR_NOT_PERMITTED_APP returned.
199  *          When the alarm is expired, Alarm Manager will turn on LCD to prohibit background jobs.
200  *
201  * @param[in]   app_control The destination app_control to perform specific work when the alarm is triggered
202  * @param[in]   date    The first active alarm time
203  * @param[out]  alarm_id        The alarm ID that uniquely identifies an alarm
204  * @return      @c 0 on success,
205  *          otherwise a negative error value
206  * @retval  #ALARM_ERROR_NONE   Successful
207  * @retval  #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
208  * @retval  #ALARM_ERROR_INVALID_DATE Triggered date is invalid
209  * @retval  #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
210  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
211  * @retval  #ALARM_ERROR_NOT_PERMITTED_APP @a app_control is not permitted. @a app_control for UI application is only permitted.
212  * @see alarm_cancel()
213  * @see alarm_cancel_all()
214  * @see alarm_get_scheduled_date()
215  */
216 int alarm_schedule_once_at_date(app_control_h app_control, struct tm *date, int *alarm_id);
217
218
219 /**
220  * @brief Sets an alarm to be triggered periodically, starting at a specific time.
221  * @details The @a date describes the time of the first occurrence.
222  *              @a week_flag is the repeat value of the days of the week.
223  *              If @a week_flag is #ALARM_WEEK_FLAG_TUESDAY, the alarm will repeat every Tuesday at a specific time.
224  *              To cancel the alarm, call alarm_cancel() with @a alarm_id.
225  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
226  * @privlevel   public
227  * @privilege   %http://tizen.org/privilege/alarm.set
228  * @remarks If the application is uninstalled after setting an alarm, the alarm is cancelled automatically.
229  *          If the operation of @a app_control is not specified, #APP_CONTROL_OPERATION_DEFAULT is used for the launch request.
230  *          If the operation of @a app_control is #APP_CONTROL_OPERATION_DEFAULT, the package information is mandatory to explicitly launch the application.
231  *          Since 2.4, The @a app_control only supports UI application with this api. If @a app_control is not UI application, #ALARM_ERROR_NOT_PERMITTED_APP returned.
232  *          When the alarm is expired, Alarm Manager will turn on LCD to prohibit background jobs.
233  *          Since 2.4, If the appid of @a app_control is not specified, this api is not allowed. In other words, the explicit @a app_control is only allowed.
234  *
235  * @param[in] app_control The destination app_control to perform specific work when the alarm is triggered
236  * @param[in] date      The first active alarm time
237  * @param[in] week_flag The day of the week, @a week_flag may be a combination of days, like #ALARM_WEEK_FLAG_TUESDAY | #ALARM_WEEK_FLAG_FRIDAY
238  * @param[out] alarm_id The alarm ID that uniquely identifies an alarm
239  * @return @c 0 on success,
240  *         otherwise a negative error value
241  * @retval #ALARM_ERROR_NONE Successful
242  * @retval #ALARM_ERROR_INVALID_PARAMETER Invalid parameter
243  * @retval #ALARM_ERROR_INVALID_DATE Triggered date is invalid
244  * @retval #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
245  * @retval #ALARM_ERROR_PERMISSION_DENIED Permission denied
246  * @retval #ALARM_ERROR_NOT_PERMITTED_APP @a app_control is not permitted. @a app_control for UI application is only permitted.
247  * @see alarm_cancel()
248  * @see alarm_cancel_all()
249  * @see alarm_get_scheduled_recurrence_week_flag()
250  * @see alarm_get_scheduled_date()
251  * @see #alarm_week_flag_e
252  */
253 int alarm_schedule_with_recurrence_week_flag(app_control_h app_control, struct tm *date, int week_flag,int *alarm_id);
254
255
256 /**
257  * @brief Gets the recurrence days of the week.
258  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
259  * @privlevel   public
260  * @privilege   %http://tizen.org/privilege/alarm.get
261  * @remarks If the given @a alarm_id is not obtained by using the alarm_schedule_with_recurrence_week_flag() function,
262  *          an error (error code #ALARM_ERROR_INVALID_PARAMETER) will occur because this alarm is scheduled with no recurrence.
263  *          If the operation of @a app_control is not specified, #APP_CONTROL_OPERATION_DEFAULT is used for the launch request.
264  *          If the operation of @a app_control is #APP_CONTROL_OPERATION_DEFAULT, the package information is mandatory to explicitly launch the application.
265  * @param[in] alarm_id The alarm ID returned when the alarm is scheduled
266  * @param[out] week_flag The recurrence days of the week, @a week_flag may be a combination of days, like #ALARM_WEEK_FLAG_TUESDAY | #ALARM_WEEK_FLAG_FRIDAY
267  * @return @c 0 on success,
268  *         otherwise a negative error value
269  * @retval #ALARM_ERROR_NONE Successful
270  * @retval #ALARM_ERROR_INVALID_PARAMETER Invalid parameter
271  * @retval #ALARM_ERROR_PERMISSION_DENIED Permission denied
272  * @see alarm_schedule_with_recurrence_week_flag()
273  * @see #alarm_week_flag_e
274  */
275 int alarm_get_scheduled_recurrence_week_flag(int alarm_id, int *week_flag);
276
277
278 /**
279  * @brief Cancels the alarm with the specific alarm ID.
280  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
281  * @privlevel   public
282  * @privilege   %http://tizen.org/privilege/alarm.set
283  * @param[in] alarm_id  The alarm ID that is cancelled
284  * @return @c 0 on success,
285  *         otherwise a negative error value
286  * @retval #ALARM_ERROR_NONE Successful
287  * @retval #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
288  * @retval #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
289  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
290  * @see alarm_schedule_at_date()
291  * @see alarm_schedule_after_delay()
292  * @see alarm_schedule_with_recurrence_week_flag()
293  * @see alarm_cancel_all()
294  */
295 int alarm_cancel(int alarm_id);
296
297
298 /**
299  * @brief Cancels all scheduled alarms that are registered by the application that calls this API.
300  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
301  * @privlevel   public
302  * @privilege   %http://tizen.org/privilege/alarm.set
303  * @return  @c 0 on success,
304  *          otherwise a negative error value
305  * @retval  #ALARM_ERROR_NONE Successful
306  * @retval  #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
307  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
308  * @see alarm_schedule_at_date()
309  * @see alarm_schedule_after_delay()
310  * @see alarm_schedule_with_recurrence_week_flag()
311  * @see alarm_cancel()
312  */
313 int alarm_cancel_all(void);
314
315
316 /**
317  * @brief Retrieves the IDs of all registered alarms by invoking a callback once for each scheduled alarm.
318  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
319  * @privlevel   public
320  * @privilege   %http://tizen.org/privilege/alarm.get
321  * @param[in] callback The callback function to invoke
322  * @param[in] user_data The user data to be passed to the callback function
323  * @return @c 0 on success,
324  *         otherwise a negative error value
325  * @retval #ALARM_ERROR_NONE   Successful
326  * @retval #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
327  * @retval #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
328  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
329  * @post   This function invokes alarm_registered_alarm_cb() repeatedly for each registered alarm.
330  * @see alarm_registered_alarm_cb()
331  */
332 int alarm_foreach_registered_alarm(alarm_registered_alarm_cb callback, void *user_data);
333
334
335 /**
336  * @brief Gets the scheduled time from the given alarm ID in C standard time struct.
337  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
338  * @privlevel   public
339  * @privilege   %http://tizen.org/privilege/alarm.get
340  * @param[in] alarm_id The alarm ID returned when the alarm is scheduled
341  * @param[out] date     The time value of the next alarm event
342  * @return @c 0 on success,
343  *         otherwise a negative error value
344  * @retval #ALARM_ERROR_NONE   Successful
345  * @retval #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
346  * @retval #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
347  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
348  * @see alarm_schedule_at_date()
349  * @see alarm_schedule_after_delay()
350  * @see alarm_schedule_with_recurrence_week_flag()
351  */
352 int alarm_get_scheduled_date(int alarm_id, struct tm *date);
353
354
355 /**
356  * @brief Gets the period of time between the recurrent alarms.
357  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
358  * @privlevel   public
359  * @privilege   %http://tizen.org/privilege/alarm.get
360  * @remarks If the given @a alarm_id is not obtained by using the alarm_schedule_at_date() or alarm_schedule_after_delay() function,
361  *          an error (error code #ALARM_ERROR_INVALID_PARAMETER) will occur.
362  * @param[in] alarm_id The alarm ID returned when the alarm is scheduled
363  * @param[out] period The period of time between recurrent alarms in seconds
364  * @return @c 0 on success,
365  *         otherwise a negative error value
366  * @retval #ALARM_ERROR_NONE   Successful
367  * @retval #ALARM_ERROR_INVALID_PARAMETER Invalid parameter
368  * @retval #ALARM_ERROR_CONNECTION_FAIL Failed to connect to an alarm server
369  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
370  * @see alarm_schedule_at_date()
371  * @see alarm_schedule_after_delay()
372  * @see alarm_schedule_with_recurrence_week_flag()
373  */
374 int alarm_get_scheduled_period(int alarm_id, int *period);
375
376
377 /**
378  * @brief Gets the current system time using C standard time struct.
379  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
380  * @param[out] date The current system time
381  * @return @c 0 on success,
382  *         otherwise a negative error value
383  * @retval #ALARM_ERROR_NONE Successful
384  * @retval #ALARM_ERROR_INVALID_PARAMETER  Invalid parameter
385  * @retval  #ALARM_ERROR_PERMISSION_DENIED Permission denied
386  */
387 int alarm_get_current_time(struct tm *date);
388
389
390 /**
391  * @brief Gets the app_control to be invoked when the the alarm is triggered.
392  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
393  * @privlevel   public
394  * @privilege   %http://tizen.org/privilege/alarm.get
395  * @remarks The @a app_control must be released using app_control_destroy().
396  * @param[in] alarm_id The alarm ID uniquely identifies an alarm
397  * @param[out] app_control The app_control handle to launch when the alarm is triggered
398  * @return @c 0 on success,
399  *         otherwise a negative error value
400  * @retval #ALARM_ERROR_NONE Successful
401  * @retval #ALARM_ERROR_INVALID_PARAMETER Invalid parameter
402  * @retval #ALARM_ERROR_OUT_OF_MEMORY Out of memory
403  * @retval #ALARM_ERROR_PERMISSION_DENIED Permission denied
404  * @see alarm_schedule_at_date()
405  * @see alarm_schedule_after_delay()
406  * @see alarm_schedule_with_recurrence_week_flag()
407  */
408 int alarm_get_app_control(int alarm_id, app_control_h *app_control);
409
410 /**
411  * @}
412  */
413
414 #ifdef __cplusplus
415 }
416 #endif
417
418 #endif /* __TIZEN_APPFW_ALARM_H__ */
419