Fix config updates for some LocatoinAPI bit masks

Fix SUPL mode, GPS lock, and GNSS Ni options to be
treated like bit masks instead of values.
Rename some enums of bit masks with _BIT as convention.

Change-Id: I036b682ca3472159304ef569ff67d28dc94f644e
CRs-fixed: 2039308
This commit is contained in:
Dante Russo 2017-04-27 17:00:28 -07:00
parent 8bf78f55ae
commit fc5c5f6625
4 changed files with 57 additions and 58 deletions

View file

@ -95,10 +95,13 @@ Return<bool> GnssConfiguration::setSuplMode(uint8_t mode) {
config.suplModeMask = 0; // STANDALONE ONLY
break;
case 1:
config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSB;
config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSB_BIT;
break;
case 2:
config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSA;
config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSA_BIT;
break;
case 3:
config.suplModeMask = GNSS_CONFIG_SUPL_MODE_MSB_BIT | GNSS_CONFIG_SUPL_MODE_MSA_BIT;
break;
default:
LOC_LOGE("%s]: invalid mode: %d.", __FUNCTION__, mode);
@ -196,7 +199,6 @@ Return<bool> GnssConfiguration::setGpsLock(uint8_t lock) {
return false;
break;
}
config.gpsLock = static_cast<GnssConfigGpsLock>(lock);
return mGnss->updateConfiguration(config);
}

View file

@ -140,39 +140,39 @@ void GnssAPIClient::gnssDeleteAidingData(IGnss::GnssAidingData aidingDataFlags)
LOC_LOGD("%s]: (%02hx)", __FUNCTION__, aidingDataFlags);
GnssAidingData data;
memset(&data, 0, sizeof (GnssAidingData));
data.sv.svTypeMask = GNSS_AIDING_DATA_SV_TYPE_GPS |
GNSS_AIDING_DATA_SV_TYPE_GLONASS |
GNSS_AIDING_DATA_SV_TYPE_QZSS |
GNSS_AIDING_DATA_SV_TYPE_BEIDOU |
GNSS_AIDING_DATA_SV_TYPE_GALILEO;
data.sv.svTypeMask = GNSS_AIDING_DATA_SV_TYPE_GPS_BIT |
GNSS_AIDING_DATA_SV_TYPE_GLONASS_BIT |
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT |
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT |
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT;
if (aidingDataFlags == IGnss::GnssAidingData::DELETE_ALL)
data.deleteAll = true;
else {
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_EPHEMERIS)
data.sv.svMask |= GNSS_AIDING_DATA_SV_EPHEMERIS;
data.sv.svMask |= GNSS_AIDING_DATA_SV_EPHEMERIS_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_ALMANAC)
data.sv.svMask |= GNSS_AIDING_DATA_SV_ALMANAC;
data.sv.svMask |= GNSS_AIDING_DATA_SV_ALMANAC_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_POSITION)
data.common.mask |= GNSS_AIDING_DATA_COMMON_POSITION;
data.common.mask |= GNSS_AIDING_DATA_COMMON_POSITION_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_TIME)
data.common.mask |= GNSS_AIDING_DATA_COMMON_TIME;
data.common.mask |= GNSS_AIDING_DATA_COMMON_TIME_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_IONO)
data.sv.svMask |= GNSS_AIDING_DATA_SV_IONOSPHERE;
data.sv.svMask |= GNSS_AIDING_DATA_SV_IONOSPHERE_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_UTC)
data.common.mask |= GNSS_AIDING_DATA_COMMON_UTC;
data.common.mask |= GNSS_AIDING_DATA_COMMON_UTC_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_HEALTH)
data.sv.svMask |= GNSS_AIDING_DATA_SV_HEALTH;
data.sv.svMask |= GNSS_AIDING_DATA_SV_HEALTH_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_SVDIR)
data.sv.svMask |= GNSS_AIDING_DATA_SV_DIRECTION;
data.sv.svMask |= GNSS_AIDING_DATA_SV_DIRECTION_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_SVSTEER)
data.sv.svMask |= GNSS_AIDING_DATA_SV_STEER;
data.sv.svMask |= GNSS_AIDING_DATA_SV_STEER_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_SADATA)
data.sv.svMask |= GNSS_AIDING_DATA_SV_SA_DATA;
data.sv.svMask |= GNSS_AIDING_DATA_SV_SA_DATA_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_RTI)
data.common.mask |= GNSS_AIDING_DATA_COMMON_RTI;
data.common.mask |= GNSS_AIDING_DATA_COMMON_RTI_BIT;
if (aidingDataFlags & IGnss::GnssAidingData::DELETE_CELLDB_INFO)
data.common.mask |= GNSS_AIDING_DATA_COMMON_CELLDB;
data.common.mask |= GNSS_AIDING_DATA_COMMON_CELLDB_BIT;
}
locAPIGnssDeleteAidingData(data);
}
@ -306,15 +306,12 @@ void GnssAPIClient::onGnssNiCb(uint32_t id, GnssNiNotification gnssNiNotificatio
notificationGnss.niType =
static_cast<IGnssNiCallback::GnssNiType>(4/*hardcode until IGnssNiCallback adds value*/);
if (gnssNiNotification.options == GNSS_NI_OPTIONS_NOTIFICATION)
notificationGnss.notifyFlags =
static_cast<uint32_t>(IGnssNiCallback::GnssNiNotifyFlags::NEED_NOTIFY);
else if (gnssNiNotification.options == GNSS_NI_OPTIONS_VERIFICATION)
notificationGnss.notifyFlags =
static_cast<uint32_t>(IGnssNiCallback::GnssNiNotifyFlags::NEED_VERIFY);
else if (gnssNiNotification.options == GNSS_NI_OPTIONS_PRIVACY_OVERRIDE)
notificationGnss.notifyFlags =
static_cast<uint32_t>(IGnssNiCallback::GnssNiNotifyFlags::PRIVACY_OVERRIDE);
if (gnssNiNotification.options & GNSS_NI_OPTIONS_NOTIFICATION_BIT)
notificationGnss.notifyFlags |= IGnssNiCallback::GnssNiNotifyFlags::NEED_NOTIFY;
else if (gnssNiNotification.options & GNSS_NI_OPTIONS_VERIFICATION_BIT)
notificationGnss.notifyFlags |= IGnssNiCallback::GnssNiNotifyFlags::NEED_VERIFY;
else if (gnssNiNotification.options & GNSS_NI_OPTIONS_PRIVACY_OVERRIDE_BIT)
notificationGnss.notifyFlags |= IGnssNiCallback::GnssNiNotifyFlags::PRIVACY_OVERRIDE;
notificationGnss.timeoutSec = gnssNiNotification.timeout;

View file

@ -435,10 +435,10 @@ uint32_t
GnssAdapter::convertSuplMode(const GnssConfigSuplModeMask suplModeMask)
{
uint32_t mask = 0;
if (GNSS_CONFIG_SUPL_MODE_MSB & suplModeMask) {
if (GNSS_CONFIG_SUPL_MODE_MSB_BIT & suplModeMask) {
mask |= (1<<0);
}
if (GNSS_CONFIG_SUPL_MODE_MSA & suplModeMask) {
if (GNSS_CONFIG_SUPL_MODE_MSA_BIT & suplModeMask) {
mask |= (1<<1);
}
return mask;

View file

@ -202,8 +202,8 @@ typedef enum {
typedef uint16_t GnssConfigSuplModeMask;
typedef enum {
GNSS_CONFIG_SUPL_MODE_MSB = (1<<0),
GNSS_CONFIG_SUPL_MODE_MSA = (1<<1),
GNSS_CONFIG_SUPL_MODE_MSB_BIT = (1<<0),
GNSS_CONFIG_SUPL_MODE_MSA_BIT = (1<<1),
} GnssConfigSuplModeBits;
typedef uint32_t GnssConfigFlagsMask;
@ -236,9 +236,9 @@ typedef enum {
typedef uint16_t GnssNiOptionsMask;
typedef enum {
GNSS_NI_OPTIONS_NOTIFICATION = (1<<0),
GNSS_NI_OPTIONS_VERIFICATION = (1<<1),
GNSS_NI_OPTIONS_PRIVACY_OVERRIDE = (1<<2),
GNSS_NI_OPTIONS_NOTIFICATION_BIT = (1<<0),
GNSS_NI_OPTIONS_VERIFICATION_BIT = (1<<1),
GNSS_NI_OPTIONS_PRIVACY_OVERRIDE_BIT = (1<<2),
} GnssNiOptionsBits;
typedef enum {
@ -366,26 +366,26 @@ typedef enum {
typedef uint32_t GnssAidingDataSvMask;
typedef enum {
GNSS_AIDING_DATA_SV_EPHEMERIS = (1<<0), // ephemeris
GNSS_AIDING_DATA_SV_ALMANAC = (1<<1), // almanac
GNSS_AIDING_DATA_SV_HEALTH = (1<<2), // health
GNSS_AIDING_DATA_SV_DIRECTION = (1<<3), // direction
GNSS_AIDING_DATA_SV_STEER = (1<<4), // steer
GNSS_AIDING_DATA_SV_ALMANAC_CORR = (1<<5), // almanac correction
GNSS_AIDING_DATA_SV_BLACKLIST = (1<<6), // blacklist SVs
GNSS_AIDING_DATA_SV_SA_DATA = (1<<7), // sensitivity assistance data
GNSS_AIDING_DATA_SV_NO_EXIST = (1<<8), // SV does not exist
GNSS_AIDING_DATA_SV_IONOSPHERE = (1<<9), // ionosphere correction
GNSS_AIDING_DATA_SV_TIME = (1<<10),// reset satellite time
GNSS_AIDING_DATA_SV_EPHEMERIS_BIT = (1<<0), // ephemeris
GNSS_AIDING_DATA_SV_ALMANAC_BIT = (1<<1), // almanac
GNSS_AIDING_DATA_SV_HEALTH_BIT = (1<<2), // health
GNSS_AIDING_DATA_SV_DIRECTION_BIT = (1<<3), // direction
GNSS_AIDING_DATA_SV_STEER_BIT = (1<<4), // steer
GNSS_AIDING_DATA_SV_ALMANAC_CORR_BIT = (1<<5), // almanac correction
GNSS_AIDING_DATA_SV_BLACKLIST_BIT = (1<<6), // blacklist SVs
GNSS_AIDING_DATA_SV_SA_DATA_BIT = (1<<7), // sensitivity assistance data
GNSS_AIDING_DATA_SV_NO_EXIST_BIT = (1<<8), // SV does not exist
GNSS_AIDING_DATA_SV_IONOSPHERE_BIT = (1<<9), // ionosphere correction
GNSS_AIDING_DATA_SV_TIME_BIT = (1<<10),// reset satellite time
} GnssAidingDataSvBits;
typedef uint32_t GnssAidingDataSvTypeMask;
typedef enum {
GNSS_AIDING_DATA_SV_TYPE_GPS = (1<<0),
GNSS_AIDING_DATA_SV_TYPE_GLONASS = (1<<1),
GNSS_AIDING_DATA_SV_TYPE_QZSS = (1<<2),
GNSS_AIDING_DATA_SV_TYPE_BEIDOU = (1<<3),
GNSS_AIDING_DATA_SV_TYPE_GALILEO = (1<<4),
GNSS_AIDING_DATA_SV_TYPE_GPS_BIT = (1<<0),
GNSS_AIDING_DATA_SV_TYPE_GLONASS_BIT = (1<<1),
GNSS_AIDING_DATA_SV_TYPE_QZSS_BIT = (1<<2),
GNSS_AIDING_DATA_SV_TYPE_BEIDOU_BIT = (1<<3),
GNSS_AIDING_DATA_SV_TYPE_GALILEO_BIT = (1<<4),
} GnssAidingDataSvTypeBits;
typedef struct {
@ -395,12 +395,12 @@ typedef struct {
typedef uint32_t GnssAidingDataCommonMask;
typedef enum {
GNSS_AIDING_DATA_COMMON_POSITION = (1<<0), // position estimate
GNSS_AIDING_DATA_COMMON_TIME = (1<<1), // reset all clock values
GNSS_AIDING_DATA_COMMON_UTC = (1<<2), // UTC estimate
GNSS_AIDING_DATA_COMMON_RTI = (1<<3), // RTI
GNSS_AIDING_DATA_COMMON_FREQ_BIAS_EST = (1<<4), // frequency bias estimate
GNSS_AIDING_DATA_COMMON_CELLDB = (1<<5), // all celldb info
GNSS_AIDING_DATA_COMMON_POSITION_BIT = (1<<0), // position estimate
GNSS_AIDING_DATA_COMMON_TIME_BIT = (1<<1), // reset all clock values
GNSS_AIDING_DATA_COMMON_UTC_BIT = (1<<2), // UTC estimate
GNSS_AIDING_DATA_COMMON_RTI_BIT = (1<<3), // RTI
GNSS_AIDING_DATA_COMMON_FREQ_BIAS_EST_BIT = (1<<4), // frequency bias estimate
GNSS_AIDING_DATA_COMMON_CELLDB_BIT = (1<<5), // all celldb info
} GnssAidingDataCommonBits;
typedef struct {