Fix issue with app side NMEA generation for GSV
Handling the case when there is no signal type available as part of SV report. Change-Id: I7696f8f19b490506211c83d3d20659a69fffba66 CRs-Fixed: 2338206
This commit is contained in:
parent
21b9c4e47e
commit
7ba7e62c05
1 changed files with 54 additions and 17 deletions
|
@ -531,8 +531,35 @@ static void loc_nmea_generate_GSV(const GnssSvNotification &svNotify,
|
|||
|
||||
for (int i=0; (svNumber <= svNotify.count) && (i < 4); svNumber++)
|
||||
{
|
||||
if (sv_meta_p->svType == svNotify.gnssSvs[svNumber - 1].type && sv_meta_p->signalId ==
|
||||
convert_signalType_to_signalId(svNotify.gnssSvs[svNumber-1].gnssSignalTypeMask))
|
||||
GnssSignalTypeMask signalType = svNotify.gnssSvs[svNumber-1].gnssSignalTypeMask;
|
||||
if (0 == signalType) {
|
||||
// If no signal type in report, it means default L1,G1,E1,B1I
|
||||
switch (svNotify.gnssSvs[svNumber - 1].type)
|
||||
{
|
||||
case GNSS_SV_TYPE_GPS:
|
||||
signalType = GNSS_SIGNAL_GPS_L1CA;
|
||||
break;
|
||||
case GNSS_SV_TYPE_GLONASS:
|
||||
signalType = GNSS_SIGNAL_GLONASS_G1;
|
||||
break;
|
||||
case GNSS_SV_TYPE_GALILEO:
|
||||
signalType = GNSS_SIGNAL_GALILEO_E1;
|
||||
break;
|
||||
case GNSS_SV_TYPE_QZSS:
|
||||
signalType = GNSS_SIGNAL_QZSS_L1CA;
|
||||
break;
|
||||
case GNSS_SV_TYPE_BEIDOU:
|
||||
signalType = GNSS_SIGNAL_BEIDOU_B1I;
|
||||
break;
|
||||
default:
|
||||
LOC_LOGE("NMEA Error unknow constellation type: %d",
|
||||
svNotify.gnssSvs[svNumber - 1].type);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (sv_meta_p->svType == svNotify.gnssSvs[svNumber - 1].type &&
|
||||
sv_meta_p->signalId == convert_signalType_to_signalId(signalType))
|
||||
{
|
||||
length = snprintf(pMarker, lengthRemaining,",%02d,%02d,%03d,",
|
||||
svNotify.gnssSvs[svNumber - 1].svId + svIdOffset,
|
||||
|
@ -1148,10 +1175,12 @@ void loc_nmea_generate_sv(const GnssSvNotification &svNotify,
|
|||
{
|
||||
sv_cache_info.gps_used_mask |= (1 << (svNotify.gnssSvs[svNumber - 1].svId - 1));
|
||||
}
|
||||
if (GNSS_SIGNAL_GPS_L1CA == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.gps_l1_count++;
|
||||
} else if (GNSS_SIGNAL_GPS_L5 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
if (GNSS_SIGNAL_GPS_L5 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.gps_l5_count++;
|
||||
} else {
|
||||
// GNSS_SIGNAL_GPS_L1CA or default
|
||||
// If no signal type in report, it means default L1
|
||||
sv_cache_info.gps_l1_count++;
|
||||
}
|
||||
}
|
||||
else if (GNSS_SV_TYPE_GLONASS == svNotify.gnssSvs[svNumber - 1].type)
|
||||
|
@ -1164,10 +1193,12 @@ void loc_nmea_generate_sv(const GnssSvNotification &svNotify,
|
|||
{
|
||||
sv_cache_info.glo_used_mask |= (1 << (svNotify.gnssSvs[svNumber - 1].svId - 1));
|
||||
}
|
||||
if (GNSS_SIGNAL_GLONASS_G1 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.glo_g1_count++;
|
||||
} else if (GNSS_SIGNAL_GLONASS_G2 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask){
|
||||
if (GNSS_SIGNAL_GLONASS_G2 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask){
|
||||
sv_cache_info.glo_g2_count++;
|
||||
} else {
|
||||
// GNSS_SIGNAL_GLONASS_G1 or default
|
||||
// If no signal type in report, it means default G1
|
||||
sv_cache_info.glo_g1_count++;
|
||||
}
|
||||
}
|
||||
else if (GNSS_SV_TYPE_GALILEO == svNotify.gnssSvs[svNumber - 1].type)
|
||||
|
@ -1180,10 +1211,12 @@ void loc_nmea_generate_sv(const GnssSvNotification &svNotify,
|
|||
{
|
||||
sv_cache_info.gal_used_mask |= (1 << (svNotify.gnssSvs[svNumber - 1].svId - 1));
|
||||
}
|
||||
if (GNSS_SIGNAL_GALILEO_E1 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.gal_e1_count++;
|
||||
} else if(GNSS_SIGNAL_GALILEO_E5A == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask){
|
||||
if(GNSS_SIGNAL_GALILEO_E5A == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask){
|
||||
sv_cache_info.gal_e5_count++;
|
||||
} else {
|
||||
// GNSS_SIGNAL_GALILEO_E1 or default
|
||||
// If no signal type in report, it means default E1
|
||||
sv_cache_info.gal_e1_count++;
|
||||
}
|
||||
}
|
||||
else if (GNSS_SV_TYPE_QZSS == svNotify.gnssSvs[svNumber - 1].type)
|
||||
|
@ -1196,10 +1229,12 @@ void loc_nmea_generate_sv(const GnssSvNotification &svNotify,
|
|||
{
|
||||
sv_cache_info.qzss_used_mask |= (1 << (svNotify.gnssSvs[svNumber - 1].svId - 1));
|
||||
}
|
||||
if (GNSS_SIGNAL_QZSS_L1CA == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.qzss_l1_count++;
|
||||
} else if (GNSS_SIGNAL_QZSS_L5 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
if (GNSS_SIGNAL_QZSS_L5 == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.qzss_l5_count++;
|
||||
} else {
|
||||
// GNSS_SIGNAL_QZSS_L1CA or default
|
||||
// If no signal type in report, it means default L1
|
||||
sv_cache_info.qzss_l1_count++;
|
||||
}
|
||||
}
|
||||
else if (GNSS_SV_TYPE_BEIDOU == svNotify.gnssSvs[svNumber - 1].type)
|
||||
|
@ -1212,10 +1247,12 @@ void loc_nmea_generate_sv(const GnssSvNotification &svNotify,
|
|||
{
|
||||
sv_cache_info.bds_used_mask |= (1 << (svNotify.gnssSvs[svNumber - 1].svId - 1));
|
||||
}
|
||||
if (GNSS_SIGNAL_BEIDOU_B1I == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask) {
|
||||
sv_cache_info.bds_b1_count++;
|
||||
} else if(GNSS_SIGNAL_BEIDOU_B2AI == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask){
|
||||
if(GNSS_SIGNAL_BEIDOU_B2AI == svNotify.gnssSvs[svNumber - 1].gnssSignalTypeMask){
|
||||
sv_cache_info.bds_b2_count++;
|
||||
} else {
|
||||
// GNSS_SIGNAL_BEIDOU_B1I or default
|
||||
// If no signal type in report, it means default B1I
|
||||
sv_cache_info.bds_b1_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue