X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gps-manager%2Fserver.c;h=3383e20bbbe6a66d47e257d7092cfa292f1718cb;hb=209c999100c1fd37e4e7c91b94608bd43abf0147;hp=31c12dd32f3fb1d82c93f04b359079efa424c328;hpb=76aef537743d91a75c780eb6623b7b38a4c6547f;p=framework%2Flocation%2Fgps-manager.git diff --git a/gps-manager/server.c b/gps-manager/server.c index 31c12dd..3383e20 100644 --- a/gps-manager/server.c +++ b/gps-manager/server.c @@ -41,9 +41,8 @@ #include "debug_util.h" #include "last_position.h" -#include -#include -#include +#include +#include #include #include @@ -54,7 +53,9 @@ #include #include +#if !GLIB_CHECK_VERSION (2, 31, 0) #include +#endif #include #define GPS_NI_POPUP "/usr/bin/gps_popup" @@ -98,20 +99,20 @@ static void _gps_mode_changed_cb(keynode_t * key, void *data) { int int_val; - if (setting_get_int(GPS_SESSION, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! GPS_SESSION setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_GPS_SESSION, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_GPS_SESSION setting"); int_val = GPS_SESSION_TRACKING_MODE; } g_gps_params.session_type = int_val; - if (setting_get_int(GPS_OPERATION, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! GPS_OPERATION setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_GPS_OPERATION, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_GPS_OPERATION setting"); int_val = GPS_OPERATION_STANDALONE; } g_gps_params.operation_mode = int_val; - if (setting_get_int(GPS_STARTING, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! GPS_STARTING setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_GPS_STARTING, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_GPS_STARTING setting"); int_val = GPS_STARTING_HOT_; } g_gps_params.starting_type = int_val; @@ -124,7 +125,7 @@ static void _gps_supl_changed_cb(keynode_t * key, void *data) int int_val; char *str; - str = setting_get_string(SUPL_SERVER); + str = setting_get_string(VCONFKEY_LOCATION_SUPL_SERVER); if (str == NULL) { snprintf(g_gps_params.supl_url, MAX_SUPL_URL_LEN, "%s", SUPL_SERVER_URL_DEFAULT); @@ -133,8 +134,8 @@ static void _gps_supl_changed_cb(keynode_t * key, void *data) snprintf(g_gps_params.supl_url, MAX_SUPL_URL_LEN, "%s", str); } - if (setting_get_int(SUPL_PORT, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! SUPL_PORT setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_SUPL_PORT, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_SUPL_PORT setting"); int_val = SUPL_SERVER_PORT_DEFAULT; } g_gps_params.supl_port = int_val; @@ -146,8 +147,8 @@ static void _gps_setting_changed_cb(keynode_t * key, void *data) { int int_val; - if (setting_get_int(SUPL_SSL, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! SUPL_SSL setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_SUPL_SSL, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_SUPL_SSL setting"); int_val = 0; } g_gps_params.ssl_mode = int_val; @@ -157,8 +158,8 @@ static void _gps_setting_changed_cb(keynode_t * key, void *data) static void _gps_nmea_changed_cb(keynode_t * key, void *data) { int int_val; - if (setting_get_int(NMEA_LOGGING, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "NMEA_LOGGING get Failed."); + if (setting_get_int(VCONFKEY_LOCATION_NMEA_LOGGING, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_NMEA_LOGGING setting"); int_val = 0; } logging_enabled = (int_val == 1) ? TRUE : FALSE; @@ -170,8 +171,8 @@ static gboolean get_replay_enabled() int int_val; gboolean ret; - if (setting_get_int(REPLAY_ENABLED, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "REPLAY_ENABLED get Failed."); + if (setting_get_int(VCONFKEY_LOCATION_REPLAY_ENABLED, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR get VCONFKEY_LOCATION_REPLAY_ENABLED setting"); int_val = 0; } @@ -210,31 +211,54 @@ static void reload_plugin_module() static void _gps_replay_changed_cb(keynode_t * key, void *data) { - replay_enabled = get_replay_enabled(); reload_plugin_module(); return; } -static void _gps_server_set_indicator(int gps_state) +static void _position_state_changed_cb(keynode_t * key, void *data) { int ret; + int gps_state = 0; int wps_state = 0; - setting_get_int(VCONFKEY_WPS_STATE, &wps_state); + setting_get_int(VCONFKEY_LOCATION_GPS_STATE, &gps_state); + setting_get_int(VCONFKEY_LOCATION_WPS_STATE, &wps_state); LOG_GPS(DBG_LOW, "gps state : [%d], wps state : [%d]", gps_state, wps_state); if (gps_state == POSITION_CONNECTED || wps_state == POSITION_CONNECTED) { - ret = setting_set_int(VCONFKEY_GPS_STATE, POSITION_CONNECTED); + ret = setting_set_int(VCONFKEY_LOCATION_POSITION_STATE, POSITION_CONNECTED); } else { if (gps_state == POSITION_OFF && wps_state == POSITION_OFF) { - ret = setting_set_int(VCONFKEY_GPS_STATE, POSITION_OFF); + ret = setting_set_int(VCONFKEY_LOCATION_POSITION_STATE, POSITION_OFF); } else { - ret = setting_set_int(VCONFKEY_GPS_STATE, POSITION_SEARCHING); + ret = setting_set_int(VCONFKEY_LOCATION_POSITION_STATE, POSITION_SEARCHING); } } + return; +} + +static void _gps_server_set_gps_state(int gps_state) +{ + int ret; + + switch (gps_state) { + case POSITION_CONNECTED: + ret = setting_set_int(VCONFKEY_LOCATION_GPS_STATE, POSITION_CONNECTED); + break; + case POSITION_SEARCHING: + ret = setting_set_int(VCONFKEY_LOCATION_GPS_STATE, POSITION_SEARCHING); + break; + case POSITION_OFF: + ret = setting_set_int(VCONFKEY_LOCATION_GPS_STATE, POSITION_OFF); + break; + default: + ret = setting_set_int(VCONFKEY_LOCATION_GPS_STATE, POSITION_OFF); + break; + } + if (ret == 1) { LOG_GPS(DBG_LOW, "Succesee to set indicator"); } else { @@ -289,7 +313,7 @@ static gboolean _initialize_data() int request_start_session() { - int status = TRUE; + gboolean status = TRUE; gps_failure_reason_t reason_code = GPS_FAILURE_CAUSE_NORMAL; if (gps_session_state != GPS_SESSION_STOPPED && gps_session_state != GPS_SESSION_STOPPING) { @@ -297,6 +321,8 @@ int request_start_session() return TRUE; } + gps_session_state = GPS_SESSION_STARTING; + LOG_GPS(DBG_LOW, "==GPSSessionState[%d]", gps_session_state); status = get_plugin_module()->request(GPS_ACTION_START_SESSION, &g_gps_params, &reason_code); if (status == FALSE) { @@ -307,16 +333,14 @@ int request_start_session() LOG_GPS(DBG_LOW, "Main: sending GPS_ACTION_START_SESSION OK !"); _initialize_data(); - gps_session_state = GPS_SESSION_STARTING; - LOG_GPS(DBG_LOW, "==GPSSessionState[%d]", gps_session_state); - setting_ignore_key_changed(REPLAY_ENABLED, _gps_replay_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_REPLAY_ENABLED, _gps_replay_changed_cb); return TRUE; } int request_stop_session() { - unsigned int status = TRUE; + gboolean status = TRUE; gboolean cur_replay_enabled = FALSE; gps_failure_reason_t reason_code = GPS_FAILURE_CAUSE_NORMAL; @@ -331,7 +355,7 @@ int request_stop_session() replay_enabled = cur_replay_enabled; reload_plugin_module(); } - setting_notify_key_changed(REPLAY_ENABLED, _gps_replay_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_REPLAY_ENABLED, _gps_replay_changed_cb); } else { LOG_GPS(DBG_LOW, " plugin->request to LBS_GPS_STOP_SESSION Failed, reasonCode =%d", reason_code); } @@ -349,15 +373,15 @@ static void _gps_plugin_handler_init(char *module_name) g_gps_plugin.name = (char *)malloc(strlen(module_name) + 1); snprintf(g_gps_plugin.name, strlen(module_name) + 1, "%s", module_name); if (strcmp(REPLAY_MODULE, g_gps_plugin.name) == 0) { - setting_set_int(REPLAY_ENABLED, 1); + setting_set_int(VCONFKEY_LOCATION_REPLAY_ENABLED, 1); } else { - setting_set_int(REPLAY_ENABLED, 0); + setting_set_int(VCONFKEY_LOCATION_REPLAY_ENABLED, 0); } } static void _gps_plugin_handler_deinit() { - setting_set_int(REPLAY_ENABLED, 0); + setting_set_int(VCONFKEY_LOCATION_REPLAY_ENABLED, 0); if (g_gps_plugin.handle != NULL) { g_gps_plugin.handle = NULL; @@ -374,27 +398,27 @@ static void _gps_read_params() int int_val = 0; char *str; - if (setting_get_int(GPS_SESSION, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! GPS_SESSION setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_GPS_SESSION, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_GPS_SESSION setting"); int_val = GPS_SESSION_TRACKING_MODE; } g_gps_params.session_type = int_val; - if (setting_get_int(GPS_OPERATION, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! GPS_OPERATION setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_GPS_OPERATION, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_GPS_OPERATION setting"); int_val = GPS_OPERATION_STANDALONE; } g_gps_params.operation_mode = int_val; - if (setting_get_int(GPS_STARTING, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! TING_MODE setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_GPS_STARTING, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_GPS_STATING setting"); int_val = GPS_STARTING_HOT_; } g_gps_params.starting_type = int_val; g_gps_params.time_bn_fixes = 1; - str = setting_get_string(SUPL_SERVER); + str = setting_get_string(VCONFKEY_LOCATION_SUPL_SERVER); if (str == NULL) { snprintf(g_gps_params.supl_url, MAX_SUPL_URL_LEN, "%s", SUPL_SERVER_URL_DEFAULT); LOG_GPS(DBG_ERR, "vconf fail to get Server URL [Default URL]"); @@ -402,28 +426,28 @@ static void _gps_read_params() snprintf(g_gps_params.supl_url, MAX_SUPL_URL_LEN, "%s", str); } - if (setting_get_int(SUPL_PORT, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! SUPL_PORT setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_SUPL_PORT, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_SUPL_PORT setting"); int_val = SUPL_SERVER_PORT_DEFAULT; } g_gps_params.supl_port = int_val; LOG_GPS(DBG_LOW, "First Read!! SUPL server:%s, port:%d", g_gps_params.supl_url, g_gps_params.supl_port); - if (setting_get_int(SUPL_SSL, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//ERROR!! SUPL_SSL setting get failed"); + if (setting_get_int(VCONFKEY_LOCATION_SUPL_SSL, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_SUPL_SSL setting"); int_val = 0; } g_gps_params.ssl_mode = int_val; - if (setting_get_int(NMEA_LOGGING, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//NMEA_LOGGING get Failed."); + if (setting_get_int(VCONFKEY_LOCATION_NMEA_LOGGING, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_NMEA_LOGGING setting"); int_val = 0; } logging_enabled = (int_val == 1) ? TRUE : FALSE; - if (setting_get_int(REPLAY_ENABLED, &int_val) == FALSE) { - LOG_GPS(DBG_ERR, "//REPLAY_ENABLED get Failed."); + if (setting_get_int(VCONFKEY_LOCATION_REPLAY_ENABLED, &int_val) == FALSE) { + LOG_GPS(DBG_ERR, "//ERROR!! get VCONFKEY_LOCATION_REPLAY_ENABLED setting"); int_val = 0; } replay_enabled = (int_val == 1) ? TRUE : FALSE; @@ -431,26 +455,30 @@ static void _gps_read_params() static void _gps_notify_params() { - setting_notify_key_changed(GPS_SESSION, _gps_mode_changed_cb); - setting_notify_key_changed(GPS_OPERATION, _gps_mode_changed_cb); - setting_notify_key_changed(GPS_STARTING, _gps_mode_changed_cb); - setting_notify_key_changed(SUPL_SERVER, _gps_supl_changed_cb); - setting_notify_key_changed(SUPL_PORT, _gps_supl_changed_cb); - setting_notify_key_changed(SUPL_SSL, _gps_setting_changed_cb); - setting_notify_key_changed(NMEA_LOGGING, _gps_nmea_changed_cb); - setting_notify_key_changed(REPLAY_ENABLED, _gps_replay_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_GPS_SESSION, _gps_mode_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_GPS_OPERATION, _gps_mode_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_GPS_STARTING, _gps_mode_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_SUPL_SERVER, _gps_supl_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_SUPL_PORT, _gps_supl_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_SUPL_SSL, _gps_setting_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_NMEA_LOGGING, _gps_nmea_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_REPLAY_ENABLED, _gps_replay_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_GPS_STATE, _position_state_changed_cb); + setting_notify_key_changed(VCONFKEY_LOCATION_WPS_STATE, _position_state_changed_cb); } static void _gps_ignore_params() { - setting_ignore_key_changed(GPS_SESSION, _gps_mode_changed_cb); - setting_ignore_key_changed(GPS_OPERATION, _gps_mode_changed_cb); - setting_ignore_key_changed(GPS_STARTING, _gps_mode_changed_cb); - setting_ignore_key_changed(SUPL_SERVER, _gps_supl_changed_cb); - setting_ignore_key_changed(SUPL_PORT, _gps_supl_changed_cb); - setting_ignore_key_changed(SUPL_SSL, _gps_setting_changed_cb); - setting_ignore_key_changed(NMEA_LOGGING, _gps_nmea_changed_cb); - setting_ignore_key_changed(REPLAY_ENABLED, _gps_replay_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_GPS_SESSION, _gps_mode_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_GPS_OPERATION, _gps_mode_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_GPS_STARTING, _gps_mode_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_SUPL_SERVER, _gps_supl_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_SUPL_PORT, _gps_supl_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_SUPL_SSL, _gps_setting_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_NMEA_LOGGING, _gps_nmea_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_REPLAY_ENABLED, _gps_replay_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_GPS_STATE, _position_state_changed_cb); + setting_ignore_key_changed(VCONFKEY_LOCATION_WPS_STATE, _position_state_changed_cb); } static void _gps_server_start_event() @@ -459,6 +487,7 @@ static void _gps_server_start_event() gps_session_state = GPS_SESSION_STARTED; if (logging_enabled) { + LOG_GPS(DBG_LOW, "NMEA STARTED"); start_nmea_log(); } @@ -497,7 +526,7 @@ static void _gps_server_start_event() } } - _gps_server_set_indicator(POSITION_SEARCHING); + _gps_server_set_gps_state(POSITION_SEARCHING); pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0); } @@ -507,10 +536,11 @@ static void _gps_server_stop_event() gps_session_state = GPS_SESSION_STOPPED; LOG_GPS(DBG_LOW, "==GPSSessionState[%d]", gps_session_state); - _gps_server_set_indicator(POSITION_OFF); + _gps_server_set_gps_state(POSITION_OFF); pm_unlock_state(LCD_NORMAL, PM_RESET_TIMER); if (logging_enabled) { + LOG_GPS(DBG_LOW, "NMEA STOPPED"); stop_nmea_log(); } @@ -541,7 +571,7 @@ static void _report_pos_event(gps_event_info_t * gps_event) gps_manager_set_last_position(gps_last_pos); memset(gps_pos_data, 0x00, sizeof(pos_data_t)); } else { - LOG_GPS(DBG_ERR, "gps_sv_data is NULL"); + LOG_GPS(DBG_ERR, "gps_pos_data is NULL"); } } @@ -714,9 +744,9 @@ static int _gps_server_gps_event_cb(gps_event_info_t * gps_event_info) LOG_GPS(DBG_LOW, "<<::::::::::: GPS_EVENT_SATELLITE :::::::::::::::"); if (gps_event_info->event_data.sv_ind.error == GPS_ERR_NONE) { if (gps_event_info->event_data.sv_ind.sv.pos_valid) { - _gps_server_set_indicator(POSITION_CONNECTED); + _gps_server_set_gps_state(POSITION_CONNECTED); } else { - _gps_server_set_indicator(POSITION_SEARCHING); + _gps_server_set_gps_state(POSITION_SEARCHING); } _report_sv_event(gps_event_info); } else { @@ -831,16 +861,16 @@ static void *_gps_launch_popup(void *data) } -static void _gps_supl_networkinit_smscb(MSG_HANDLE_T hMsgHandle, msg_message_t msg, void *user_param) +static void _gps_supl_networkinit_smscb(msg_handle_t hMsgHandle, msg_struct_t msg, void *user_param) { LOG_GPS(DBG_ERR, "_gps_supl_networkinit_smscb is called"); - LOG_GPS(DBG_ERR, "SUPLNI MSG size is [ %d ]", msg_get_message_body_size(msg)); gps_ni_popup_data_t new_message; memset(&new_message, 0x00, sizeof(new_message)); - new_message.msg_body = (char *)msg_sms_get_message_body(msg); - new_message.msg_size = msg_get_message_body_size(msg); + msg_get_int_value(msg, MSG_MESSAGE_DATA_SIZE_INT, &new_message.msg_size); + msg_get_str_value(msg, MSG_MESSAGE_SMS_DATA_STR, new_message.msg_body, new_message.msg_size); + // TODO: Button number of LBS Popup new_message.num_btn = 2; @@ -854,7 +884,7 @@ static void _gps_supl_networkinit_smscb(MSG_HANDLE_T hMsgHandle, msg_message_t m } -static void _gps_supl_networkinit_wappushcb(MSG_HANDLE_T hMsgHandle, const char *pPushHeader, const char *pPushBody, +static void _gps_supl_networkinit_wappushcb(msg_handle_t hMsgHandle, const char *pPushHeader, const char *pPushBody, int pushBodyLen, void *user_param) { LOG_GPS(DBG_ERR, "_gps_supl_networkinit_wappushcb is called"); @@ -880,8 +910,8 @@ static void _gps_supl_networkinit_wappushcb(MSG_HANDLE_T hMsgHandle, const char static void *_gps_register_msgfwcb() { - MSG_HANDLE_T msgHandle = NULL; - MSG_ERROR_T err = MSG_SUCCESS; + msg_handle_t msgHandle = NULL; + msg_error_t err = MSG_SUCCESS; int setValue = 0; int ret; @@ -1003,16 +1033,15 @@ int initialize_server(int argc, char **argv) _gps_notify_params(); if (!load_plugin_module(g_gps_plugin.name, &g_gps_plugin.handle)) { - LOG_GPS(DBG_ERR, "Failed to load plugin module."); + LOG_GPS(DBG_ERR, "Fail to load plugin module."); return -1; } - LOG_GPS(DBG_LOW, "after read parameters......"); - if (!get_plugin_module()->init(_gps_server_gps_event_cb, &g_gps_params)) { - LOG_GPS(DBG_WARN, "//GPS Initialization failed"); + LOG_GPS(DBG_WARN, "Fail to gps-manager module initialization"); return -1; } + // Register SUPL NI cb to MSG server if (pthread_create(&msg_thread, NULL, _gps_register_msgfwcb, NULL) != 0) { LOG_GPS(DBG_WARN, "Can not make pthread......"); @@ -1039,10 +1068,10 @@ int deinitialize_server() _gps_ignore_params(); if (!get_plugin_module()->deinit(&ReasonCode)) { - LOG_GPS(DBG_WARN, "GPS De-Initialization failed."); + LOG_GPS(DBG_WARN, "Fail to gps-manager module de-initialization"); } - unload_plugin_module(g_gps_plugin.handle); + _gps_plugin_handler_deinit(); return 0;