aboutsummaryrefslogtreecommitdiff
path: root/src/modules/sdlog2
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-05-23 13:01:20 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-05-23 13:01:20 +0200
commite71c386547badfb4bf2cde0e58f345ea569fc1d6 (patch)
treeeb526568ed92dfd558bb25584e24ef0c89e47a0d /src/modules/sdlog2
parent19989b4314c4918ce8f6e1731ba389757f95ae62 (diff)
downloadpx4-firmware-e71c386547badfb4bf2cde0e58f345ea569fc1d6.tar.gz
px4-firmware-e71c386547badfb4bf2cde0e58f345ea569fc1d6.tar.bz2
px4-firmware-e71c386547badfb4bf2cde0e58f345ea569fc1d6.zip
Always log both GPS SNR sets. Assign array IDs by PRN to get a per-satellite unique mapping
Diffstat (limited to 'src/modules/sdlog2')
-rw-r--r--src/modules/sdlog2/sdlog2.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/modules/sdlog2/sdlog2.c b/src/modules/sdlog2/sdlog2.c
index ff68b5ad6..873f04828 100644
--- a/src/modules/sdlog2/sdlog2.c
+++ b/src/modules/sdlog2/sdlog2.c
@@ -1068,27 +1068,24 @@ int sdlog2_thread_main(int argc, char *argv[])
log_msg.msg_type = LOG_GS0A_MSG;
memset(&log_msg.body.log_GS0A, 0, sizeof(log_msg.body.log_GS0A));
/* fill set A */
- unsigned max_sats_a = (log_max_snr > gps_msg_max_snr) ? gps_msg_max_snr : log_max_snr;
-
- for (unsigned i = 0; i < max_sats_a; i++) {
- log_msg.body.log_GS0A.satellite_snr[i] = buf_gps_pos.satellite_snr[i];
+ for (unsigned i = 0; i < gps_msg_max_snr; i++) {
+ if (buf_gps_pos.satellite_prn[i] < log_max_snr) {
+ /* map satellites by their ID so that logs from two receivers can be compared */
+ log_msg.body.log_GS0A.satellite_snr[buf_gps_pos.satellite_prn[i]] = buf_gps_pos.satellite_snr[i];
+ }
}
LOGBUFFER_WRITE_AND_COUNT(GS0A);
- /* do we need a 2nd set? */
- if (gps_msg_max_snr > log_max_snr) {
- log_msg.msg_type = LOG_GS0B_MSG;
- memset(&log_msg.body.log_GS0B, 0, sizeof(log_msg.body.log_GS0B));
- /* fill set B - deduct the count we already have taken care of */
- gps_msg_max_snr -= log_max_snr;
- unsigned max_sats_b = (log_max_snr > gps_msg_max_snr) ? gps_msg_max_snr : log_max_snr;
-
- for (unsigned i = 0; i < max_sats_b; i++) {
- /* count from zero, but obey offset of log_max_snr consumed units */
- log_msg.body.log_GS0B.satellite_snr[i] = buf_gps_pos.satellite_snr[log_max_snr + i];
+ log_msg.msg_type = LOG_GS0B_MSG;
+ memset(&log_msg.body.log_GS0B, 0, sizeof(log_msg.body.log_GS0B));
+ /* fill set B */
+ for (unsigned i = 0; i < gps_msg_max_snr; i++) {
+ if (buf_gps_pos.satellite_prn[i] < log_max_snr) {
+ /* map satellites by their ID so that logs from two receivers can be compared */
+ log_msg.body.log_GS0B.satellite_snr[buf_gps_pos.satellite_prn[i]] = buf_gps_pos.satellite_snr[i];
}
- LOGBUFFER_WRITE_AND_COUNT(GS0B);
}
+ LOGBUFFER_WRITE_AND_COUNT(GS0B);
}
}