sm7325-common: update gps to LA.UM.9.14.r1-20000-LAHAINA.QSSI13.0
Change-Id: I100b0807cce37b9f3724c74d2f0979a955d1ddd2
This commit is contained in:
parent
e7a9456ecd
commit
a0fc1b687c
@ -16,18 +16,6 @@ GNSS_CFLAGS = [
|
||||
"-Wno-error=date-time",
|
||||
]
|
||||
|
||||
/* Activate the following for regression testing */
|
||||
GNSS_SANITIZE = {
|
||||
/* address: true,*/
|
||||
cfi: true,
|
||||
misc_undefined: [
|
||||
"bounds",
|
||||
"null",
|
||||
"unreachable",
|
||||
"integer",
|
||||
],
|
||||
}
|
||||
|
||||
/* Activate the following for debug purposes only,
|
||||
comment out for production */
|
||||
GNSS_SANITIZE_DIAG = {
|
||||
|
@ -36,9 +36,6 @@ endif
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
include $(call all-makefiles-under,$(LOCAL_PATH))
|
||||
|
||||
GNSS_SANITIZE := cfi bounds null unreachable integer
|
||||
# Activate the following two lines for regression testing
|
||||
#GNSS_SANITIZE += address
|
||||
#GNSS_SANITIZE_DIAG := $(GNSS_SANITIZE)
|
||||
GNSS_SANITIZE_DIAG := cfi bounds null unreachable integer address
|
||||
|
||||
endif # ifneq ($(BOARD_VENDOR_QCOM_GPS_LOC_API_HARDWARE),)
|
||||
|
@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@1.0-impl-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
@ -58,7 +58,7 @@ include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@1.0-service-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@1.0-service-qti.xml
|
||||
|
@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@1.1-impl-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
@ -59,7 +59,7 @@ include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@1.1-service-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@1.1-service-qti.xml
|
||||
|
@ -2,7 +2,7 @@ LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@2.0-impl-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
@ -71,7 +71,7 @@ include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@2.0-service-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@2.0-service-qti.xml
|
||||
|
@ -32,7 +32,7 @@ namespace implementation {
|
||||
|
||||
static AGnss* spAGnss = nullptr;
|
||||
|
||||
AGnss::AGnss(Gnss* gnss) : mGnss(gnss) {
|
||||
AGnss::AGnss(Gnss* gnss) : mGnss(gnss), mType(LOC_AGPS_TYPE_INVALID) {
|
||||
spAGnss = this;
|
||||
}
|
||||
|
||||
@ -51,6 +51,9 @@ void AGnss::statusCb(AGpsExtType type, LocAGpsStatusValue status) {
|
||||
V2_0::IAGnssCallback::AGnssType aType;
|
||||
IAGnssCallback::AGnssStatusValue aStatus;
|
||||
|
||||
// cache the AGps Type
|
||||
mType = type;
|
||||
|
||||
switch (type) {
|
||||
case LOC_AGPS_TYPE_SUPL:
|
||||
aType = IAGnssCallback::AGnssType::SUPL;
|
||||
@ -138,18 +141,20 @@ Return<bool> AGnss::dataConnFailed() {
|
||||
Return<bool> AGnss::dataConnOpen(uint64_t /*networkHandle*/, const hidl_string& apn,
|
||||
V2_0::IAGnss::ApnIpType apnIpType) {
|
||||
|
||||
if(mGnss == nullptr || mGnss->getGnssInterface() == nullptr){
|
||||
if (mGnss == nullptr || mGnss->getGnssInterface() == nullptr){
|
||||
LOC_LOGE("Null GNSS interface");
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Validate */
|
||||
if(apn.empty()){
|
||||
LOC_LOGE("Invalid APN");
|
||||
return false;
|
||||
std::string apnString(apn.c_str());
|
||||
// During Emergency SUPL, an apn name of "sos" means that no
|
||||
// apn was found, like in the simless case, so apn is cleared
|
||||
if (LOC_AGPS_TYPE_SUPL_ES == mType && "sos" == apnString) {
|
||||
LOC_LOGD("dataConnOpen APN name = [sos] cleared");
|
||||
apnString.clear();
|
||||
}
|
||||
|
||||
LOC_LOGD("dataConnOpen APN name = [%s]", apn.c_str());
|
||||
LOC_LOGD("dataConnOpen APN name = [%s]", apnString.c_str());
|
||||
|
||||
AGpsBearerType bearerType;
|
||||
switch (apnIpType) {
|
||||
@ -168,7 +173,7 @@ Return<bool> AGnss::dataConnOpen(uint64_t /*networkHandle*/, const hidl_string&
|
||||
}
|
||||
|
||||
mGnss->getGnssInterface()->agpsDataConnOpen(
|
||||
LOC_AGPS_TYPE_SUPL, apn.c_str(), apn.size(), (int)bearerType);
|
||||
LOC_AGPS_TYPE_SUPL, apnString.c_str(), apnString.size(), (int)bearerType);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,8 @@ struct AGnss : public V2_0::IAGnss {
|
||||
private:
|
||||
Gnss* mGnss = nullptr;
|
||||
sp<V2_0::IAGnssCallback> mAGnssCbIface = nullptr;
|
||||
|
||||
AGpsExtType mType;
|
||||
};
|
||||
|
||||
} // namespace implementation
|
||||
|
@ -2,7 +2,6 @@ LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@2.1-impl-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
@ -74,7 +73,7 @@ include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.gnss@2.1-service-qti
|
||||
LOCAL_SANITIZE += $(GNSS_SANITIZE)
|
||||
|
||||
# activate the following line for debug purposes only, comment out for production
|
||||
#LOCAL_SANITIZE_DIAG += $(GNSS_SANITIZE_DIAG)
|
||||
LOCAL_VINTF_FRAGMENTS := android.hardware.gnss@2.1-service-qti.xml
|
||||
|
@ -3,7 +3,7 @@ cc_library_static {
|
||||
name: "liblocbatterylistener",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
cflags: GNSS_CFLAGS + ["-DBATTERY_LISTENER_ENABLED"],
|
||||
local_include_dirs: ["."],
|
||||
|
@ -4,7 +4,7 @@ cc_library_shared {
|
||||
name: "libbatching",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
shared_libs: [
|
||||
"libutils",
|
||||
|
@ -37,7 +37,9 @@
|
||||
using namespace loc_core;
|
||||
|
||||
BatchingAdapter::BatchingAdapter() :
|
||||
LocAdapterBase(0, LocContext::getLocContext(LocContext::mLocationHalName)),
|
||||
LocAdapterBase(0,
|
||||
LocContext::getLocContext(LocContext::mLocationHalName),
|
||||
false, nullptr, true),
|
||||
mOngoingTripDistance(0),
|
||||
mOngoingTripTBFInterval(0),
|
||||
mTripWithOngoingTBFDropped(false),
|
||||
@ -50,6 +52,10 @@ BatchingAdapter::BatchingAdapter() :
|
||||
LOC_LOGD("%s]: Constructor", __func__);
|
||||
readConfigCommand();
|
||||
setConfigCommand();
|
||||
|
||||
// at last step, let us inform adapater base that we are done
|
||||
// with initialization, e.g.: ready to process handleEngineUpEvent
|
||||
doneInit();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -4,7 +4,7 @@ cc_library_shared {
|
||||
name: "libloc_core",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
shared_libs: [
|
||||
"liblog",
|
||||
|
@ -1034,7 +1034,7 @@ bool ElapsedRealtimeEstimator::getCurrentTime(
|
||||
struct timespec sinceBootTime;
|
||||
struct timespec sinceBootTimeTest;
|
||||
bool clockGetTimeSuccess = false;
|
||||
const uint32_t MAX_TIME_DELTA_VALUE_NANOS = 10000;
|
||||
const uint32_t MAX_TIME_DELTA_VALUE_NANOS = 15000;
|
||||
const uint32_t MAX_GET_TIME_COUNT = 20;
|
||||
/* Attempt to get CLOCK_REALTIME and CLOCK_BOOTIME in succession without an interruption
|
||||
or context switch (for up to MAX_GET_TIME_COUNT times) to avoid errors in the calculation */
|
||||
|
@ -101,6 +101,7 @@ public:
|
||||
inline virtual void* getSibling2() { return NULL; }
|
||||
inline virtual double getGloRfLoss(uint32_t left,
|
||||
uint32_t center, uint32_t right, uint8_t gloFrequency) { return 0.0; }
|
||||
inline virtual float getGeoidalSeparation(double latitude, double longitude) { return 0.0; }
|
||||
};
|
||||
|
||||
class LocApiBase {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
@ -1586,6 +1586,7 @@ bool SystemStatus::eventDataItemNotify(IDataItemCore* dataitem)
|
||||
break;
|
||||
}
|
||||
pthread_mutex_unlock(&mMutexSystemStatus);
|
||||
LOC_LOGv("DataItemId: %d, whether to record dateitem in cache: %d", dataitem->getId(), ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
@ -509,9 +509,11 @@ public:
|
||||
for (uint8_t i = 0; rtv && i < MAX_NETWORK_HANDLES; ++i) {
|
||||
rtv &= (mAllNetworkHandles[i] == peer.mAllNetworkHandles[i]);
|
||||
}
|
||||
return peer.mApn.compare(mApn);
|
||||
return rtv && !peer.mApn.compare(mApn);
|
||||
}
|
||||
inline virtual SystemStatusItemBase& collate(SystemStatusItemBase& curInfo) {
|
||||
LOC_LOGv("NetworkInfo: mAllTypes=%" PRIx64 " connected=%u mType=%x mApn=%s",
|
||||
mAllTypes, mConnected, mType, mApn.c_str());
|
||||
uint64_t allTypes = (static_cast<SystemStatusNetworkInfo&>(curInfo)).mAllTypes;
|
||||
string& apn = (static_cast<SystemStatusNetworkInfo&>(curInfo)).mApn;
|
||||
// Replace current with cached table for now and then update
|
||||
|
@ -93,3 +93,27 @@ sendmsg: 1
|
||||
sendto: 1
|
||||
recvfrom: 1
|
||||
|
||||
getsockname: 1
|
||||
nanosleep: 1
|
||||
clone: 1
|
||||
setsockopt: 1
|
||||
getsockopt: 1
|
||||
madvise: 1
|
||||
|
||||
getitimer: 1
|
||||
setitimer: 1
|
||||
getpid: 1
|
||||
bind: 1
|
||||
listen: 1
|
||||
getpeername: 1
|
||||
socketpair: 1
|
||||
wait4: 1
|
||||
chown: 1
|
||||
fchown: 1
|
||||
lchown: 1
|
||||
umask: 1
|
||||
mmap2: 1
|
||||
fstat64: 1
|
||||
fstatat64: 1
|
||||
_llseek: 1
|
||||
geteuid: 1
|
||||
|
@ -32,7 +32,7 @@
|
||||
fdatasync: 1
|
||||
getdents64: 1
|
||||
gettimeofday: 1
|
||||
#ioctl: arg1 == _IOC(_IOC_NONE || arg1 == _IOC(_IOC_READ || arg1 == VSOC_MAYBE_SEND_INTERRUPT_TO_HOST
|
||||
ioctl: 1
|
||||
lseek: 1
|
||||
madvise: 1
|
||||
mkdirat: 1
|
||||
@ -43,3 +43,31 @@ timerfd_settime: 1
|
||||
epoll_create1: 1
|
||||
epoll_pwait: 1
|
||||
epoll_ctl: 1
|
||||
|
||||
sched_getaffinity: 1
|
||||
gettid: 1
|
||||
fchown: 1
|
||||
fchmod: 1
|
||||
fchmodat: 1
|
||||
getsockopt: 1
|
||||
fchownat: 1
|
||||
fstat: 1
|
||||
fstatfs: 1
|
||||
newfstatat: 1
|
||||
sendmsg: 1
|
||||
recvmsg: 1
|
||||
gettimeofday: 1
|
||||
setsockopt: 1
|
||||
rt_tgsigqueueinfo: 1
|
||||
ioctl: 1
|
||||
mmap: 1
|
||||
getuid32: 1
|
||||
getuid: 1
|
||||
fstat64: 1
|
||||
fstatat64: 1
|
||||
mkdir: 1
|
||||
rmdir: 1
|
||||
creat: 1
|
||||
chmod: 1
|
||||
lseek: 1
|
||||
geteuid32: 1
|
||||
|
@ -31,3 +31,13 @@
|
||||
|
||||
unlinkat: 1
|
||||
sched_getaffinity: 1
|
||||
newfstatat: 1
|
||||
fchmodat: 1
|
||||
madvise: 1
|
||||
mmap: 1
|
||||
getuid: 1
|
||||
getuid32: 1
|
||||
fstat64: 1
|
||||
fstatat64: 1
|
||||
gettimeofday: 1
|
||||
getdents64: 1
|
||||
|
@ -5,7 +5,7 @@ cc_library_shared {
|
||||
name: "libgeofencing",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
srcs: [
|
||||
"GeofenceAdapter.cpp",
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
@ -38,9 +38,13 @@ using namespace loc_core;
|
||||
GeofenceAdapter::GeofenceAdapter() :
|
||||
LocAdapterBase(0,
|
||||
LocContext::getLocContext(LocContext::mLocationHalName),
|
||||
true /*isMaster*/)
|
||||
true /*isMaster*/, nullptr, true)
|
||||
{
|
||||
LOC_LOGD("%s]: Constructor", __func__);
|
||||
|
||||
// at last step, let us inform adapater base that we are done
|
||||
// with initialization, e.g.: ready to process handleEngineUpEvent
|
||||
doneInit();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -448,7 +448,7 @@ void AgpsStateMachine::setAPN(char* apn, unsigned int len){
|
||||
mAPN = NULL;
|
||||
}
|
||||
|
||||
if (NULL == apn || len <= 0 || len > MAX_APN_LEN || strlen(apn) != len) {
|
||||
if (NULL == apn || len > MAX_APN_LEN || strlen(apn) != len) {
|
||||
LOC_LOGD("Invalid apn len (%d) or null apn", len);
|
||||
mAPN = NULL;
|
||||
mAPNLen = 0;
|
||||
@ -590,7 +590,7 @@ void AgpsManager::requestATL(int connHandle, AGpsExtType agpsType,
|
||||
sm->setApnTypeMask(apnTypeMask);
|
||||
|
||||
/* Invoke AGPS SM processing */
|
||||
AgpsSubscriber subscriber(connHandle, false, false, apnTypeMask);
|
||||
AgpsSubscriber subscriber(connHandle, true, false, apnTypeMask);
|
||||
sm->setCurrentSubscriber(&subscriber);
|
||||
/* Send subscriber event */
|
||||
sm->processAgpsEvent(AGPS_EVENT_SUBSCRIBE);
|
||||
|
@ -167,7 +167,7 @@ public:
|
||||
|
||||
/* Getter/Setter methods */
|
||||
void setAPN(char* apn, unsigned int len);
|
||||
inline char* getAPN() const { return (char*)mAPN; }
|
||||
inline char* getAPN() const { return mAPN; }
|
||||
inline uint32_t getAPNLen() const { return mAPNLen; }
|
||||
inline void setBearer(AGpsBearerType bearer) { mBearer = bearer; }
|
||||
inline LocApnTypeMask getApnTypeMask() const { return mApnTypeMask; }
|
||||
|
@ -5,7 +5,7 @@ cc_library_shared {
|
||||
name: "libgnss",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
shared_libs: [
|
||||
"libutils",
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
@ -77,6 +77,8 @@ static void agpsCloseResultCb (bool isSuccess, AGpsExtType agpsType, void* userD
|
||||
|
||||
typedef const CdfwInterface* (*getCdfwInterface)();
|
||||
|
||||
typedef void getPdnTypeFromWds(const std::string& apnName, std::function<void(int)> pdnCb);
|
||||
|
||||
inline bool GnssReportLoggerUtil::isLogEnabled() {
|
||||
return (mLogLatency != nullptr);
|
||||
}
|
||||
@ -889,6 +891,8 @@ GnssAdapter::setConfig()
|
||||
ContextBase::mGps_conf.MO_SUPL_PORT,
|
||||
LOC_AGPS_MO_SUPL_SERVER);
|
||||
|
||||
std::string moServerUrl = getMoServerUrl();
|
||||
std::string serverUrl = getServerUrl();
|
||||
// inject the configurations into modem
|
||||
loc_gps_cfg_s gpsConf = ContextBase::mGps_conf;
|
||||
loc_sap_cfg_s_type sapConf = ContextBase::mSap_conf;
|
||||
@ -936,8 +940,10 @@ GnssAdapter::setConfig()
|
||||
gnssConfigRequested.blacklistedSvIds.assign(mBlacklistedSvIds.begin(),
|
||||
mBlacklistedSvIds.end());
|
||||
mLocApi->sendMsg(new LocApiMsg(
|
||||
[this, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () mutable {
|
||||
gnssUpdateConfig(oldMoServerUrl, gnssConfigRequested, gnssConfigRequested);
|
||||
[this, gpsConf, sapConf, oldMoServerUrl, moServerUrl,
|
||||
serverUrl, gnssConfigRequested] () mutable {
|
||||
gnssUpdateConfig(oldMoServerUrl, moServerUrl, serverUrl,
|
||||
gnssConfigRequested, gnssConfigRequested);
|
||||
|
||||
// set nmea mask type
|
||||
uint32_t mask = 0;
|
||||
@ -1025,6 +1031,7 @@ GnssAdapter::setConfig()
|
||||
}
|
||||
|
||||
std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldMoServerUrl,
|
||||
const std::string& moServerUrl, const std::string& serverUrl,
|
||||
GnssConfig& gnssConfigRequested, GnssConfig& gnssConfigNeedEngineUpdate, size_t count) {
|
||||
loc_gps_cfg_s gpsConf = ContextBase::mGps_conf;
|
||||
size_t index = 0;
|
||||
@ -1034,9 +1041,6 @@ std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldM
|
||||
errsList.insert(errsList.begin(), count, LOCATION_ERROR_SUCCESS);
|
||||
}
|
||||
|
||||
std::string serverUrl = getServerUrl();
|
||||
std::string moServerUrl = getMoServerUrl();
|
||||
|
||||
int serverUrlLen = serverUrl.length();
|
||||
int moServerUrlLen = moServerUrl.length();
|
||||
|
||||
@ -1424,10 +1428,14 @@ GnssAdapter::gnssUpdateConfigCommand(const GnssConfig& config)
|
||||
adapter.reportResponse(countOfConfigs, errs.data(), ids.data());
|
||||
});
|
||||
|
||||
std::string moServerUrl = adapter.getMoServerUrl();
|
||||
std::string serverUrl = adapter.getServerUrl();
|
||||
mApi.sendMsg(new LocApiMsg(
|
||||
[&adapter, gnssConfigRequested, gnssConfigNeedEngineUpdate,
|
||||
countOfConfigs, configCollectiveResponse, errs] () mutable {
|
||||
moServerUrl, serverUrl, countOfConfigs, configCollectiveResponse,
|
||||
errs] () mutable {
|
||||
std::vector<LocationError> errsList = adapter.gnssUpdateConfig("",
|
||||
moServerUrl, serverUrl,
|
||||
gnssConfigRequested, gnssConfigNeedEngineUpdate, countOfConfigs);
|
||||
|
||||
configCollectiveResponse->returnToSender(errsList);
|
||||
@ -5214,6 +5222,38 @@ bool GnssAdapter::releaseATL(int connHandle){
|
||||
return true;
|
||||
}
|
||||
|
||||
void GnssAdapter::reportPdnTypeFromWds(int pdnType, AGpsExtType agpsType, std::string apnName,
|
||||
AGpsBearerType bearerType) {
|
||||
LOC_LOGd("pdnType from WDS QMI: %d, agpsType: %d, apnName: %s, bearerType: %d",
|
||||
pdnType, agpsType, apnName.c_str(), bearerType);
|
||||
|
||||
struct MsgReportAtlPdn : public LocMsg {
|
||||
GnssAdapter& mAdapter;
|
||||
int mPdnType;
|
||||
AgpsManager* mAgpsManager;
|
||||
AGpsExtType mAgpsType;
|
||||
string mApnName;
|
||||
AGpsBearerType mBearerType;
|
||||
|
||||
inline MsgReportAtlPdn(GnssAdapter& adapter, int pdnType,
|
||||
AgpsManager* agpsManager, AGpsExtType agpsType,
|
||||
const string& apnName, AGpsBearerType bearerType) :
|
||||
LocMsg(), mAgpsManager(agpsManager), mAgpsType(agpsType),
|
||||
mApnName(apnName), mBearerType(bearerType),
|
||||
mAdapter(adapter), mPdnType(pdnType) {}
|
||||
inline virtual void proc() const {
|
||||
mAgpsManager->reportAtlOpenSuccess(mAgpsType,
|
||||
const_cast<char*>(mApnName.c_str()),
|
||||
mApnName.length(), mPdnType<=0? mBearerType:mPdnType);
|
||||
}
|
||||
};
|
||||
|
||||
AGpsBearerType atlPdnType = (pdnType+1) & 3; // convert WDS QMI pdn type to AgpsBearerType
|
||||
sendMsg(new MsgReportAtlPdn(*this, atlPdnType, &mAgpsManager,
|
||||
agpsType, apnName, bearerType));
|
||||
}
|
||||
|
||||
|
||||
void GnssAdapter::dataConnOpenCommand(
|
||||
AGpsExtType agpsType,
|
||||
const char* apnName, int apnLen, AGpsBearerType bearerType){
|
||||
@ -5221,17 +5261,16 @@ void GnssAdapter::dataConnOpenCommand(
|
||||
LOC_LOGI("GnssAdapter::frameworkDataConnOpen");
|
||||
|
||||
struct AgpsMsgAtlOpenSuccess: public LocMsg {
|
||||
|
||||
GnssAdapter& mAdapter;
|
||||
AgpsManager* mAgpsManager;
|
||||
AGpsExtType mAgpsType;
|
||||
char* mApnName;
|
||||
int mApnLen;
|
||||
AGpsBearerType mBearerType;
|
||||
|
||||
inline AgpsMsgAtlOpenSuccess(AgpsManager* agpsManager, AGpsExtType agpsType,
|
||||
const char* apnName, int apnLen, AGpsBearerType bearerType) :
|
||||
inline AgpsMsgAtlOpenSuccess(GnssAdapter& adapter, AgpsManager* agpsManager,
|
||||
AGpsExtType agpsType, const char* apnName, int apnLen, AGpsBearerType bearerType) :
|
||||
LocMsg(), mAgpsManager(agpsManager), mAgpsType(agpsType), mApnName(
|
||||
new char[apnLen + 1]), mApnLen(apnLen), mBearerType(bearerType) {
|
||||
new char[apnLen + 1]), mBearerType(bearerType), mAdapter(adapter) {
|
||||
|
||||
LOC_LOGV("AgpsMsgAtlOpenSuccess");
|
||||
if (mApnName == nullptr) {
|
||||
@ -5249,19 +5288,36 @@ void GnssAdapter::dataConnOpenCommand(
|
||||
}
|
||||
|
||||
inline virtual void proc() const {
|
||||
LOC_LOGv("AgpsMsgAtlOpenSuccess::proc()");
|
||||
string apn(mApnName);
|
||||
//Use QMI WDS API to query IP Protocol from modem profile
|
||||
void* libHandle = nullptr;
|
||||
getPdnTypeFromWds* getPdnTypeFunc = (getPdnTypeFromWds*)dlGetSymFromLib(libHandle,
|
||||
#ifdef USE_GLIB
|
||||
"libloc_api_wds.so", "_Z10getPdnTypeRKNSt7__cxx1112basic_string"\
|
||||
"IcSt11char_traitsIcESaIcEEESt8functionIFviEE");
|
||||
#else
|
||||
"libloc_api_wds.so", "_Z10getPdnTypeRKNSt3__112basic_stringIcNS_11char_traits"\
|
||||
"IcEENS_9allocatorIcEEEENS_8functionIFviEEE");
|
||||
#endif
|
||||
|
||||
LOC_LOGV("AgpsMsgAtlOpenSuccess::proc()");
|
||||
mAgpsManager->reportAtlOpenSuccess(mAgpsType, mApnName, mApnLen, mBearerType);
|
||||
std::function<void(int)> wdsPdnTypeCb = std::bind(&GnssAdapter::reportPdnTypeFromWds,
|
||||
&mAdapter, std::placeholders::_1, mAgpsType, apn, mBearerType);
|
||||
if (getPdnTypeFunc != nullptr) {
|
||||
LOC_LOGv("dlGetSymFromLib success");
|
||||
(*getPdnTypeFunc)(apn, wdsPdnTypeCb);
|
||||
} else {
|
||||
mAgpsManager->reportAtlOpenSuccess(mAgpsType, mApnName, apn.length(), mBearerType);
|
||||
}
|
||||
}
|
||||
};
|
||||
// Added inital length checks for apnlen check to avoid security issues
|
||||
// In case of failure reporting the same
|
||||
if (NULL == apnName || apnLen <= 0 || apnLen > MAX_APN_LEN ||
|
||||
(strlen(apnName) != (unsigned)apnLen)) {
|
||||
if (NULL == apnName || apnLen > MAX_APN_LEN || (strlen(apnName) != apnLen)) {
|
||||
LOC_LOGe("%s]: incorrect apnlen length or incorrect apnName", __func__);
|
||||
mAgpsManager.reportAtlClosed(agpsType);
|
||||
} else {
|
||||
sendMsg( new AgpsMsgAtlOpenSuccess(
|
||||
sendMsg( new AgpsMsgAtlOpenSuccess(*this,
|
||||
&mAgpsManager, agpsType, apnName, apnLen, bearerType));
|
||||
}
|
||||
}
|
||||
@ -6731,7 +6787,9 @@ GnssAdapter::reportGnssAntennaInformation(const antennaInfoCb antennaInfoCallbac
|
||||
}
|
||||
gnssAntennaInformations.push_back(std::move(gnssAntennaInfo));
|
||||
}
|
||||
if (antennaInfoVectorSize > 0) {
|
||||
antennaInfoCallback(gnssAntennaInformations);
|
||||
}
|
||||
}
|
||||
|
||||
/* ==== DGnss Usable Reporter ========================================================= */
|
||||
|
@ -321,7 +321,6 @@ protected:
|
||||
void logLatencyInfo();
|
||||
|
||||
public:
|
||||
|
||||
GnssAdapter();
|
||||
virtual inline ~GnssAdapter() { }
|
||||
|
||||
@ -409,6 +408,8 @@ public:
|
||||
void deleteAidingData(const GnssAidingData &data, uint32_t sessionId);
|
||||
void gnssUpdateXtraThrottleCommand(const bool enabled);
|
||||
std::vector<LocationError> gnssUpdateConfig(const std::string& oldMoServerUrl,
|
||||
const std::string& moServerUrl,
|
||||
const std::string& serverUrl,
|
||||
GnssConfig& gnssConfigRequested,
|
||||
GnssConfig& gnssConfigNeedEngineUpdate, size_t count = 0);
|
||||
|
||||
@ -525,6 +526,8 @@ public:
|
||||
(
|
||||
const std::unordered_map<LocationQwesFeatureType, bool> &featureMap
|
||||
);
|
||||
void reportPdnTypeFromWds(int pdnType, AGpsExtType agpsType, std::string apnName,
|
||||
AGpsBearerType bearerType);
|
||||
|
||||
/* ======== UTILITIES ================================================================= */
|
||||
bool needReportForGnssClient(const UlpLocation& ulpLocation,
|
||||
|
@ -27,6 +27,10 @@ ifneq (,$(filter $(LOC_BOARD_PLATFORM_LIST),$(TARGET_BOARD_PLATFORM)))
|
||||
PRODUCT_PACKAGES += gps.conf
|
||||
PRODUCT_PACKAGES += flp.conf
|
||||
PRODUCT_PACKAGES += gnss_antenna_info.conf
|
||||
PRODUCT_PACKAGES += gnss@2.0-base.policy
|
||||
PRODUCT_PACKAGES += gnss@2.0-xtra-daemon.policy
|
||||
PRODUCT_PACKAGES += gnss@2.0-xtwifi-client.policy
|
||||
PRODUCT_PACKAGES += gnss@2.0-xtwifi-inet-agent.policy
|
||||
PRODUCT_PACKAGES += libloc_pla_headers
|
||||
PRODUCT_PACKAGES += liblocation_api_headers
|
||||
PRODUCT_PACKAGES += libgps.utils_headers
|
||||
|
@ -4,7 +4,7 @@ cc_library_shared {
|
||||
name: "liblocation_api",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
shared_libs: [
|
||||
"libutils",
|
||||
|
@ -4,7 +4,7 @@ cc_library_shared {
|
||||
name: "libgps.utils",
|
||||
vendor: true,
|
||||
|
||||
sanitize: GNSS_SANITIZE,
|
||||
|
||||
|
||||
//# Libs
|
||||
shared_libs: [
|
||||
|
Loading…
x
Reference in New Issue
Block a user