Merge f14b5413a7
on remote branch
Change-Id: Ic8fa7fe519c8606f5218295a8a7fe195ebd3137f
This commit is contained in:
commit
f51d75b223
19 changed files with 145 additions and 96 deletions
|
@ -1,4 +1,4 @@
|
||||||
service gnss_service /vendor/bin/hw/android.hardware.gnss@1.0-service-qti
|
service gnss_service /vendor/bin/hw/android.hardware.gnss@1.0-service-qti
|
||||||
class hal
|
class hal
|
||||||
user gps
|
user gps
|
||||||
group system gps radio
|
group system gps radio vendor_qti_diag
|
||||||
|
|
|
@ -231,6 +231,7 @@ void GnssAPIClient::gnssDeleteAidingData(IGnss::GnssAidingData aidingDataFlags)
|
||||||
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT |
|
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT |
|
||||||
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT |
|
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT |
|
||||||
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT;
|
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT;
|
||||||
|
data.posEngineMask = STANDARD_POSITIONING_ENGINE;
|
||||||
|
|
||||||
if (aidingDataFlags == IGnss::GnssAidingData::DELETE_ALL)
|
if (aidingDataFlags == IGnss::GnssAidingData::DELETE_ALL)
|
||||||
data.deleteAll = true;
|
data.deleteAll = true;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
service gnss_service /vendor/bin/hw/android.hardware.gnss@1.1-service-qti
|
service gnss_service /vendor/bin/hw/android.hardware.gnss@1.1-service-qti
|
||||||
class hal
|
class hal
|
||||||
user gps
|
user gps
|
||||||
group system gps radio
|
group system gps radio vendor_qti_diag
|
||||||
|
|
|
@ -231,6 +231,7 @@ void GnssAPIClient::gnssDeleteAidingData(IGnss::GnssAidingData aidingDataFlags)
|
||||||
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT |
|
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT |
|
||||||
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT |
|
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT |
|
||||||
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT;
|
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT;
|
||||||
|
data.posEngineMask = STANDARD_POSITIONING_ENGINE;
|
||||||
|
|
||||||
if (aidingDataFlags == IGnss::GnssAidingData::DELETE_ALL)
|
if (aidingDataFlags == IGnss::GnssAidingData::DELETE_ALL)
|
||||||
data.deleteAll = true;
|
data.deleteAll = true;
|
||||||
|
|
|
@ -40,6 +40,10 @@
|
||||||
|
|
||||||
namespace loc_core {
|
namespace loc_core {
|
||||||
|
|
||||||
|
#define SLL_LOC_API_LIB_NAME "libsynergy_loc_api.so"
|
||||||
|
#define LOC_APIV2_0_LIB_NAME "libloc_api_v02.so"
|
||||||
|
#define IS_SS5_HW_ENABLED 1
|
||||||
|
|
||||||
loc_gps_cfg_s_type ContextBase::mGps_conf {};
|
loc_gps_cfg_s_type ContextBase::mGps_conf {};
|
||||||
loc_sap_cfg_s_type ContextBase::mSap_conf {};
|
loc_sap_cfg_s_type ContextBase::mSap_conf {};
|
||||||
bool ContextBase::sIsEngineCapabilitiesKnown = false;
|
bool ContextBase::sIsEngineCapabilitiesKnown = false;
|
||||||
|
@ -80,6 +84,7 @@ const loc_param_s_type ContextBase::mGps_conf_table[] =
|
||||||
{"POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED", &mGps_conf.POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED, NULL, 'n'},
|
{"POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED", &mGps_conf.POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED, NULL, 'n'},
|
||||||
{"PROXY_APP_PACKAGE_NAME", &mGps_conf.PROXY_APP_PACKAGE_NAME, NULL, 's' },
|
{"PROXY_APP_PACKAGE_NAME", &mGps_conf.PROXY_APP_PACKAGE_NAME, NULL, 's' },
|
||||||
{"CP_MTLR_ES", &mGps_conf.CP_MTLR_ES, NULL, 'n' },
|
{"CP_MTLR_ES", &mGps_conf.CP_MTLR_ES, NULL, 'n' },
|
||||||
|
{"GNSS_DEPLOYMENT", &mGps_conf.GNSS_DEPLOYMENT, NULL, 'n'},
|
||||||
};
|
};
|
||||||
|
|
||||||
const loc_param_s_type ContextBase::mSap_conf_table[] =
|
const loc_param_s_type ContextBase::mSap_conf_table[] =
|
||||||
|
@ -171,10 +176,16 @@ void ContextBase::readConfig()
|
||||||
mGps_conf.CONSTRAINED_TIME_UNCERTAINTY_ENERGY_BUDGET = 0;
|
mGps_conf.CONSTRAINED_TIME_UNCERTAINTY_ENERGY_BUDGET = 0;
|
||||||
/* default configuration value of position assisted clock estimator mode */
|
/* default configuration value of position assisted clock estimator mode */
|
||||||
mGps_conf.POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED = 0;
|
mGps_conf.POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED = 0;
|
||||||
|
/* default configuration QTI GNSS H/W */
|
||||||
|
mGps_conf.GNSS_DEPLOYMENT = 0;
|
||||||
|
|
||||||
UTIL_READ_CONF(LOC_PATH_GPS_CONF, mGps_conf_table);
|
UTIL_READ_CONF(LOC_PATH_GPS_CONF, mGps_conf_table);
|
||||||
UTIL_READ_CONF(LOC_PATH_SAP_CONF, mSap_conf_table);
|
UTIL_READ_CONF(LOC_PATH_SAP_CONF, mSap_conf_table);
|
||||||
|
|
||||||
|
LOC_LOGI("%s] GNSS Deployment: %s", __FUNCTION__,
|
||||||
|
((mGps_conf.GNSS_DEPLOYMENT == 1) ? "SS5" :
|
||||||
|
((mGps_conf.GNSS_DEPLOYMENT == 2) ? "QFUSION" : "QGNSS")));
|
||||||
|
|
||||||
switch (getTargetGnssType(loc_get_target())) {
|
switch (getTargetGnssType(loc_get_target())) {
|
||||||
case GNSS_GSS:
|
case GNSS_GSS:
|
||||||
case GNSS_AUTO:
|
case GNSS_AUTO:
|
||||||
|
@ -231,19 +242,24 @@ LBSProxyBase* ContextBase::getLBSProxy(const char* libName)
|
||||||
LocApiBase* ContextBase::createLocApi(LOC_API_ADAPTER_EVENT_MASK_T exMask)
|
LocApiBase* ContextBase::createLocApi(LOC_API_ADAPTER_EVENT_MASK_T exMask)
|
||||||
{
|
{
|
||||||
LocApiBase* locApi = NULL;
|
LocApiBase* locApi = NULL;
|
||||||
|
const char* libname = LOC_APIV2_0_LIB_NAME;
|
||||||
|
|
||||||
// Check the target
|
// Check the target
|
||||||
if (TARGET_NO_GNSS != loc_get_target()){
|
if (TARGET_NO_GNSS != loc_get_target()){
|
||||||
|
|
||||||
if (NULL == (locApi = mLBSProxy->getLocApi(exMask, this))) {
|
if (NULL == (locApi = mLBSProxy->getLocApi(exMask, this))) {
|
||||||
void *handle = NULL;
|
void *handle = NULL;
|
||||||
//try to see if LocApiV02 is present
|
|
||||||
if ((handle = dlopen("libloc_api_v02.so", RTLD_NOW)) != NULL) {
|
if (IS_SS5_HW_ENABLED == mGps_conf.GNSS_DEPLOYMENT) {
|
||||||
LOC_LOGD("%s:%d]: libloc_api_v02.so is present", __func__, __LINE__);
|
libname = SLL_LOC_API_LIB_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((handle = dlopen(libname, RTLD_NOW)) != NULL) {
|
||||||
|
LOC_LOGD("%s:%d]: %s is present", __func__, __LINE__, libname);
|
||||||
getLocApi_t* getter = (getLocApi_t*) dlsym(handle, "getLocApi");
|
getLocApi_t* getter = (getLocApi_t*) dlsym(handle, "getLocApi");
|
||||||
if (getter != NULL) {
|
if (getter != NULL) {
|
||||||
LOC_LOGD("%s:%d]: getter is not NULL for LocApiV02", __func__,
|
LOC_LOGD("%s:%d]: getter is not NULL of %s", __func__,
|
||||||
__LINE__);
|
__LINE__, libname);
|
||||||
locApi = (*getter)(exMask, this);
|
locApi = (*getter)(exMask, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,7 @@ typedef struct loc_gps_cfg_s
|
||||||
uint32_t POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED;
|
uint32_t POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED;
|
||||||
char PROXY_APP_PACKAGE_NAME[LOC_MAX_PARAM_STRING];
|
char PROXY_APP_PACKAGE_NAME[LOC_MAX_PARAM_STRING];
|
||||||
uint32_t CP_MTLR_ES;
|
uint32_t CP_MTLR_ES;
|
||||||
|
uint32_t GNSS_DEPLOYMENT;
|
||||||
} loc_gps_cfg_s_type;
|
} loc_gps_cfg_s_type;
|
||||||
|
|
||||||
/* NOTE: the implementaiton of the parser casts number
|
/* NOTE: the implementaiton of the parser casts number
|
||||||
|
|
|
@ -660,6 +660,7 @@ private:
|
||||||
{
|
{
|
||||||
eTalker = 0,
|
eTalker = 0,
|
||||||
eUtcTime = 1,
|
eUtcTime = 1,
|
||||||
|
eMin = 2 + SV_ALL_NUM_MIN*3,
|
||||||
eMax = 2 + SV_ALL_NUM*3
|
eMax = 2 + SV_ALL_NUM*3
|
||||||
};
|
};
|
||||||
SystemStatusPQWP7 mP7;
|
SystemStatusPQWP7 mP7;
|
||||||
|
@ -668,11 +669,18 @@ public:
|
||||||
SystemStatusPQWP7parser(const char *str_in, uint32_t len_in)
|
SystemStatusPQWP7parser(const char *str_in, uint32_t len_in)
|
||||||
: SystemStatusNmeaBase(str_in, len_in)
|
: SystemStatusNmeaBase(str_in, len_in)
|
||||||
{
|
{
|
||||||
if (mField.size() < eMax) {
|
uint32_t svLimit = SV_ALL_NUM;
|
||||||
|
if (mField.size() < eMin) {
|
||||||
LOC_LOGE("PQWP7parser - invalid size=%zu", mField.size());
|
LOC_LOGE("PQWP7parser - invalid size=%zu", mField.size());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (uint32_t i=0; i<SV_ALL_NUM; i++) {
|
if (mField.size() < eMax) {
|
||||||
|
// Try reducing limit, accounting for possibly missing NAVIC support
|
||||||
|
svLimit = SV_ALL_NUM_MIN;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(mP7.mNav, 0, sizeof(mP7.mNav));
|
||||||
|
for (uint32_t i=0; i<svLimit; i++) {
|
||||||
mP7.mNav[i].mType = GnssEphemerisType(atoi(mField[i*3+2].c_str()));
|
mP7.mNav[i].mType = GnssEphemerisType(atoi(mField[i*3+2].c_str()));
|
||||||
mP7.mNav[i].mSource = GnssEphemerisSource(atoi(mField[i*3+3].c_str()));
|
mP7.mNav[i].mSource = GnssEphemerisSource(atoi(mField[i*3+3].c_str()));
|
||||||
mP7.mNav[i].mAgeSec = atoi(mField[i*3+4].c_str());
|
mP7.mNav[i].mAgeSec = atoi(mField[i*3+4].c_str());
|
||||||
|
|
|
@ -59,7 +59,8 @@
|
||||||
#define BDS_NUM (37)
|
#define BDS_NUM (37)
|
||||||
#define GAL_NUM (36)
|
#define GAL_NUM (36)
|
||||||
#define NAVIC_NUM (14)
|
#define NAVIC_NUM (14)
|
||||||
#define SV_ALL_NUM (GPS_NUM+GLO_NUM+QZSS_NUM+BDS_NUM+GAL_NUM+NAVIC_NUM) //=148
|
#define SV_ALL_NUM_MIN (GPS_NUM + GLO_NUM + QZSS_NUM + BDS_NUM + GAL_NUM) //=134
|
||||||
|
#define SV_ALL_NUM (SV_ALL_NUM_MIN + NAVIC_NUM) //=148
|
||||||
|
|
||||||
namespace loc_core
|
namespace loc_core
|
||||||
{
|
{
|
||||||
|
|
|
@ -448,7 +448,7 @@ void SystemStatusOsObserver::turnOff(DataItemId dit)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_QCMAP
|
#ifdef USE_GLIB
|
||||||
bool SystemStatusOsObserver::connectBackhaul()
|
bool SystemStatusOsObserver::connectBackhaul()
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
|
@ -84,7 +84,7 @@ public:
|
||||||
mSystemStatus(systemstatus), mContext(msgTask, this),
|
mSystemStatus(systemstatus), mContext(msgTask, this),
|
||||||
mAddress("SystemStatusOsObserver"),
|
mAddress("SystemStatusOsObserver"),
|
||||||
mClientToDataItems(MAX_DATA_ITEM_ID), mDataItemToClients(MAX_DATA_ITEM_ID)
|
mClientToDataItems(MAX_DATA_ITEM_ID), mDataItemToClients(MAX_DATA_ITEM_ID)
|
||||||
#ifdef USE_QCMAP
|
#ifdef USE_GLIB
|
||||||
, mBackHaulConnectReqCount(0)
|
, mBackHaulConnectReqCount(0)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
@ -106,7 +106,7 @@ public:
|
||||||
// To set the framework action request object
|
// To set the framework action request object
|
||||||
inline void setFrameworkActionReqObj(IFrameworkActionReq* frameworkActionReqObj) {
|
inline void setFrameworkActionReqObj(IFrameworkActionReq* frameworkActionReqObj) {
|
||||||
mContext.mFrameworkActionReqObj = frameworkActionReqObj;
|
mContext.mFrameworkActionReqObj = frameworkActionReqObj;
|
||||||
#ifdef USE_QCMAP
|
#ifdef USE_GLIB
|
||||||
if (mBackHaulConnectReqCount > 0) {
|
if (mBackHaulConnectReqCount > 0) {
|
||||||
connectBackhaul();
|
connectBackhaul();
|
||||||
mBackHaulConnectReqCount = 0;
|
mBackHaulConnectReqCount = 0;
|
||||||
|
@ -134,7 +134,7 @@ public:
|
||||||
// IFrameworkActionReq Overrides
|
// IFrameworkActionReq Overrides
|
||||||
virtual void turnOn(DataItemId dit, int timeOut = 0) override;
|
virtual void turnOn(DataItemId dit, int timeOut = 0) override;
|
||||||
virtual void turnOff(DataItemId dit) override;
|
virtual void turnOff(DataItemId dit) override;
|
||||||
#ifdef USE_QCMAP
|
#ifdef USE_GLIB
|
||||||
virtual bool connectBackhaul() override;
|
virtual bool connectBackhaul() override;
|
||||||
virtual bool disconnectBackhaul();
|
virtual bool disconnectBackhaul();
|
||||||
#endif
|
#endif
|
||||||
|
@ -151,7 +151,7 @@ private:
|
||||||
// Cache the subscribe and requestData till subscription obj is obtained
|
// Cache the subscribe and requestData till subscription obj is obtained
|
||||||
void cacheObserverRequest(ObserverReqCache& reqCache,
|
void cacheObserverRequest(ObserverReqCache& reqCache,
|
||||||
const list<DataItemId>& l, IDataItemObserver* client);
|
const list<DataItemId>& l, IDataItemObserver* client);
|
||||||
#ifdef USE_QCMAP
|
#ifdef USE_GLIB
|
||||||
// Cache the framework action request for connect/disconnect
|
// Cache the framework action request for connect/disconnect
|
||||||
int mBackHaulConnectReqCount;
|
int mBackHaulConnectReqCount;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -70,7 +70,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void turnOff (DataItemId dit) = 0;
|
virtual void turnOff (DataItemId dit) = 0;
|
||||||
|
|
||||||
#ifdef USE_QCMAP
|
#ifdef USE_GLIB
|
||||||
/**
|
/**
|
||||||
* @brief Setup WWAN backhaul
|
* @brief Setup WWAN backhaul
|
||||||
* @details Setup WWAN backhaul
|
* @details Setup WWAN backhaul
|
||||||
|
|
10
etc/gps.conf
10
etc/gps.conf
|
@ -287,3 +287,13 @@ PROXY_APP_PACKAGE_NAME = com.google.android.carrierlocation
|
||||||
#####################################
|
#####################################
|
||||||
# CP MTLR ES, 1=enable, 0=disable
|
# CP MTLR ES, 1=enable, 0=disable
|
||||||
CP_MTLR_ES=0
|
CP_MTLR_ES=0
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# GNSS_DEPLOYMENT
|
||||||
|
##################################################
|
||||||
|
# 0 : Enable QTI GNSS (default)
|
||||||
|
# 1 : Enable QCSR SS5
|
||||||
|
# This setting use to select between QTI GNSS
|
||||||
|
# and QCSR SS5 hardware receiver.
|
||||||
|
# By default QTI GNSS receiver is enabled.
|
||||||
|
# GNSS_DEPLOYMENT = 0
|
||||||
|
|
|
@ -242,9 +242,11 @@ GeofenceAdapter::addGeofencesCommand(LocationAPI* client, size_t count, Geofence
|
||||||
if (NULL == mIds || NULL == mOptions || NULL == mInfos) {
|
if (NULL == mIds || NULL == mOptions || NULL == mInfos) {
|
||||||
errs[i] = LOCATION_ERROR_INVALID_PARAMETER;
|
errs[i] = LOCATION_ERROR_INVALID_PARAMETER;
|
||||||
} else {
|
} else {
|
||||||
mApi.addGeofence(mIds[i],
|
mApi.addToCallQueue(new LocApiResponse(*mAdapter.getContext(),
|
||||||
mOptions[i],
|
[&mAdapter = mAdapter, mCount = mCount, mClient = mClient,
|
||||||
mInfos[i],
|
mOptions = mOptions, mInfos = mInfos, mIds = mIds, &mApi = mApi,
|
||||||
|
errs, i] (LocationError err ) {
|
||||||
|
mApi.addGeofence(mIds[i], mOptions[i], mInfos[i],
|
||||||
new LocApiResponseData<LocApiGeofenceData>(*mAdapter.getContext(),
|
new LocApiResponseData<LocApiGeofenceData>(*mAdapter.getContext(),
|
||||||
[&mAdapter = mAdapter, mOptions = mOptions, mClient = mClient,
|
[&mAdapter = mAdapter, mOptions = mOptions, mClient = mClient,
|
||||||
mCount = mCount, mIds = mIds, mInfos = mInfos, errs, i]
|
mCount = mCount, mIds = mIds, mInfos = mInfos, errs, i]
|
||||||
|
@ -267,6 +269,7 @@ GeofenceAdapter::addGeofencesCommand(LocationAPI* client, size_t count, Geofence
|
||||||
delete[] mInfos;
|
delete[] mInfos;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1816,12 +1816,15 @@ GnssAdapter::gnssDeleteAidingDataCommand(GnssAidingData& data)
|
||||||
mSessionId(sessionId),
|
mSessionId(sessionId),
|
||||||
mData(data) {}
|
mData(data) {}
|
||||||
inline virtual void proc() const {
|
inline virtual void proc() const {
|
||||||
|
if ((mData.posEngineMask & STANDARD_POSITIONING_ENGINE) != 0) {
|
||||||
mAdapter.deleteAidingData(mData, mSessionId);
|
mAdapter.deleteAidingData(mData, mSessionId);
|
||||||
|
|
||||||
SystemStatus* s = mAdapter.getSystemStatus();
|
SystemStatus* s = mAdapter.getSystemStatus();
|
||||||
if ((nullptr != s) && (mData.deleteAll)) {
|
if ((nullptr != s) && (mData.deleteAll)) {
|
||||||
s->setDefaultGnssEngineStates();
|
s->setDefaultGnssEngineStates();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mAdapter.mEngHubProxy->gnssDeleteAidingData(mData);
|
mAdapter.mEngHubProxy->gnssDeleteAidingData(mData);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -65,7 +65,8 @@ public:
|
||||||
inline XtraIpcListener(IOsObserver* observer, const MsgTask* msgTask,
|
inline XtraIpcListener(IOsObserver* observer, const MsgTask* msgTask,
|
||||||
XtraSystemStatusObserver& xsso) :
|
XtraSystemStatusObserver& xsso) :
|
||||||
mSystemStatusObsrvr(observer), mMsgTask(msgTask), mXSSO(xsso) {}
|
mSystemStatusObsrvr(observer), mMsgTask(msgTask), mXSSO(xsso) {}
|
||||||
virtual void onReceive(const char* data, uint32_t length) override {
|
virtual void onReceive(const char* data, uint32_t length,
|
||||||
|
const LocIpcRecver* recver) override {
|
||||||
#define STRNCMP(str, constStr) strncmp(str, constStr, sizeof(constStr)-1)
|
#define STRNCMP(str, constStr) strncmp(str, constStr, sizeof(constStr)-1)
|
||||||
if (!STRNCMP(data, "ping")) {
|
if (!STRNCMP(data, "ping")) {
|
||||||
LOC_LOGd("ping received");
|
LOC_LOGd("ping received");
|
||||||
|
|
|
@ -488,6 +488,7 @@ private:
|
||||||
for (size_t i = 0; i < count; i++) {
|
for (size_t i = 0; i < count; i++) {
|
||||||
ids[i] = mAPI.mGeofenceBiDict.getId(sessions[i]);
|
ids[i] = mAPI.mGeofenceBiDict.getId(sessions[i]);
|
||||||
}
|
}
|
||||||
|
LOC_LOGD("%s:]Returned geofence-id: %d in add geofence", __FUNCTION__, *ids);
|
||||||
mAPI.onAddGeofencesCb(count, errors, ids);
|
mAPI.onAddGeofencesCb(count, errors, ids);
|
||||||
free(ids);
|
free(ids);
|
||||||
}
|
}
|
||||||
|
@ -505,6 +506,7 @@ private:
|
||||||
for (size_t i = 0; i < count; i++) {
|
for (size_t i = 0; i < count; i++) {
|
||||||
ids[i] = mRemovedGeofenceBiDict->getId(sessions[i]);
|
ids[i] = mRemovedGeofenceBiDict->getId(sessions[i]);
|
||||||
}
|
}
|
||||||
|
LOC_LOGD("%s:]Returned geofence-id: %d in remove geofence", __FUNCTION__, *ids);
|
||||||
mAPI.onRemoveGeofencesCb(count, errors, ids);
|
mAPI.onRemoveGeofencesCb(count, errors, ids);
|
||||||
free(ids);
|
free(ids);
|
||||||
delete(mRemovedGeofenceBiDict);
|
delete(mRemovedGeofenceBiDict);
|
||||||
|
|
|
@ -707,6 +707,7 @@ typedef struct {
|
||||||
bool deleteAll; // if true, delete all aiding data and ignore other params
|
bool deleteAll; // if true, delete all aiding data and ignore other params
|
||||||
GnssAidingDataSv sv; // SV specific aiding data
|
GnssAidingDataSv sv; // SV specific aiding data
|
||||||
GnssAidingDataCommon common; // common aiding data
|
GnssAidingDataCommon common; // common aiding data
|
||||||
|
PositioningEngineMask posEngineMask; // engines to perform the delete operation on.
|
||||||
} GnssAidingData;
|
} GnssAidingData;
|
||||||
|
|
||||||
typedef uint16_t DrCalibrationStatusMask;
|
typedef uint16_t DrCalibrationStatusMask;
|
||||||
|
|
|
@ -66,14 +66,14 @@ ssize_t Sock::send(const void *buf, uint32_t len, int flags, const struct sockad
|
||||||
SOCK_OP_AND_LOG(buf, len, isValid(), rtv, sendto(buf, len, flags, destAddr, addrlen));
|
SOCK_OP_AND_LOG(buf, len, isValid(), rtv, sendto(buf, len, flags, destAddr, addrlen));
|
||||||
return rtv;
|
return rtv;
|
||||||
}
|
}
|
||||||
ssize_t Sock::recv(const shared_ptr<ILocIpcListener>& dataCb, int flags, struct sockaddr *srcAddr,
|
ssize_t Sock::recv(const LocIpcRecver& recver, const shared_ptr<ILocIpcListener>& dataCb, int flags,
|
||||||
socklen_t *addrlen, int sid) const {
|
struct sockaddr *srcAddr, socklen_t *addrlen, int sid) const {
|
||||||
ssize_t rtv = -1;
|
ssize_t rtv = -1;
|
||||||
if (-1 == sid) {
|
if (-1 == sid) {
|
||||||
sid = mSid;
|
sid = mSid;
|
||||||
} // else it sid would be connection based socket id for recv
|
} // else it sid would be connection based socket id for recv
|
||||||
SOCK_OP_AND_LOG(dataCb.get(), mMaxTxSize, isValid(), rtv,
|
SOCK_OP_AND_LOG(dataCb.get(), mMaxTxSize, isValid(), rtv,
|
||||||
recvfrom(dataCb, sid, flags, srcAddr, addrlen));
|
recvfrom(recver, dataCb, sid, flags, srcAddr, addrlen));
|
||||||
return rtv;
|
return rtv;
|
||||||
}
|
}
|
||||||
ssize_t Sock::sendto(const void *buf, size_t len, int flags, const struct sockaddr *destAddr,
|
ssize_t Sock::sendto(const void *buf, size_t len, int flags, const struct sockaddr *destAddr,
|
||||||
|
@ -94,19 +94,18 @@ ssize_t Sock::sendto(const void *buf, size_t len, int flags, const struct sockad
|
||||||
}
|
}
|
||||||
return rtv;
|
return rtv;
|
||||||
}
|
}
|
||||||
ssize_t Sock::recvfrom(const shared_ptr<ILocIpcListener>& dataCb, int sid, int flags,
|
ssize_t Sock::recvfrom(const LocIpcRecver& recver, const shared_ptr<ILocIpcListener>& dataCb,
|
||||||
struct sockaddr *srcAddr, socklen_t *addrlen) const {
|
int sid, int flags, struct sockaddr *srcAddr, socklen_t *addrlen) const {
|
||||||
ssize_t nBytes = -1;
|
|
||||||
std::string msg(mMaxTxSize, 0);
|
std::string msg(mMaxTxSize, 0);
|
||||||
|
ssize_t nBytes = ::recvfrom(sid, (void*)msg.data(), msg.size(), flags, srcAddr, addrlen);
|
||||||
if ((nBytes = ::recvfrom(sid, (void*)msg.data(), msg.size(), flags, srcAddr, addrlen)) > 0) {
|
if (nBytes > 0) {
|
||||||
if (strncmp(msg.data(), MSG_ABORT, sizeof(MSG_ABORT)) == 0) {
|
if (strncmp(msg.data(), MSG_ABORT, sizeof(MSG_ABORT)) == 0) {
|
||||||
LOC_LOGi("recvd abort msg.data %s", msg.data());
|
LOC_LOGi("recvd abort msg.data %s", msg.data());
|
||||||
nBytes = 0;
|
nBytes = 0;
|
||||||
} else if (strncmp(msg.data(), LOC_IPC_HEAD, sizeof(LOC_IPC_HEAD) - 1)) {
|
} else if (strncmp(msg.data(), LOC_IPC_HEAD, sizeof(LOC_IPC_HEAD) - 1)) {
|
||||||
// short message
|
// short message
|
||||||
msg.resize(nBytes);
|
msg.resize(nBytes);
|
||||||
dataCb->onReceive(msg.data(), nBytes);
|
dataCb->onReceive(msg.data(), nBytes, &recver);
|
||||||
} else {
|
} else {
|
||||||
// long message
|
// long message
|
||||||
size_t msgLen = 0;
|
size_t msgLen = 0;
|
||||||
|
@ -119,7 +118,7 @@ ssize_t Sock::recvfrom(const shared_ptr<ILocIpcListener>& dataCb, int sid, int f
|
||||||
}
|
}
|
||||||
if (nBytes > 0) {
|
if (nBytes > 0) {
|
||||||
nBytes = msgLen;
|
nBytes = msgLen;
|
||||||
dataCb->onReceive(msg.data(), nBytes);
|
dataCb->onReceive(msg.data(), nBytes, &recver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,7 +151,7 @@ class LocIpcLocalRecver : public LocIpcLocalSender, public LocIpcRecver {
|
||||||
protected:
|
protected:
|
||||||
inline virtual ssize_t recv() const override {
|
inline virtual ssize_t recv() const override {
|
||||||
socklen_t size = sizeof(mAddr);
|
socklen_t size = sizeof(mAddr);
|
||||||
return mSock->recv(mDataCb, 0, (struct sockaddr*)&mAddr, &size);
|
return mSock->recv(*this, mDataCb, 0, (struct sockaddr*)&mAddr, &size);
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
inline LocIpcLocalRecver(const shared_ptr<ILocIpcListener>& listener, const char* name) :
|
inline LocIpcLocalRecver(const shared_ptr<ILocIpcListener>& listener, const char* name) :
|
||||||
|
@ -189,6 +188,10 @@ protected:
|
||||||
return mSock->send(data, length, 0, (struct sockaddr*)&mAddr, sizeof(mAddr));
|
return mSock->send(data, length, 0, (struct sockaddr*)&mAddr, sizeof(mAddr));
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
|
inline LocIpcInetSender(const LocIpcInetSender& sender) :
|
||||||
|
mSockType(sender.mSockType), mSock(sender.mSock),
|
||||||
|
mName(sender.mName), mAddr(sender.mAddr) {
|
||||||
|
}
|
||||||
inline LocIpcInetSender(const char* name, int32_t port, int sockType) : LocIpcSender(),
|
inline LocIpcInetSender(const char* name, int32_t port, int sockType) : LocIpcSender(),
|
||||||
mSockType(sockType),
|
mSockType(sockType),
|
||||||
mSock(make_shared<Sock>((nullptr == name) ? -1 : (::socket(AF_INET, mSockType, 0)))),
|
mSock(make_shared<Sock>((nullptr == name) ? -1 : (::socket(AF_INET, mSockType, 0)))),
|
||||||
|
@ -202,6 +205,10 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unique_ptr<LocIpcRecver> getRecver(const shared_ptr<ILocIpcListener>& listener) override {
|
||||||
|
return make_unique<SockRecver>(listener, *this, mSock);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocIpcInetTcpSender : public LocIpcInetSender {
|
class LocIpcInetTcpSender : public LocIpcInetSender {
|
||||||
|
@ -245,7 +252,9 @@ public:
|
||||||
mSock->sendAbort(0, (struct sockaddr*)&loopBackAddr, sizeof(loopBackAddr));
|
mSock->sendAbort(0, (struct sockaddr*)&loopBackAddr, sizeof(loopBackAddr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
inline virtual unique_ptr<LocIpcSender> getLastSender() const override {
|
||||||
|
return make_unique<LocIpcInetSender>(static_cast<const LocIpcInetSender&>(*this));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocIpcInetTcpRecver : public LocIpcInetRecver {
|
class LocIpcInetTcpRecver : public LocIpcInetRecver {
|
||||||
|
@ -260,7 +269,7 @@ protected:
|
||||||
mConnFd = -1;
|
mConnFd = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return mSock->recv(mDataCb, 0, (struct sockaddr*)&mAddr, &size, mConnFd);
|
return mSock->recv(*this, mDataCb, 0, (struct sockaddr*)&mAddr, &size, mConnFd);
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
inline LocIpcInetTcpRecver(const shared_ptr<ILocIpcListener>& listener, const char* name,
|
inline LocIpcInetTcpRecver(const shared_ptr<ILocIpcListener>& listener, const char* name,
|
||||||
|
@ -273,7 +282,7 @@ class LocIpcInetUdpRecver : public LocIpcInetRecver {
|
||||||
protected:
|
protected:
|
||||||
inline virtual ssize_t recv() const override {
|
inline virtual ssize_t recv() const override {
|
||||||
socklen_t size = sizeof(mAddr);
|
socklen_t size = sizeof(mAddr);
|
||||||
return mSock->recv(mDataCb, 0, (struct sockaddr*)&mAddr, &size);
|
return mSock->recv(*this, mDataCb, 0, (struct sockaddr*)&mAddr, &size);
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
inline LocIpcInetUdpRecver(const shared_ptr<ILocIpcListener>& listener, const char* name,
|
inline LocIpcInetUdpRecver(const shared_ptr<ILocIpcListener>& listener, const char* name,
|
||||||
|
@ -283,37 +292,6 @@ public:
|
||||||
inline virtual ~LocIpcInetUdpRecver() {}
|
inline virtual ~LocIpcInetUdpRecver() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef NOT_DEFINED
|
|
||||||
class LocIpcQcsiSender : public LocIpcSender {
|
|
||||||
protected:
|
|
||||||
inline virtual bool isOperable() const override {
|
|
||||||
return mService != nullptr && mService->isServiceRegistered();
|
|
||||||
}
|
|
||||||
inline virtual ssize_t send(const uint8_t data[], uint32_t length, int32_t msgId) const override {
|
|
||||||
return mService->sendIndToClient(msgId, data, length);
|
|
||||||
}
|
|
||||||
inline LocIpcQcsiSender(shared_ptr<QcsiService>& service) : mService(service) {}
|
|
||||||
public:
|
|
||||||
inline virtual ~LocIpcQcsi() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
class LocIpcQcsiRecver : public LocIpcQcsiSender, public LocIpcRecver {
|
|
||||||
protected:
|
|
||||||
inline virtual ssize_t recv() const override { return mService->recv(); }
|
|
||||||
public:
|
|
||||||
inline LocIpcQcsiRecver(unique_ptr<QcsiService>& service) :
|
|
||||||
LocIpcQcsiSender(service), LocIpcRecver(mService->getDataCallback(), *this) {
|
|
||||||
}
|
|
||||||
// only the dele
|
|
||||||
inline ~LocIpcQcsiRecver() {}
|
|
||||||
inline virtual const char* getName() const override { return mService->getName().data(); };
|
|
||||||
inline virtual void abort() const override { if (isSendable()) mService->abort(); }
|
|
||||||
shared_ptr<LocIpcQcsiSender> getSender() { return make_pare<LocIpcQcsiSender>(mService); }
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class LocIpcRunnable : public LocRunnable {
|
class LocIpcRunnable : public LocRunnable {
|
||||||
bool mAbortCalled;
|
bool mAbortCalled;
|
||||||
LocIpc& mLocIpc;
|
LocIpc& mLocIpc;
|
||||||
|
|
|
@ -53,7 +53,7 @@ public:
|
||||||
// LocIpc client can overwrite this function to get notification
|
// LocIpc client can overwrite this function to get notification
|
||||||
// when the socket for LocIpc is ready to receive messages.
|
// when the socket for LocIpc is ready to receive messages.
|
||||||
inline virtual void onListenerReady() {}
|
inline virtual void onListenerReady() {}
|
||||||
virtual void onReceive(const char* data, uint32_t length)= 0;
|
virtual void onReceive(const char* data, uint32_t len, const LocIpcRecver* recver) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,15 +123,18 @@ private:
|
||||||
class LocIpcSender {
|
class LocIpcSender {
|
||||||
protected:
|
protected:
|
||||||
LocIpcSender() = default;
|
LocIpcSender() = default;
|
||||||
virtual ~LocIpcSender() = default;
|
|
||||||
virtual bool isOperable() const = 0;
|
virtual bool isOperable() const = 0;
|
||||||
virtual ssize_t send(const uint8_t data[], uint32_t length, int32_t msgId) const = 0;
|
virtual ssize_t send(const uint8_t data[], uint32_t length, int32_t msgId) const = 0;
|
||||||
public:
|
public:
|
||||||
|
virtual ~LocIpcSender() = default;
|
||||||
virtual void informRecverRestarted() {}
|
virtual void informRecverRestarted() {}
|
||||||
inline bool isSendable() const { return isOperable(); }
|
inline bool isSendable() const { return isOperable(); }
|
||||||
inline bool sendData(const uint8_t data[], uint32_t length, int32_t msgId) const {
|
inline bool sendData(const uint8_t data[], uint32_t length, int32_t msgId) const {
|
||||||
return isSendable() && (send(data, length, msgId) > 0);
|
return isSendable() && (send(data, length, msgId) > 0);
|
||||||
}
|
}
|
||||||
|
virtual unique_ptr<LocIpcRecver> getRecver(const shared_ptr<ILocIpcListener>& listener) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class LocIpcRecver {
|
class LocIpcRecver {
|
||||||
|
@ -148,6 +151,9 @@ public:
|
||||||
inline bool recvData() const { return isRecvable() && (recv() > 0); }
|
inline bool recvData() const { return isRecvable() && (recv() > 0); }
|
||||||
inline bool isRecvable() const { return mDataCb != nullptr && mIpcSender.isSendable(); }
|
inline bool isRecvable() const { return mDataCb != nullptr && mIpcSender.isSendable(); }
|
||||||
virtual void onListenerReady() { if (mDataCb != nullptr) mDataCb->onListenerReady(); }
|
virtual void onListenerReady() { if (mDataCb != nullptr) mDataCb->onListenerReady(); }
|
||||||
|
inline virtual unique_ptr<LocIpcSender> getLastSender() const {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
virtual void abort() const = 0;
|
virtual void abort() const = 0;
|
||||||
virtual const char* getName() const = 0;
|
virtual const char* getName() const = 0;
|
||||||
};
|
};
|
||||||
|
@ -158,8 +164,8 @@ class Sock {
|
||||||
const uint32_t mMaxTxSize;
|
const uint32_t mMaxTxSize;
|
||||||
ssize_t sendto(const void *buf, size_t len, int flags, const struct sockaddr *destAddr,
|
ssize_t sendto(const void *buf, size_t len, int flags, const struct sockaddr *destAddr,
|
||||||
socklen_t addrlen) const;
|
socklen_t addrlen) const;
|
||||||
ssize_t recvfrom(const shared_ptr<ILocIpcListener>& dataCb, int sid, int flags,
|
ssize_t recvfrom(const LocIpcRecver& recver, const shared_ptr<ILocIpcListener>& dataCb,
|
||||||
struct sockaddr *srcAddr, socklen_t *addrlen) const;
|
int sid, int flags, struct sockaddr *srcAddr, socklen_t *addrlen) const;
|
||||||
public:
|
public:
|
||||||
int mSid;
|
int mSid;
|
||||||
inline Sock(int sid, const uint32_t maxTxSize = 8192) : mMaxTxSize(maxTxSize), mSid(sid) {}
|
inline Sock(int sid, const uint32_t maxTxSize = 8192) : mMaxTxSize(maxTxSize), mSid(sid) {}
|
||||||
|
@ -167,8 +173,8 @@ public:
|
||||||
inline bool isValid() const { return -1 != mSid; }
|
inline bool isValid() const { return -1 != mSid; }
|
||||||
ssize_t send(const void *buf, uint32_t len, int flags, const struct sockaddr *destAddr,
|
ssize_t send(const void *buf, uint32_t len, int flags, const struct sockaddr *destAddr,
|
||||||
socklen_t addrlen) const;
|
socklen_t addrlen) const;
|
||||||
ssize_t recv(const shared_ptr<ILocIpcListener>& dataCb, int flags, struct sockaddr *srcAddr,
|
ssize_t recv(const LocIpcRecver& recver, const shared_ptr<ILocIpcListener>& dataCb, int flags,
|
||||||
socklen_t *addrlen, int sid = -1) const;
|
struct sockaddr *srcAddr, socklen_t *addrlen, int sid = -1) const;
|
||||||
ssize_t sendAbort(int flags, const struct sockaddr *destAddr, socklen_t addrlen);
|
ssize_t sendAbort(int flags, const struct sockaddr *destAddr, socklen_t addrlen);
|
||||||
inline void close() {
|
inline void close() {
|
||||||
if (isValid()) {
|
if (isValid()) {
|
||||||
|
@ -178,6 +184,23 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class SockRecver : public LocIpcRecver {
|
||||||
|
shared_ptr<Sock> mSock;
|
||||||
|
protected:
|
||||||
|
inline virtual ssize_t recv() const override {
|
||||||
|
return mSock->recv(*this, mDataCb, 0, nullptr, nullptr);
|
||||||
|
}
|
||||||
|
public:
|
||||||
|
inline SockRecver(const shared_ptr<ILocIpcListener>& listener,
|
||||||
|
LocIpcSender& sender, shared_ptr<Sock> sock) :
|
||||||
|
LocIpcRecver(listener, sender), mSock(sock) {
|
||||||
|
}
|
||||||
|
inline virtual const char* getName() const override {
|
||||||
|
return "SockRecver";
|
||||||
|
}
|
||||||
|
inline virtual void abort() const override {}
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //__LOC_IPC__
|
#endif //__LOC_IPC__
|
||||||
|
|
Loading…
Reference in a new issue