Merge "NMEA generation change to prevent 2Hz reporting"
This commit is contained in:
commit
95fbf27ce1
2 changed files with 16 additions and 44 deletions
|
@ -798,11 +798,7 @@ void LocEngReportPosition::proc() const {
|
||||||
locEng->engine_status, locEng->adapter->isInSession());
|
locEng->engine_status, locEng->adapter->isInSession());
|
||||||
|
|
||||||
if (locEng->generateNmea &&
|
if (locEng->generateNmea &&
|
||||||
mLocation.position_source == ULP_LOCATION_IS_FROM_GNSS &&
|
locEng->adapter->isInSession())
|
||||||
locEng->adapter->isInSession() &&
|
|
||||||
mTechMask & (LOC_POS_TECH_MASK_SATELLITE |
|
|
||||||
LOC_POS_TECH_MASK_SENSORS |
|
|
||||||
LOC_POS_TECH_MASK_HYBRID))
|
|
||||||
{
|
{
|
||||||
unsigned char generate_nmea = reported &&
|
unsigned char generate_nmea = reported &&
|
||||||
(mStatus != LOC_SESS_FAILURE);
|
(mStatus != LOC_SESS_FAILURE);
|
||||||
|
|
|
@ -790,48 +790,24 @@ void loc_eng_nmea_generate_sv(loc_eng_data_s_type *loc_eng_data_p,
|
||||||
|
|
||||||
}//if
|
}//if
|
||||||
|
|
||||||
if (svStatus.gps_used_in_fix_mask == 0 &&
|
// cache the used in fix mask, as it will be needed to send $GPGSA
|
||||||
svStatus.glo_used_in_fix_mask == 0 &&
|
// during the position report
|
||||||
svStatus.bds_used_in_fix_mask == 0)
|
loc_eng_data_p->sv_used_mask = svStatus.gps_used_in_fix_mask;
|
||||||
{ // No sv used, so there will be no position report, so send
|
|
||||||
// blank NMEA sentences
|
|
||||||
strlcpy(sentence, "$GPGSA,A,1,,,,,,,,,,,,,,,", sizeof(sentence));
|
|
||||||
length = loc_eng_nmea_put_checksum(sentence, sizeof(sentence));
|
|
||||||
loc_eng_nmea_send(sentence, length, loc_eng_data_p);
|
|
||||||
|
|
||||||
strlcpy(sentence, "$GPVTG,,T,,M,,N,,K,N", sizeof(sentence));
|
// For RPC, the DOP are sent during sv report, so cache them
|
||||||
length = loc_eng_nmea_put_checksum(sentence, sizeof(sentence));
|
// now to be sent during position report.
|
||||||
loc_eng_nmea_send(sentence, length, loc_eng_data_p);
|
// For QMI, the DOP will be in position report.
|
||||||
|
if (locationExtended.flags & GPS_LOCATION_EXTENDED_HAS_DOP)
|
||||||
strlcpy(sentence, "$GPRMC,,V,,,,,,,,,,N", sizeof(sentence));
|
{
|
||||||
length = loc_eng_nmea_put_checksum(sentence, sizeof(sentence));
|
loc_eng_data_p->pdop = locationExtended.pdop;
|
||||||
loc_eng_nmea_send(sentence, length, loc_eng_data_p);
|
loc_eng_data_p->hdop = locationExtended.hdop;
|
||||||
|
loc_eng_data_p->vdop = locationExtended.vdop;
|
||||||
strlcpy(sentence, "$GPGGA,,,,,,0,,,,,,,,", sizeof(sentence));
|
|
||||||
length = loc_eng_nmea_put_checksum(sentence, sizeof(sentence));
|
|
||||||
loc_eng_nmea_send(sentence, length, loc_eng_data_p);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // cache the used in fix mask, as it will be needed to send $GPGSA
|
{
|
||||||
// during the position report
|
loc_eng_data_p->pdop = 0;
|
||||||
loc_eng_data_p->sv_used_mask = svStatus.gps_used_in_fix_mask;
|
loc_eng_data_p->hdop = 0;
|
||||||
|
loc_eng_data_p->vdop = 0;
|
||||||
// For RPC, the DOP are sent during sv report, so cache them
|
|
||||||
// now to be sent during position report.
|
|
||||||
// For QMI, the DOP will be in position report.
|
|
||||||
if (locationExtended.flags & GPS_LOCATION_EXTENDED_HAS_DOP)
|
|
||||||
{
|
|
||||||
loc_eng_data_p->pdop = locationExtended.pdop;
|
|
||||||
loc_eng_data_p->hdop = locationExtended.hdop;
|
|
||||||
loc_eng_data_p->vdop = locationExtended.vdop;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
loc_eng_data_p->pdop = 0;
|
|
||||||
loc_eng_data_p->hdop = 0;
|
|
||||||
loc_eng_data_p->vdop = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXIT_LOG(%d, 0);
|
EXIT_LOG(%d, 0);
|
||||||
|
|
Loading…
Reference in a new issue