Changeset 8617 in ntrip for trunk/BNC/src/bncutils.cpp


Ignore:
Timestamp:
Feb 28, 2019, 2:46:37 PM (5 years ago)
Author:
stuerze
Message:

a computed lock time is added for RTCM3 phase observations as an optional feed engine output

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncutils.cpp

    r8417 r8617  
    949949}
    950950
     951// Convert RTCM3 lock-time indicator to lock time in seconds
     952////////////////////////////////////////////////////////////////////////////
     953double lti2sec(int type, int lti) {
     954
     955  if ( (type>=1001 && type<=1004) ||
     956       (type>=1009 && type<=1012)    ) { // RTCM3 msg 100[1...4] and 10[09...12]
     957         if (lti<   0) return  -1;
     958    else if (lti<  24) return   1*lti;      // [  0   1   23]
     959    else if (lti<  48) return   2*lti-24;   // [ 24   2   70]
     960    else if (lti<  72) return   4*lti-120;  // [ 72   4  164]
     961    else if (lti<  96) return   8*lti-408;  // [168   8  352]
     962    else if (lti< 120) return  16*lti-1176; // [360  16  728]
     963    else if (lti< 127) return  32*lti-3096; // [744  32  905]
     964    else if (lti==127) return  937;
     965    else               return  -1;
     966  }
     967  else if (type%10==2 || type%10==3 ||
     968           type%10==4 || type%10==5) {  // RTCM3 MSM-2/-3/-4/-5
     969    switch(lti) {
     970      case( 0) : return      0;
     971      case( 1) : return     32e-3;
     972      case( 2) : return     64e-3;
     973      case( 3) : return    128e-3;
     974      case( 4) : return    256e-3;
     975      case( 5) : return    512e-3;
     976      case( 6) : return   1024e-3;
     977      case( 7) : return   2048e-3;
     978      case( 8) : return   4096e-3;
     979      case( 9) : return   8192e-3;
     980      case(10) : return  16384e-3;
     981      case(11) : return  32768e-3;
     982      case(12) : return  65536e-3;
     983      case(13) : return 131072e-3;
     984      case(14) : return 262144e-3;
     985      case(15) : return 524288e-3;
     986      default  : return     -1;
     987    };
     988  }
     989  else if (type%10==6 || type%10==7) {  // RTCM3 MSM-6 and MSM-7
     990         if (lti<   0) return (     -1               );
     991    else if (lti<  64) return (      1*lti           )*1e-3;
     992    else if (lti<  96) return (      2*lti-64        )*1e-3;
     993    else if (lti< 128) return (      4*lti-256       )*1e-3;
     994    else if (lti< 160) return (      8*lti-768       )*1e-3;
     995    else if (lti< 192) return (     16*lti-2048      )*1e-3;
     996    else if (lti< 224) return (     32*lti-5120      )*1e-3;
     997    else if (lti< 256) return (     64*lti-12288     )*1e-3;
     998    else if (lti< 288) return (    128*lti-28672     )*1e-3;
     999    else if (lti< 320) return (    256*lti-65536     )*1e-3;
     1000    else if (lti< 352) return (    512*lti-147456    )*1e-3;
     1001    else if (lti< 384) return (   1024*lti-327680    )*1e-3;
     1002    else if (lti< 416) return (   2048*lti-720896    )*1e-3;
     1003    else if (lti< 448) return (   4096*lti-1572864   )*1e-3;
     1004    else if (lti< 480) return (   8192*lti-3407872   )*1e-3;
     1005    else if (lti< 512) return (  16384*lti-7340032   )*1e-3;
     1006    else if (lti< 544) return (  32768*lti-15728640  )*1e-3;
     1007    else if (lti< 576) return (  65536*lti-33554432  )*1e-3;
     1008    else if (lti< 608) return ( 131072*lti-71303168  )*1e-3;
     1009    else if (lti< 640) return ( 262144*lti-150994944 )*1e-3;
     1010    else if (lti< 672) return ( 524288*lti-318767104 )*1e-3;
     1011    else if (lti< 704) return (1048576*lti-671088640 )*1e-3;
     1012    else if (lti==704) return (2097152*lti-1409286144)*1e-3;
     1013    else               return (     -1               );
     1014  }
     1015  else {
     1016    return -1;
     1017  };
     1018};
Note: See TracChangeset for help on using the changeset viewer.