Fix SV in use mask isn't correct for multiband SVs

Fix the issue that SV in use mask isn't set correct
in reportSv function in GnssAdapter.cpp.

Change-Id: Ie90fc4b938875817b105745cf531ee8dc31e74bc
CRs-Fixed: 2473868
This commit is contained in:
haohuang 2019-06-18 18:10:43 +08:00
parent 16c0367c5b
commit aadad65840
2 changed files with 7 additions and 11 deletions

View file

@ -97,8 +97,7 @@ GnssAdapter::GnssAdapter() :
mPowerStateCb(nullptr),
mIsE911Session(NULL),
mGnssMbSvIdUsedInPosition{},
mGnssMbSvIdUsedInPosAvail(false),
mGnssSignalType()
mGnssMbSvIdUsedInPosAvail(false)
{
LOC_LOGD("%s]: Constructor %p", __func__, this);
mLocPositionMode.mode = LOC_POSITION_MODE_INVALID;
@ -3196,9 +3195,6 @@ GnssAdapter::reportPosition(const UlpLocation& ulpLocation,
if (locationExtended.flags & GPS_LOCATION_EXTENDED_HAS_MULTIBAND) {
mGnssMbSvIdUsedInPosAvail = true;
mGnssMbSvIdUsedInPosition = locationExtended.gnss_mb_sv_used_ids;
for (int i = 0; i < GNSS_SV_MAX; i++) {
mGnssSignalType[i] = locationExtended.measUsageInfo[i].gnssSignalType;
}
}
}
@ -3267,11 +3263,12 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
for (int i=0; i < numSv; i++) {
svUsedIdMask = 0;
gnssSvId = svNotify.gnssSvs[i].svId;
GnssSignalTypeMask signalTypeMask = svNotify.gnssSvs[i].gnssSignalTypeMask;
switch (svNotify.gnssSvs[i].type) {
case GNSS_SV_TYPE_GPS:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
switch (mGnssSignalType[i]) {
switch (signalTypeMask) {
case GNSS_SIGNAL_GPS_L1CA:
svUsedIdMask = mGnssMbSvIdUsedInPosition.gps_l1ca_sv_used_ids_mask;
break;
@ -3293,7 +3290,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_GLONASS:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
switch (mGnssSignalType[i]) {
switch (signalTypeMask) {
case GNSS_SIGNAL_GLONASS_G1:
svUsedIdMask = mGnssMbSvIdUsedInPosition.glo_g1_sv_used_ids_mask;
break;
@ -3309,7 +3306,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_BEIDOU:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
switch (mGnssSignalType[i]) {
switch (signalTypeMask) {
case GNSS_SIGNAL_BEIDOU_B1I:
svUsedIdMask = mGnssMbSvIdUsedInPosition.bds_b1i_sv_used_ids_mask;
break;
@ -3334,7 +3331,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_GALILEO:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
switch (mGnssSignalType[i]) {
switch (signalTypeMask) {
case GNSS_SIGNAL_GALILEO_E1:
svUsedIdMask = mGnssMbSvIdUsedInPosition.gal_e1_sv_used_ids_mask;
break;
@ -3353,7 +3350,7 @@ GnssAdapter::reportSv(GnssSvNotification& svNotify)
case GNSS_SV_TYPE_QZSS:
if (mGnssSvIdUsedInPosAvail) {
if (mGnssMbSvIdUsedInPosAvail) {
switch (mGnssSignalType[i]) {
switch (signalTypeMask) {
case GNSS_SIGNAL_QZSS_L1CA:
svUsedIdMask = mGnssMbSvIdUsedInPosition.qzss_l1ca_sv_used_ids_mask;
break;

View file

@ -147,7 +147,6 @@ class GnssAdapter : public LocAdapterBase {
bool mGnssSvIdUsedInPosAvail;
GnssSvMbUsedInPosition mGnssMbSvIdUsedInPosition;
bool mGnssMbSvIdUsedInPosAvail;
GnssSignalTypeMask mGnssSignalType[GNSS_SV_MAX];
/* ==== CONTROL ======================================================================== */
LocationControlCallbacks mControlCallbacks;