3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
22 #include <vconf-keys.h>
25 #include <sync_agent.h>
26 #include <plugin/plugin_slp_sysnoti_alarm.h>
29 #include "framework/platform-event-handler/dm_platform_event_handler.h"
30 #include "framework/platform-event-handler/dm_platform_event_handler_internal.h"
31 #include "framework/task/oma_dm_task_register.h"
32 #include "framework/task/oma_dm_task_request.h"
33 #include "common/dm_common.h"
34 #include "common/util/util.h"
35 #include "mo-handler/dm_mo_common.h"
36 #include "mo-handler/dm_mo_handler.h"
37 #include "dm-engine/bootstrap/factory_bootstrap.h"
38 #include "dm-engine/fumo/fumo_account.h"
39 #include "dm-engine/lawmo/lawmo_account.h"
40 #include "dm-engine/cp/dm_cp_security.h"
41 #include "ipc_common.h"
43 #ifndef OMADM_AGENT_LOG
45 #define LOG_TAG "DM_COMMON"
50 static DM_ERROR _create_engine_status_db();
52 char *get_new_uri(char *old_object_uri)
56 char *new_object_uri = NULL;
57 retvm_if(old_object_uri == NULL, NULL, "old_object_uri is NULL!!");
58 _DEBUG_INFO(" old_object_uri = %s ", old_object_uri);
59 new_object_uri = g_strdup_printf("%s", old_object_uri);
62 return new_object_uri;
65 static DM_ERROR _create_engine_status_db()
71 ret = Alloc_DB_Handler_Mgr();
72 _DEBUG_TRACE(" Alloc DB Handler Mgr : %d\n", ret);
75 _DEBUG_TRACE(" Done Open DB : %d\n", ret);
77 ret = DB_Create_Table();
78 _DEBUG_TRACE(" Done Create_Table : %d\n", ret);
91 ret = _create_engine_status_db();
92 _DEBUG_INFO(" Done Create_engine_status_db : %d\n", ret);
94 ret = task_register();
99 ret = register_scheduler();
101 _DEBUG_INFO("fail register alarm : %d ", ret);
103 _DEBUG_INFO("success register alarm : %d ", ret);
106 ret = register_network();
108 _DEBUG_INFO("fail register network : %d ", ret);
110 _DEBUG_INFO("success register network : %d ", ret);
113 ret = register_wap_push();
115 _DEBUG_INFO("fail register wap push : %d ", ret);
117 _DEBUG_INFO("success register wap push : %d ", ret);
121 ret = register_fumo_ip_push();
123 _DEBUG_INFO("fail register fumo ip push : %d ", ret);
125 _DEBUG_INFO("success register fumo ip push : %d ", ret);
128 // will integrate notification UI
129 //ret = register_fota_account();
131 // _DEBUG_INFO("fail register fota account : %d ", ret);
133 // _DEBUG_INFO("success register fota account : %d ", ret);
138 ret = register_lawmo_samsung_account();
140 _DEBUG_INFO("fail register fmm server : %d ", ret);
142 _DEBUG_INFO("success register fmm server : %d ", ret);
145 ret = register_telephony();
147 _DEBUG_INFO("fail register telephony : %d ", ret);
149 _DEBUG_INFO("success register telephony : %d ", ret);
152 init_default_fumo_config();
158 _DEBUG_INFO(" end error : %d \n", ret);
166 DM_ERROR ret = DM_OK;
176 DM_ERROR ret = DM_OK;
177 _DEBUG_INFO("--------------------------------------------------------------------------------------------");
178 /* ddf mo db reset */
180 _DEBUG_INFO("clean_dm_mo [%d]", ret);
184 /* engine status db reset */
185 //ret = DB_Delete_Table();
186 ret = DB_Reset_Table();
187 _DEBUG_INFO("DB_Reset_Table [%d]", ret);
192 sync_agent_empty_agent_default_table(SYNC_AGENT_DA_TABLE_NAME_CONFIG);
193 //sync_agent_empty_all_agent_table()
195 /*fumo, lawmo data in alarm db */
196 _DEBUG_INFO("--------------------------------------------------------------------------------------------");
203 _DEBUG_INFO(" end error : %d \n", ret);
207 DM_ERROR auto_operate_service_engine()
211 DM_ERROR ret = DM_OK;
212 engine_status *status = NULL;
214 if (IsExist_Engine_id(FUMO_SERVICE_ENGINE) != 0) {
215 _DEBUG_INFO("engine id VALUE : %d ", FUMO_SERVICE_ENGINE);
217 ret = Get_Engine_Status(FUMO_SERVICE_ENGINE, &status);
218 if (ret != DM_OK || status == NULL)
221 if (status->engine_status == 0) {
222 ret = Delete_Engine_Status(FUMO_SERVICE_ENGINE);
226 ret = fumo_serviceEngine_task_request();
227 _DEBUG_INFO("fumo server engine task request : %d", ret);
229 if (status != NULL) {
230 Free_Memory_Engine_Status(&status, 1);
234 if (IsExist_Engine_id(LAWMO_SERVICE_ENGINE) != 0) {
235 _DEBUG_INFO("engine id VALUE : %d ", LAWMO_SERVICE_ENGINE);
237 ret = Get_Engine_Status(LAWMO_SERVICE_ENGINE, &status);
238 if (ret != DM_OK || status == NULL)
241 if (status->engine_status == 0) {
242 ret = Delete_Engine_Status(LAWMO_SERVICE_ENGINE);
246 ret = lawmo_serviceEngine_task_request();
249 Free_Memory_Engine_Status(&status, 1);
257 Free_Memory_Engine_Status(&status, 1);
263 int register_wap_push()
270 for (i = 0; i < MAX_TRY; ++i) {
271 sync_agent_pm_return_e err_wappush = sync_agnet_register_user_callback(6, NULL, 2, dm_wap_push_incomming_callback, dm_wap_push_operation_callback);
273 if (err_wappush != SYNC_AGENT_PM_SUCCESS) {
274 _DEBUG_INFO("failed set_WAP-PUSH_Callback()");
278 _DEBUG_INFO("WAP-PUSH SUCCESS");
287 int register_fumo_ip_push()
294 for (i = 0; i < MAX_TRY; ++i) {
295 sync_agent_pm_return_e err_ippush = sync_agnet_register_user_callback(2, NULL, 1, dm_ip_push_callback);
296 if (err_ippush != SYNC_AGENT_PM_SUCCESS) {
297 // if (err_ippush == PMCI_CONNECTION_FAIL) {
298 // _DEBUG_INFO("failed set_IP-PUSH_Callback() : connection failed !!");
300 // } else if (err_ippush == PMCI_REGISTRATION_FAIL) {
301 // _DEBUG_INFO("failed set_IP-PUSH_Callback() : registration failed !!");
303 _DEBUG_INFO("failed set_IP-PUSH_Callback()");
309 _DEBUG_INFO("IP-PUSH SUCCESS");
319 int register_lawmo_samsung_account()
326 for (i = 0; i < MAX_TRY; ++i) {
327 sync_agent_pm_return_e err_samsung_account = sync_agnet_register_user_callback(4, NULL, 2, register_lawmo_account, deregister_lawmo_account);
328 if (err_samsung_account != SYNC_AGENT_PM_SUCCESS) {
329 // if (err_samsung_account == PMCI_CONNECTION_FAIL) {
330 // _DEBUG_INFO("failed set_SAMSUNG_ACCOUNT_Callback() : connection failed !!");
332 // } else if (err_samsung_account == PMCI_REGISTRATION_FAIL) {
333 // _DEBUG_INFO("failed set_SAMSUNG_ACCOUNT_Callback() : registration failed !!");
335 _DEBUG_INFO("failed set_SAMSUNG_ACCOUNT_Callback()");
341 _DEBUG_INFO("SAMSUNG_ACCOUNT SUCCESS");
351 int register_telephony()
358 for (i = 0; i < MAX_TRY; ++i) {
359 sync_agent_pm_return_e err_telephony = sync_agnet_register_user_callback(5, NULL, 2, dm_telephony_incomming_callback, dm_telephony_end_callback);
360 if (err_telephony != SYNC_AGENT_PM_SUCCESS) {
361 _DEBUG_INFO("failed set_TELEPHONY_Callback()");
366 _DEBUG_INFO("TELEPHONY_SUCCESS");
376 int register_network()
383 for (i = 0; i < MAX_TRY; ++i) {
384 sync_agent_pm_return_e err_network = sync_agnet_register_user_callback(3, NULL, 2, network_on_callback, network_off_callback, network_change_callback);
385 if (err_network != SYNC_AGENT_PM_SUCCESS) {
386 _DEBUG_INFO("failed set_network_Callback()");
390 _DEBUG_INFO("NETWORK_SUCCESS");
400 int register_scheduler()
407 for (i = 0; i < MAX_TRY; ++i) {
408 sync_agent_pm_return_e err_alarm = sync_agnet_register_user_callback(1, NULL, 1, alarm_callback);
409 if (err_alarm != SYNC_AGENT_PM_SUCCESS) {
410 _DEBUG_INFO("Fail PMCI_Init_Specific_Type\n");
414 _DEBUG_INFO("Success PMCI_Init_Specific_Type\n");
424 void network_cancel_callback(void *user_data)
428 int *net_session_id = (int *)(user_data);
429 sync_agent_na_result_e error;
430 error = sync_agent_cancel_msg(1, (*net_session_id));
431 _DEBUG_INFO("naci cancel msg status : %d\n", error);
436 void network_connection_delay()
440 int network_status = 0;
441 int interval = 1; //(seconds)
444 char file_name[256] = { 0, };
447 FILE *send_fp = NULL;
448 _DEBUG_INFO("start");
451 network_status = sync_agent_check_network_status(interval, retry_cnt);
453 net_status = g_strdup_printf("%d", network_status);
454 snprintf(file_name, 256, "%s", "/opt/data/network_connect_status.txt");
455 send_fp = fopen(file_name, "w");
456 if (send_fp != NULL) {
457 snd_size = fwrite(net_status, strlen(net_status), 1, send_fp);
460 _DEBUG_INFO("fopen - network_connect_status - fail");
463 if (network_status != 1) {
464 _DEBUG_INFO("------------------------------------------NETOWKR CONNECT FAIL------------------------------------------");
470 DM_ERROR set_account_registration_alarm(char *alarm_str, CONFIG_TYPE alarm_type)
474 DM_ERROR ret = DM_OK;
475 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
480 result = sync_agent_get_config_list(alarm_type, &list);
481 if (result != SYNC_AGENT_DA_SUCCESS) {
483 return COMMON_ERR_FW_CONFIG;
486 count = g_list_length(list);
488 _DEBUG_INFO("alarm count: %d\n", count);
489 if (count > 0 && list != NULL) {
493 ret = add_alarm_item(INTERVAL_1DAY, alarm_str, alarm_type);
506 void delete_account_registration_alarm(char *alarm_str, CONFIG_TYPE alarm_type)
510 delete_alarm_item(alarm_str, alarm_type);
516 void delete_polling_alarm_item(char *alarm_type, CONFIG_TYPE conf_type)
520 delete_alarm_item(alarm_type, conf_type);
525 DM_ERROR add_alarm_item(Reminder_Interval interval, char *alarm_type, CONFIG_TYPE conf_type)
529 DM_ERROR ret = DM_OK;
530 //int week[] = {DAY_SUN, DAY_MON, DAY_TUE, DAY_WED, DAY_THU, DAY_FRI, DAY_SAT};
533 struct tm *struct_time;
535 struct_time = localtime(¤t_time);
537 pmci_alarm_s *alarm_info = (pmci_alarm_s *) calloc(1, sizeof(pmci_alarm_s));
538 if (alarm_info == NULL) {
539 _DEBUG_INFO("alloc fail");
541 return COMMON_ERR_ALLOC;
544 alarm_info->start_alarm_time = g_strdup_printf("%02d-%02d-%02dT%02d:%02d:%02dZ", struct_time->tm_year + 1900, struct_time->tm_mon + 1, struct_time->tm_mday, struct_time->tm_hour, struct_time->tm_min, struct_time->tm_sec);
547 alarm_info->is_disposable = 0;
550 //alarm_info->is_disposable = 1;
557 alarm_info->repeat_type = REPEAT ;
558 //alarm_info->repeat_value = ((1*60)*60);
559 alarm_info->repeat_value = ((1*60)*1);
563 case INTERVAL_30MINUTES:
566 alarm_info->repeat_type = REPEAT;
567 alarm_info->repeat_value = ((1 * 30) * 60);
573 alarm_info->repeat_type = REPEAT;
574 alarm_info->repeat_value = ((1 * 60) * 60);
575 //alarm_info->repeat_value = ((1*60)*1);
578 case INTERVAL_3HOURS:
581 alarm_info->repeat_type = REPEAT;
582 alarm_info->repeat_value = ((3 * 60) * 60);
585 case INTERVAL_6HOURS:
588 alarm_info->repeat_type = REPEAT;
589 alarm_info->repeat_value = ((6 * 60) * 60);
593 case INTERVAL_12HOURS:
596 alarm_info->repeat_type = REPEAT;
597 alarm_info->repeat_value = ((12 * 60) * 60);
604 alarm_info->repeat_type = REPEAT;
605 alarm_info->repeat_value = ((24 * 60) * 60);
612 alarm_info->repeat_type = REPEAT_WEEKLY ;
613 alarm_info->repeat_value = week[struct_time->tm_wday];
617 case INTERVAL_1MONTH:
619 alarm_info->repeat_type = REPEAT_MONTHLY;
620 alarm_info->repeat_value = 0;
622 case INTERVAL_CANCEL:
629 _DEBUG_INFO("######### Alarm Info #####################\n");
630 _DEBUG_INFO("time = %s\n", alarm_info->start_alarm_time);
631 _DEBUG_INFO("repeat_mode = %d, repeat_value = %d\n", alarm_info->repeat_type, alarm_info->repeat_value);
632 _DEBUG_INFO("is_disposable = %d\n", alarm_info->is_disposable);
634 /* if(conf_type == FUMO_INTERVAL_TYPE)
635 delete_alarm_item(FUMO_INTERVAL, FUMO_INTERVAL_TYPE);*/
639 sync_agent_pm_return_e err = SYNC_AGENT_PM_SUCCESS;
641 /*add alarm service */
642 err = sync_agent_add_service_data(1, alarm_info, &alarm_id);
643 if (err != SYNC_AGENT_PM_SUCCESS) {
644 _DEBUG_INFO("Fail PMCI_Add_Item_To_Specific_Type\n");
645 ret = DM_ERR_FUMO_INTERNAL_SCHEDULER_ERROR;
647 /*add framework config db */
648 alarm_ret = set_alarm_config_int(conf_type, alarm_type, alarm_id, alarm_type);
649 if (alarm_ret == 0) {
650 ret = DM_ERR_FUMO_INTERNAL_SCHEDULER_ERROR;
654 if (alarm_info != NULL) {
655 str_free(&(alarm_info->start_alarm_time));
665 if (alarm_info != NULL) {
666 str_free(&(alarm_info->start_alarm_time));
672 _DEBUG_INFO("end error : %d ", ret);
676 void delete_alarm_item(char *alarm_type, CONFIG_TYPE conf_type)
683 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
684 sync_agent_pm_return_e pm_result = SYNC_AGENT_PM_SUCCESS;
686 sync_agent_da_config_s *config = NULL;
690 result = sync_agent_get_config_list(conf_type, &list);
691 count = g_list_length(list);
693 _DEBUG_INFO("alarm count: %d\n", count);
694 if (count > 0 && list != 0) {
695 config = (sync_agent_da_config_s *) g_list_nth_data(list, 0);
696 _DEBUG_INFO("------------------------------------------alarm id : %s----------------------------------------------\n", config->value);
697 ret = chartoint(config->value, &before_alarm_id);
699 pm_result = sync_agent_remove_service_data(1, before_alarm_id);
700 _DEBUG_INFO("delete alarm %d", result);
702 if (pm_result == SYNC_AGENT_PM_SUCCESS) {
703 result = sync_agent_delete_config(conf_type, alarm_type);
704 _DEBUG_INFO("delete alarm config %d", result);
707 _DEBUG_INFO("fail get alarm id");
711 sync_agent_free_config_list(list);
716 SERVICE_SERVER_TYPE get_service_engine_type(const char *server_id)
720 retvm_if(server_id == NULL, NO_ENGINE_TYPE, "server_id is NULL!!");
722 _DEBUG_INFO("get- service engine type by server id : %s", server_id);
724 return get_engine_type_by_serverid(server_id);
727 DM_ERROR get_server_info(Event_Contents * pEvent_data, char **server_id, char **session_id, int *session_type)
731 DM_ERROR ret = DM_OK;
733 retvm_if((pEvent_data) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "pEvent_data is NULL!!");
734 retvm_if((pEvent_data->server_id) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "server_id is NULL!!");
736 (*server_id) = strdup(pEvent_data->server_id);
737 _DEBUG_INFO(" server id : %s\n", *server_id);
739 if (pEvent_data->session_id != NULL) {
740 (*session_id) = strdup(pEvent_data->session_id);
741 _DEBUG_INFO(" session_id : %s\n", *session_id);
744 (*session_type) = pEvent_data->type;
745 _DEBUG_INFO("session type : %d\n", *session_type);
751 void get_service_engine_id(ENGINE_ID * service_engine_id, char *ui_mode)
758 if (!strcmp(ui_mode, OMADM_FUMO_UI_TYPE) || !strcmp(ui_mode, OMADM_FUMO_NOTI_UI_TYPE)) {
759 *service_engine_id = FUMO_SERVICE_ENGINE;
760 _DEBUG_INFO("fumo service");
762 _DEBUG_INFO("other service");
768 DM_ERROR fumo_service_start(Event_Contents * pEvent_data)
772 DM_ERROR ret = DM_OK;
774 retvm_if((pEvent_data) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "pEvent_data is NULL!!");
776 switch (pEvent_data->noti_type) {
777 case NOTI_TYPE_NOT_SPECIFIED:
778 _DEBUG_INFO("NOTI_TYPE_NOT_SPECIFIED");
779 //temp version for gcf test
780 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
781 pEvent_data->noti_type = NOTI_TYPE_BACKGRUOUND;
782 ret = dm_fumo_common_task_request(pEvent_data);
783 _DEBUG_INFO("NOTI NOTI_TYPE_BACKGRUOUND : %d", ret);
788 case NOTI_TYPE_BACKGRUOUND:
789 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
790 ret = dm_fumo_common_task_request(pEvent_data);
791 _DEBUG_INFO("NOTI NOTI_TYPE_BACKGRUOUND : %d", ret);
796 case NOTI_TYPE_INFOMATIVE:
797 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
798 ret = dm_fumo_common_task_request(pEvent_data);
799 _DEBUG_INFO("NOTI NOTI_TYPE_INFOMATIVE : %d", ret);
804 case NOTI_TYPE_USERINTERACTION:
805 pEvent_data->ui_mode = strdup(OMADM_FUMO_NOTI_UI_TYPE);
806 ret = dm_fumo_ui_task_request(pEvent_data);
807 _DEBUG_INFO("NOTI NOTI_TYPE_USERINTERACTION : %d ", ret);
819 event_data_free((void *)pEvent_data);
825 DM_ERROR get_fumo_ui_mode(char **ui_mode)
829 DM_ERROR ret = DM_OK;
831 engine_status *status = NULL;
832 ret = Get_Engine_Status(FUMO_SERVICE_ENGINE, &status);
835 Free_Memory_Engine_Status(&status, 1);
841 if (status != NULL) {
843 if (status->ui_mode != NULL) {
844 (*ui_mode) = strdup(status->ui_mode);
846 _DEBUG_INFO("==================Fumo ui : %s==================\n", *ui_mode);
848 _DEBUG_INFO("ui mode null");
851 Free_Memory_Engine_Status(&status, 1);
854 _DEBUG_INFO("status is null");
863 int check_existed_fumo_reminder_interval()
868 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
869 result = sync_agent_is_exist_config(FUMO_INTERVAL_TYPE, FUMO_INTERVAL, &exist);
870 _DEBUG_INFO("agent is exist result : %d", result);
876 int init_default_fumo_config()
881 return set_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG, 0, FUMO, 1);
884 int set_config_int(CONFIG_TYPE config_type, char *key, int value, char *accessName, int isFirst)
888 sync_agent_da_return_e result;
889 sync_agent_da_config_s config;
892 config.access_name = accessName;
893 config.config_id = config_type;
895 config.value = g_strdup_printf("%d", value);
898 result = sync_agent_is_exist_config(config_type, key, &exist);
899 if (result != SYNC_AGENT_DA_SUCCESS) {
900 _DEBUG_INFO("exist config fail : %d", result);
903 if (exist == 0 && isFirst == 1) {
904 _DEBUG_INFO("default add config : %s\n", key);
905 result = sync_agent_add_config(&config);
906 if (result != SYNC_AGENT_DA_SUCCESS) {
907 _DEBUG_INFO("fail add : %d", result);
910 _DEBUG_INFO("Success add config : %s, : %d\n", key, value);
913 result = sync_agent_update_config(&config);
915 if (result != SYNC_AGENT_DA_SUCCESS) {
916 _DEBUG_INFO("fail update : %d", result);
919 _DEBUG_INFO("Success update config : %s, : %d\n", key, value);
924 str_free(&(config.value));
930 int get_config_int(CONFIG_TYPE config_id, char *key)
934 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
935 sync_agent_da_config_s *config = NULL;
939 result = sync_agent_create_config(&config);
940 if (result != SYNC_AGENT_DA_SUCCESS) {
945 result = sync_agent_get_config(config_id, key, &config);
946 _DEBUG_INFO("---------------------------result : %d-------------------------\n", result);
948 _DEBUG_INFO("Success get config value");
950 ret = chartoint(config->value, &value);
951 _DEBUG_INFO("result : %d , key : %s value : %d\n", result, key, value);
954 _DEBUG_INFO("fail get config value");
958 _DEBUG_INFO("success get config value");
962 _DEBUG_INFO("fail get config value");
967 sync_agent_free_config(config);
972 int set_alarm_config_int(CONFIG_TYPE config_type, char *key, int value, char *accessName)
977 sync_agent_da_return_e result;
978 sync_agent_da_config_s config;
981 config.access_name = accessName;
982 config.config_id = config_type;
984 config.value = g_strdup_printf("%d", value);
987 result = sync_agent_is_exist_config(config_type, key, &exist);
988 if (result != SYNC_AGENT_DA_SUCCESS)
992 _DEBUG_INFO("default add config : %s\n", key);
993 result = sync_agent_add_config(&config);
995 if (result != SYNC_AGENT_DA_SUCCESS)
998 result = sync_agent_update_config(&config);
999 _DEBUG_INFO("update alarm config db ");
1003 str_free(&(config.value));
1004 _DEBUG_INFO("end : %d", ret);
1009 int get_wifi_only_config()
1014 return get_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG);
1017 int set_wifi_only_config(int value)
1022 return set_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG, value, FUMO, 0);
1025 DM_ERROR get_battery_state(char **battery_level)
1029 DM_ERROR ret = DM_OK;
1030 sync_agent_dev_return_e err = SYNC_AGENT_DEV_RETURN_SUCCESS;
1032 err = sync_agent_get_devinfo(2, "Battery", battery_level);
1033 if (err != SYNC_AGENT_DEV_RETURN_SUCCESS) {
1036 if ((*battery_level) == NULL) {
1040 _DEBUG_INFO("\n========battery ======== %s\n", *battery_level);
1045 return DM_GET_BATTERY_ERROR;
1048 DM_ERROR get_telephony_state(int *now_calling)
1052 DM_ERROR ret = DM_OK;
1055 * vconf( framework )
1058 if (vconf_get_int(VCONFKEY_CALL_STATE, &tel_value) != 0)
1061 switch (tel_value) {
1062 case VCONFKEY_CALL_VOICE_CONNECTING:
1063 case VCONFKEY_CALL_VOICE_ACTIVE:
1064 case VCONFKEY_CALL_VIDEO_CONNECTING:
1065 case VCONFKEY_CALL_VIDEO_ACTIVE:
1068 case VCONFKEY_CALL_OFF:
1079 return DM_TELEPHONY_ERROR;
1083 void network_state_callback()
1088 NETWORK_NONE, initial network type
1089 NETWORK_3G_ON, network UMTS on
1090 NETWORK_3G_OFF, network UMTS off
1091 NETWORK_WIFI_ON, network WIFI on
1092 NETWORK_WIFI_ON_NOT_CONNECTED, network WIFI on but not connected
1093 NETWORK_WIFI_OFF, network WIFI off
1094 NETWORK_WIFI_3G_ON, network UMTS and WIFI on
1099 /*sync_agent_na_result_e err;
1101 err = NACI_Get_Network_Type(&net_type);
1102 if(err != SYNC_AGENT_NA_SUCCESS)
1114 * deregister vconf callback
1131 DM_ERROR existed_sd_card_memory(int *existed_sd)
1135 DM_ERROR ret = DM_OK;
1137 * vconf( framework )
1138 * //only one sd card
1143 err = get_mmc_state(&mmc_value);
1148 if (mmc_value == 1) {
1151 /*for make empty folder */
1152 char *downlaod_folder = NULL;
1153 char *save_folder = NULL;
1154 ret = get_fota_download_dir(MEMORY_SD_CARD, &downlaod_folder);
1158 ret = get_fota_save_dir(MEMORY_SD_CARD, &save_folder);
1163 str_free(&downlaod_folder);
1164 str_free(&save_folder);
1175 return DM_SD_CARD_ERROR;
1178 void get_roaming_state(int *roaming_state)
1182 int roaming_config = 0;
1184 if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, roaming_state) != 0) {
1185 *roaming_state = -1;
1186 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1188 if (*roaming_state == 0) {
1189 /*not roaming svc area */
1190 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1194 /*roaming svc area */
1195 if (vconf_get_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, &roaming_config) != 0) {
1196 *roaming_state = -1;
1197 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1199 if (roaming_config == 1) {
1201 * do service roaming service
1204 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1207 /*don not service at roaming svc */
1208 *roaming_state = -1;
1209 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1217 void get_wifi_connected_state(int *wifi_state)
1221 int wifi_connection = VCONFKEY_WIFI_OFF;
1222 int nRes_wifistatus = vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_connection);
1225 if (nRes_wifistatus != 0) {
1226 _DEBUG_INFO("vconf_get_int get wificonnection fail\n");
1232 if(wifi_connection >= VCONFKEY_WIFI_CONNECTED) {
1233 _DEBUG_INFO("vconf_get_int get wificonnection success\n");
1242 void get_call_sate(int *call_state)
1249 if (vconf_get_int(VCONFKEY_CALL_STATE, call_state) != 0) {
1251 _DEBUG_INFO("end, call state : %d", *call_state);
1255 if (*call_state == 0) {
1256 _DEBUG_INFO("end, call state : %d", *call_state);
1261 _DEBUG_INFO("end, call state : %d", *call_state);
1268 int get_mmc_state(int *mmc_state)
1272 if (vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, mmc_state) != 0)
1279 _DEBUG_INFO("end error");
1283 DM_ERROR compare_memory_space(char *memory_type, long double file_size)
1288 long double sizeFree;
1289 long double sizeTotal;
1291 retvm_if((memory_type) == NULL, COMMON_ERR_IS_NULL, "memory_type is NULL!!");
1293 err = sync_agent_get_fs_mem_size(memory_type, &sizeFree, &sizeTotal);
1296 return DM_MEMORY_ERROR;
1299 _DEBUG_INFO("need free size [%f], memory free size [%f], total size [%f] ", file_size, sizeFree, sizeTotal);
1300 if (file_size > sizeFree) {
1302 return DM_OVER_MEMORY_ERROR;
1305 //_DEBUG_INFO("below return value is test code"); // for memory not enough - testing
1306 //return DM_OVER_MEMORY_ERROR; // for memory not enough - testing
1312 DM_ERROR get_fota_download_dir(MEMORY_TYPE type, char **download_folder)
1316 sync_agent_dev_return_e dci_down_ret = SYNC_AGENT_DEV_RETURN_SUCCESS;
1319 case MEMORY_INTERNAL:
1320 _DEBUG_INFO("internal memory");
1321 dci_down_ret = sync_agent_get_devinfo(2, "FOTADownDir", download_folder);
1323 case MEMORY_SD_CARD:
1324 _DEBUG_INFO("sd card memory");
1325 dci_down_ret = sync_agent_get_devinfo(2, "FOTA_SD_DownDir", download_folder);
1328 _DEBUG_INFO("ERROR NOT USE MEMORY");
1332 if (dci_down_ret == SYNC_AGENT_DEV_RETURN_SUCCESS) {
1333 _DEBUG_INFO(" download : %s", *download_folder);
1338 _DEBUG_INFO("end error : %d ", DM_MEMORY_ERROR);
1340 return DM_MEMORY_ERROR;
1343 DM_ERROR get_fota_save_dir(MEMORY_TYPE type, char **save_folder)
1347 sync_agent_dev_return_e dci_down_ret = SYNC_AGENT_DEV_RETURN_SUCCESS;
1350 case MEMORY_INTERNAL:
1351 dci_down_ret = sync_agent_get_devinfo(2, "FOTASaveDir", save_folder);
1353 case MEMORY_SD_CARD:
1354 dci_down_ret = sync_agent_get_devinfo(2, "FOTA_SD_SaveDir", save_folder);
1357 _DEBUG_INFO("ERROR NOT USE MEMORY");
1361 if (dci_down_ret == SYNC_AGENT_DEV_RETURN_SUCCESS) {
1362 _DEBUG_INFO(" save_folder : %s", *save_folder);
1367 _DEBUG_INFO("end error : %d ", DM_MEMORY_ERROR);
1369 return DM_MEMORY_ERROR;
1372 void delete_fumo_contents(MEMORY_TYPE memory_type)
1376 _DEBUG_INFO("----------------------------------------------------------firmware update fail delete files-----------------------------------------------------------");
1377 char *download_folder = NULL;
1378 char *save_folder = NULL;
1380 //FOTASaveDir //FOTADownDir
1381 //dci_save_ret = sync_agent_get_devinfo(2 , "FOTADownDir" , &download_folder);
1382 get_fota_download_dir(memory_type, &download_folder);
1383 sync_agent_empty_directory_contents(download_folder);
1384 //dci_save_ret = sync_agent_get_devinfo(2 , "FOTASaveDir" , &save_folder);
1385 get_fota_save_dir(memory_type, &save_folder);
1387 sync_agent_empty_directory_contents(save_folder);
1388 _DEBUG_INFO("delete save folder ");
1390 str_free(&save_folder);
1391 str_free(&download_folder);
1397 void first_server_bootstrap(char *server_id)
1401 DM_ERROR ret = DM_OK;
1403 if (server_id == NULL) {
1404 _DEBUG_INFO("server id null");
1408 Event_Contents *ev_data = (Event_Contents *) calloc(1, sizeof(Event_Contents) + 1);
1409 if (ev_data == NULL) {
1410 _DEBUG_INFO("alloc fail");
1414 ev_data->server_id = strdup(server_id);
1415 ev_data->session_id = NULL;
1416 ev_data->type = SERVER_BOOTSTRAP_EVENT;
1417 ev_data->ui_mode = NULL;
1419 _DEBUG_INFO("event type server bootstrap : %d", ev_data->type);
1420 _DEBUG_INFO("session id : %s", ev_data->session_id);
1421 _DEBUG_INFO("server id : %s", ev_data->server_id);
1424 SERVICE_SERVER_TYPE engine_type;
1425 engine_type = get_service_engine_type(ev_data->server_id);
1427 switch (engine_type) {
1428 case SAMSUNG_FUMO_TYPE:
1431 //when using telephony
1432 //DM_ERROR get_telephony_state(int *now_calling);
1433 _DEBUG_INFO("engine type : %d", engine_type);
1434 ev_data->noti_type = NOTI_TYPE_BACKGRUOUND;
1435 ev_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
1437 _DEBUG_INFO("noti type : %d", ev_data->noti_type);
1438 _DEBUG_INFO("ui mode : %s", ev_data->ui_mode);
1440 ret = dm_fumo_common_task_request(ev_data);
1441 _DEBUG_INFO("dm fumo conmmon task : %d ", ret);
1447 case SAMSUNG_FMM_TYPE:
1449 _DEBUG_INFO("engine type : %d", engine_type);
1450 ret = dm_lawmo_common_task_request(ev_data);
1451 _DEBUG_INFO("dm lawmo conmmon task : %d ", ret);
1457 _DEBUG_INFO("dm non engine ", ret);
1465 event_data_free((void *)ev_data);
1469 int get_default_noti_type(char *ui_mode, NotI_Type noti_type)
1473 retvm_if((ui_mode) == NULL, COMMON_ERR_IS_NULL, "ui_mode is NULL!!");
1475 if (strcmp(OMADM_FUMO_UI_TYPE, ui_mode) == 0) {
1477 return NOTI_UNKNOWN; //none type
1478 } else if (strcmp(OMADM_FUMO_NOTI_UI_TYPE, ui_mode) == 0) {
1479 switch (noti_type) {
1480 case NOTI_TYPE_NOT_SPECIFIED:
1481 case NOTI_TYPE_BACKGRUOUND:
1482 case NOTI_TYPE_USERINTERACTION:
1484 return NOTI_DOWNLOAD; //none type
1486 case NOTI_TYPE_INFOMATIVE:
1488 return NOTI_DOWNLOAD; //connect to server
1490 case NOTI_TYPE_POLLINTERACTION:
1492 return NOTI_POLL_INTERACTION; //connect to server
1495 return NOTI_UNKNOWN; //none type
1498 } else if (strcmp(OMADM_FUMO_BACKGROUND_UI_TYPE, ui_mode) == 0) {
1500 return NOTI_UNKNOWN; //none type
1504 return NOTI_UNKNOWN;
1507 int wifi_only_config(char *config)
1511 retvm_if((config) == NULL, COMMON_ERR_IS_NULL, "config is NULL!!");
1513 if (config != NULL) {
1514 if (strcmp(config, "1") == 0) {
1515 _DEBUG_INFO("wifi on config");
1518 } else if (strcmp(config, "0") == 0) {
1519 _DEBUG_INFO("wifi off config");
1523 _DEBUG_INFO("wifi config error");
1526 _DEBUG_INFO("wifi config error");