2 * Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #include <sys/types.h>
21 #include <notification.h>
22 #include <notification_ipc.h>
25 #include "alarm-internal.h"
27 bool _send_alarm_create_noti(alarm_context_t context, alarm_info_t *alarm_info,
28 alarm_id_t *alarm_id, notification_h noti, int *error_code)
32 GVariant *noti_gv = NULL;
36 GVariant *param = NULL;
37 GVariant *reply = NULL;
39 noti_gv = notification_ipc_make_gvariant_from_noti(noti, true);
42 *error_code = ERR_ALARM_SYSTEM_FAIL;
46 datalen = g_variant_get_size(noti_gv);
50 data = malloc(datalen);
54 g_variant_store(noti_gv, data);
55 noti_data = g_base64_encode((guchar *)data, datalen);
57 param = g_variant_new("(iiiiiiiiiixiixs)",
58 alarm_info->start.year,
59 alarm_info->start.month,
60 alarm_info->start.day,
61 alarm_info->start.hour,
62 alarm_info->start.min,
63 alarm_info->start.sec,
65 alarm_info->end.month,
67 alarm_info->mode.u_interval.day_of_week,
68 (gint64)alarm_info->mode.u_interval.interval,
69 alarm_info->mode.repeat,
70 alarm_info->alarm_type,
71 (gint64)alarm_info->reserved_info,
78 g_variant_unref(noti_gv);
80 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_create_noti", param,
81 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
84 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
85 *error_code = ERR_ALARM_NO_PERMISSION;
87 *error_code = ERR_ALARM_SYSTEM_FAIL;
90 LOGE("g_dbus_proxy_call_sync() failed. alarm_id[%d],\
91 return_code[%d].error->message is %s(%d)", *(int *)alarm_id,
92 return_code, error->message, error->code);
97 g_variant_get(reply, "(ii)", alarm_id, &return_code);
99 LOGD("alarm_create_noti() success. alarm_id[%d], return_code[%d].",
100 *alarm_id, return_code);
102 if (return_code != 0) {
104 *error_code = return_code;
106 g_variant_unref(reply);
110 g_variant_unref(reply);
114 bool _send_alarm_create_appsvc(alarm_context_t context, alarm_info_t *alarm_info,
115 alarm_id_t *alarm_id, bundle *b, int *error_code)
117 GError *error = NULL;
118 int return_code = -1;
119 bundle_raw *b_data = NULL;
121 GVariant *param = NULL;
122 GVariant *reply = NULL;
124 if (bundle_encode(b, &b_data, &datalen)) {
125 LOGE("Unable to encode the bundle data\n");
127 *error_code = ERR_ALARM_SYSTEM_FAIL;
131 param = g_variant_new("(iiiiiiiiiixiixs)",
132 alarm_info->start.year,
133 alarm_info->start.month,
134 alarm_info->start.day,
135 alarm_info->start.hour,
136 alarm_info->start.min,
137 alarm_info->start.sec,
138 alarm_info->end.year,
139 alarm_info->end.month,
141 alarm_info->mode.u_interval.day_of_week,
142 (gint64)alarm_info->mode.u_interval.interval,
143 alarm_info->mode.repeat,
144 alarm_info->alarm_type,
145 (gint64)alarm_info->reserved_info,
151 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_create_appsvc", param,
152 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
155 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
156 *error_code = ERR_ALARM_NO_PERMISSION;
158 *error_code = ERR_ALARM_SYSTEM_FAIL;
161 LOGE("g_dbus_proxy_call_sync() failed.\
162 alarm_id[%d], return_code[%d]. error->message is %s(%d)",
163 *alarm_id, return_code, error->message, error->code);
168 g_variant_get(reply, "(ii)", alarm_id, &return_code);
170 LOGD("alarm_create_appsvc() success. alarm_id[%d], return_code[%d].",
171 *alarm_id, return_code);
173 if (return_code != 0) {
175 *error_code = return_code;
177 g_variant_unref(reply);
181 g_variant_unref(reply);
185 bool _send_alarm_create(alarm_context_t context, alarm_info_t *alarm_info,
186 alarm_id_t *alarm_id, const char *dst_service_name, const char *dst_service_name_mod,
189 GError *error = NULL;
190 int return_code = -1;
191 GVariant *param = NULL;
192 GVariant *reply = NULL;
194 /*TODO: Dbus bus name validation is must & will be added to avoid alarm-server crash*/
195 if (context.app_service_name == NULL
196 && strlen(dst_service_name) == 4
197 && strncmp(dst_service_name, "null", 4) == 0) {
198 LOGE("Invalid arg. Provide valid destination or call alarmmgr_init()\n");
200 *error_code = ERR_ALARM_INVALID_PARAM;
204 param = g_variant_new("(ssiiiiiiiiiiiiixss)",
205 context.app_service_name,
206 context.app_service_name_mod,
207 alarm_info->start.year,
208 alarm_info->start.month,
209 alarm_info->start.day,
210 alarm_info->start.hour,
211 alarm_info->start.min,
212 alarm_info->start.sec,
214 alarm_info->end.year,
215 alarm_info->end.month,
217 alarm_info->mode.u_interval.day_of_week,
218 alarm_info->mode.repeat,
219 alarm_info->alarm_type,
220 (gint64)alarm_info->reserved_info,
221 dst_service_name, dst_service_name_mod);
223 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_create", param,
224 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
227 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
228 *error_code = ERR_ALARM_NO_PERMISSION;
230 *error_code = ERR_ALARM_SYSTEM_FAIL;
233 LOGE("g_dbus_proxy_call_sync() failed.\
234 alarm_id[%d], return_code[%d]. error->message is %s(%d)",
235 *alarm_id, return_code, error->message, error->code);
241 g_variant_get(reply, "(ii)", alarm_id, &return_code);
243 LOGD("alarm_create() dbus sync success. alarm_id[%d], return_code[%d].",
244 *alarm_id, return_code);
246 if (return_code != 0) {
248 *error_code = return_code;
250 g_variant_unref(reply);
254 g_variant_unref(reply);
258 bool _send_alarm_create_periodic(alarm_context_t context, int interval, int is_ref,
259 int method, alarm_id_t *alarm_id, int *error_code)
261 GError *error = NULL;
262 int return_code = -1;
263 GVariant *param = NULL;
264 GVariant *reply = NULL;
266 if (context.app_service_name == NULL) {
267 LOGE("Invalid arg. Provide valid destination or call alarmmgr_init()\n");
269 *error_code = ERR_ALARM_INVALID_PARAM;
273 param = g_variant_new("(ssiii)",
274 context.app_service_name,
275 context.app_service_name_mod,
276 interval, is_ref, method);
278 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_create_periodic", param,
279 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
282 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
283 *error_code = ERR_ALARM_NO_PERMISSION;
285 *error_code = ERR_ALARM_SYSTEM_FAIL;
288 LOGE("g_dbus_proxy_call_sync() failed.\
289 alarm_id[%d], return_code[%d]. error->message is %s(%d)",
290 *(int *)alarm_id, return_code, error->message, error->code);
297 g_variant_get(reply, "(ii)", alarm_id, &return_code);
299 LOGD("alarm_create_periodic() dbus sync success. alarm_id[%d], return_code[%d].",
300 *alarm_id, return_code);
302 if (return_code != 0) {
304 *error_code = return_code;
306 g_variant_unref(reply);
310 g_variant_unref(reply);
314 bundle *_send_alarm_get_appsvc_info(alarm_context_t context, alarm_id_t alarm_id, int *error_code)
316 GError *error = NULL;
317 int return_code = -1;
319 gchar *b_data = NULL;
320 GVariant *param = NULL;
321 GVariant *reply = NULL;
323 param = g_variant_new("(i)", alarm_id);
325 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_appsvc_info", param,
326 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
329 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
330 *error_code = ERR_ALARM_NO_PERMISSION;
332 *error_code = ERR_ALARM_SYSTEM_FAIL;
335 LOGE("g_dbus_proxy_call_sync() failed.\
336 alarm_id[%d], return_code[%d]. error->message is %s(%d)",
337 alarm_id, return_code, error->message, error->code);
344 g_variant_get(reply, "(si)", &b_data, &return_code);
346 LOGD("alarm_get_appsvc_info() dbus sync success. return_code[%d].",
349 if (return_code != 0) {
351 *error_code = return_code;
353 b = bundle_decode((bundle_raw *)b_data, strlen(b_data));
359 g_variant_unref(reply);
363 notification_h _send_alarm_get_noti_info(alarm_context_t context, alarm_id_t alarm_id, int *error_code)
365 GError *error = NULL;
366 int return_code = -1;
368 GVariant *noti_gv = NULL;
369 GVariant *body = NULL;
370 notification_h noti = NULL;
371 gchar *noti_data = NULL;
373 GVariant *param = NULL;
374 GVariant *reply = NULL;
376 param = g_variant_new("(i)", alarm_id);
378 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_noti_info", param,
379 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
382 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
383 *error_code = ERR_ALARM_NO_PERMISSION;
385 *error_code = ERR_ALARM_SYSTEM_FAIL;
388 LOGE("g_dbus_proxy_call_sync() failed.\
389 alarm_id[%d], return_code[%d]. error->message is %s(%d)",
390 alarm_id, return_code, error->message, error->code);
397 g_variant_get(reply, "(si)", ¬i_data, &return_code);
399 LOGD("alarm_get_noti_info() dbus sync success. return_code[%d].",
402 if (return_code != 0) {
404 *error_code = return_code;
406 data = g_base64_decode(noti_data, (gsize *)&datalen);
408 noti_gv = g_variant_new_from_data(G_VARIANT_TYPE("(v)"),
412 g_variant_get(noti_gv, "(v)", &body);
414 noti = notification_create(NOTIFICATION_TYPE_NOTI);
415 notification_ipc_make_noti_from_gvariant(noti, body);
418 g_variant_unref(noti_gv);
424 g_variant_unref(reply);
428 bool _send_alarm_set_rtc_time(alarm_context_t context, alarm_date_t *time, int *error_code)
430 GError *error = NULL;
431 int return_code = -1;
432 GVariant *param = NULL;
433 GVariant *reply = NULL;
435 param = g_variant_new("(iiiiii)", time->year, time->month, time->day,
436 time->hour, time->min, time->sec);
438 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_rtc_time", param,
439 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
442 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
443 *error_code = ERR_ALARM_NO_PERMISSION;
445 *error_code = ERR_ALARM_SYSTEM_FAIL;
448 LOGE("g_dbus_proxy_call_sync() failed.\
449 return_code[%d]. error->message is %s(%d)",
450 return_code, error->message, error->code);
457 g_variant_get(reply, "(i)", &return_code);
459 LOGD("alarm_set_rtc_time() dbus sync success. return_code[%d].",
462 if (return_code != 0) {
464 *error_code = return_code;
466 g_variant_unref(reply);
470 g_variant_unref(reply);
474 bool _send_alarm_delete(alarm_context_t context, alarm_id_t alarm_id, int *error_code)
476 GError *error = NULL;
477 int return_code = -1;
478 GVariant *param = NULL;
479 GVariant *reply = NULL;
481 param = g_variant_new("(i)", alarm_id);
483 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_delete", param,
484 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
487 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
488 *error_code = ERR_ALARM_NO_PERMISSION;
490 *error_code = ERR_ALARM_SYSTEM_FAIL;
493 LOGE("g_dbus_proxy_call_sync() failed.\
494 alarm_id[%d], return_code[%d]. error->message is %s(%d)",
495 alarm_id, return_code, error->message, error->code);
502 g_variant_get(reply, "(i)", &return_code);
504 LOGD("alarm_delete() dbus sync success. return_code[%d].",
507 if (return_code != 0) {
509 *error_code = return_code;
511 g_variant_unref(reply);
515 g_variant_unref(reply);
519 bool _send_alarm_delete_all(alarm_context_t context, int *error_code)
521 GError *error = NULL;
522 int return_code = -1;
523 GVariant *reply = NULL;
525 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_delete_all", NULL,
526 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
529 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
530 *error_code = ERR_ALARM_NO_PERMISSION;
532 *error_code = ERR_ALARM_SYSTEM_FAIL;
535 LOGE("g_dbus_proxy_call_sync() failed.\
536 return_code[%d]. error->message is %s(%d)",
537 return_code, error->message, error->code);
543 g_variant_get(reply, "(i)", &return_code);
545 LOGD("alarm_delete_all() dbus sync success. return_code[%d].",
548 if (return_code != 0) {
550 *error_code = return_code;
552 g_variant_unref(reply);
556 g_variant_unref(reply);
560 bool _send_alarm_get_list_of_ids(alarm_context_t context, int maxnum_of_ids,
561 GVariantIter **iter, int *num_of_ids,
564 GError *error = NULL;
565 int return_code = -1;
566 GVariantIter *iter_temp = NULL;
567 GVariant *arr = NULL;
568 GVariant *param = NULL;
569 GVariant *reply = NULL;
571 param = g_variant_new("(i)", maxnum_of_ids);
573 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_list_of_ids", param,
574 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
577 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
578 *error_code = ERR_ALARM_NO_PERMISSION;
580 *error_code = ERR_ALARM_SYSTEM_FAIL;
582 LOGE("g_dbus_proxy_call_sync() failed.\
583 return_code[%d]. error->message is %s(%d)",
584 return_code, error->message, error->code);
591 g_variant_get(reply, "(@aiii)", &arr, num_of_ids, &return_code);
592 g_variant_get(arr, "ai", &iter_temp);
594 LOGD("alarm_get_list_of_ids() dbus sync success. return_code[%d].",
597 if (return_code != 0) {
599 *error_code = return_code;
601 g_variant_unref(reply);
607 g_variant_unref(reply);
612 bool _send_alarm_get_number_of_ids(alarm_context_t context, int *num_of_ids,
615 GError *error = NULL;
616 int return_code = -1;
617 GVariant *reply = NULL;
619 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_number_of_ids", NULL,
620 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
623 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
624 *error_code = ERR_ALARM_NO_PERMISSION;
626 *error_code = ERR_ALARM_SYSTEM_FAIL;
629 LOGE("g_dbus_proxy_call_sync() failed.\
630 return_code[%d]. error->message is %s(%d)",
631 return_code, error->message, error->code);
637 g_variant_get(reply, "(ii)", num_of_ids, &return_code);
639 LOGD("alarm_get_number_of_ids() dbus sync success.\
640 num_of_ids[%d] return_code[%d].",
641 *num_of_ids, return_code);
643 if (return_code != 0) {
645 *error_code = return_code;
647 g_variant_unref(reply);
651 g_variant_unref(reply);
655 bool _send_alarm_get_info(alarm_context_t context, alarm_id_t alarm_id,
656 alarm_info_t *alarm_info, int *error_code)
658 GError *error = NULL;
659 int return_code = -1;
660 GVariant *param = NULL;
661 GVariant *reply = NULL;
662 gint64 tmp_reserved_info;
663 param = g_variant_new("(i)", alarm_id);
665 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_info", param,
666 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
669 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
670 *error_code = ERR_ALARM_NO_PERMISSION;
672 *error_code = ERR_ALARM_SYSTEM_FAIL;
675 LOGE("g_dbus_proxy_call_sync() failed.\
676 alarm_id [%d] return_code[%d]. error->message is %s(%d)",
677 alarm_id, return_code, error->message, error->code);
683 g_variant_get(reply, "(iiiiiiiiiiiixi)",
684 &alarm_info->start.year,
685 &alarm_info->start.month,
686 &alarm_info->start.day,
687 &alarm_info->start.hour,
688 &alarm_info->start.min,
689 &alarm_info->start.sec,
690 &alarm_info->end.year,
691 &alarm_info->end.month,
692 &alarm_info->end.day,
693 &alarm_info->mode.u_interval.day_of_week,
694 &alarm_info->mode.repeat,
695 &alarm_info->alarm_type,
698 alarm_info->reserved_info = (time_t)tmp_reserved_info;
700 LOGD("alarm_get_info() dbus sync success. return_code[%d].",
703 if (return_code != 0) {
705 *error_code = return_code;
707 g_variant_unref(reply);
711 g_variant_unref(reply);
715 bool _send_alarm_get_next_duetime(alarm_context_t context, alarm_id_t alarm_id,
716 time_t *duetime, int *error_code)
718 GError *error = NULL;
719 int return_code = -1;
720 GVariant *param = NULL;
721 GVariant *reply = NULL;
724 param = g_variant_new("(i)", alarm_id);
726 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_next_duetime", param,
727 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
730 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
731 *error_code = ERR_ALARM_NO_PERMISSION;
733 *error_code = ERR_ALARM_SYSTEM_FAIL;
736 LOGE("g_dbus_proxy_call_sync() failed.\
737 alarm_id [%d] return_code[%d]. error->message is %s(%d)",
738 alarm_id, return_code, error->message, error->code);
744 g_variant_get(reply, "(xi)", &_duetime, &return_code);
746 LOGD("alarm_get_next_duetime() dbus sync success. return_code[%d].",
749 if (return_code != 0) {
751 *error_code = return_code;
753 g_variant_unref(reply);
757 *duetime = (time_t)_duetime;
758 g_variant_unref(reply);
762 bool _send_alarm_get_all_info(alarm_context_t context, char **db_path, int *error_code)
764 GError *error = NULL;
765 int return_code = -1;
766 GVariant *reply = NULL;
767 char *_db_path = NULL;
769 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_all_info", NULL,
770 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
773 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
774 *error_code = ERR_ALARM_NO_PERMISSION;
776 *error_code = ERR_ALARM_SYSTEM_FAIL;
779 LOGE("g_dbus_proxy_call_sync() failed.\
780 return_code[%d]. error->message is %s(%d)",
781 return_code, error->message, error->code);
787 g_variant_get(reply, "(si)", &_db_path, &return_code);
789 LOGD("alarm_get_all_info() dbus sync success. db_path[%s] return_code[%d].",
790 *db_path, return_code);
792 if (return_code != ALARMMGR_RESULT_SUCCESS) {
794 *error_code = return_code;
796 g_variant_unref(reply);
801 g_variant_unref(reply);
805 bool _send_alarm_set_time(alarm_context_t context, time_t new_time, int *error_code)
807 GError *error = NULL;
808 int return_code = -1;
809 GVariant *param = NULL;
810 GVariant *reply = NULL;
812 param = g_variant_new("(x)", (gint64)new_time);
814 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_time", param,
815 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
818 *error_code = ERR_ALARM_SYSTEM_FAIL;
820 LOGE("g_dbus_proxy_call_sync() failed.\
821 return_code[%d]. error->message is %s(%d)",
822 return_code, error->message, error->code);
828 g_variant_get(reply, "(i)", &return_code);
830 LOGD("alarm_set_time() dbus sync success. return_code[%d].",
833 if (return_code != ALARMMGR_RESULT_SUCCESS) {
835 *error_code = return_code;
837 g_variant_unref(reply);
841 g_variant_unref(reply);
845 static void _alarm_set_time_cb(GObject *source_object, GAsyncResult *res,
848 int return_code = -1;
849 GError *error = NULL;
850 GVariant *reply = NULL;
851 alarm_set_time_data_t *func_data = (alarm_set_time_data_t *)user_data;
853 reply = g_dbus_proxy_call_finish(func_data->proxy, res, &error);
855 LOGE("dbus error message: %s", error->message);
857 return_code = ERR_ALARM_SYSTEM_FAIL;
859 g_variant_get(reply, "(i)", &return_code);
860 LOGD("alarm_set_time_async() dbus success. return_code[%d].",
864 if (func_data->callback != NULL)
865 func_data->callback(return_code, func_data->user_data);
867 g_variant_unref(reply);
871 bool _send_alarm_set_time_async(alarm_context_t context, time_t new_time, alarm_set_time_cb_t result_cb, void *user_data)
873 alarm_set_time_data_t *func_data;
876 func_data = g_try_new0(alarm_set_time_data_t, 1);
878 if (func_data == NULL)
881 func_data->callback = result_cb;
882 func_data->user_data = user_data;
883 func_data->proxy = context.proxy;
885 param = g_variant_new("(x)", (gint64)new_time);
887 g_dbus_proxy_call(context.proxy, "alarm_set_time", param,
888 G_DBUS_CALL_FLAGS_NONE, -1, NULL, _alarm_set_time_cb, func_data);
893 bool _send_alarm_set_time_with_propagation_delay(alarm_context_t context, struct timespec new_time, struct timespec req_time, int *error_code)
895 GError *error = NULL;
896 int return_code = -1;
897 GVariant *param = NULL;
898 GVariant *reply = NULL;
900 param = g_variant_new("(xxxx)", (gint64)new_time.tv_sec, (gint64)new_time.tv_nsec,
901 (gint64)req_time.tv_sec, (gint64)req_time.tv_nsec);
903 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_time_with_propagation_delay", param,
904 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
907 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
908 *error_code = ERR_ALARM_NO_PERMISSION;
910 *error_code = ERR_ALARM_SYSTEM_FAIL;
913 LOGE("g_dbus_proxy_call_sync() failed.\
914 return_code[%d]. error->message is %s(%d)",
915 return_code, error->message, error->code);
921 g_variant_get(reply, "(i)", &return_code);
923 LOGD("alarm_set_time_with_propagation_delay dbus sync() success.\
924 return_code[%d]", return_code);
926 if (return_code != ALARMMGR_RESULT_SUCCESS) {
928 *error_code = return_code;
930 g_variant_unref(reply);
934 g_variant_unref(reply);
938 static void _alarm_set_time_with_delay_cb(GObject *source_object, GAsyncResult *res,
941 int return_code = -1;
942 GError *error = NULL;
943 GVariant *reply = NULL;
944 alarm_set_time_data_t *func_data = (alarm_set_time_data_t *)user_data;
946 reply = g_dbus_proxy_call_finish(func_data->proxy, res, &error);
948 LOGE("dbus error message: %s", error->message);
950 return_code = ERR_ALARM_SYSTEM_FAIL;
952 g_variant_get(reply, "(i)", &return_code);
954 LOGD("alarm_set_time_with_propagation_delay_async() dbus success.\
955 return_code[%d].", return_code);
958 if (func_data->callback != NULL)
959 func_data->callback(return_code, func_data->user_data);
961 g_variant_unref(reply);
965 bool _send_alarm_set_time_with_propagation_delay_async(alarm_context_t context, struct timespec new_time, struct timespec req_time, alarm_set_time_cb_t result_cb, void *user_data)
967 alarm_set_time_data_t *func_data;
968 GVariant *param = NULL;
970 func_data = g_try_new0(alarm_set_time_data_t, 1);
972 if (func_data == NULL)
975 func_data->callback = result_cb;
976 func_data->user_data = user_data;
977 func_data->proxy = context.proxy;
979 param = g_variant_new("(xxxx)", (gint64)new_time.tv_sec, (gint64)new_time.tv_nsec,
980 (gint64)req_time.tv_sec, (gint64)req_time.tv_nsec);
982 g_dbus_proxy_call(context.proxy, "alarm_set_time_with_propagation_delay", param,
983 G_DBUS_CALL_FLAGS_NONE, -1, NULL, _alarm_set_time_with_delay_cb, func_data);
988 bool _send_alarm_set_timezone(alarm_context_t context, char *tzpath_str, int *error_code)
990 GError *error = NULL;
991 int return_code = -1;
992 GVariant *param = NULL;
993 GVariant *reply = NULL;
995 param = g_variant_new("(s)", tzpath_str);
997 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_timezone", param,
998 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
1001 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
1002 *error_code = ERR_ALARM_NO_PERMISSION;
1004 *error_code = ERR_ALARM_SYSTEM_FAIL;
1007 LOGE("g_dbus_proxy_call_sync() failed.\
1008 return_code[%d]. error->message is %s(%d)",
1009 return_code, error->message, error->code);
1011 g_error_free(error);
1015 g_variant_get(reply, "(i)", &return_code);
1017 LOGD("alarm_set_timezon dbus sync() success. tz_path[%s] return_code[%d]",
1018 tzpath_str, return_code);
1020 if (return_code != ALARMMGR_RESULT_SUCCESS) {
1022 *error_code = return_code;
1024 g_variant_unref(reply);
1028 g_variant_unref(reply);
1032 bool _send_alarm_set_global(alarm_context_t context, const alarm_id_t alarm_id, bool global, int *error_code)
1034 GError *error = NULL;
1035 int return_code = -1;
1036 GVariant *param = NULL;
1037 GVariant *reply = NULL;
1039 param = g_variant_new("(ib)", alarm_id, (gboolean)global);
1041 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_set_global", param,
1042 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
1045 if (error && error->code == G_DBUS_ERROR_ACCESS_DENIED)
1046 *error_code = ERR_ALARM_NO_PERMISSION;
1048 *error_code = ERR_ALARM_SYSTEM_FAIL;
1051 LOGE("g_dbus_proxy_call_sync() failed.\
1052 alarm_id[%d] return_code[%d]. error->message is %s(%d)",
1053 alarm_id, return_code, error->message, error->code);
1055 g_error_free(error);
1059 g_variant_get(reply, "(i)", &return_code);
1061 LOGD("alarm_set_global dbus sync() success. alarm_id[%d], global[%d]\
1062 return_code[%d]", alarm_id, global, return_code);
1064 if (return_code != ALARMMGR_RESULT_SUCCESS) {
1066 *error_code = return_code;
1068 g_variant_unref(reply);
1072 g_variant_unref(reply);
1076 bool _send_alarm_get_global(alarm_context_t context, const alarm_id_t alarm_id, bool *global, int *error_code)
1078 GError *error = NULL;
1079 int return_code = -1;
1080 GVariant *param = NULL;
1081 GVariant *reply = NULL;
1083 param = g_variant_new("(i)", alarm_id);
1085 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_get_global", param,
1086 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
1089 if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
1090 *error_code = ERR_ALARM_NO_PERMISSION;
1092 *error_code = ERR_ALARM_SYSTEM_FAIL;
1095 LOGE("g_dbus_proxy_call_sync() failed.\
1096 alarm_id[%d] return_code[%d]. error->message is %s(%d)",
1097 alarm_id, return_code, error->message, error->code);
1099 g_error_free(error);
1103 g_variant_get(reply, "(bi)", global, &return_code);
1105 LOGD("alarm_get_global dbus sync() success. alarm_id[%d], global[%d]\
1106 return_code[%d]", alarm_id, *global, return_code);
1108 if (return_code != 0) {
1110 *error_code = return_code;
1112 g_variant_unref(reply);
1116 g_variant_unref(reply);
1120 bool _send_alarm_update(alarm_context_t context, alarm_id_t alarm_id,
1121 alarm_info_t *alarm_info, int update_flag, int *error_code)
1123 GError *error = NULL;
1124 int return_code = -1;
1125 GVariant *param = NULL;
1126 GVariant *reply = NULL;
1128 param = g_variant_new("(iiiiiiiiiixiixi)",
1130 alarm_info->start.year,
1131 alarm_info->start.month,
1132 alarm_info->start.day,
1133 alarm_info->start.hour,
1134 alarm_info->start.min,
1135 alarm_info->start.sec,
1136 alarm_info->end.year,
1137 alarm_info->end.month,
1138 alarm_info->end.day,
1139 (gint64)alarm_info->mode.u_interval.interval,
1140 alarm_info->mode.repeat,
1141 alarm_info->alarm_type,
1142 (gint64)alarm_info->reserved_info,
1145 reply = g_dbus_proxy_call_sync(context.proxy, "alarm_update", param,
1146 G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
1149 if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
1150 *error_code = ERR_ALARM_NO_PERMISSION;
1152 *error_code = ERR_ALARM_SYSTEM_FAIL;
1155 LOGE("g_dbus_proxy_call_sync() failed.\
1156 alarm_id[%d] return_code[%d]. error->message is %s(%d)",
1157 alarm_id, return_code, error->message, error->code);
1159 g_error_free(error);
1163 g_variant_get(reply, "(i)", &return_code);
1165 LOGD("alarm_update dbus sync() success. alarm_id[%d], return_code[%d]",
1166 alarm_id, return_code);
1168 if (return_code != 0) {
1170 *error_code = return_code;
1172 g_variant_unref(reply);
1176 g_variant_unref(reply);