From 4971373d94024b7571dfea11dffd89f46cf6aefb Mon Sep 17 00:00:00 2001 From: Katz Yamada Date: Fri, 7 Jul 2017 15:33:52 -0700 Subject: [PATCH] Disable set debug NMEA bit when unsupported Avoid setting debug NMEA bit of QMI_LOC_SET_ NMEA_TYPES_REQ message when the feature is unsupported. Change-Id: I999654f627eac68042597ee51aff81e8588bfa9b CRs-Fixed: 2072961 --- gnss/GnssAdapter.cpp | 15 ++++++++++----- gnss/GnssAdapter.h | 1 + utils/gps_extended_c.h | 9 +++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index d08f8c2d..975656bd 100644 --- a/gnss/GnssAdapter.cpp +++ b/gnss/GnssAdapter.cpp @@ -61,6 +61,7 @@ GnssAdapter::GnssAdapter() : mGnssSvIdUsedInPosAvail(false), mControlCallbacks(), mPowerVoteId(0), + mNmeaMask(0), mNiData(), mAgpsManager(), mAgpsCbInfo() @@ -520,11 +521,15 @@ GnssAdapter::setConfigCommand() // set nmea mask type uint32_t mask = 0; if (NMEA_PROVIDER_MP == ContextBase::mGps_conf.NMEA_PROVIDER) { - mask = LOC_NMEA_ALL_SUPPORTED_MASK; - } else { - mask = LOC_NMEA_MASK_DEBUG_V02; + mask |= LOC_NMEA_ALL_GENERAL_SUPPORTED_MASK; } - mApi.setNMEATypes(mask); + if (mApi.isFeatureSupported(LOC_SUPPORTED_FEATURE_DEBUG_NMEA_V02)) { + mask |= LOC_NMEA_MASK_DEBUG_V02; + } + if (mask != 0) { + mApi.setNMEATypes(mask); + } + mAdapter.mNmeaMask= mask; mApi.setXtraVersionCheck(ContextBase::mGps_conf.XTRA_VERSION_CHECK); if (ContextBase::mSap_conf.GYRO_BIAS_RANDOM_WALK_VALID || @@ -1011,7 +1016,7 @@ GnssAdapter::updateClientsEventMask() if (it->second.gnssSvCb != nullptr) { mask |= LOC_API_ADAPTER_BIT_SATELLITE_REPORT; } - if (it->second.gnssNmeaCb != nullptr) { + if ((it->second.gnssNmeaCb != nullptr) && (mNmeaMask)) { mask |= LOC_API_ADAPTER_BIT_NMEA_1HZ_REPORT; } if (it->second.gnssMeasurementsCb != nullptr) { diff --git a/gnss/GnssAdapter.h b/gnss/GnssAdapter.h index 3b300474..c07fa2b5 100644 --- a/gnss/GnssAdapter.h +++ b/gnss/GnssAdapter.h @@ -92,6 +92,7 @@ class GnssAdapter : public LocAdapterBase { /* ==== CONTROL ======================================================================== */ LocationControlCallbacks mControlCallbacks; uint32_t mPowerVoteId; + uint32_t mNmeaMask; /* ==== NI ============================================================================= */ NiData mNiData; diff --git a/utils/gps_extended_c.h b/utils/gps_extended_c.h index b8acead2..66dcc4dd 100644 --- a/utils/gps_extended_c.h +++ b/utils/gps_extended_c.h @@ -114,7 +114,8 @@ enum loc_registration_mask_status { typedef enum { LOC_SUPPORTED_FEATURE_ODCPI_2_V02 = 0, /**< Support ODCPI version 2 feature */ - LOC_SUPPORTED_FEATURE_WIFI_AP_DATA_INJECT_2_V02 /**< Support Wifi AP data inject version 2 feature */ + LOC_SUPPORTED_FEATURE_WIFI_AP_DATA_INJECT_2_V02, /**< Support Wifi AP data inject version 2 feature */ + LOC_SUPPORTED_FEATURE_DEBUG_NMEA_V02 /**< Support debug NMEA feature */ } loc_supported_feature_enum; typedef struct { @@ -427,13 +428,13 @@ typedef uint32_t NmeaSentenceTypesMask; #define LOC_NMEA_MASK_PQGSV_V02 ((NmeaSentenceTypesMask)0x00010000) /**< Enable PQGSV type */ #define LOC_NMEA_MASK_DEBUG_V02 ((NmeaSentenceTypesMask)0x00020000) /**< Enable DEBUG type */ -#define LOC_NMEA_ALL_SUPPORTED_MASK (LOC_NMEA_MASK_GGA_V02 | LOC_NMEA_MASK_RMC_V02 | \ +// all bitmasks of general supported NMEA sentenses - debug is not part of this +#define LOC_NMEA_ALL_GENERAL_SUPPORTED_MASK (LOC_NMEA_MASK_GGA_V02 | LOC_NMEA_MASK_RMC_V02 | \ LOC_NMEA_MASK_GSV_V02 | LOC_NMEA_MASK_GSA_V02 | LOC_NMEA_MASK_VTG_V02 | \ LOC_NMEA_MASK_PQXFI_V02 | LOC_NMEA_MASK_PSTIS_V02 | LOC_NMEA_MASK_GLGSV_V02 | \ LOC_NMEA_MASK_GNGSA_V02 | LOC_NMEA_MASK_GNGNS_V02 | LOC_NMEA_MASK_GARMC_V02 | \ LOC_NMEA_MASK_GAGSV_V02 | LOC_NMEA_MASK_GAGSA_V02 | LOC_NMEA_MASK_GAVTG_V02 | \ - LOC_NMEA_MASK_GAGGA_V02 | LOC_NMEA_MASK_PQGSA_V02 | LOC_NMEA_MASK_PQGSV_V02 | \ - LOC_NMEA_MASK_DEBUG_V02 ) + LOC_NMEA_MASK_GAGGA_V02 | LOC_NMEA_MASK_PQGSA_V02 | LOC_NMEA_MASK_PQGSV_V02) typedef enum { LOC_ENG_IF_REQUEST_SENDER_ID_QUIPC = 0,