Changeset 11130 in ntrip for trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h
- Timestamp:
- Oct 28, 2026, 9:32:30 AM (5 days ago)
- File:
-
- 1 edited
-
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h
r11124 r11130 605 605 #define E_NADIR_ANGLE_DEPENDENT_CORR_RANGE_EXTENSION(a) ADDBITS(4, a) /* DF+015 (new RTCM) to extend DF+021*/ 606 606 #define E_SATELLITE_SET_INDICATOR(a) ADDBITS(1, a) /* DF+016 (new RTCM) */ 607 /* ADDBITS' mask "(1<<a)-1" uses a 32-bit int literal, so a plain 608 ADDBITS(64, a) is broken the same way GETSSRBITS(a, 64) was on decode 609 (see D_SATELLITE_MASK) - here even ADDBITS(32, ...) is unsafe, since 610 shifting a 32-bit int by exactly its own width is undefined behavior 611 too. Stay well clear of that edge by writing four 16-bit chunks. */ 607 /* ADDBITS handles up to 56 bits, so the 64-bit mask is written as two 608 32-bit halves (as GETSSRBITS(a, 64) does not work either, see 609 D_SATELLITE_MASK). */ 612 610 #define E_SATELLITE_MASK(a) { \ 613 611 uint64_t mask64_ = (a); \ 614 ADDBITS(16, (mask64_ >> 48) & 0xFFFFU) \ 615 ADDBITS(16, (mask64_ >> 32) & 0xFFFFU) \ 616 ADDBITS(16, (mask64_ >> 16) & 0xFFFFU) \ 617 ADDBITS(16, mask64_ & 0xFFFFU) \ 612 ADDBITS(32, mask64_ >> 32) \ 613 ADDBITS(32, mask64_ & 0xFFFFFFFFU) \ 618 614 } /* DF394 */ 619 615 #define E_FREQUENCY_SET_INDICATOR(a) ADDBITS(1, a) /* DF+017 (new RTCM) */
Note:
See TracChangeset
for help on using the changeset viewer.
