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);
137 ret = register_lawmo_samsung_account();
139 _DEBUG_INFO("fail register fmm server : %d ", ret);
141 _DEBUG_INFO("success register fmm server : %d ", ret);
144 ret = register_telephony();
146 _DEBUG_INFO("fail register telephony : %d ", ret);
148 _DEBUG_INFO("success register telephony : %d ", ret);
151 init_default_fumo_config();
157 _DEBUG_INFO(" end error : %d \n", ret);
165 DM_ERROR ret = DM_OK;
175 DM_ERROR ret = DM_OK;
176 _DEBUG_INFO("--------------------------------------------------------------------------------------------");
177 /* ddf mo db reset */
182 /* engine status db reset */
183 //ret = DB_Delete_Table();
184 ret = DB_Reset_Table();
189 sync_agent_empty_agent_default_table(SYNC_AGENT_DA_TABLE_NAME_CONFIG);
190 //sync_agent_empty_all_agent_table()
192 /*fumo, lawmo data in alarm db */
193 _DEBUG_INFO("--------------------------------------------------------------------------------------------");
200 _DEBUG_INFO(" end error : %d \n", ret);
204 DM_ERROR auto_operate_service_engine()
208 DM_ERROR ret = DM_OK;
209 engine_status *status = NULL;
211 if (IsExist_Engine_id(FUMO_SERVICE_ENGINE) != 0) {
212 printf("engine id VALUE : %d ", FUMO_SERVICE_ENGINE);
213 _DEBUG_INFO("engine id VALUE : %d ", FUMO_SERVICE_ENGINE);
215 ret = Get_Engine_Status(FUMO_SERVICE_ENGINE, &status);
216 if (ret != DM_OK || status == NULL)
219 if (status->engine_status == 0) {
220 ret = Delete_Engine_Status(FUMO_SERVICE_ENGINE);
224 ret = fumo_serviceEngine_task_request();
225 _DEBUG_INFO("fumo server engine task request : %d", ret);
227 if (status != NULL) {
228 Free_Memory_Engine_Status(&status, 1);
232 if (IsExist_Engine_id(LAWMO_SERVICE_ENGINE) != 0) {
233 printf("engine id VALUE : %d ", LAWMO_SERVICE_ENGINE);
234 _DEBUG_INFO("engine id VALUE : %d ", LAWMO_SERVICE_ENGINE);
236 ret = Get_Engine_Status(LAWMO_SERVICE_ENGINE, &status);
237 if (ret != DM_OK || status == NULL)
240 if (status->engine_status == 0) {
241 ret = Delete_Engine_Status(LAWMO_SERVICE_ENGINE);
245 ret = lawmo_serviceEngine_task_request();
248 Free_Memory_Engine_Status(&status, 1);
256 Free_Memory_Engine_Status(&status, 1);
262 int register_wap_push()
269 for (i = 0; i < MAX_TRY; ++i) {
270 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);
272 if (err_wappush != SYNC_AGENT_PM_SUCCESS) {
273 _DEBUG_INFO("failed set_WAP-PUSH_Callback()");
277 _DEBUG_INFO("WAP-PUSH SUCCESS");
286 int register_fumo_ip_push()
293 for (i = 0; i < MAX_TRY; ++i) {
294 sync_agent_pm_return_e err_ippush = sync_agnet_register_user_callback(2, NULL, 1, dm_ip_push_callback);
295 if (err_ippush != SYNC_AGENT_PM_SUCCESS) {
296 // if (err_ippush == PMCI_CONNECTION_FAIL) {
297 // _DEBUG_INFO("failed set_IP-PUSH_Callback() : connection failed !!");
299 // } else if (err_ippush == PMCI_REGISTRATION_FAIL) {
300 // _DEBUG_INFO("failed set_IP-PUSH_Callback() : registration failed !!");
302 _DEBUG_INFO("failed set_IP-PUSH_Callback()");
308 _DEBUG_INFO("IP-PUSH SUCCESS");
318 int register_lawmo_samsung_account()
325 for (i = 0; i < MAX_TRY; ++i) {
326 sync_agent_pm_return_e err_samsung_account = sync_agnet_register_user_callback(4, NULL, 2, register_lawmo_account, deregister_lawmo_account);
327 if (err_samsung_account != SYNC_AGENT_PM_SUCCESS) {
328 // if (err_samsung_account == PMCI_CONNECTION_FAIL) {
329 // _DEBUG_INFO("failed set_SAMSUNG_ACCOUNT_Callback() : connection failed !!");
331 // } else if (err_samsung_account == PMCI_REGISTRATION_FAIL) {
332 // _DEBUG_INFO("failed set_SAMSUNG_ACCOUNT_Callback() : registration failed !!");
334 _DEBUG_INFO("failed set_SAMSUNG_ACCOUNT_Callback()");
340 _DEBUG_INFO("SAMSUNG_ACCOUNT SUCCESS");
350 int register_telephony()
357 for (i = 0; i < MAX_TRY; ++i) {
358 sync_agent_pm_return_e err_telephony = sync_agnet_register_user_callback(5, NULL, 2, dm_telephony_incomming_callback, dm_telephony_end_callback);
359 if (err_telephony != SYNC_AGENT_PM_SUCCESS) {
360 _DEBUG_INFO("failed set_TELEPHONY_Callback()");
365 _DEBUG_INFO("TELEPHONY_SUCCESS");
375 int register_network()
382 for (i = 0; i < MAX_TRY; ++i) {
383 sync_agent_pm_return_e err_network = sync_agnet_register_user_callback(3, NULL, 2, network_on_callback, network_off_callback, network_change_callback);
384 if (err_network != SYNC_AGENT_PM_SUCCESS) {
385 _DEBUG_INFO("failed set_network_Callback()");
389 _DEBUG_INFO("NETWORK_SUCCESS");
399 int register_scheduler()
406 for (i = 0; i < MAX_TRY; ++i) {
407 sync_agent_pm_return_e err_alarm = sync_agnet_register_user_callback(1, NULL, 1, alarm_callback);
408 if (err_alarm != SYNC_AGENT_PM_SUCCESS) {
409 _DEBUG_INFO("Fail PMCI_Init_Specific_Type\n");
413 _DEBUG_INFO("Success PMCI_Init_Specific_Type\n");
423 void network_cancel_callback(void *user_data)
427 int *net_session_id = (int *)(user_data);
428 sync_agent_na_result_e error;
429 error = sync_agent_cancel_msg(1, (*net_session_id));
430 _DEBUG_INFO("naci cancel msg status : %d\n", error);
435 void network_connection_delay()
439 int network_status = 0;
440 int interval = 1; //(seconds)
443 char file_name[256] = { 0, };
446 FILE *send_fp = NULL;
447 _DEBUG_INFO("start");
450 network_status = sync_agent_check_network_status(interval, retry_cnt);
452 net_status = g_strdup_printf("%d", network_status);
453 snprintf(file_name, 256, "%s", "/opt/data/network_connect_status.txt");
454 send_fp = fopen(file_name, "w");
455 if (send_fp != NULL) {
456 snd_size = fwrite(net_status, strlen(net_status), 1, send_fp);
459 _DEBUG_INFO("fopen - network_connect_status - fail");
462 if (network_status != 1) {
463 _DEBUG_INFO("------------------------------------------NETOWKR CONNECT FAIL------------------------------------------");
469 DM_ERROR set_account_registration_alarm(char *alarm_str, CONFIG_TYPE alarm_type)
473 DM_ERROR ret = DM_OK;
474 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
479 result = sync_agent_get_config_list(alarm_type, &list);
480 if (result != SYNC_AGENT_DA_SUCCESS) {
482 return COMMON_ERR_FW_CONFIG;
485 count = g_list_length(list);
487 _DEBUG_INFO("alarm count: %d\n", count);
488 if (count > 0 && list != NULL) {
492 ret = add_alarm_item(INTERVAL_1DAY, alarm_str, alarm_type);
505 void delete_account_registration_alarm(char *alarm_str, CONFIG_TYPE alarm_type)
509 delete_alarm_item(alarm_str, alarm_type);
515 void delete_polling_alarm_item(char *alarm_type, CONFIG_TYPE conf_type)
519 delete_alarm_item(alarm_type, conf_type);
524 DM_ERROR add_alarm_item(Reminder_Interval interval, char *alarm_type, CONFIG_TYPE conf_type)
528 DM_ERROR ret = DM_OK;
529 //int week[] = {DAY_SUN, DAY_MON, DAY_TUE, DAY_WED, DAY_THU, DAY_FRI, DAY_SAT};
532 struct tm *struct_time;
534 struct_time = localtime(¤t_time);
536 pmci_alarm_s *alarm_info = (pmci_alarm_s *) calloc(1, sizeof(pmci_alarm_s));
537 if (alarm_info == NULL) {
538 _DEBUG_INFO("alloc fail");
540 return COMMON_ERR_ALLOC;
543 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);
546 alarm_info->is_disposable = 0;
549 //alarm_info->is_disposable = 1;
556 alarm_info->repeat_type = REPEAT ;
557 //alarm_info->repeat_value = ((1*60)*60);
558 alarm_info->repeat_value = ((1*60)*1);
565 alarm_info->repeat_type = REPEAT;
566 alarm_info->repeat_value = ((1 * 60) * 60);
567 //alarm_info->repeat_value = ((1*60)*1);
570 case INTERVAL_3HOURS:
573 alarm_info->repeat_type = REPEAT;
574 alarm_info->repeat_value = ((3 * 60) * 60);
577 case INTERVAL_6HOURS:
580 alarm_info->repeat_type = REPEAT;
581 alarm_info->repeat_value = ((6 * 60) * 60);
585 case INTERVAL_12HOURS:
588 alarm_info->repeat_type = REPEAT;
589 alarm_info->repeat_value = ((12 * 60) * 60);
596 alarm_info->repeat_type = REPEAT;
597 alarm_info->repeat_value = ((24 * 60) * 60);
604 alarm_info->repeat_type = REPEAT_WEEKLY ;
605 alarm_info->repeat_value = week[struct_time->tm_wday];
609 case INTERVAL_1MONTH:
611 alarm_info->repeat_type = REPEAT_MONTHLY;
612 alarm_info->repeat_value = 0;
614 case INTERVAL_CANCEL:
621 _DEBUG_INFO("######### Alarm Info #####################\n");
622 _DEBUG_INFO("time = %s\n", alarm_info->start_alarm_time);
623 _DEBUG_INFO("repeat_mode = %d, repeat_value = %d\n", alarm_info->repeat_type, alarm_info->repeat_value);
624 _DEBUG_INFO("is_disposable = %d\n", alarm_info->is_disposable);
626 /* if(conf_type == FUMO_INTERVAL_TYPE)
627 delete_alarm_item(FUMO_INTERVAL, FUMO_INTERVAL_TYPE);*/
631 sync_agent_pm_return_e err = SYNC_AGENT_PM_SUCCESS;
633 /*add alarm service */
634 err = sync_agent_add_service_data(1, alarm_info, &alarm_id);
635 if (err != SYNC_AGENT_PM_SUCCESS) {
636 _DEBUG_INFO("Fail PMCI_Add_Item_To_Specific_Type\n");
637 ret = DM_ERR_FUMO_INTERNAL_SCHEDULER_ERROR;
639 /*add framework config db */
640 alarm_ret = set_alarm_config_int(conf_type, alarm_type, alarm_id, alarm_type);
641 if (alarm_ret == 0) {
642 ret = DM_ERR_FUMO_INTERNAL_SCHEDULER_ERROR;
646 if (alarm_info != NULL) {
647 str_free(&(alarm_info->start_alarm_time));
657 if (alarm_info != NULL) {
658 str_free(&(alarm_info->start_alarm_time));
664 _DEBUG_INFO("end error : %d ", ret);
668 void delete_alarm_item(char *alarm_type, CONFIG_TYPE conf_type)
675 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
676 sync_agent_pm_return_e pm_result = SYNC_AGENT_PM_SUCCESS;
678 sync_agent_da_config_s *config = NULL;
682 result = sync_agent_get_config_list(conf_type, &list);
683 count = g_list_length(list);
685 _DEBUG_INFO("alarm count: %d\n", count);
686 if (count > 0 && list != 0) {
687 config = (sync_agent_da_config_s *) g_list_nth_data(list, 0);
688 _DEBUG_INFO("------------------------------------------alarm id : %s----------------------------------------------\n", config->value);
689 ret = chartoint(config->value, &before_alarm_id);
691 pm_result = sync_agent_remove_service_data(1, before_alarm_id);
692 _DEBUG_INFO("delete alarm %d", result);
694 if (pm_result == SYNC_AGENT_PM_SUCCESS) {
695 result = sync_agent_delete_config(conf_type, alarm_type);
696 _DEBUG_INFO("delete alarm config %d", result);
699 _DEBUG_INFO("fail get alarm id");
703 sync_agent_free_config_list(list);
708 SERVICE_SERVER_TYPE get_service_engine_type(const char *server_id)
712 retvm_if(server_id == NULL, NO_ENGINE_TYPE, "server_id is NULL!!");
714 _DEBUG_INFO("get- service engine type by server id : %s", server_id);
716 return get_engine_type_by_serverid(server_id);
719 DM_ERROR get_server_info(Event_Contents * pEvent_data, char **server_id, char **session_id, int *session_type)
723 DM_ERROR ret = DM_OK;
725 retvm_if((pEvent_data) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "pEvent_data is NULL!!");
726 retvm_if((pEvent_data->server_id) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "server_id is NULL!!");
728 (*server_id) = strdup(pEvent_data->server_id);
729 _DEBUG_INFO(" server id : %s\n", *server_id);
731 if (pEvent_data->session_id != NULL) {
732 (*session_id) = strdup(pEvent_data->session_id);
733 _DEBUG_INFO(" session_id : %s\n", *session_id);
736 (*session_type) = pEvent_data->type;
737 _DEBUG_INFO("session type : %d\n", *session_type);
743 void get_service_engine_id(ENGINE_ID * service_engine_id, char *ui_mode)
750 if (!strcmp(ui_mode, OMADM_FUMO_UI_TYPE) || !strcmp(ui_mode, OMADM_FUMO_NOTI_UI_TYPE)) {
751 *service_engine_id = FUMO_SERVICE_ENGINE;
752 _DEBUG_INFO("fumo service");
754 _DEBUG_INFO("other service");
760 DM_ERROR fumo_service_start(Event_Contents * pEvent_data)
764 DM_ERROR ret = DM_OK;
766 retvm_if((pEvent_data) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "pEvent_data is NULL!!");
768 switch (pEvent_data->noti_type) {
769 case NOTI_TYPE_NOT_SPECIFIED:
770 _DEBUG_INFO("NOTI_TYPE_NOT_SPECIFIED");
771 //temp version for gcf test
772 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
773 pEvent_data->noti_type = NOTI_TYPE_BACKGRUOUND;
774 ret = dm_fumo_common_task_request(pEvent_data);
775 _DEBUG_INFO("NOTI NOTI_TYPE_BACKGRUOUND : %d", ret);
780 case NOTI_TYPE_BACKGRUOUND:
781 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
782 ret = dm_fumo_common_task_request(pEvent_data);
783 _DEBUG_INFO("NOTI NOTI_TYPE_BACKGRUOUND : %d", ret);
788 case NOTI_TYPE_INFOMATIVE:
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_INFOMATIVE : %d", ret);
796 case NOTI_TYPE_USERINTERACTION:
797 pEvent_data->ui_mode = strdup(OMADM_FUMO_NOTI_UI_TYPE);
798 ret = dm_fumo_ui_task_request(pEvent_data);
799 _DEBUG_INFO("NOTI NOTI_TYPE_USERINTERACTION : %d ", ret);
811 event_data_free((void *)pEvent_data);
817 DM_ERROR get_fumo_ui_mode(char **ui_mode)
821 DM_ERROR ret = DM_OK;
823 engine_status *status = NULL;
824 ret = Get_Engine_Status(FUMO_SERVICE_ENGINE, &status);
827 Free_Memory_Engine_Status(&status, 1);
833 if (status != NULL) {
835 if (status->ui_mode != NULL) {
836 (*ui_mode) = strdup(status->ui_mode);
838 _DEBUG_INFO("==================Fumo ui : %s==================\n", *ui_mode);
840 _DEBUG_INFO("ui mode null");
843 Free_Memory_Engine_Status(&status, 1);
846 _DEBUG_INFO("status is null");
855 int check_existed_fumo_reminder_interval()
860 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
861 result = sync_agent_is_exist_config(FUMO_INTERVAL_TYPE, FUMO_INTERVAL, &exist);
862 _DEBUG_INFO("agent is exist result : %d", result);
868 int init_default_fumo_config()
873 return set_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG, 0, FUMO, 1);
876 int set_config_int(CONFIG_TYPE config_type, char *key, int value, char *accessName, int isFirst)
880 sync_agent_da_return_e result;
881 sync_agent_da_config_s config;
884 config.access_name = accessName;
885 config.config_id = config_type;
887 config.value = g_strdup_printf("%d", value);
890 result = sync_agent_is_exist_config(config_type, key, &exist);
891 if (result != SYNC_AGENT_DA_SUCCESS) {
892 _DEBUG_INFO("exist config fail : %d", result);
895 if (exist == 0 && isFirst == 1) {
896 _DEBUG_INFO("default add config : %s\n", key);
897 result = sync_agent_add_config(&config);
898 if (result != SYNC_AGENT_DA_SUCCESS) {
899 _DEBUG_INFO("fail add : %d", result);
902 _DEBUG_INFO("Success add config : %s, : %d\n", key, value);
905 result = sync_agent_update_config(&config);
907 if (result != SYNC_AGENT_DA_SUCCESS) {
908 _DEBUG_INFO("fail update : %d", result);
911 _DEBUG_INFO("Success update config : %s, : %d\n", key, value);
916 str_free(&(config.value));
922 int get_config_int(CONFIG_TYPE config_id, char *key)
926 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
927 sync_agent_da_config_s *config = NULL;
931 result = sync_agent_create_config(&config);
932 if (result != SYNC_AGENT_DA_SUCCESS) {
937 result = sync_agent_get_config(config_id, key, &config);
938 _DEBUG_INFO("---------------------------result : %d-------------------------\n", result);
940 _DEBUG_INFO("Success get config value");
942 ret = chartoint(config->value, &value);
943 _DEBUG_INFO("result : %d , key : %s value : %d\n", result, key, value);
946 _DEBUG_INFO("fail get config value");
950 _DEBUG_INFO("success get config value");
954 _DEBUG_INFO("fail get config value");
959 sync_agent_free_config(config);
964 int set_alarm_config_int(CONFIG_TYPE config_type, char *key, int value, char *accessName)
969 sync_agent_da_return_e result;
970 sync_agent_da_config_s config;
973 config.access_name = accessName;
974 config.config_id = config_type;
976 config.value = g_strdup_printf("%d", value);
979 result = sync_agent_is_exist_config(config_type, key, &exist);
980 if (result != SYNC_AGENT_DA_SUCCESS)
984 _DEBUG_INFO("default add config : %s\n", key);
985 result = sync_agent_add_config(&config);
987 if (result != SYNC_AGENT_DA_SUCCESS)
990 result = sync_agent_update_config(&config);
991 _DEBUG_INFO("update alarm config db ");
995 str_free(&(config.value));
996 _DEBUG_INFO("end : %d", ret);
1001 int get_wifi_only_config()
1006 return get_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG);
1009 int set_wifi_only_config(int value)
1014 return set_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG, value, FUMO, 0);
1017 DM_ERROR get_battery_state(char **battery_level)
1021 DM_ERROR ret = DM_OK;
1022 sync_agent_dev_return_e err = SYNC_AGENT_DEV_RETURN_SUCCESS;
1024 err = sync_agent_get_devinfo(2, "Battery", battery_level);
1025 if (err != SYNC_AGENT_DEV_RETURN_SUCCESS) {
1028 if ((*battery_level) == NULL) {
1032 _DEBUG_INFO("\n========battery ======== %s\n", *battery_level);
1037 return DM_GET_BATTERY_ERROR;
1040 DM_ERROR get_telephony_state(int *now_calling)
1044 DM_ERROR ret = DM_OK;
1047 * vconf( framework )
1050 if (vconf_get_int(VCONFKEY_CALL_STATE, &tel_value) != 0)
1053 switch (tel_value) {
1054 case VCONFKEY_CALL_VOICE_CONNECTING:
1055 case VCONFKEY_CALL_VOICE_ACTIVE:
1056 case VCONFKEY_CALL_VIDEO_CONNECTING:
1057 case VCONFKEY_CALL_VIDEO_ACTIVE:
1060 case VCONFKEY_CALL_OFF:
1071 return DM_TELEPHONY_ERROR;
1075 void network_state_callback()
1080 NETWORK_NONE, initial network type
1081 NETWORK_3G_ON, network UMTS on
1082 NETWORK_3G_OFF, network UMTS off
1083 NETWORK_WIFI_ON, network WIFI on
1084 NETWORK_WIFI_ON_NOT_CONNECTED, network WIFI on but not connected
1085 NETWORK_WIFI_OFF, network WIFI off
1086 NETWORK_WIFI_3G_ON, network UMTS and WIFI on
1091 /*sync_agent_na_result_e err;
1093 err = NACI_Get_Network_Type(&net_type);
1094 if(err != SYNC_AGENT_NA_SUCCESS)
1106 * deregister vconf callback
1123 DM_ERROR existed_sd_card_memory(int *existed_sd)
1127 DM_ERROR ret = DM_OK;
1129 * vconf( framework )
1130 * //only one sd card
1135 err = get_mmc_state(&mmc_value);
1140 if (mmc_value == 1) {
1143 /*for make empty folder */
1144 char *downlaod_folder = NULL;
1145 char *save_folder = NULL;
1146 ret = get_fota_download_dir(MEMORY_SD_CARD, &downlaod_folder);
1150 ret = get_fota_save_dir(MEMORY_SD_CARD, &save_folder);
1155 str_free(&downlaod_folder);
1156 str_free(&save_folder);
1167 return DM_SD_CARD_ERROR;
1170 void get_roaming_state(int *roaming_state)
1174 int roaming_config = 0;
1176 if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, roaming_state) != 0) {
1177 *roaming_state = -1;
1178 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1180 if (*roaming_state == 0) {
1181 /*not roaming svc area */
1182 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1186 /*roaming svc area */
1187 if (vconf_get_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, &roaming_config) != 0) {
1188 *roaming_state = -1;
1189 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1191 if (roaming_config == 1) {
1193 * do service roaming service
1196 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1199 /*don not service at roaming svc */
1200 *roaming_state = -1;
1201 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1209 void get_wifi_connected_state(int *wifi_state)
1213 int wifi_connection = VCONFKEY_WIFI_OFF;
1214 int nRes_wifistatus = vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_connection);
1217 if (nRes_wifistatus != 0) {
1218 _DEBUG_INFO("vconf_get_int get wificonnection fail\n");
1224 if(wifi_connection >= VCONFKEY_WIFI_CONNECTED) {
1225 _DEBUG_INFO("vconf_get_int get wificonnection success\n");
1234 void get_call_sate(int *call_state)
1241 if (vconf_get_int(VCONFKEY_TELEPHONY_CALL_STATE, call_state) != 0) {
1243 _DEBUG_INFO("end, call state : %d", *call_state);
1247 if (*call_state == 0) {
1248 _DEBUG_INFO("end, call state : %d", *call_state);
1253 _DEBUG_INFO("end, call state : %d", *call_state);
1260 int get_mmc_state(int *mmc_state)
1264 if (vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, mmc_state) != 0)
1271 _DEBUG_INFO("end error");
1275 DM_ERROR compare_memory_space(char *memory_type, long double file_size)
1280 long double sizeFree;
1281 long double sizeTotal;
1283 retvm_if((memory_type) == NULL, COMMON_ERR_IS_NULL, "memory_type is NULL!!");
1285 err = sync_agent_get_fs_mem_size(memory_type, &sizeFree, &sizeTotal);
1288 return DM_MEMORY_ERROR;
1291 _DEBUG_INFO("need free size [%f], memory free size [%f], total size [%f] ", file_size, sizeFree, sizeTotal);
1292 if (file_size > sizeFree) {
1294 return DM_OVER_MEMORY_ERROR;
1302 DM_ERROR get_fota_download_dir(MEMORY_TYPE type, char **download_folder)
1306 sync_agent_dev_return_e dci_down_ret = SYNC_AGENT_DEV_RETURN_SUCCESS;
1309 case MEMORY_INTERNAL:
1310 _DEBUG_INFO("internal memory");
1311 dci_down_ret = sync_agent_get_devinfo(2, "FOTADownDir", download_folder);
1313 case MEMORY_SD_CARD:
1314 _DEBUG_INFO("sd card memory");
1315 dci_down_ret = sync_agent_get_devinfo(2, "FOTA_SD_DownDir", download_folder);
1318 _DEBUG_INFO("ERROR NOT USE MEMORY");
1322 if (dci_down_ret == SYNC_AGENT_DEV_RETURN_SUCCESS) {
1323 _DEBUG_INFO(" download : %s", *download_folder);
1328 _DEBUG_INFO("end error : %d ", DM_MEMORY_ERROR);
1330 return DM_MEMORY_ERROR;
1333 DM_ERROR get_fota_save_dir(MEMORY_TYPE type, char **save_folder)
1337 sync_agent_dev_return_e dci_down_ret = SYNC_AGENT_DEV_RETURN_SUCCESS;
1340 case MEMORY_INTERNAL:
1341 dci_down_ret = sync_agent_get_devinfo(2, "FOTASaveDir", save_folder);
1343 case MEMORY_SD_CARD:
1344 dci_down_ret = sync_agent_get_devinfo(2, "FOTA_SD_SaveDir", save_folder);
1347 _DEBUG_INFO("ERROR NOT USE MEMORY");
1351 if (dci_down_ret == SYNC_AGENT_DEV_RETURN_SUCCESS) {
1352 _DEBUG_INFO(" save_folder : %s", *save_folder);
1357 _DEBUG_INFO("end error : %d ", DM_MEMORY_ERROR);
1359 return DM_MEMORY_ERROR;
1362 void delete_fumo_contents(MEMORY_TYPE memory_type)
1366 _DEBUG_INFO("----------------------------------------------------------firmware update fail delete files-----------------------------------------------------------");
1367 char *download_folder = NULL;
1368 char *save_folder = NULL;
1370 //FOTASaveDir //FOTADownDir
1371 //dci_save_ret = sync_agent_get_devinfo(2 , "FOTADownDir" , &download_folder);
1372 get_fota_download_dir(memory_type, &download_folder);
1373 sync_agent_empty_directory_contents(download_folder);
1374 //dci_save_ret = sync_agent_get_devinfo(2 , "FOTASaveDir" , &save_folder);
1375 get_fota_save_dir(memory_type, &save_folder);
1377 sync_agent_empty_directory_contents(save_folder);
1378 _DEBUG_INFO("delete save folder ");
1380 str_free(&save_folder);
1381 str_free(&download_folder);
1387 void first_server_bootstrap(char *server_id)
1391 DM_ERROR ret = DM_OK;
1393 if (server_id == NULL) {
1394 _DEBUG_INFO("server id null");
1398 Event_Contents *ev_data = (Event_Contents *) calloc(1, sizeof(Event_Contents) + 1);
1399 if (ev_data == NULL) {
1400 _DEBUG_INFO("alloc fail");
1404 ev_data->server_id = strdup(server_id);
1405 ev_data->session_id = NULL;
1406 ev_data->type = SERVER_BOOTSTRAP_EVENT;
1407 ev_data->ui_mode = NULL;
1409 _DEBUG_INFO("event type server bootstrap : %d", ev_data->type);
1410 _DEBUG_INFO("session id : %s", ev_data->session_id);
1411 _DEBUG_INFO("server id : %s", ev_data->server_id);
1414 SERVICE_SERVER_TYPE engine_type;
1415 engine_type = get_service_engine_type(ev_data->server_id);
1417 switch (engine_type) {
1418 case SAMSUNG_FUMO_TYPE:
1421 //when using telephony
1422 //DM_ERROR get_telephony_state(int *now_calling);
1423 _DEBUG_INFO("engine type : %d", engine_type);
1424 ev_data->noti_type = NOTI_TYPE_BACKGRUOUND;
1425 ev_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
1427 _DEBUG_INFO("noti type : %d", ev_data->noti_type);
1428 _DEBUG_INFO("ui mode : %s", ev_data->ui_mode);
1430 ret = dm_fumo_common_task_request(ev_data);
1431 _DEBUG_INFO("dm fumo conmmon task : %d ", ret);
1437 case SAMSUNG_FMM_TYPE:
1439 _DEBUG_INFO("engine type : %d", engine_type);
1440 ret = dm_lawmo_common_task_request(ev_data);
1441 _DEBUG_INFO("dm lawmo conmmon task : %d ", ret);
1447 _DEBUG_INFO("dm non engine ", ret);
1455 event_data_free((void *)ev_data);
1459 int get_default_noti_type(char *ui_mode, NotI_Type noti_type)
1463 retvm_if((ui_mode) == NULL, COMMON_ERR_IS_NULL, "ui_mode is NULL!!");
1465 if (strcmp(OMADM_FUMO_UI_TYPE, ui_mode) == 0) {
1467 return NOTI_UNKNOWN; //none type
1468 } else if (strcmp(OMADM_FUMO_NOTI_UI_TYPE, ui_mode) == 0) {
1469 switch (noti_type) {
1470 case NOTI_TYPE_NOT_SPECIFIED:
1471 case NOTI_TYPE_BACKGRUOUND:
1472 case NOTI_TYPE_USERINTERACTION:
1474 return NOTI_DOWNLOAD; //none type
1476 case NOTI_TYPE_INFOMATIVE:
1478 return NOTI_DOWNLOAD; //connect to server
1480 case NOTI_TYPE_POLLINTERACTION:
1482 return NOTI_POLL_INTERACTION; //connect to server
1485 return NOTI_UNKNOWN; //none type
1488 } else if (strcmp(OMADM_FUMO_BACKGROUND_UI_TYPE, ui_mode) == 0) {
1490 return NOTI_UNKNOWN; //none type
1494 return NOTI_UNKNOWN;
1497 int wifi_only_config(char *config)
1501 retvm_if((config) == NULL, COMMON_ERR_IS_NULL, "config is NULL!!");
1503 if (config != NULL) {
1504 if (strcmp(config, "1") == 0) {
1505 _DEBUG_INFO("wifi on config");
1508 } else if (strcmp(config, "0") == 0) {
1509 _DEBUG_INFO("wifi off config");
1513 _DEBUG_INFO("wifi config error");
1516 _DEBUG_INFO("wifi config error");