From 22e3fd3acfd34e6a93df5499a105b07e51f6e872 Mon Sep 17 00:00:00 2001 From: "jay.ho.park" Date: Tue, 5 Jan 2021 10:28:10 +0900 Subject: [PATCH] Init/Deinit sync when BT attached/detached Change-Id: I46031dc5378c971258234d92cec6fd00c62ad7fa --- receiver/inc/receiver_preference.h | 4 ++++ receiver/src/ft.cpp | 20 +++++++++------- receiver/src/main.cpp | 49 ++++++++++++++++++++++++++++++++++---- receiver/tizen-manifest.xml | 2 +- 4 files changed, 60 insertions(+), 15 deletions(-) diff --git a/receiver/inc/receiver_preference.h b/receiver/inc/receiver_preference.h index 02fc7e3..820e725 100644 --- a/receiver/inc/receiver_preference.h +++ b/receiver/inc/receiver_preference.h @@ -20,4 +20,8 @@ #define LAST_SYNC_TIME "LastSyncTime" #define LAST_LOG_FILE_INDEX "LastLogFileIndex" +#define LAST_SYNC_STATUS "LastSyncStatus" +#define LAST_SYNC_STATUS_SYNC_SUCCESS 1 +#define LAST_SYNC_STATUS_SYNC_NEEDED 0 + #endif /* __RECEIVER_PREFERENCE_H__ */ diff --git a/receiver/src/ft.cpp b/receiver/src/ft.cpp index 26883b3..4d24be9 100644 --- a/receiver/src/ft.cpp +++ b/receiver/src/ft.cpp @@ -95,16 +95,18 @@ static int sync_complete_flags = 0; static void sticker_service_quit(); -static void save_last_sync_time() +static void save_last_sync_info() { - // save last sync time in preference double current_time = ecore_time_unix_get(); - if (preference_set_double(LAST_SYNC_TIME, current_time) == PREFERENCE_ERROR_NONE) { - STLOGI("Succeed to set last sync time : %f", current_time); - } - else { + STLOGI("Need to set last sync time as %f, last sync status as SUCCESS", current_time); + + if (preference_set_double(LAST_SYNC_TIME, current_time) != PREFERENCE_ERROR_NONE) { STLOGW("Failed to set last sync time"); } + + if (preference_set_int(LAST_SYNC_STATUS, LAST_SYNC_STATUS_SYNC_SUCCESS) != PREFERENCE_ERROR_NONE) { + STLOGE("Failed to set sync status as SUCCESS"); + } } static void set_sync_first_complete() @@ -122,7 +124,7 @@ static void set_sync_first_complete() static void set_sync_complete() { set_sync_first_complete(); - save_last_sync_time(); + save_last_sync_info(); } static void set_sync_progressing(gboolean flag) @@ -850,8 +852,7 @@ on_data_received(sap_socket_h socket, unsigned short int channel_id, unsigned in send_sync_start_response(result_code); set_sync_progressing(FALSE); - save_last_sync_time(); - + save_last_sync_info(); sticker_service_quit(); } @@ -1244,6 +1245,7 @@ static void _on_device_status_changed(sap_device_status_e status, case SAP_DEVICE_STATUS_DETACHED: STLOGD("device is detached."); send_message("sync_stop_result", "cancel"); + sticker_service_quit(); break; case SAP_DEVICE_STATUS_ATTACHED: STLOGD("Attached calling find peer now"); diff --git a/receiver/src/main.cpp b/receiver/src/main.cpp index aa196e1..6ba29ed 100644 --- a/receiver/src/main.cpp +++ b/receiver/src/main.cpp @@ -173,9 +173,33 @@ static void process_request(app_control_h app_control, char *request) goto cleanup; if (mode && type) { - if (!is_init_sap()) { - initialize_sap(); - request_all_sticker_data(mode, type); + if (check_battery_condition()) { + if (check_sync_time_condition()) { + if (preference_set_int(LAST_SYNC_STATUS, LAST_SYNC_STATUS_SYNC_NEEDED) != PREFERENCE_ERROR_NONE) + STLOGE("Failed to set sync status as NEEDED"); + + if (!is_init_sap()) + initialize_sap(); + request_all_sticker_data(mode, type); + } else { // Under the sync interval time. Need to check whether last sync was succeded or not. + int last_sync_status = 0; + + if (preference_get_int(LAST_SYNC_STATUS, &last_sync_status) != PREFERENCE_ERROR_NONE) { + STLOGE("Failed to get sync status. Default action is exit."); + goto cleanup; + } + + if (last_sync_status == LAST_SYNC_STATUS_SYNC_NEEDED) { + STLOGD("Last sync status is NEEDED(code: %d). Retrying to sync.", last_sync_status); + if (!is_init_sap()) + initialize_sap(); + request_all_sticker_data(mode, type); + } else { + STLOGD("Last sync status is SUCCESS(code: %d). Don't have to retrying sync", last_sync_status); + } + } + } else { + STLOGD("Not enough battery."); } } } @@ -208,6 +232,8 @@ static void process_auto_sync() if (check_sync_time_condition()) { if (check_battery_condition()) { STLOGD("Starting auto synchronization"); + if (preference_set_int(LAST_SYNC_STATUS, LAST_SYNC_STATUS_SYNC_NEEDED) != PREFERENCE_ERROR_NONE) + STLOGE("Failed to set sync status as NEEDED"); initialize_sap(); request_sticker_feature(); request_auto_sync(); @@ -222,8 +248,21 @@ static void process_auto_sync() } else { if (!get_job_progress()) { - STLOGD("exit"); - service_app_exit(); + int last_sync_status = 0; + if (preference_get_int(LAST_SYNC_STATUS, &last_sync_status) != PREFERENCE_ERROR_NONE) { + STLOGE("Failed to get sync status. Default action is exit."); + service_app_exit(); + } + + if (last_sync_status == LAST_SYNC_STATUS_SYNC_NEEDED) { + STLOGD("Last sync status is NEEDED(code: %d). Retrying to sync.", last_sync_status); + initialize_sap(); + request_sticker_feature(); + request_auto_sync(); + } else { + STLOGD("Last sync status is SUCCESS(code: %d). Don't have to retrying sync", last_sync_status); + service_app_exit(); + } } } } diff --git a/receiver/tizen-manifest.xml b/receiver/tizen-manifest.xml index 55273cc..af921e8 100644 --- a/receiver/tizen-manifest.xml +++ b/receiver/tizen-manifest.xml @@ -4,7 +4,7 @@ - + -- 2.7.4