Skip to content

convbin bug - SBF MeasEpoch (Meas2) → RINEX: Doppler missing in v2.5.0 #782

@miguel-ribot-skydio

Description

@miguel-ribot-skydio

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions