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 */
183 /* engine status db reset */
184 //ret = DB_Delete_Table();
185 ret = DB_Reset_Table();
190 sync_agent_empty_agent_default_table(SYNC_AGENT_DA_TABLE_NAME_CONFIG);
191 //sync_agent_empty_all_agent_table()
193 /*fumo, lawmo data in alarm db */
194 _DEBUG_INFO("--------------------------------------------------------------------------------------------");
201 _DEBUG_INFO(" end error : %d \n", ret);
205 DM_ERROR auto_operate_service_engine()
209 DM_ERROR ret = DM_OK;
210 engine_status *status = NULL;
212 if (IsExist_Engine_id(FUMO_SERVICE_ENGINE) != 0) {
213 printf("engine id VALUE : %d ", FUMO_SERVICE_ENGINE);
214 _DEBUG_INFO("engine id VALUE : %d ", FUMO_SERVICE_ENGINE);
216 ret = Get_Engine_Status(FUMO_SERVICE_ENGINE, &status);
217 if (ret != DM_OK || status == NULL)
220 if (status->engine_status == 0) {
221 ret = Delete_Engine_Status(FUMO_SERVICE_ENGINE);
225 ret = fumo_serviceEngine_task_request();
226 _DEBUG_INFO("fumo server engine task request : %d", ret);
228 if (status != NULL) {
229 Free_Memory_Engine_Status(&status, 1);
233 if (IsExist_Engine_id(LAWMO_SERVICE_ENGINE) != 0) {
234 printf("engine id VALUE : %d ", LAWMO_SERVICE_ENGINE);
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);
566 alarm_info->repeat_type = REPEAT;
567 alarm_info->repeat_value = ((1 * 60) * 60);
568 //alarm_info->repeat_value = ((1*60)*1);
571 case INTERVAL_3HOURS:
574 alarm_info->repeat_type = REPEAT;
575 alarm_info->repeat_value = ((3 * 60) * 60);
578 case INTERVAL_6HOURS:
581 alarm_info->repeat_type = REPEAT;
582 alarm_info->repeat_value = ((6 * 60) * 60);
586 case INTERVAL_12HOURS:
589 alarm_info->repeat_type = REPEAT;
590 alarm_info->repeat_value = ((12 * 60) * 60);
597 alarm_info->repeat_type = REPEAT;
598 alarm_info->repeat_value = ((24 * 60) * 60);
605 alarm_info->repeat_type = REPEAT_WEEKLY ;
606 alarm_info->repeat_value = week[struct_time->tm_wday];
610 case INTERVAL_1MONTH:
612 alarm_info->repeat_type = REPEAT_MONTHLY;
613 alarm_info->repeat_value = 0;
615 case INTERVAL_CANCEL:
622 _DEBUG_INFO("######### Alarm Info #####################\n");
623 _DEBUG_INFO("time = %s\n", alarm_info->start_alarm_time);
624 _DEBUG_INFO("repeat_mode = %d, repeat_value = %d\n", alarm_info->repeat_type, alarm_info->repeat_value);
625 _DEBUG_INFO("is_disposable = %d\n", alarm_info->is_disposable);
627 /* if(conf_type == FUMO_INTERVAL_TYPE)
628 delete_alarm_item(FUMO_INTERVAL, FUMO_INTERVAL_TYPE);*/
632 sync_agent_pm_return_e err = SYNC_AGENT_PM_SUCCESS;
634 /*add alarm service */
635 err = sync_agent_add_service_data(1, alarm_info, &alarm_id);
636 if (err != SYNC_AGENT_PM_SUCCESS) {
637 _DEBUG_INFO("Fail PMCI_Add_Item_To_Specific_Type\n");
638 ret = DM_ERR_FUMO_INTERNAL_SCHEDULER_ERROR;
640 /*add framework config db */
641 alarm_ret = set_alarm_config_int(conf_type, alarm_type, alarm_id, alarm_type);
642 if (alarm_ret == 0) {
643 ret = DM_ERR_FUMO_INTERNAL_SCHEDULER_ERROR;
647 if (alarm_info != NULL) {
648 str_free(&(alarm_info->start_alarm_time));
658 if (alarm_info != NULL) {
659 str_free(&(alarm_info->start_alarm_time));
665 _DEBUG_INFO("end error : %d ", ret);
669 void delete_alarm_item(char *alarm_type, CONFIG_TYPE conf_type)
676 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
677 sync_agent_pm_return_e pm_result = SYNC_AGENT_PM_SUCCESS;
679 sync_agent_da_config_s *config = NULL;
683 result = sync_agent_get_config_list(conf_type, &list);
684 count = g_list_length(list);
686 _DEBUG_INFO("alarm count: %d\n", count);
687 if (count > 0 && list != 0) {
688 config = (sync_agent_da_config_s *) g_list_nth_data(list, 0);
689 _DEBUG_INFO("------------------------------------------alarm id : %s----------------------------------------------\n", config->value);
690 ret = chartoint(config->value, &before_alarm_id);
692 pm_result = sync_agent_remove_service_data(1, before_alarm_id);
693 _DEBUG_INFO("delete alarm %d", result);
695 if (pm_result == SYNC_AGENT_PM_SUCCESS) {
696 result = sync_agent_delete_config(conf_type, alarm_type);
697 _DEBUG_INFO("delete alarm config %d", result);
700 _DEBUG_INFO("fail get alarm id");
704 sync_agent_free_config_list(list);
709 SERVICE_SERVER_TYPE get_service_engine_type(const char *server_id)
713 retvm_if(server_id == NULL, NO_ENGINE_TYPE, "server_id is NULL!!");
715 _DEBUG_INFO("get- service engine type by server id : %s", server_id);
717 return get_engine_type_by_serverid(server_id);
720 DM_ERROR get_server_info(Event_Contents * pEvent_data, char **server_id, char **session_id, int *session_type)
724 DM_ERROR ret = DM_OK;
726 retvm_if((pEvent_data) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "pEvent_data is NULL!!");
727 retvm_if((pEvent_data->server_id) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "server_id is NULL!!");
729 (*server_id) = strdup(pEvent_data->server_id);
730 _DEBUG_INFO(" server id : %s\n", *server_id);
732 if (pEvent_data->session_id != NULL) {
733 (*session_id) = strdup(pEvent_data->session_id);
734 _DEBUG_INFO(" session_id : %s\n", *session_id);
737 (*session_type) = pEvent_data->type;
738 _DEBUG_INFO("session type : %d\n", *session_type);
744 void get_service_engine_id(ENGINE_ID * service_engine_id, char *ui_mode)
751 if (!strcmp(ui_mode, OMADM_FUMO_UI_TYPE) || !strcmp(ui_mode, OMADM_FUMO_NOTI_UI_TYPE)) {
752 *service_engine_id = FUMO_SERVICE_ENGINE;
753 _DEBUG_INFO("fumo service");
755 _DEBUG_INFO("other service");
761 DM_ERROR fumo_service_start(Event_Contents * pEvent_data)
765 DM_ERROR ret = DM_OK;
767 retvm_if((pEvent_data) == NULL, COMMON_ERR_INTERNAL_NOT_DEFINED, "pEvent_data is NULL!!");
769 switch (pEvent_data->noti_type) {
770 case NOTI_TYPE_NOT_SPECIFIED:
771 _DEBUG_INFO("NOTI_TYPE_NOT_SPECIFIED");
772 //temp version for gcf test
773 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
774 pEvent_data->noti_type = NOTI_TYPE_BACKGRUOUND;
775 ret = dm_fumo_common_task_request(pEvent_data);
776 _DEBUG_INFO("NOTI NOTI_TYPE_BACKGRUOUND : %d", ret);
781 case NOTI_TYPE_BACKGRUOUND:
782 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
783 ret = dm_fumo_common_task_request(pEvent_data);
784 _DEBUG_INFO("NOTI NOTI_TYPE_BACKGRUOUND : %d", ret);
789 case NOTI_TYPE_INFOMATIVE:
790 pEvent_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
791 ret = dm_fumo_common_task_request(pEvent_data);
792 _DEBUG_INFO("NOTI NOTI_TYPE_INFOMATIVE : %d", ret);
797 case NOTI_TYPE_USERINTERACTION:
798 pEvent_data->ui_mode = strdup(OMADM_FUMO_NOTI_UI_TYPE);
799 ret = dm_fumo_ui_task_request(pEvent_data);
800 _DEBUG_INFO("NOTI NOTI_TYPE_USERINTERACTION : %d ", ret);
812 event_data_free((void *)pEvent_data);
818 DM_ERROR get_fumo_ui_mode(char **ui_mode)
822 DM_ERROR ret = DM_OK;
824 engine_status *status = NULL;
825 ret = Get_Engine_Status(FUMO_SERVICE_ENGINE, &status);
828 Free_Memory_Engine_Status(&status, 1);
834 if (status != NULL) {
836 if (status->ui_mode != NULL) {
837 (*ui_mode) = strdup(status->ui_mode);
839 _DEBUG_INFO("==================Fumo ui : %s==================\n", *ui_mode);
841 _DEBUG_INFO("ui mode null");
844 Free_Memory_Engine_Status(&status, 1);
847 _DEBUG_INFO("status is null");
856 int check_existed_fumo_reminder_interval()
861 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
862 result = sync_agent_is_exist_config(FUMO_INTERVAL_TYPE, FUMO_INTERVAL, &exist);
863 _DEBUG_INFO("agent is exist result : %d", result);
869 int init_default_fumo_config()
874 return set_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG, 0, FUMO, 1);
877 int set_config_int(CONFIG_TYPE config_type, char *key, int value, char *accessName, int isFirst)
881 sync_agent_da_return_e result;
882 sync_agent_da_config_s config;
885 config.access_name = accessName;
886 config.config_id = config_type;
888 config.value = g_strdup_printf("%d", value);
891 result = sync_agent_is_exist_config(config_type, key, &exist);
892 if (result != SYNC_AGENT_DA_SUCCESS) {
893 _DEBUG_INFO("exist config fail : %d", result);
896 if (exist == 0 && isFirst == 1) {
897 _DEBUG_INFO("default add config : %s\n", key);
898 result = sync_agent_add_config(&config);
899 if (result != SYNC_AGENT_DA_SUCCESS) {
900 _DEBUG_INFO("fail add : %d", result);
903 _DEBUG_INFO("Success add config : %s, : %d\n", key, value);
906 result = sync_agent_update_config(&config);
908 if (result != SYNC_AGENT_DA_SUCCESS) {
909 _DEBUG_INFO("fail update : %d", result);
912 _DEBUG_INFO("Success update config : %s, : %d\n", key, value);
917 str_free(&(config.value));
923 int get_config_int(CONFIG_TYPE config_id, char *key)
927 sync_agent_da_return_e result = SYNC_AGENT_DA_SUCCESS;
928 sync_agent_da_config_s *config = NULL;
932 result = sync_agent_create_config(&config);
933 if (result != SYNC_AGENT_DA_SUCCESS) {
938 result = sync_agent_get_config(config_id, key, &config);
939 _DEBUG_INFO("---------------------------result : %d-------------------------\n", result);
941 _DEBUG_INFO("Success get config value");
943 ret = chartoint(config->value, &value);
944 _DEBUG_INFO("result : %d , key : %s value : %d\n", result, key, value);
947 _DEBUG_INFO("fail get config value");
951 _DEBUG_INFO("success get config value");
955 _DEBUG_INFO("fail get config value");
960 sync_agent_free_config(config);
965 int set_alarm_config_int(CONFIG_TYPE config_type, char *key, int value, char *accessName)
970 sync_agent_da_return_e result;
971 sync_agent_da_config_s config;
974 config.access_name = accessName;
975 config.config_id = config_type;
977 config.value = g_strdup_printf("%d", value);
980 result = sync_agent_is_exist_config(config_type, key, &exist);
981 if (result != SYNC_AGENT_DA_SUCCESS)
985 _DEBUG_INFO("default add config : %s\n", key);
986 result = sync_agent_add_config(&config);
988 if (result != SYNC_AGENT_DA_SUCCESS)
991 result = sync_agent_update_config(&config);
992 _DEBUG_INFO("update alarm config db ");
996 str_free(&(config.value));
997 _DEBUG_INFO("end : %d", ret);
1002 int get_wifi_only_config()
1007 return get_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG);
1010 int set_wifi_only_config(int value)
1015 return set_config_int(FUMO_WIFI_ONLY_TYPE, FUMO_WIFI_ONLY_CONFIG, value, FUMO, 0);
1018 DM_ERROR get_battery_state(char **battery_level)
1022 DM_ERROR ret = DM_OK;
1023 sync_agent_dev_return_e err = SYNC_AGENT_DEV_RETURN_SUCCESS;
1025 err = sync_agent_get_devinfo(2, "Battery", battery_level);
1026 if (err != SYNC_AGENT_DEV_RETURN_SUCCESS) {
1029 if ((*battery_level) == NULL) {
1033 _DEBUG_INFO("\n========battery ======== %s\n", *battery_level);
1038 return DM_GET_BATTERY_ERROR;
1041 DM_ERROR get_telephony_state(int *now_calling)
1045 DM_ERROR ret = DM_OK;
1048 * vconf( framework )
1051 if (vconf_get_int(VCONFKEY_CALL_STATE, &tel_value) != 0)
1054 switch (tel_value) {
1055 case VCONFKEY_CALL_VOICE_CONNECTING:
1056 case VCONFKEY_CALL_VOICE_ACTIVE:
1057 case VCONFKEY_CALL_VIDEO_CONNECTING:
1058 case VCONFKEY_CALL_VIDEO_ACTIVE:
1061 case VCONFKEY_CALL_OFF:
1072 return DM_TELEPHONY_ERROR;
1076 void network_state_callback()
1081 NETWORK_NONE, initial network type
1082 NETWORK_3G_ON, network UMTS on
1083 NETWORK_3G_OFF, network UMTS off
1084 NETWORK_WIFI_ON, network WIFI on
1085 NETWORK_WIFI_ON_NOT_CONNECTED, network WIFI on but not connected
1086 NETWORK_WIFI_OFF, network WIFI off
1087 NETWORK_WIFI_3G_ON, network UMTS and WIFI on
1092 /*sync_agent_na_result_e err;
1094 err = NACI_Get_Network_Type(&net_type);
1095 if(err != SYNC_AGENT_NA_SUCCESS)
1107 * deregister vconf callback
1124 DM_ERROR existed_sd_card_memory(int *existed_sd)
1128 DM_ERROR ret = DM_OK;
1130 * vconf( framework )
1131 * //only one sd card
1136 err = get_mmc_state(&mmc_value);
1141 if (mmc_value == 1) {
1144 /*for make empty folder */
1145 char *downlaod_folder = NULL;
1146 char *save_folder = NULL;
1147 ret = get_fota_download_dir(MEMORY_SD_CARD, &downlaod_folder);
1151 ret = get_fota_save_dir(MEMORY_SD_CARD, &save_folder);
1156 str_free(&downlaod_folder);
1157 str_free(&save_folder);
1168 return DM_SD_CARD_ERROR;
1171 void get_roaming_state(int *roaming_state)
1175 int roaming_config = 0;
1177 if (vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, roaming_state) != 0) {
1178 *roaming_state = -1;
1179 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1181 if (*roaming_state == 0) {
1182 /*not roaming svc area */
1183 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1187 /*roaming svc area */
1188 if (vconf_get_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, &roaming_config) != 0) {
1189 *roaming_state = -1;
1190 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1192 if (roaming_config == 1) {
1194 * do service roaming service
1197 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1200 /*don not service at roaming svc */
1201 *roaming_state = -1;
1202 _DEBUG_INFO("end , roaming state : %d", *roaming_state);
1210 void get_wifi_connected_state(int *wifi_state)
1214 int wifi_connection = VCONFKEY_WIFI_OFF;
1215 int nRes_wifistatus = vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_connection);
1218 if (nRes_wifistatus != 0) {
1219 _DEBUG_INFO("vconf_get_int get wificonnection fail\n");
1225 if(wifi_connection >= VCONFKEY_WIFI_CONNECTED) {
1226 _DEBUG_INFO("vconf_get_int get wificonnection success\n");
1235 void get_call_sate(int *call_state)
1242 if (vconf_get_int(VCONFKEY_TELEPHONY_CALL_STATE, call_state) != 0) {
1244 _DEBUG_INFO("end, call state : %d", *call_state);
1248 if (*call_state == 0) {
1249 _DEBUG_INFO("end, call state : %d", *call_state);
1254 _DEBUG_INFO("end, call state : %d", *call_state);
1261 int get_mmc_state(int *mmc_state)
1265 if (vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, mmc_state) != 0)
1272 _DEBUG_INFO("end error");
1276 DM_ERROR compare_memory_space(char *memory_type, long double file_size)
1281 long double sizeFree;
1282 long double sizeTotal;
1284 retvm_if((memory_type) == NULL, COMMON_ERR_IS_NULL, "memory_type is NULL!!");
1286 err = sync_agent_get_fs_mem_size(memory_type, &sizeFree, &sizeTotal);
1289 return DM_MEMORY_ERROR;
1292 _DEBUG_INFO("need free size [%f], memory free size [%f], total size [%f] ", file_size, sizeFree, sizeTotal);
1293 if (file_size > sizeFree) {
1295 return DM_OVER_MEMORY_ERROR;
1298 //_DEBUG_INFO("below return value is test code"); // for memory not enough - testing
1299 //return DM_OVER_MEMORY_ERROR; // for memory not enough - testing
1305 DM_ERROR get_fota_download_dir(MEMORY_TYPE type, char **download_folder)
1309 sync_agent_dev_return_e dci_down_ret = SYNC_AGENT_DEV_RETURN_SUCCESS;
1312 case MEMORY_INTERNAL:
1313 _DEBUG_INFO("internal memory");
1314 dci_down_ret = sync_agent_get_devinfo(2, "FOTADownDir", download_folder);
1316 case MEMORY_SD_CARD:
1317 _DEBUG_INFO("sd card memory");
1318 dci_down_ret = sync_agent_get_devinfo(2, "FOTA_SD_DownDir", download_folder);
1321 _DEBUG_INFO("ERROR NOT USE MEMORY");
1325 if (dci_down_ret == SYNC_AGENT_DEV_RETURN_SUCCESS) {
1326 _DEBUG_INFO(" download : %s", *download_folder);
1331 _DEBUG_INFO("end error : %d ", DM_MEMORY_ERROR);
1333 return DM_MEMORY_ERROR;
1336 DM_ERROR get_fota_save_dir(MEMORY_TYPE type, char **save_folder)
1340 sync_agent_dev_return_e dci_down_ret = SYNC_AGENT_DEV_RETURN_SUCCESS;
1343 case MEMORY_INTERNAL:
1344 dci_down_ret = sync_agent_get_devinfo(2, "FOTASaveDir", save_folder);
1346 case MEMORY_SD_CARD:
1347 dci_down_ret = sync_agent_get_devinfo(2, "FOTA_SD_SaveDir", save_folder);
1350 _DEBUG_INFO("ERROR NOT USE MEMORY");
1354 if (dci_down_ret == SYNC_AGENT_DEV_RETURN_SUCCESS) {
1355 _DEBUG_INFO(" save_folder : %s", *save_folder);
1360 _DEBUG_INFO("end error : %d ", DM_MEMORY_ERROR);
1362 return DM_MEMORY_ERROR;
1365 void delete_fumo_contents(MEMORY_TYPE memory_type)
1369 _DEBUG_INFO("----------------------------------------------------------firmware update fail delete files-----------------------------------------------------------");
1370 char *download_folder = NULL;
1371 char *save_folder = NULL;
1373 //FOTASaveDir //FOTADownDir
1374 //dci_save_ret = sync_agent_get_devinfo(2 , "FOTADownDir" , &download_folder);
1375 get_fota_download_dir(memory_type, &download_folder);
1376 sync_agent_empty_directory_contents(download_folder);
1377 //dci_save_ret = sync_agent_get_devinfo(2 , "FOTASaveDir" , &save_folder);
1378 get_fota_save_dir(memory_type, &save_folder);
1380 sync_agent_empty_directory_contents(save_folder);
1381 _DEBUG_INFO("delete save folder ");
1383 str_free(&save_folder);
1384 str_free(&download_folder);
1390 void first_server_bootstrap(char *server_id)
1394 DM_ERROR ret = DM_OK;
1396 if (server_id == NULL) {
1397 _DEBUG_INFO("server id null");
1401 Event_Contents *ev_data = (Event_Contents *) calloc(1, sizeof(Event_Contents) + 1);
1402 if (ev_data == NULL) {
1403 _DEBUG_INFO("alloc fail");
1407 ev_data->server_id = strdup(server_id);
1408 ev_data->session_id = NULL;
1409 ev_data->type = SERVER_BOOTSTRAP_EVENT;
1410 ev_data->ui_mode = NULL;
1412 _DEBUG_INFO("event type server bootstrap : %d", ev_data->type);
1413 _DEBUG_INFO("session id : %s", ev_data->session_id);
1414 _DEBUG_INFO("server id : %s", ev_data->server_id);
1417 SERVICE_SERVER_TYPE engine_type;
1418 engine_type = get_service_engine_type(ev_data->server_id);
1420 switch (engine_type) {
1421 case SAMSUNG_FUMO_TYPE:
1424 //when using telephony
1425 //DM_ERROR get_telephony_state(int *now_calling);
1426 _DEBUG_INFO("engine type : %d", engine_type);
1427 ev_data->noti_type = NOTI_TYPE_BACKGRUOUND;
1428 ev_data->ui_mode = strdup(OMADM_FUMO_BACKGROUND_UI_TYPE);
1430 _DEBUG_INFO("noti type : %d", ev_data->noti_type);
1431 _DEBUG_INFO("ui mode : %s", ev_data->ui_mode);
1433 ret = dm_fumo_common_task_request(ev_data);
1434 _DEBUG_INFO("dm fumo conmmon task : %d ", ret);
1440 case SAMSUNG_FMM_TYPE:
1442 _DEBUG_INFO("engine type : %d", engine_type);
1443 ret = dm_lawmo_common_task_request(ev_data);
1444 _DEBUG_INFO("dm lawmo conmmon task : %d ", ret);
1450 _DEBUG_INFO("dm non engine ", ret);
1458 event_data_free((void *)ev_data);
1462 int get_default_noti_type(char *ui_mode, NotI_Type noti_type)
1466 retvm_if((ui_mode) == NULL, COMMON_ERR_IS_NULL, "ui_mode is NULL!!");
1468 if (strcmp(OMADM_FUMO_UI_TYPE, ui_mode) == 0) {
1470 return NOTI_UNKNOWN; //none type
1471 } else if (strcmp(OMADM_FUMO_NOTI_UI_TYPE, ui_mode) == 0) {
1472 switch (noti_type) {
1473 case NOTI_TYPE_NOT_SPECIFIED:
1474 case NOTI_TYPE_BACKGRUOUND:
1475 case NOTI_TYPE_USERINTERACTION:
1477 return NOTI_DOWNLOAD; //none type
1479 case NOTI_TYPE_INFOMATIVE:
1481 return NOTI_DOWNLOAD; //connect to server
1483 case NOTI_TYPE_POLLINTERACTION:
1485 return NOTI_POLL_INTERACTION; //connect to server
1488 return NOTI_UNKNOWN; //none type
1491 } else if (strcmp(OMADM_FUMO_BACKGROUND_UI_TYPE, ui_mode) == 0) {
1493 return NOTI_UNKNOWN; //none type
1497 return NOTI_UNKNOWN;
1500 int wifi_only_config(char *config)
1504 retvm_if((config) == NULL, COMMON_ERR_IS_NULL, "config is NULL!!");
1506 if (config != NULL) {
1507 if (strcmp(config, "1") == 0) {
1508 _DEBUG_INFO("wifi on config");
1511 } else if (strcmp(config, "0") == 0) {
1512 _DEBUG_INFO("wifi off config");
1516 _DEBUG_INFO("wifi config error");
1519 _DEBUG_INFO("wifi config error");