From 02d13cc646ea79aa97af45b4bff0565906ce27af Mon Sep 17 00:00:00 2001 From: Dante Russo Date: Wed, 27 Jun 2012 16:28:45 -0700 Subject: [PATCH] gps: control session state evt from HAL, not modem Suppress the registering for QMI_LOC_EVENT_MASK_FIX_SESSION_STATE_V02 event from modem, that is normally responsible for generating GPS_STATUS_SESSION_BEGIN and GPS_STATUS_SESSION_END, and instead initiate these events from hal from when we get GPS_STATUS_ENGINE_ON and GPS_STATUS_ENGINE_OFF Change-Id: I9d220bef7ee4f989a3982d888ed46279861f612d CRs-fixed: 370904 --- .../src/LocApiRpcAdapter.cpp | 17 ++++++----------- loc_api/loc_api_v02/LocApiV02Adapter.cpp | 17 ++++++++++------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpcAdapter.cpp b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpcAdapter.cpp index 843a8ae9..84d2bb88 100644 --- a/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpcAdapter.cpp +++ b/loc_api/libloc_api-rpc-50001/libloc_api-rpc-glue/src/LocApiRpcAdapter.cpp @@ -797,29 +797,24 @@ void LocApiRpcAdapter::reportSv(const rpc_loc_gnss_info_s_type *gnss_report_ptr) void LocApiRpcAdapter::reportStatus(const rpc_loc_status_event_s_type *status_report_ptr) { - GpsStatusValue status = GPS_STATUS_NONE; if (status_report_ptr->event == RPC_LOC_STATUS_EVENT_ENGINE_STATE) { if (status_report_ptr->payload.rpc_loc_status_event_payload_u_type_u.engine_state == RPC_LOC_ENGINE_STATE_ON) { - status = GPS_STATUS_ENGINE_ON; + LocApiAdapter::reportStatus(GPS_STATUS_ENGINE_ON); + LocApiAdapter::reportStatus(GPS_STATUS_SESSION_BEGIN); } else if (status_report_ptr->payload.rpc_loc_status_event_payload_u_type_u.engine_state == RPC_LOC_ENGINE_STATE_OFF) { - status = GPS_STATUS_ENGINE_OFF; + LocApiAdapter::reportStatus(GPS_STATUS_SESSION_END); + LocApiAdapter::reportStatus(GPS_STATUS_ENGINE_OFF); } - } else if (status_report_ptr->event == RPC_LOC_STATUS_EVENT_FIX_SESSION_STATE) { - if (status_report_ptr->payload.rpc_loc_status_event_payload_u_type_u.fix_session_state == RPC_LOC_FIX_SESSION_STATE_BEGIN) + else { - status = GPS_STATUS_SESSION_BEGIN; - } - else if (status_report_ptr->payload.rpc_loc_status_event_payload_u_type_u.fix_session_state == RPC_LOC_FIX_SESSION_STATE_END) - { - status = GPS_STATUS_SESSION_END; + LocApiAdapter::reportStatus(GPS_STATUS_NONE); } } - LocApiAdapter::reportStatus(status); } void LocApiRpcAdapter::reportNmea(const rpc_loc_nmea_report_s_type *nmea_report_ptr) diff --git a/loc_api/loc_api_v02/LocApiV02Adapter.cpp b/loc_api/loc_api_v02/LocApiV02Adapter.cpp index 68057bcd..196e6878 100755 --- a/loc_api/loc_api_v02/LocApiV02Adapter.cpp +++ b/loc_api/loc_api_v02/LocApiV02Adapter.cpp @@ -1495,8 +1495,7 @@ locClientEventMaskType LocApiV02Adapter :: convertMask( if(mask & LOC_API_ADAPTER_BIT_STATUS_REPORT) { - eventMask |= (QMI_LOC_EVENT_MASK_ENGINE_STATE_V02 | - QMI_LOC_EVENT_MASK_FIX_SESSION_STATE_V02); + eventMask |= (QMI_LOC_EVENT_MASK_ENGINE_STATE_V02); } if(mask & LOC_API_ADAPTER_BIT_LOCATION_SERVER_REQUEST) @@ -1749,21 +1748,25 @@ void LocApiV02Adapter :: reportSv ( void LocApiV02Adapter :: reportEngineState ( const qmiLocEventEngineStateIndMsgT_v02 *engine_state_ptr) { - GpsStatusValue status; LOC_LOGV("%s:%d]: state = %d\n", __func__, __LINE__, engine_state_ptr->engineState); - status = GPS_STATUS_NONE; if (engine_state_ptr->engineState == eQMI_LOC_ENGINE_STATE_ON_V02) { - status = GPS_STATUS_ENGINE_ON; + LocApiAdapter::reportStatus(GPS_STATUS_ENGINE_ON); + LocApiAdapter::reportStatus(GPS_STATUS_SESSION_BEGIN); } else if (engine_state_ptr->engineState == eQMI_LOC_ENGINE_STATE_OFF_V02) { - status = GPS_STATUS_ENGINE_OFF; + LocApiAdapter::reportStatus(GPS_STATUS_SESSION_END); + LocApiAdapter::reportStatus(GPS_STATUS_ENGINE_OFF); } - LocApiAdapter::reportStatus(status); + else + { + LocApiAdapter::reportStatus(GPS_STATUS_NONE); + } + } /* convert fix session state report to loc eng format and send the converted