Added support for AGC

Added support for AGC (automatic gain control)

CRs-fixed: 2023324

Change-Id: I6d6da23aab66da14bfa594077beda15194bdbeba
This commit is contained in:
Mike Cailean 2017-03-22 10:03:19 -07:00
parent 4ff6da4a8a
commit 3ad14ba827
4 changed files with 43 additions and 4 deletions

View file

@ -166,6 +166,8 @@ static void convertGnssMeasurement(GnssMeasurementsData& in,
out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_PHASE; out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_PHASE;
if (in.flags & GNSS_MEASUREMENTS_DATA_CARRIER_PHASE_UNCERTAINTY_BIT) if (in.flags & GNSS_MEASUREMENTS_DATA_CARRIER_PHASE_UNCERTAINTY_BIT)
out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_PHASE_UNCERTAINTY; out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_CARRIER_PHASE_UNCERTAINTY;
if (in.flags & GNSS_MEASUREMENTS_DATA_AUTOMATIC_GAIN_CONTROL_BIT)
out.flags |= IGnssMeasurementCallback::GnssMeasurementFlags::HAS_AUTOMATIC_GAIN_CONTROL;
out.svid = in.svId; out.svid = in.svId;
convertGnssConstellationType(in.svType, out.constellation); convertGnssConstellationType(in.svType, out.constellation);
out.timeOffsetNs = in.timeOffsetNs; out.timeOffsetNs = in.timeOffsetNs;
@ -226,6 +228,7 @@ static void convertGnssMeasurement(GnssMeasurementsData& in,
out.multipathIndicator = out.multipathIndicator =
static_cast<IGnssMeasurementCallback::GnssMultipathIndicator>(indicator); static_cast<IGnssMeasurementCallback::GnssMultipathIndicator>(indicator);
out.snrDb = in.signalToNoiseRatioDb; out.snrDb = in.signalToNoiseRatioDb;
out.agcLevelDb = in.agcLevelDb;
} }
static void convertGnssClock(GnssMeasurementsClock& in, IGnssMeasurementCallback::GnssClock& out) static void convertGnssClock(GnssMeasurementsClock& in, IGnssMeasurementCallback::GnssClock& out)

View file

@ -128,6 +128,10 @@ public:
uint32_t mJammerBds; // x10 uint32_t mJammerBds; // x10
uint32_t mJammerGal; // x11 uint32_t mJammerGal; // x11
uint32_t mRecErrorRecovery; // x12 uint32_t mRecErrorRecovery; // x12
double mAgcGps; // x13
double mAgcGlo; // x14
double mAgcBds; // x15
double mAgcGal; // x16
}; };
// parser // parser
@ -155,6 +159,10 @@ private:
eJammerBds = 16, eJammerBds = 16,
eJammerGal = 17, eJammerGal = 17,
eRecErrorRecovery = 18, eRecErrorRecovery = 18,
eAgcGps = 19,
eAgcGlo = 20,
eAgcBds = 21,
eAgcGal = 22,
eMax = eRecErrorRecovery eMax = eRecErrorRecovery
}; };
SystemStatusPQWM1 mM1; SystemStatusPQWM1 mM1;
@ -177,6 +185,10 @@ public:
inline uint32_t getJammerGlo() { return mM1.mJammerGlo; } inline uint32_t getJammerGlo() { return mM1.mJammerGlo; }
inline uint32_t getJammerBds() { return mM1.mJammerBds; } inline uint32_t getJammerBds() { return mM1.mJammerBds; }
inline uint32_t getJammerGal() { return mM1.mJammerGal; } inline uint32_t getJammerGal() { return mM1.mJammerGal; }
inline uint32_t getAgcGps() { return mM1.mAgcGps; }
inline uint32_t getAgcGlo() { return mM1.mAgcGlo; }
inline uint32_t getAgcBds() { return mM1.mAgcBds; }
inline uint32_t getAgcGal() { return mM1.mAgcGal; }
inline uint32_t getRecErrorRecovery() { return mM1.mRecErrorRecovery; } inline uint32_t getRecErrorRecovery() { return mM1.mRecErrorRecovery; }
SystemStatusPQWM1parser(const char *str_in, uint32_t len_in) SystemStatusPQWM1parser(const char *str_in, uint32_t len_in)
@ -209,6 +221,10 @@ public:
mM1.mJammerBds = atoi(mField[eJammerBds].c_str()); mM1.mJammerBds = atoi(mField[eJammerBds].c_str());
mM1.mJammerGal = atoi(mField[eJammerGal].c_str()); mM1.mJammerGal = atoi(mField[eJammerGal].c_str());
mM1.mRecErrorRecovery = atoi(mField[eRecErrorRecovery].c_str()); mM1.mRecErrorRecovery = atoi(mField[eRecErrorRecovery].c_str());
mM1.mAgcGps = atof(mField[eAgcGps].c_str());
mM1.mAgcGlo = atof(mField[eAgcGlo].c_str());
mM1.mAgcBds = atof(mField[eAgcBds].c_str());
mM1.mAgcGal = atof(mField[eAgcGal].c_str());
} }
inline SystemStatusPQWM1& get() { return mM1;} //getparser inline SystemStatusPQWM1& get() { return mM1;} //getparser
@ -725,7 +741,11 @@ SystemStatusRfAndParams::SystemStatusRfAndParams(const SystemStatusPQWM1& nmea)
mJammerGps(nmea.mJammerGps), mJammerGps(nmea.mJammerGps),
mJammerGlo(nmea.mJammerGlo), mJammerGlo(nmea.mJammerGlo),
mJammerBds(nmea.mJammerBds), mJammerBds(nmea.mJammerBds),
mJammerGal(nmea.mJammerGal) mJammerGal(nmea.mJammerGal),
mAgcGps(nmea.mAgcGps),
mAgcGlo(nmea.mAgcGlo),
mAgcBds(nmea.mAgcBds),
mAgcGal(nmea.mAgcGal)
{ {
} }
@ -739,7 +759,11 @@ bool SystemStatusRfAndParams::equals(SystemStatusRfAndParams& peer)
(mJammerGps != peer.mJammerGps) || (mJammerGps != peer.mJammerGps) ||
(mJammerGlo != peer.mJammerGlo) || (mJammerGlo != peer.mJammerGlo) ||
(mJammerBds != peer.mJammerBds) || (mJammerBds != peer.mJammerBds) ||
(mJammerGal != peer.mJammerGal)) { (mJammerGal != peer.mJammerGal) ||
(mAgcGps != peer.mAgcGps) ||
(mAgcGlo != peer.mAgcGlo) ||
(mAgcBds != peer.mAgcBds) ||
(mAgcGal != peer.mAgcGal)) {
return false; return false;
} }
return true; return true;
@ -747,7 +771,9 @@ bool SystemStatusRfAndParams::equals(SystemStatusRfAndParams& peer)
void SystemStatusRfAndParams::dump() void SystemStatusRfAndParams::dump()
{ {
LOC_LOGV("RfAndParams: u=%ld:%ld p=%d bi=%d bq=%d ai=%d aq=%d gp=%d gl=%d bd=%d ga=%d", LOC_LOGV("RfAndParams: u=%ld:%ld p=%d bi=%d bq=%d ai=%d aq=%d "
"jgp=%d jgl=%d jbd=%d jga=%d "
"agp=%lf agl=%lf abd=%lf aga=%lf",
mUtcTime.tv_sec, mUtcTime.tv_nsec, mUtcTime.tv_sec, mUtcTime.tv_nsec,
mPgaGain, mPgaGain,
mGpsBpAmpI, mGpsBpAmpI,
@ -757,7 +783,11 @@ void SystemStatusRfAndParams::dump()
mJammerGps, mJammerGps,
mJammerGlo, mJammerGlo,
mJammerBds, mJammerBds,
mJammerGal); mJammerGal,
mAgcGps,
mAgcGlo,
mAgcBds,
mAgcGal);
return; return;
} }

View file

@ -107,6 +107,10 @@ public:
uint32_t mJammerGlo; uint32_t mJammerGlo;
uint32_t mJammerBds; uint32_t mJammerBds;
uint32_t mJammerGal; uint32_t mJammerGal;
double mAgcGps;
double mAgcGlo;
double mAgcBds;
double mAgcGal;
SystemStatusRfAndParams(const SystemStatusPQWM1& nmea); SystemStatusRfAndParams(const SystemStatusPQWM1& nmea);
bool equals(SystemStatusRfAndParams& peer); bool equals(SystemStatusRfAndParams& peer);
void dump(void); void dump(void);

View file

@ -295,6 +295,7 @@ typedef enum {
GNSS_MEASUREMENTS_DATA_CARRIER_PHASE_UNCERTAINTY_BIT = (1<<14), GNSS_MEASUREMENTS_DATA_CARRIER_PHASE_UNCERTAINTY_BIT = (1<<14),
GNSS_MEASUREMENTS_DATA_MULTIPATH_INDICATOR_BIT = (1<<15), GNSS_MEASUREMENTS_DATA_MULTIPATH_INDICATOR_BIT = (1<<15),
GNSS_MEASUREMENTS_DATA_SIGNAL_TO_NOISE_RATIO_BIT = (1<<16), GNSS_MEASUREMENTS_DATA_SIGNAL_TO_NOISE_RATIO_BIT = (1<<16),
GNSS_MEASUREMENTS_DATA_AUTOMATIC_GAIN_CONTROL_BIT = (1<<17),
} GnssMeasurementsDataFlagsBits; } GnssMeasurementsDataFlagsBits;
typedef uint32_t GnssMeasurementsStateMask; typedef uint32_t GnssMeasurementsStateMask;
@ -503,6 +504,7 @@ typedef struct {
double carrierPhaseUncertainty; double carrierPhaseUncertainty;
GnssMeasurementsMultipathIndicator multipathIndicator; GnssMeasurementsMultipathIndicator multipathIndicator;
double signalToNoiseRatioDb; double signalToNoiseRatioDb;
double agcLevelDb;
} GnssMeasurementsData; } GnssMeasurementsData;
typedef struct { typedef struct {