diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-06-29 01:39:07 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-06-29 01:39:07 -0700 |
commit | 021821ce54cfad21066feab614418d97b37de097 (patch) | |
tree | 2fa65f43e0cadc5e31f801b84ae7ca0ba485694c /gnss | |
parent | 3463e547e75a15bb3dedbeb6f2f2f0edcbb05c27 (diff) | |
parent | d12b82b4e4647c3dcab0c5593385344461bf9f32 (diff) | |
download | gps-021821ce54cfad21066feab614418d97b37de097.tar.gz |
Merge "Added optional MO SUPL SLP"
Diffstat (limited to 'gnss')
-rw-r--r-- | gnss/GnssAdapter.cpp | 49 | ||||
-rw-r--r-- | gnss/GnssAdapter.h | 5 |
2 files changed, 39 insertions, 15 deletions
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index 7b7c648..34d2fd9 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -605,7 +605,7 @@ GnssAdapter::readConfigCommand() } void -GnssAdapter::setSuplHostServer(const char* server, int port) +GnssAdapter::setSuplHostServer(const char* server, int port, LocServerType type) { if (ContextBase::mGps_conf.AGPS_CONFIG_INJECT) { char serverUrl[MAX_URL_LEN] = {}; @@ -619,10 +619,14 @@ GnssAdapter::setSuplHostServer(const char* server, int port) } else if (port > 0) { length = snprintf(serverUrl, sizeof(serverUrl), "%s:%u", server, port); } - - if (length >= 0 && strncasecmp(getServerUrl().c_str(), - serverUrl, sizeof(serverUrl)) != 0) { - setServerUrl(serverUrl); + if (LOC_AGPS_SUPL_SERVER != type && LOC_AGPS_MO_SUPL_SERVER != type) { + LOC_LOGe("Invalid type=%d", type); + } else { + string& url = (LOC_AGPS_SUPL_SERVER == type) ? getServerUrl() : getMoServerUrl(); + if (length > 0 && strncasecmp(url.c_str(), serverUrl, sizeof(serverUrl)) != 0) { + url.assign(serverUrl); + LOC_LOGv("serverUrl=%s length=%d type=%d", serverUrl, length, type); + } } } } @@ -652,8 +656,13 @@ GnssAdapter::setConfigCommand() mAdapter.mNmeaMask= mask; std::string oldServerUrl = mAdapter.getServerUrl(); + std::string oldMoServerUrl = mAdapter.getMoServerUrl(); mAdapter.setSuplHostServer(ContextBase::mGps_conf.SUPL_HOST, - ContextBase::mGps_conf.SUPL_PORT); + ContextBase::mGps_conf.SUPL_PORT, + LOC_AGPS_SUPL_SERVER); + mAdapter.setSuplHostServer(ContextBase::mGps_conf.MO_SUPL_HOST, + ContextBase::mGps_conf.MO_SUPL_PORT, + LOC_AGPS_MO_SUPL_SERVER); // inject the configurations into modem GnssAdapter& adapter = mAdapter; @@ -661,10 +670,12 @@ GnssAdapter::setConfigCommand() loc_sap_cfg_s_type sapConf = ContextBase::mSap_conf; mApi.sendMsg(new LocApiMsg( - [&adapter, gpsConf, sapConf, oldServerUrl] () { + [&adapter, gpsConf, sapConf, oldServerUrl, oldMoServerUrl] () { std::string serverUrl = adapter.getServerUrl(); + std::string moServerUrl = adapter.getMoServerUrl(); int serverUrlLen = serverUrl.length(); + int moServerUrlLen = moServerUrl.length(); if (gpsConf.AGPS_CONFIG_INJECT) { adapter.mLocApi->setSUPLVersionSync( @@ -677,10 +688,21 @@ GnssAdapter::setConfigCommand() if ((serverUrlLen !=0) && (oldServerUrl.compare(serverUrl) != 0)) { LocationError locErr = - adapter.mLocApi->setServerSync(serverUrl.c_str(), serverUrlLen); + adapter.mLocApi->setServerSync(serverUrl.c_str(), serverUrlLen, + LOC_AGPS_SUPL_SERVER); + if (locErr != LOCATION_ERROR_SUCCESS) { + LOC_LOGe("Error while setting SUPL_HOST server:%s", + serverUrl.c_str()); + } + } + if ((moServerUrlLen != 0) && (oldMoServerUrl.compare(moServerUrl) != 0)) { + LocationError locErr = + adapter.mLocApi->setServerSync(moServerUrl.c_str(), + moServerUrlLen, + LOC_AGPS_MO_SUPL_SERVER); if (locErr != LOCATION_ERROR_SUCCESS) { - LOC_LOGE("%s]:Error while setting SUPL_HOST server:%s", - __func__, serverUrl.c_str()); + LOC_LOGe("Error while setting MO SUPL_HOST server:%s", + moServerUrl.c_str()); } } @@ -832,8 +854,9 @@ GnssAdapter::gnssUpdateConfigCommand(GnssConfig config) index++; if (GNSS_ASSISTANCE_TYPE_SUPL == mConfig.assistanceServer.type) { mAdapter.setSuplHostServer(mConfig.assistanceServer.hostName, - mConfig.assistanceServer.port); - } else if (GNSS_ASSISTANCE_TYPE_C2K != mConfig.assistanceServer.type) { + mConfig.assistanceServer.port, + LOC_AGPS_SUPL_SERVER); + } else { LOC_LOGE("%s]: Not a valid gnss assistance type %u", __func__, mConfig.assistanceServer.type); errs.at(index) = LOCATION_ERROR_INVALID_PARAMETER; @@ -947,7 +970,7 @@ GnssAdapter::gnssUpdateConfigCommand(GnssConfig config) GNSS_ASSISTANCE_TYPE_SUPL) { if ((serverUrlLen != 0) && (oldServerUrl.compare(serverUrl) !=0)) { err = adapter.mLocApi->setServerSync( - serverUrl.c_str(), serverUrlLen); + serverUrl.c_str(), serverUrlLen, LOC_AGPS_SUPL_SERVER); errsList[index] = err; } } else if (gnssConfigNeedEngineUpdate.assistanceServer.type == diff --git a/gnss/GnssAdapter.h b/gnss/GnssAdapter.h index 319ea6b..7fbaf9c 100644 --- a/gnss/GnssAdapter.h +++ b/gnss/GnssAdapter.h @@ -122,6 +122,7 @@ class GnssAdapter : public LocAdapterBase { /* === SystemStatus ===================================================================== */ SystemStatus* mSystemStatus; std::string mServerUrl; + std::string mMoServerUrl; XtraSystemStatusObserver mXtraObserver; /*==== CONVERSION ===================================================================*/ @@ -160,7 +161,7 @@ public: LocationCallbacks getClientCallbacks(LocationAPI* client); LocationCapabilitiesMask getCapabilities(); void broadcastCapabilities(LocationCapabilitiesMask); - void setSuplHostServer(const char* server, int port); + void setSuplHostServer(const char* server, int port, LocServerType type); /* ==== TRACKING ======================================================================= */ /* ======== COMMANDS ====(Called from Client Thread)==================================== */ @@ -310,7 +311,7 @@ public: /*==== SYSTEM STATUS ================================================================*/ inline SystemStatus* getSystemStatus(void) { return mSystemStatus; } std::string& getServerUrl(void) { return mServerUrl; } - void setServerUrl(const char* server) { mServerUrl.assign(server); } + std::string& getMoServerUrl(void) { return mMoServerUrl; } /*==== CONVERSION ===================================================================*/ static uint32_t convertGpsLock(const GnssConfigGpsLock gpsLock); |