-
Notifications
You must be signed in to change notification settings - Fork 331
Description
When converting Septentrio SBF files that use the classic MeasEpoch/MeasExtra (“Meas2”) blocks to RINEX with v2.5.0, Doppler observations are not written (or entire epochs appear to be missing, depending on how the data is inspected). The same SBF file converts correctly with b34i.
The root cause seems to be that decode_measepoch() in septentrio.c buffers observations while waiting for an EndOfMeas / ID_MEASEPOCH_END (block 5922) marker, but that marker is not present in Meas2 data streams. As a result, the observation buffer is never flushed for those epochs, so Doppler is never output for Meas2 logs.
Proposed fix (high level):
The approach I tested locally (which fixes the issue for my Meas2 data) is:
1. Flush immediately after decoding MeasEpoch (Meas2)
In decode_measepoch(raw_t *raw), after populating raw->obuf / raw->obuf.n, call flushobuf(raw) before returning for MeasEpoch-style data.
2. Do not flush in Meas3 extension blocks
In decode_meas3Doppler() and decode_meas3CN(), remove or avoid the time-based flush (timediff(...) != 0 -> flushobuf(raw)).
I’m not completely sure this is the best way to handle the issue, so I’d really appreciate feedback. I’m happy to open a PR with this patch if it seems reasonable.