Ignore:
Timestamp:
Sep 22, 2026, 5:19:12 PM (5 weeks ago)
Author:
stuerze
Message:

updates regarding RTCM-SSR

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h

    r11041 r11042  
    604604#define E_NADIR_ANGLE_DEPENDENT_CORR_RANGE_EXTENSION(a) ADDBITS(4,  a)                      /* DF+015 (new RTCM) to extend DF+021*/
    605605#define E_SATELLITE_SET_INDICATOR(a)                    ADDBITS(1,  a)                      /* DF+016 (new RTCM) */
    606 #define E_SATELLITE_MASK(a)                             ADDBITS(64, a)                      /* DF394 */
     606/* ADDBITS' mask "(1<<a)-1" uses a 32-bit int literal, so a plain
     607   ADDBITS(64, a) is broken the same way GETSSRBITS(a, 64) was on decode
     608   (see D_SATELLITE_MASK) - here even ADDBITS(32, ...) is unsafe, since
     609   shifting a 32-bit int by exactly its own width is undefined behavior
     610   too. Stay well clear of that edge by writing four 16-bit chunks. */
     611#define E_SATELLITE_MASK(a)                             { \
     612  uint64_t mask64_ = (a); \
     613  ADDBITS(16, (mask64_ >> 48) & 0xFFFFU) \
     614  ADDBITS(16, (mask64_ >> 32) & 0xFFFFU) \
     615  ADDBITS(16, (mask64_ >> 16) & 0xFFFFU) \
     616  ADDBITS(16,  mask64_        & 0xFFFFU) \
     617}                                                                             /* DF394 */
    607618#define E_FREQUENCY_SET_INDICATOR(a)                    ADDBITS(1,  a)                      /* DF+017 (new RTCM) */
    608619#define E_GNSS_FREQUENCY_MASK(a)                        ADDBITS(6,  a)                      /* DF+018 (new RTCM) */
Note: See TracChangeset for help on using the changeset viewer.