bool _send_alarm_set_time_async(alarm_context_t context, time_t new_time, alarm_set_time_cb_t result_cb, void *user_data);
bool _send_alarm_set_global(alarm_context_t context, int alarm_id, bool global, int *error_code);
bool _send_alarm_get_global(alarm_context_t context, int alarm_id, bool *global, int *error_code);
+bool _send_alarm_is_sys_time_set(alarm_context_t context, bool *global, int *error_code);
/* alarm manager*/
typedef struct {
int alarm_manager_alarm_set_timezone(GVariant* parameters);
int alarm_manager_alarm_set_global(GVariant *parameters, uid_t uid);
int alarm_manager_alarm_get_global(GVariant *parameters, gboolean *global);
+int alarm_manager_is_sys_time_set(gboolean *is_sys_time_set);
#define CHECK_NULL_STRING(x) x ? x : "null"
#define STRDUP_WITH_NULLCMP(a) strcmp(a, "null") ? strdup(a) : NULL
int alarmmgr_add_alarm_withcb_with_localtime(alarm_entry_t *alarm,
alarm_cb_t handler, void *user_param, alarm_id_t *alarm_id);
+int alarmmgr_is_sys_time_set(bool *is_sys_time_set);
+
#ifdef __cplusplus
}
#endif
g_variant_unref(reply);
return true;
}
+
+bool _send_alarm_is_sys_time_set(alarm_context_t context, bool *is_sys_time_set, int *error_code)
+{
+ int return_code = -1;
+ GVariant *reply = NULL;
+ gboolean is_set = FALSE;
+
+ return_code = __dbus_call_sync(context.proxy, "alarm_is_sys_time_set",
+ NULL, &reply);
+ if (return_code != ALARMMGR_RESULT_SUCCESS) {
+ if (error_code)
+ *error_code = return_code;
+ return false;
+ }
+
+ g_variant_get(reply, "(bi)", &is_set, &return_code);
+ *is_sys_time_set = is_set ? true : false;
+
+ LOGD("alarm_is_sys_time_set dbus sync() success. is_set[%d]\
+ return_code[%d]", *is_sys_time_set, return_code);
+
+ if (return_code != 0) {
+ if (error_code)
+ *error_code = return_code;
+
+ g_variant_unref(reply);
+ return false;
+ }
+
+ g_variant_unref(reply);
+ return true;
+}
\ No newline at end of file
return ALARMMGR_RESULT_SUCCESS;
}
+
+EXPORT_API int alarmmgr_is_sys_time_set(bool *is_sys_time_set)
+{
+ int error_code;
+
+ if (__sub_init() < 0)
+ return ERR_ALARM_SYSTEM_FAIL;
+
+ if (is_sys_time_set == NULL) {
+ LOGE("[alarm-lib]:is_sys_time_set is NULL\n");
+ return ERR_ALARM_INVALID_PARAM;
+ }
+
+ if (!_send_alarm_is_sys_time_set(alarm_context, is_sys_time_set, &error_code))
+ return error_code;
+
+ return ALARMMGR_RESULT_SUCCESS;
+}
\ No newline at end of file
" dst_service_name TEXT, \n" \
" dst_service_name_mod TEXT \n" \
")"
+#define QUERY_CREATE_TABLE_ALARMMGR_SYSTEM \
+ " CREATE TABLE IF NOT EXISTS alarmmgr_system (\n" \
+ " system_time TEXT PRIMARY KEY, \n" \
+ " is_set BOOL \n" \
+ ")"
enum schema_version
{
}
}
+ ret = sqlite3_exec(alarmmgr_db, QUERY_CREATE_TABLE_ALARMMGR_SYSTEM, NULL, NULL, &error_message);
+ if (ret != SQLITE_OK) {
+ LOGE("Don't execute query = %s, error message = %s", QUERY_CREATE_TABLE_ALARMMGR_SYSTEM, error_message);
+ sqlite3_free(error_message);
+ sqlite3_close(alarmmgr_db);
+ return false;
+ }
+
if (is_exist == false) {
if (__create_db_version() != 0) {
sqlite3_close(alarmmgr_db);
return false;
}
+ ret = sqlite3_exec(alarmmgr_db, QUERY_CREATE_TABLE_ALARMMGR_SYSTEM, NULL, NULL, &error_message);
+ if (ret != SQLITE_OK) {
+ LOGE("[recover] Don't execute query = %s, error message = %s", QUERY_CREATE_TABLE_ALARMMGR_SYSTEM, error_message);
+ sqlite3_close(alarmmgr_db);
+ sqlite3_free(error_message);
+ return false;
+ }
+
if (__create_db_version() != 0) {
sqlite3_close(alarmmgr_db);
return false;
return false;
}
+ sqlite3_finalize(stmt);
+ sqlite3_free(query);
+ return true;
+}
+
+bool _set_is_sys_time_set(void)
+{
+ char *error_message = NULL;
+ char *query = sqlite3_mprintf("insert into alarmmgr_system(\
+ system_time, is_set)\
+ values (%Q,%d)",
+ "system_time", true);
+
+ if (sqlite3_exec(alarmmgr_db, query, NULL, NULL, &error_message) != SQLITE_OK) {
+ SECURE_LOGE("sqlite3_exec() is failed. error message = %s", error_message);
+ sqlite3_free(error_message);
+ sqlite3_free(query);
+ return false;
+ }
+
+ sqlite3_free(query);
+
+ return true;
+}
+
+bool _get_is_sys_time_set(gboolean *is_sys_time_set)
+{
+ sqlite3_stmt *stmt = NULL;
+ int ret;
+ char *query = sqlite3_mprintf("select * from alarmmgr_system");
+
+ if (SQLITE_OK != sqlite3_prepare_v2(alarmmgr_db, query, strlen(query), &stmt, NULL)) {
+ LOGE("sqlite3_prepare() is failed.");
+ sqlite3_free(query);
+ return false;
+ }
+
+ ret = sqlite3_step(stmt);
+ if (SQLITE_ROW == ret) {
+ *is_sys_time_set = sqlite3_column_int(stmt, 1);
+ LOGD("is_sys_time_set : %d", (int)*is_sys_time_set);
+ } else if (SQLITE_DONE == ret) {
+ LOGE("is_sys_time_set is not set");
+ *is_sys_time_set = false;
+ } else {
+ LOGE("sqlite3_step() is failed");
+ sqlite3_finalize(stmt);
+ sqlite3_free(query);
+ return false;
+ }
+
sqlite3_finalize(stmt);
sqlite3_free(query);
return true;
void _update_db_for_disabled_alarm(alarm_id_t alarm_id, bool disabled_by_ups);
bool _get_latest_settime(time_t *settime);
bool _set_latest_settime(time_t settime);
+bool _get_is_sys_time_set(gboolean *is_sys_time_set);
+bool _set_is_sys_time_set(void);
int migration_func_version_1(void);
" <arg type='b' name='global' direction='out' />"
" <arg type='i' name='return_code' direction='out' />"
" </method>"
+" <method name='alarm_is_sys_time_set'>"
+" <arg type='b' name='is_sys_time_set' direction='out' />"
+" <arg type='i' name='return_code' direction='out' />"
+" </method>"
" <signal name='alarm_expired'>"
" <arg type='i' name='alarm_id' />"
" <arg type='s' name='app_service_name' />"
ret = alarm_manager_alarm_get_global(parameters, &global);
g_dbus_method_invocation_return_value(invoc, g_variant_new("(bi)", global, ret));
+ } else if (g_strcmp0(method_name, "alarm_is_sys_time_set") == 0) {
+ gboolean is_set = false;
+ ret = alarm_manager_is_sys_time_set(&is_set);
+ g_dbus_method_invocation_return_value(invoc, g_variant_new("(bi)", is_set, ret));
}
}
#endif /* _APPFW_FEATURE_ALARM_MANAGER_MODULE_LOG */
return;
}
-
return false;
}
+ if (!_set_is_sys_time_set())
+ LOGE("Failed to set is_sys_time_set");
+
if (!_set_latest_settime(_time))
LOGE("DB is failed.");
return ALARMMGR_RESULT_SUCCESS;
}
+int alarm_manager_is_sys_time_set(gboolean *is_sys_time_set)
+{
+ bool ret = _get_is_sys_time_set(is_sys_time_set);
+ if (!ret)
+ return ERR_ALARM_SYSTEM_FAIL;
+
+ LOGD("Is system time set : %d", *is_sys_time_set);
+
+ return ALARMMGR_RESULT_SUCCESS;
+}
+
static void __initialize_alarm_list()
{
alarm_context.alarms = NULL;
<check send_destination="org.tizen.alarm.manager" send_interface="org.tizen.alarm.manager" send_member="alarm_set_time" privilege="http://tizen.org/privilege/systemsettings.admin"/>
<check send_destination="org.tizen.alarm.manager" send_interface="org.tizen.alarm.manager" send_member="alarm_set_time_with_propagation_delay" privilege="http://tizen.org/privilege/systemsettings.admin"/>
<check send_destination="org.tizen.alarm.manager" send_interface="org.tizen.alarm.manager" send_member="alarm_set_timezone" privilege="http://tizen.org/privilege/systemsettings.admin"/>
+ <check send_destination="org.tizen.alarm.manager" send_interface="org.tizen.alarm.manager" send_member="alarm_is_sys_time_set" privilege="http://tizen.org/privilege/alarm.get"/>
</policy>
</busconfig>