From fc5c5f6625695a525b0e1322f7148262fbbb3589 Mon Sep 17 00:00:00 2001 From: Dante Russo Date: Thu, 27 Apr 2017 17:00:28 -0700 Subject: [PATCH] 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 --- android/GnssConfiguration.cpp | 8 ++-- android/location_api/GnssAPIClient.cpp | 49 +++++++++++------------ gnss/GnssAdapter.cpp | 4 +- location/LocationAPI.h | 54 +++++++++++++------------- 4 files changed, 57 insertions(+), 58 deletions(-) diff --git a/android/GnssConfiguration.cpp b/android/GnssConfiguration.cpp index 6bb02c1e..51ee8926 100644 --- a/android/GnssConfiguration.cpp +++ b/android/GnssConfiguration.cpp @@ -95,10 +95,13 @@ Return 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 GnssConfiguration::setGpsLock(uint8_t lock) { return false; break; } - config.gpsLock = static_cast(lock); return mGnss->updateConfiguration(config); } diff --git a/android/location_api/GnssAPIClient.cpp b/android/location_api/GnssAPIClient.cpp index e0e90c03..0e86c00c 100644 --- a/android/location_api/GnssAPIClient.cpp +++ b/android/location_api/GnssAPIClient.cpp @@ -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(4/*hardcode until IGnssNiCallback adds value*/); - if (gnssNiNotification.options == GNSS_NI_OPTIONS_NOTIFICATION) - notificationGnss.notifyFlags = - static_cast(IGnssNiCallback::GnssNiNotifyFlags::NEED_NOTIFY); - else if (gnssNiNotification.options == GNSS_NI_OPTIONS_VERIFICATION) - notificationGnss.notifyFlags = - static_cast(IGnssNiCallback::GnssNiNotifyFlags::NEED_VERIFY); - else if (gnssNiNotification.options == GNSS_NI_OPTIONS_PRIVACY_OVERRIDE) - notificationGnss.notifyFlags = - static_cast(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; diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index 2117c733..f22b863d 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -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; diff --git a/location/LocationAPI.h b/location/LocationAPI.h index 88ce5f1d..d128d5eb 100644 --- a/location/LocationAPI.h +++ b/location/LocationAPI.h @@ -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 {