PVT: Fix missing SNR in NMEA sentences

Propagate SNR from all bands instead of L1 only to rtkpos.

Signed-off-by: Vladslav P <vladisslav2011@gmail.com>
This commit is contained in:
Vladslav P
2026-07-09 04:04:15 +03:00
parent 7de0415b11
commit 741edd4c65
2 changed files with 10 additions and 6 deletions
+4 -1
View File
@@ -1162,7 +1162,10 @@ int pntpos(const obsd_t *obs, int n, const nav_t *nav,
{
ssat[obs[i].sat - 1].azel[0] = azel_[i * 2];
ssat[obs[i].sat - 1].azel[1] = azel_[1 + i * 2];
ssat[obs[i].sat - 1].snr[0] = obs[i].SNR[0];
for (int j = 0; j < NFREQ; j++)
{
ssat[obs[i].sat - 1].snr[j] = obs[i].SNR[j];
}
if (!vsat[i])
{
continue;
@@ -34,6 +34,7 @@
#include "rtklib_solution.h"
#include "rtklib_rtkcmn.h"
#include "rtklib_rtksvr.h"
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstring>
@@ -1955,7 +1956,7 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol,
az += 360.0;
}
el = ssat[sats[k] - 1].azel[1] * R2D;
snr = ssat[sats[k] - 1].snr[0] * 0.25;
snr = *std::max_element(std::begin(ssat[sats[k] - 1].snr), std::end(ssat[sats[k] - 1].snr)) * 0.25;
p += std::snprintf(p, MAXSOLBUF - (s - p), ",%02d,%02.0f,%03.0f,%02.0f", prn, el, az, snr);
}
else
@@ -2001,7 +2002,7 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol,
az += 360.0;
}
el = ssat[sats[k] - 1].azel[1] * R2D;
snr = ssat[sats[k] - 1].snr[0] * 0.25;
snr = *std::max_element(std::begin(ssat[sats[k] - 1].snr), std::end(ssat[sats[k] - 1].snr)) * 0.25;
p += std::snprintf(p, MAXSOLBUF - (s - p), ",%02d,%02.0f,%03.0f,%02.0f", prn, el, az, snr);
}
else
@@ -2046,7 +2047,7 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol,
az += 360.0;
}
el = ssat[sats[k] - 1].azel[1] * R2D;
snr = ssat[sats[k] - 1].snr[0] * 0.25;
snr = *std::max_element(std::begin(ssat[sats[k] - 1].snr), std::end(ssat[sats[k] - 1].snr)) * 0.25;
p += std::snprintf(p, MAXSOLBUF - (s - p), ",%02d,%02.0f,%03.0f,%02.0f", prn, el, az, snr);
}
else
@@ -2091,7 +2092,7 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol,
az += 360.0;
}
el = ssat[sats[k] - 1].azel[1] * R2D;
snr = ssat[sats[k] - 1].snr[0] * 0.25;
snr = *std::max_element(std::begin(ssat[sats[k] - 1].snr), std::end(ssat[sats[k] - 1].snr)) * 0.25;
p += std::snprintf(p, MAXSOLBUF - (s - p), ",%02d,%02.0f,%03.0f,%02.0f", prn, el, az, snr);
}
else
@@ -2136,7 +2137,7 @@ int outnmea_gsv(unsigned char *buff, const sol_t *sol,
az += 360.0;
}
el = ssat[sats[k] - 1].azel[1] * R2D;
snr = ssat[sats[k] - 1].snr[0] * 0.25;
snr = *std::max_element(std::begin(ssat[sats[k] - 1].snr), std::end(ssat[sats[k] - 1].snr)) * 0.25;
p += std::snprintf(p, MAXSOLBUF - (s - p), ",%02d,%02.0f,%03.0f,%02.0f", prn, el, az, snr);
}
else