Changeset 11126 in ntrip for trunk/BNC/src/RTCM3
- Timestamp:
- Oct 24, 2026, 11:14:36 PM (3 weeks ago)
- Location:
- trunk/BNC/src/RTCM3
- Files:
-
- 2 edited
-
clock_and_orbit/clock_orbit_rtcm_new.cpp (modified) (2 diffs)
-
crsEncoder.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp
r11124 r11126 472 472 for (i = 0; i < md->NumEntries; i++) { 473 473 E_MODEL_CORRECTION_TYPE_INDICATOR(md->Entries[i].TypeIndicator) 474 E_ ADDITIONAL_MODEL_PARAMETER_INDICATOR(md->Entries[i].ApplicationIndicator)474 E_MODEL_CORRECTION_APPLICATION_INDICATOR(md->Entries[i].ApplicationIndicator) 475 475 E_NON_DEFAULT_MODEL_CORRECTION_INDICATOR(md->Entries[i].nonDefaultIndicator) 476 476 if (md->Entries[i].nonDefaultIndicator) { … … 489 489 if (md->Entries[i].nonDefaultIndicator && 490 490 md->Entries[i].additionalParameterIndicator) { 491 E_ADDITIONAL_MODEL_PARAMETER_DATA(md->Entries[i].additionalParameterData, md->Entries[i].additionalParameterNumBits) 491 /* up to 255 bits, only 32 stored (leading bits zero); in pieces of 492 16 bits, as ADDBITS cannot handle more than 30 bits */ 493 unsigned int k = md->Entries[i].additionalParameterNumBits; 494 while (k) { 495 unsigned int n = (k > 16) ? 16 : k; 496 k -= n; 497 E_ADDITIONAL_MODEL_PARAMETER_DATA((k < 32) ? (md->Entries[i].additionalParameterData >> k) : 0, n) 498 } 492 499 } 493 500 } -
trunk/BNC/src/RTCM3/crsEncoder.cpp
r10551 r11126 11 11 using namespace std; 12 12 13 // Length of a name for the 5-bit length field: up to the terminating 0, 14 // at most 31 characters 15 //////////////////////////////////////////////////////////////////////////// 16 static int nameLength(const char* name, size_t bufSize) { 17 size_t n = strnlen(name, bufSize); 18 return (n > 31) ? 31 : int(n); 19 } 20 13 21 // build up RTCM3 for serviceCrs 14 22 //////////////////////////////////////////////////////////////////////////// … … 17 25 INITBLOCK 18 26 ADDBITS(12, 1300) 19 int N = sizeof(serviceCrs._name) / sizeof(serviceCrs._name[0]); 20 if (N > 31) {N = 31;} 27 int N = nameLength(serviceCrs._name, sizeof(serviceCrs._name)); 21 28 ADDBITS(5, N) 22 29 for(int i = 0; i < N; i++) { … … 35 42 36 43 ADDBITS(12, 1302) 37 int N = sizeof(rtcmCrs._name) / sizeof(rtcmCrs._name[0]); 38 if (N > 31) {N = 31;} 44 int N = nameLength(rtcmCrs._name, sizeof(rtcmCrs._name)); 39 45 ADDBITS(5, N) 40 46 for(int i = 0; i < N; i++) { … … 44 50 ADDBITS(5, rtcmCrs._plateNumber) 45 51 int dblinknum = rtcmCrs._databaseLinks.size(); 52 if (dblinknum > 7) {dblinknum = 7;} // 3 bits 46 53 ADDBITS(3, dblinknum); 47 if (dblinknum) {48 for(int d = 0; d <dblinknum; d++) {49 N = sizeof(rtcmCrs._databaseLinks[d]) / sizeof(rtcmCrs._databaseLinks[d][0]);50 for(int i = 0; i < N; i++) {51 ADDBITS(8, rtcmCrs._databaseLinks[d].toLatin1()[i])52 }54 for(int d = 0; d < dblinknum; d++) { 55 QByteArray dblink = rtcmCrs._databaseLinks[d].toLatin1(); 56 N = nameLength(dblink.constData(), dblink.size()); 57 ADDBITS(5, N) 58 for(int i = 0; i < N; i++) { 59 ADDBITS(8, dblink[i]) 53 60 } 54 61 } … … 65 72 66 73 ADDBITS(12, 1301) 67 int N = sizeof(helmertPar._sourceName) / sizeof(helmertPar._sourceName[0]); 68 if (N > 31) {N = 31;} 74 int N = nameLength(helmertPar._sourceName, sizeof(helmertPar._sourceName)); 69 75 ADDBITS(5, N) 70 76 for(int i = 0; i < N; i++) { 71 77 ADDBITS(8, helmertPar._sourceName[i]) 72 78 } 73 N = sizeof(helmertPar._targetName) / sizeof(helmertPar._targetName[0]); 74 if (N > 31) {N = 31;} 79 N = nameLength(helmertPar._targetName, sizeof(helmertPar._targetName)); 75 80 ADDBITS(5, N) 76 81 for(int i = 0; i < N; i++) {
Note:
See TracChangeset
for help on using the changeset viewer.
