#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__ */
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()
static void set_sync_complete()
{
set_sync_first_complete();
- save_last_sync_time();
+ save_last_sync_info();
}
static void set_sync_progressing(gboolean flag)
send_sync_start_response(result_code);
set_sync_progressing(FALSE);
- save_last_sync_time();
-
+ save_last_sync_info();
sticker_service_quit();
}
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");
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.");
}
}
}
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();
}
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();
+ }
}
}
}
<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"/>