2 * Copyright (c) 2020 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <app_common.h>
18 #include <service_app.h>
20 #include <app_event.h>
21 #include <device/battery.h>
24 #include <app_preference.h>
31 #include "receiver_preference.h"
35 static bool app_create(void *data)
37 /* Hook to take necessary actions before main event loop starts
38 Initialize UI resources and application's data
39 If this function returns true, the main loop of application starts
40 If this function returns false, the application is terminated */
47 static bool check_battery_condition()
49 int battery_percentage = 0;
52 // check battery percentage
53 ret = device_battery_get_percent(&battery_percentage);
54 if (ret != DEVICE_ERROR_NONE)
56 LOGW("No sync. Failed to get battery percent. error : %d", ret);
60 LOGI("battery percent : %d", battery_percentage);
61 if (battery_percentage >= MINIMUM_BATTERY)
65 LOGI("No sync due to insufficient battery");
70 static bool check_sync_time_condition()
72 double last_sync_time;
76 #ifdef VCONFKEY_STICKER_SUPPORTED_FEATURE
77 // Check whether oobe has been done
78 if (vconf_get_int(VCONFKEY_STICKER_SUPPORTED_FEATURE, &feature_flag) == 0 && feature_flag > 0)
80 if (preference_get_double(LAST_SYNC_TIME, &last_sync_time) != PREFERENCE_ERROR_NONE)
82 LOGD("Can't get last sync time.");
87 LOGD("current time : %f, last_sync_time : %f", ecore_time_get(), last_sync_time);
88 if (ecore_time_get() - last_sync_time > SYNC_INTERVAL)
97 #endif /* VCONFKEY_STICKER_SUPPORTED_FEATURE */
102 static void app_control(app_control_h app_control, void *data)
104 /* Handle the launch request. */
105 char* request = NULL;
108 char* operation = NULL;
109 char* event_value = NULL;
111 const char *event_uri = "event://tizen.system.event.battery_charger_status";
115 int ret = app_control_get_operation(app_control, &operation);
116 if (ret == APP_CONTROL_ERROR_NONE) {
117 LOGD("operation: %s", operation);
123 if (strcmp(operation, APP_CONTROL_OPERATION_LAUNCH_ON_EVENT) == 0)
125 ret = app_control_get_uri(app_control, &uri);
126 if (ret == APP_CONTROL_ERROR_NONE && uri)
128 if (strncmp(uri, event_uri, strlen(event_uri) + 1) == 0)
130 ret = app_control_get_extra_data(app_control, "battery_charger_status", &event_value);
131 if (ret == APP_CONTROL_ERROR_NONE && event_value)
133 if (string(event_value) == "connected")
135 if (!is_init_sap()) {
136 if (check_sync_time_condition()) {
137 if (check_battery_condition()) {
139 request_all_sticker_data("auto", "input");
143 if (!get_job_progress())
151 LOGD("continue doing current job");
162 LOGW("Failed to get operation. error : %d", ret);
166 res = app_control_get_extra_data(app_control, "request", &request);
167 if (APP_CONTROL_ERROR_NONE == res && NULL != request) {
168 if (strcmp(request, "sync") == 0) {
169 bool param_error = false;
170 if (app_control_get_extra_data(app_control, "mode", &mode) != APP_CONTROL_ERROR_NONE) {
171 LOGE("No given mode");
175 if (app_control_get_extra_data(app_control, "type", &type) != APP_CONTROL_ERROR_NONE) {
176 LOGE("No given type");
180 LOGI("[sync request] mode : %s, type : %s", mode, type);
185 if (!is_init_sap()) {
187 request_all_sticker_data(mode, type);
191 else if (strcmp(request, "oobe") == 0) {
193 request_sticker_feature();
197 LOGW("Unknown command : %s", request);
206 if (NULL != operation)
219 static void app_terminate(void *data)
221 /* Release all resources. */
226 int main(int argc, char *argv[])
230 service_app_lifecycle_callback_s event_callback;
231 memset(&event_callback, 0x0, sizeof(service_app_lifecycle_callback_s));
233 event_callback.create = (service_app_create_cb)app_create;
234 event_callback.terminate = (service_app_terminate_cb)app_terminate;
235 event_callback.app_control = (service_app_control_cb)app_control;
237 ret = service_app_main(argc, argv, &event_callback, NULL);
238 if (ret != APP_ERROR_NONE) {
239 LOGE("app_main() is failed. err = %d", ret);