Merge "Fix potential NMEA event registration issue"
This commit is contained in:
commit
3eb3079f05
2 changed files with 116 additions and 120 deletions
|
@ -681,22 +681,10 @@ GnssAdapter::setSuplHostServer(const char* server, int port, LocServerType type)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
GnssAdapter::setConfigCommand()
|
GnssAdapter::setConfig()
|
||||||
{
|
{
|
||||||
LOC_LOGD("%s]: ", __func__);
|
LOC_LOGD("%s]: ", __func__);
|
||||||
|
|
||||||
struct MsgSetConfig : public LocMsg {
|
|
||||||
GnssAdapter& mAdapter;
|
|
||||||
LocApiBase& mApi;
|
|
||||||
inline MsgSetConfig(GnssAdapter& adapter, LocApiBase& api) :
|
|
||||||
LocMsg(),
|
|
||||||
mAdapter(adapter),
|
|
||||||
mApi(api) {}
|
|
||||||
inline virtual void proc() const {
|
|
||||||
if (!mAdapter.isEngineCapabilitiesKnown()) {
|
|
||||||
mAdapter.mPendingMsgs.push_back(new MsgSetConfig(*this));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// set nmea mask type
|
// set nmea mask type
|
||||||
uint32_t mask = 0;
|
uint32_t mask = 0;
|
||||||
if (NMEA_PROVIDER_MP == ContextBase::mGps_conf.NMEA_PROVIDER) {
|
if (NMEA_PROVIDER_MP == ContextBase::mGps_conf.NMEA_PROVIDER) {
|
||||||
|
@ -705,18 +693,28 @@ GnssAdapter::setConfigCommand()
|
||||||
if (ContextBase::isFeatureSupported(LOC_SUPPORTED_FEATURE_DEBUG_NMEA_V02)) {
|
if (ContextBase::isFeatureSupported(LOC_SUPPORTED_FEATURE_DEBUG_NMEA_V02)) {
|
||||||
mask |= LOC_NMEA_MASK_DEBUG_V02;
|
mask |= LOC_NMEA_MASK_DEBUG_V02;
|
||||||
}
|
}
|
||||||
mAdapter.mNmeaMask= mask;
|
if (mNmeaMask != mask) {
|
||||||
|
mNmeaMask = mask;
|
||||||
|
if (mNmeaMask) {
|
||||||
|
for (auto it=mClientData.begin(); it != mClientData.end(); ++it) {
|
||||||
|
if ((it->second.gnssNmeaCb != nullptr)) {
|
||||||
|
updateEvtMask(LOC_API_ADAPTER_BIT_NMEA_1HZ_REPORT,
|
||||||
|
LOC_REGISTRATION_MASK_ENABLED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string oldMoServerUrl = mAdapter.getMoServerUrl();
|
std::string oldMoServerUrl = getMoServerUrl();
|
||||||
mAdapter.setSuplHostServer(ContextBase::mGps_conf.SUPL_HOST,
|
setSuplHostServer(ContextBase::mGps_conf.SUPL_HOST,
|
||||||
ContextBase::mGps_conf.SUPL_PORT,
|
ContextBase::mGps_conf.SUPL_PORT,
|
||||||
LOC_AGPS_SUPL_SERVER);
|
LOC_AGPS_SUPL_SERVER);
|
||||||
mAdapter.setSuplHostServer(ContextBase::mGps_conf.MO_SUPL_HOST,
|
setSuplHostServer(ContextBase::mGps_conf.MO_SUPL_HOST,
|
||||||
ContextBase::mGps_conf.MO_SUPL_PORT,
|
ContextBase::mGps_conf.MO_SUPL_PORT,
|
||||||
LOC_AGPS_MO_SUPL_SERVER);
|
LOC_AGPS_MO_SUPL_SERVER);
|
||||||
|
|
||||||
// inject the configurations into modem
|
// inject the configurations into modem
|
||||||
GnssAdapter& adapter = mAdapter;
|
|
||||||
loc_gps_cfg_s gpsConf = ContextBase::mGps_conf;
|
loc_gps_cfg_s gpsConf = ContextBase::mGps_conf;
|
||||||
loc_sap_cfg_s_type sapConf = ContextBase::mSap_conf;
|
loc_sap_cfg_s_type sapConf = ContextBase::mSap_conf;
|
||||||
|
|
||||||
|
@ -734,21 +732,21 @@ GnssAdapter::setConfigCommand()
|
||||||
GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT |
|
GNSS_CONFIG_FLAGS_AGLONASS_POSITION_PROTOCOL_VALID_BIT |
|
||||||
GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT;
|
GNSS_CONFIG_FLAGS_LPP_PROFILE_VALID_BIT;
|
||||||
gnssConfigRequested.suplVersion =
|
gnssConfigRequested.suplVersion =
|
||||||
adapter.mLocApi->convertSuplVersion(gpsConf.SUPL_VER);
|
mLocApi->convertSuplVersion(gpsConf.SUPL_VER);
|
||||||
gnssConfigRequested.lppProfile =
|
gnssConfigRequested.lppProfile =
|
||||||
adapter.mLocApi->convertLppProfile(gpsConf.LPP_PROFILE);
|
mLocApi->convertLppProfile(gpsConf.LPP_PROFILE);
|
||||||
gnssConfigRequested.aGlonassPositionProtocolMask =
|
gnssConfigRequested.aGlonassPositionProtocolMask =
|
||||||
gpsConf.A_GLONASS_POS_PROTOCOL_SELECT;
|
gpsConf.A_GLONASS_POS_PROTOCOL_SELECT;
|
||||||
}
|
}
|
||||||
gnssConfigRequested.lppeControlPlaneMask =
|
gnssConfigRequested.lppeControlPlaneMask =
|
||||||
adapter.mLocApi->convertLppeCp(gpsConf.LPPE_CP_TECHNOLOGY);
|
mLocApi->convertLppeCp(gpsConf.LPPE_CP_TECHNOLOGY);
|
||||||
gnssConfigRequested.lppeUserPlaneMask =
|
gnssConfigRequested.lppeUserPlaneMask =
|
||||||
adapter.mLocApi->convertLppeUp(gpsConf.LPPE_UP_TECHNOLOGY);
|
mLocApi->convertLppeUp(gpsConf.LPPE_UP_TECHNOLOGY);
|
||||||
gnssConfigRequested.blacklistedSvIds.assign(adapter.mBlacklistedSvIds.begin(),
|
gnssConfigRequested.blacklistedSvIds.assign(mBlacklistedSvIds.begin(),
|
||||||
adapter.mBlacklistedSvIds.end());
|
mBlacklistedSvIds.end());
|
||||||
mApi.sendMsg(new LocApiMsg(
|
mLocApi->sendMsg(new LocApiMsg(
|
||||||
[&adapter, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () {
|
[this, gpsConf, sapConf, oldMoServerUrl, gnssConfigRequested] () {
|
||||||
adapter.gnssUpdateConfig(oldMoServerUrl, gnssConfigRequested, gnssConfigRequested);
|
gnssUpdateConfig(oldMoServerUrl, gnssConfigRequested, gnssConfigRequested);
|
||||||
|
|
||||||
// set nmea mask type
|
// set nmea mask type
|
||||||
uint32_t mask = 0;
|
uint32_t mask = 0;
|
||||||
|
@ -760,16 +758,16 @@ GnssAdapter::setConfigCommand()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask != 0) {
|
if (mask != 0) {
|
||||||
adapter.mLocApi->setNMEATypesSync(mask);
|
mLocApi->setNMEATypesSync(mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter.mLocApi->setXtraVersionCheckSync(gpsConf.XTRA_VERSION_CHECK);
|
mLocApi->setXtraVersionCheckSync(gpsConf.XTRA_VERSION_CHECK);
|
||||||
|
|
||||||
adapter.mLocApi->setConstrainedTuncMode(
|
mLocApi->setConstrainedTuncMode(
|
||||||
gpsConf.CONSTRAINED_TIME_UNCERTAINTY_ENABLED == 1,
|
gpsConf.CONSTRAINED_TIME_UNCERTAINTY_ENABLED == 1,
|
||||||
(float)gpsConf.CONSTRAINED_TIME_UNCERTAINTY_THRESHOLD,
|
(float)gpsConf.CONSTRAINED_TIME_UNCERTAINTY_THRESHOLD,
|
||||||
gpsConf.CONSTRAINED_TIME_UNCERTAINTY_ENERGY_BUDGET);
|
gpsConf.CONSTRAINED_TIME_UNCERTAINTY_ENERGY_BUDGET);
|
||||||
adapter.mLocApi->setPositionAssistedClockEstimatorMode(
|
mLocApi->setPositionAssistedClockEstimatorMode(
|
||||||
gpsConf.POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED == 1);
|
gpsConf.POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED == 1);
|
||||||
|
|
||||||
if (sapConf.GYRO_BIAS_RANDOM_WALK_VALID ||
|
if (sapConf.GYRO_BIAS_RANDOM_WALK_VALID ||
|
||||||
|
@ -777,7 +775,7 @@ GnssAdapter::setConfigCommand()
|
||||||
sapConf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
|
sapConf.ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
|
||||||
sapConf.RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
|
sapConf.RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
|
||||||
sapConf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID ) {
|
sapConf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID ) {
|
||||||
adapter.mLocApi->setSensorPropertiesSync(
|
mLocApi->setSensorPropertiesSync(
|
||||||
sapConf.GYRO_BIAS_RANDOM_WALK_VALID,
|
sapConf.GYRO_BIAS_RANDOM_WALK_VALID,
|
||||||
sapConf.GYRO_BIAS_RANDOM_WALK,
|
sapConf.GYRO_BIAS_RANDOM_WALK,
|
||||||
sapConf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
|
sapConf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
|
||||||
|
@ -789,7 +787,7 @@ GnssAdapter::setConfigCommand()
|
||||||
sapConf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
|
sapConf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID,
|
||||||
sapConf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY);
|
sapConf.VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY);
|
||||||
}
|
}
|
||||||
adapter.mLocApi->setSensorPerfControlConfigSync(
|
mLocApi->setSensorPerfControlConfigSync(
|
||||||
sapConf.SENSOR_CONTROL_MODE,
|
sapConf.SENSOR_CONTROL_MODE,
|
||||||
sapConf.SENSOR_ACCEL_SAMPLES_PER_BATCH,
|
sapConf.SENSOR_ACCEL_SAMPLES_PER_BATCH,
|
||||||
sapConf.SENSOR_ACCEL_BATCHES_PER_SEC,
|
sapConf.SENSOR_ACCEL_BATCHES_PER_SEC,
|
||||||
|
@ -801,10 +799,7 @@ GnssAdapter::setConfigCommand()
|
||||||
sapConf.SENSOR_GYRO_BATCHES_PER_SEC_HIGH,
|
sapConf.SENSOR_GYRO_BATCHES_PER_SEC_HIGH,
|
||||||
sapConf.SENSOR_ALGORITHM_CONFIG_MASK);
|
sapConf.SENSOR_ALGORITHM_CONFIG_MASK);
|
||||||
} ));
|
} ));
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
sendMsg(new MsgSetConfig(*this, *mLocApi));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldMoServerUrl,
|
std::vector<LocationError> GnssAdapter::gnssUpdateConfig(const std::string& oldMoServerUrl,
|
||||||
|
@ -2075,6 +2070,8 @@ GnssAdapter::handleEngineUpEvent()
|
||||||
virtual void proc() const {
|
virtual void proc() const {
|
||||||
mAdapter.setEngineCapabilitiesKnown(true);
|
mAdapter.setEngineCapabilitiesKnown(true);
|
||||||
mAdapter.broadcastCapabilities(mAdapter.getCapabilities());
|
mAdapter.broadcastCapabilities(mAdapter.getCapabilities());
|
||||||
|
// must be called only after capabilities are known
|
||||||
|
mAdapter.setConfig();
|
||||||
mAdapter.restartSessions();
|
mAdapter.restartSessions();
|
||||||
mAdapter.gnssSvIdConfigUpdate();
|
mAdapter.gnssSvIdConfigUpdate();
|
||||||
mAdapter.gnssSvTypeConfigUpdate();
|
mAdapter.gnssSvTypeConfigUpdate();
|
||||||
|
@ -2086,7 +2083,6 @@ GnssAdapter::handleEngineUpEvent()
|
||||||
};
|
};
|
||||||
|
|
||||||
readConfigCommand();
|
readConfigCommand();
|
||||||
setConfigCommand();
|
|
||||||
sendMsg(new MsgHandleEngineUpEvent(*this));
|
sendMsg(new MsgHandleEngineUpEvent(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -281,7 +281,6 @@ public:
|
||||||
void disableCommand(uint32_t id);
|
void disableCommand(uint32_t id);
|
||||||
void setControlCallbacksCommand(LocationControlCallbacks& controlCallbacks);
|
void setControlCallbacksCommand(LocationControlCallbacks& controlCallbacks);
|
||||||
void readConfigCommand();
|
void readConfigCommand();
|
||||||
void setConfigCommand();
|
|
||||||
void requestUlpCommand();
|
void requestUlpCommand();
|
||||||
void initEngHubProxyCommand();
|
void initEngHubProxyCommand();
|
||||||
uint32_t* gnssUpdateConfigCommand(GnssConfig config);
|
uint32_t* gnssUpdateConfigCommand(GnssConfig config);
|
||||||
|
@ -313,6 +312,7 @@ public:
|
||||||
{ mGnssSvTypeConfigCb = callback; }
|
{ mGnssSvTypeConfigCb = callback; }
|
||||||
inline GnssSvTypeConfigCallback gnssGetSvTypeConfigCallback()
|
inline GnssSvTypeConfigCallback gnssGetSvTypeConfigCallback()
|
||||||
{ return mGnssSvTypeConfigCb; }
|
{ return mGnssSvTypeConfigCb; }
|
||||||
|
void setConfig();
|
||||||
|
|
||||||
/* ========= AGPS ====================================================================== */
|
/* ========= AGPS ====================================================================== */
|
||||||
/* ======== COMMANDS ====(Called from Client Thread)==================================== */
|
/* ======== COMMANDS ====(Called from Client Thread)==================================== */
|
||||||
|
|
Loading…
Reference in a new issue