Init/Deinit sync when BT attached/detached 12/265212/1
authorjay.ho.park <jay.ho.park@samsung.com>
Tue, 5 Jan 2021 01:28:10 +0000 (10:28 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Wed, 13 Oct 2021 01:29:16 +0000 (10:29 +0900)
Change-Id: I46031dc5378c971258234d92cec6fd00c62ad7fa

receiver/inc/receiver_preference.h
receiver/src/ft.cpp
receiver/src/main.cpp
receiver/tizen-manifest.xml

index 02fc7e3..820e725 100644 (file)
@@ -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__ */
index 26883b3..4d24be9 100644 (file)
@@ -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");
index aa196e1..6ba29ed 100644 (file)
@@ -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();
+            }
         }
     }
 }
index 55273cc..af921e8 100644 (file)
@@ -4,7 +4,7 @@
         <service-application appid="org.tizen.sticker-receiver" exec="sticker-receiver" type="capp" multiple="false" taskmanage="false" nodisplay="true" launch_mode="single" on-boot="true">
             <label>sticker-receiver</label>
             <metadata key="accessory-services-location" value="/res/xml/accessoryservices.xml"/>
-            <metadata key="launch-on-attach" value="false"/>
+            <metadata key="launch-on-attach" value="true"/>
             <background-category value="background-network"/>
             <background-category value="iot-communication"/>
             <background-category value="system"/>