diff options
author | haohuang <haohuang@codeaurora.org> | 2019-08-15 22:09:11 +0800 |
---|---|---|
committer | haohuang <haohuang@codeaurora.org> | 2019-08-20 21:38:51 +0800 |
commit | 39e34de194c0b1d4dc23e5eed05a63ad3b791393 (patch) | |
tree | 45f85ecba60d48f723b9ad7d3da7546bbe077324 /gnss/Agps.cpp | |
parent | e549c9be3b4719dfa2aa5fbc64684c2b358e4213 (diff) | |
download | gps-39e34de194c0b1d4dc23e5eed05a63ad3b791393.tar.gz |
AgpsManager supports two clients
AgpsManager supports two clients, QCOM AGPS
Stack is to handle ATL type WWAN, AFW AGPS
stack is used to handle ATL type SUPL and
SUPL emergency.
Change-Id: Id43c4919a1ae67d739e055c7fb5ba3abacc70b34
CRs-Fixed: 2509244
Diffstat (limited to 'gnss/Agps.cpp')
-rw-r--r-- | gnss/Agps.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gnss/Agps.cpp b/gnss/Agps.cpp index 7931d0c..9255f88 100644 --- a/gnss/Agps.cpp +++ b/gnss/Agps.cpp @@ -304,7 +304,7 @@ void AgpsStateMachine::requestOrReleaseDataConn(bool request){ nifRequest.status = LOC_GPS_RELEASE_AGPS_DATA_CONN; } - mAgpsManager->mFrameworkStatusV4Cb(nifRequest); + mFrameworkStatusV4Cb(nifRequest); } void AgpsStateMachine::notifyAllSubscribers( @@ -511,7 +511,7 @@ void AgpsStateMachine::dropAllSubscribers(){ /* CREATE AGPS STATE MACHINES * Must be invoked in Msg Handler context */ -void AgpsManager::createAgpsStateMachines() { +void AgpsManager::createAgpsStateMachines(const AgpsCbInfo& cbInfo) { LOC_LOGD("AgpsManager::createAgpsStateMachines"); @@ -519,13 +519,16 @@ void AgpsManager::createAgpsStateMachines() { ((loc_core::ContextBase::mGps_conf.CAPABILITIES & LOC_GPS_CAPABILITY_MSA) || (loc_core::ContextBase::mGps_conf.CAPABILITIES & LOC_GPS_CAPABILITY_MSB)); - if (NULL == mInternetNif) { + if (NULL == mInternetNif && (cbInfo.atlType & AGPS_ATL_TYPE_WWAN)) { mInternetNif = new AgpsStateMachine(this, LOC_AGPS_TYPE_WWAN_ANY); + mInternetNif->registerFrameworkStatusCallback((AgnssStatusIpV4Cb)cbInfo.statusV4Cb); LOC_LOGD("Internet NIF: %p", mInternetNif); } if (agpsCapable) { - if (NULL == mAgnssNif) { + if (NULL == mAgnssNif && (cbInfo.atlType & AGPS_ATL_TYPE_SUPL) && + (cbInfo.atlType & AGPS_ATL_TYPE_SUPL_ES)) { mAgnssNif = new AgpsStateMachine(this, LOC_AGPS_TYPE_SUPL); + mAgnssNif->registerFrameworkStatusCallback((AgnssStatusIpV4Cb)cbInfo.statusV4Cb); LOC_LOGD("AGNSS NIF: %p", mAgnssNif); } } @@ -544,6 +547,11 @@ AgpsStateMachine* AgpsManager::getAgpsStateMachine(AGpsExtType agpsType) { LOC_LOGE("NULL AGNSS NIF !"); } return mAgnssNif; + case LOC_AGPS_TYPE_WWAN_ANY: + if (mInternetNif == NULL) { + LOC_LOGE("NULL Internet NIF !"); + } + return mInternetNif; default: return mInternetNif; } |