Fix build error in sticker-receiver
[platform/core/uifw/capi-ui-sticker.git] / receiver / src / main.cpp
index d8797dd..12cf6a2 100644 (file)
@@ -30,6 +30,7 @@
 #include "config.h"
 #include "receiver_preference.h"
 #include "sticker_info.h"
+#include "sticker_request.h"
 
 using namespace std;
 
@@ -47,7 +48,7 @@ static bool app_create(void *data)
         return true;
     }
 
-    LOGD("");
+    STLOGD("");
 
     char log_path[PATH_MAX];
     char *data_path = NULL;
@@ -59,7 +60,7 @@ static bool app_create(void *data)
 
     if (access(log_path, F_OK) != 0) {
         if (mkdir(log_path, 0755) == -1) {
-            LOGE("directory create error");
+            STLOGE("directory create error");
         }
     }
 
@@ -77,16 +78,16 @@ static bool check_battery_condition()
     ret = device_battery_get_percent(&battery_percentage);
     if (ret != DEVICE_ERROR_NONE)
     {
-        LOGW("No sync. Failed to get battery percent. error : %d", ret);
+        STLOGW("No sync. Failed to get battery percent. error : %d", ret);
         return false;
     }
 
-    LOGI("battery percent : %d", battery_percentage);
+    STLOGI("battery percent : %d", battery_percentage);
     if (battery_percentage >= MINIMUM_BATTERY)
         return true;
     else
     {
-        LOGI("No sync due to insufficient battery");
+        STLOGI("No sync due to insufficient battery");
         return false;
     }
 }
@@ -103,18 +104,19 @@ static bool check_sync_time_condition()
     {
         if (preference_get_double(LAST_SYNC_TIME, &last_sync_time) != PREFERENCE_ERROR_NONE)
         {
-            LOGD("Can't get last sync time.");
+            STLOGD("Can't get last sync time.");
             return true;
         }
 
         // compare time
         double timediff = ecore_time_unix_get() - last_sync_time;
-        LOGD("current time : %.3f, last_sync_time : %.3f, diff : %.3f", ecore_time_unix_get(), last_sync_time, timediff);
+        STLOGD("current time : %.3f, last_sync_time : %.3f, diff : %.3f", ecore_time_unix_get(), last_sync_time, timediff);
 
         if (timediff > MAX_WAIT_TIME) {
-            LOGD("Starting manual synchronization");
+            STLOGD("Starting manual synchronization");
             initialize_sap();
-            request_show_sync_notification();
+            if (false == request_show_sync_notification())
+                push_sticker_request(REQUEST_TYPE_SHOW_NOTIFICATION, NULL, NULL, NULL);
             result = false;
         } else {
             if (timediff > SYNC_INTERVAL)
@@ -151,12 +153,153 @@ bool check_rw_mount()
     return rw_mount;
 }
 
+static void process_request(app_control_h app_control, char *request)
+{
+    char* mode = NULL;
+    char* type = NULL;
+
+    if (strcmp(request, "sync") == 0) {
+        bool param_error = false;
+        if (app_control_get_extra_data(app_control, "mode", &mode) != APP_CONTROL_ERROR_NONE) {
+            STLOGE("No given mode");
+            param_error = true;
+        }
+
+        if (app_control_get_extra_data(app_control, "type", &type) != APP_CONTROL_ERROR_NONE) {
+            STLOGE("No given type");
+            param_error = true;
+        }
+
+        STLOGI("[sync request] mode : %s, type : %s", mode, type);
+        if (param_error)
+            goto cleanup;
+
+        if (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.");
+            }
+        }
+    }
+    else if (strcmp(request, "oobe") == 0) {
+        initialize_sap();
+
+        if (false == request_sticker_feature())
+            push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+    }
+    else {
+        STLOGW("Unknown command : %s", request);
+        if (!is_init_sap()) {
+            service_app_exit();
+        }
+    }
+
+cleanup:
+    if (NULL != mode)
+        free(mode);
+
+    if (NULL != type)
+        free(type);
+}
+
+static void process_auto_sync()
+{
+    if (is_init_sap()) {
+        STLOGD("continue doing current job");
+        return;
+    }
+
+    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();
+
+            if (false == request_sticker_feature())
+                push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+
+            push_sticker_request(REQUEST_TYPE_AUTOSYNC, NULL, NULL, NULL);
+        }
+        else {
+            STLOGI("The status of battery is low");
+            if (!get_job_progress()) {
+                STLOGD("exit");
+                service_app_exit();
+            }
+        }
+    }
+    else {
+        if (!get_job_progress()) {
+            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();
+
+                if (false == request_sticker_feature())
+                    push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+
+                push_sticker_request(REQUEST_TYPE_AUTOSYNC, NULL, NULL, NULL);
+            } else {
+                STLOGD("Last sync status is SUCCESS(code: %d). Don't have to retrying sync", last_sync_status);
+                service_app_exit();
+            }
+        }
+    }
+}
+
+static void get_sticker_feature()
+{
+#ifdef VCONFKEY_STICKER_SUPPORTED_FEATURE
+    // Check whether oobe has been done
+    int feature_flag = 0;
+    if (vconf_get_int(VCONFKEY_STICKER_SUPPORTED_FEATURE, &feature_flag) == 0 && feature_flag == 0) {
+        STLOGD("Request to get sticker feature");
+        initialize_sap();
+
+        if (false == request_sticker_feature())
+            push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
+    }
+    else {
+        if (!is_init_sap())
+            service_app_exit();
+    }
+#endif
+}
+
 static void app_control(app_control_h app_control, void *data)
 {
     /* Handle the launch request. */
     char* request = NULL;
-    char* mode = NULL;
-    char* type = NULL;
     char* operation = NULL;
     char* event_value = NULL;
     char* uri = NULL;
@@ -168,94 +311,47 @@ static void app_control(app_control_h app_control, void *data)
 
     // operation
     int ret = app_control_get_operation(app_control, &operation);
-    if (ret == APP_CONTROL_ERROR_NONE) {
-        LOGD("operation: %s", operation);
+    if (ret != APP_CONTROL_ERROR_NONE) {
+        STLOGW("Failed to get operation. error : %d", ret);
+        return;
+    }
 
-        if (!operation) {
-            goto cleanup;
-        }
+    STLOGD("operation: %s", operation);
+
+    if (!operation) {
+        goto cleanup;
+    }
 
-        if (strcmp(operation, APP_CONTROL_OPERATION_LAUNCH_ON_EVENT) == 0)
+    if (strcmp(operation, APP_CONTROL_OPERATION_LAUNCH_ON_EVENT) == 0)
+    {
+        ret = app_control_get_uri(app_control, &uri);
+        if (ret == APP_CONTROL_ERROR_NONE && uri)
         {
-            ret = app_control_get_uri(app_control, &uri);
-            if (ret == APP_CONTROL_ERROR_NONE && uri)
+            if (strncmp(uri, event_uri, strlen(event_uri) + 1) == 0)
             {
-                if (strncmp(uri, event_uri, strlen(event_uri) + 1) == 0)
+                ret = app_control_get_extra_data(app_control, "battery_charger_status", &event_value);
+                if (ret == APP_CONTROL_ERROR_NONE && event_value)
                 {
-                    ret = app_control_get_extra_data(app_control, "battery_charger_status", &event_value);
-                    if (ret == APP_CONTROL_ERROR_NONE && event_value)
+                    if (string(event_value) == "connected")
                     {
-                        if (string(event_value) == "connected")
-                        {
-                            if (!is_init_sap()) {
-                                if (check_sync_time_condition()) {
-                                    if (check_battery_condition()) {
-                                        LOGD("Starting auto synchronization");
-                                        initialize_sap();
-                                        request_sticker_feature();
-                                        request_auto_sync();
-                                    }
-                                }
-                                else {
-                                    if (!get_job_progress())
-                                    {
-                                        LOGD("exit");
-                                        service_app_exit();
-                                    }
-                                }
-                            }
-                            else {
-                                LOGD("continue doing current job");
-                            }
-                        }
-                        free(event_value);
+                        STLOGI("The charger state is connected");
+                        process_auto_sync();
                     }
+                    free(event_value);
                 }
-                free(uri);
             }
+            free(uri);
         }
     }
-    else {
-        LOGW("Failed to get operation. error : %d", ret);
-    }
-
-    // sync request
-    res = app_control_get_extra_data(app_control, "request", &request);
-    if (APP_CONTROL_ERROR_NONE == res && NULL != request) {
-        if (strcmp(request, "sync") == 0) {
-            bool param_error = false;
-            if (app_control_get_extra_data(app_control, "mode", &mode) != APP_CONTROL_ERROR_NONE) {
-                LOGE("No given mode");
-                param_error = true;
-            }
-
-            if (app_control_get_extra_data(app_control, "type", &type) != APP_CONTROL_ERROR_NONE) {
-                LOGE("No given type");
-                param_error = true;
-            }
-
-            LOGI("[sync request] mode : %s, type : %s", mode, type);
-            if (param_error)
-                goto cleanup;
-
-            if (mode && type) {
-                if (!is_init_sap()) {
-                    initialize_sap();
-                    request_all_sticker_data(mode, type);
-                }
-            }
+    else if (strcmp(operation, APP_CONTROL_OPERATION_DEFAULT) == 0) {
+        res = app_control_get_extra_data(app_control, "request", &request);
+        STLOGD("get extra data result : %d, request : %s", res, request);
+        if (APP_CONTROL_ERROR_NONE == res && NULL != request) {
+            process_request(app_control, request);
         }
-        else if (strcmp(request, "oobe") == 0) {
-            initialize_sap();
-            request_sticker_feature();
-        }
-        else
-        {
-            LOGW("Unknown command : %s", request);
-            if (!is_init_sap())
-            {
-                service_app_exit();
-            }
+        else {
+            STLOGD("booting");
+            get_sticker_feature();
         }
     }
 
@@ -265,18 +361,12 @@ cleanup:
 
     if (NULL != request)
         free(request);
-
-    if (NULL != mode)
-        free(mode);
-
-    if (NULL != type)
-        free(type);
 }
 
 static void app_terminate(void *data)
 {
     /* Release all resources. */
-    LOGD("");
+    STLOGD("");
     destroy_sticker_provider_handle();
     deinitialize_sap();
 }
@@ -294,7 +384,7 @@ int main(int argc, char *argv[])
 
     ret = service_app_main(argc, argv, &event_callback, NULL);
     if (ret != APP_ERROR_NONE) {
-        LOGE("app_main() is failed. err = %d", ret);
+        STLOGE("app_main() is failed. err = %d", ret);
     }
     return ret;
 }