#include "config.h"
#include "receiver_preference.h"
#include "sticker_info.h"
+#include "sticker_request.h"
using namespace std;
if (timediff > MAX_WAIT_TIME) {
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)
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.");
}
}
}
else if (strcmp(request, "oobe") == 0) {
initialize_sap();
- request_sticker_feature();
+
+ if (false == request_sticker_feature())
+ push_sticker_request(REQUEST_TYPE_FEATURE_REQ, NULL, NULL, NULL);
}
else {
STLOGW("Unknown command : %s", request);
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. */
// operation
int ret = app_control_get_operation(app_control, &operation);
- if (ret == APP_CONTROL_ERROR_NONE) {
- STLOGD("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 (strcmp(operation, APP_CONTROL_OPERATION_LAUNCH_ON_EVENT) == 0)
+ if (!operation) {
+ goto cleanup;
+ }
+
+ 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")
- {
- STLOGI("The charger state is connected");
- if (!is_init_sap()) {
- if (check_sync_time_condition()) {
- if (check_battery_condition()) {
- STLOGD("Starting auto synchronization");
- initialize_sap();
- request_sticker_feature();
- request_auto_sync();
- }
- else {
- STLOGI("The status of battery is low");
- if (!get_job_progress()) {
- STLOGD("exit");
- service_app_exit();
- }
- }
- }
- else {
- if (!get_job_progress()) {
- STLOGD("exit");
- service_app_exit();
- }
- }
- }
- else {
- STLOGD("continue doing current job");
- }
- }
- free(event_value);
+ STLOGI("The charger state is connected");
+ process_auto_sync();
}
+ free(event_value);
}
- free(uri);
}
- }
- 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 {
- STLOGD("booting");
-#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();
- request_sticker_feature();
- }
- else {
- if (!is_init_sap())
- service_app_exit();
- }
- }
-#endif
+ free(uri);
}
}
- else {
- STLOGW("Failed to get operation. error : %d", ret);
+ 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 {
+ STLOGD("booting");
+ get_sticker_feature();
+ }
}
cleanup: