Changeset 1184 in ntrip


Ignore:
Timestamp:
Nov 10, 2008, 7:01:41 PM (16 years ago)
Author:
weber
Message:

* empty log message *

Location:
trunk/BNC
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/RTCM/GPSDecoder.h

    r1130 r1184  
    134134
    135135  QList<p_obs> _obsList;
    136   QList<int> _typeList; // RTCM message types
     136  QList<int> _typeList; // RTCMv3 message types
    137137  QList<int> _epochList; // Broadcast corrections
    138   QList<double> _antList; // Antenna XYZ-H
     138  QList<char*> _antType; // RTCMv3 antenna descriptor
     139  QList<double> _antList5; // RTCMv3 antenna XYZ
     140  QList<double> _antList6; // RTCMv3 antenna XYZ & H
    139141};
    140142
  • trunk/BNC/RTCM3/rtcm3torinex.c

    r1130 r1184  
    11/*
    22  Converter for RTCM3 data to RINEX.
    3   $Id: rtcm3torinex.c,v 1.16 2008/09/02 14:14:33 weber Exp $
     3  $Id: rtcm3torinex.c,v 1.17 2008/09/22 09:39:49 weber Exp $
    44  Copyright (C) 2005-2008 by Dirk Stöcker <stoecker@alberding.eu>
    55
     
    5151
    5252/* CVS revision and version */
    53 static char revisionstr[] = "$Revision: 1.16 $";
     53static char revisionstr[] = "$Revision: 1.17 $";
    5454
    5555#ifndef COMPILEDATE
     
    290290    {
    291291#ifdef NO_RTCM3_MAIN
    292     double antX, antY, antZ, antH; /* Antenna XYZ-H */
     292    case 1005:
     293      {
     294        double antX, antY, antZ; /* Antenna XYZ */
     295        SKIPBITS(22)
     296        GETBITSSIGN(antX, 38)
     297        SKIPBITS(2)
     298        GETBITSSIGN(antY, 38)
     299        SKIPBITS(2)
     300        GETBITSSIGN(antZ, 38)
     301        handle->antList5[handle->antSize5 + 0] = antX;
     302        handle->antList5[handle->antSize5 + 1] = antY;
     303        handle->antList5[handle->antSize5 + 2] = antZ;
     304        if(handle->antSize5 < 100 - 5 ) {handle->antSize5 += 3;}
     305        ret = 1005;
     306      }
     307      break;
    293308    case 1006:
    294309      {
    295         SKIPBITS(22);
    296         GETBITSSIGN(antX, 38); SKIPBITS(2);
    297         GETBITSSIGN(antY, 38); SKIPBITS(2);
    298         GETBITSSIGN(antZ, 38);
    299         GETBITS(    antH, 16);
    300         handle->antList[handle->antSize + 0] = antX;
    301         handle->antList[handle->antSize + 1] = antY;
    302         handle->antList[handle->antSize + 2] = antZ;
    303         handle->antList[handle->antSize + 3] = antH;
    304         if(handle->antSize < 100 - 6 ) {handle->antSize += 4;}
     310        double antX, antY, antZ, antH; /* Antenna XYZ-H */
     311        SKIPBITS(22)
     312        GETBITSSIGN(antX, 38)
     313        SKIPBITS(2)
     314        GETBITSSIGN(antY, 38)
     315        SKIPBITS(2)
     316        GETBITSSIGN(antZ, 38)
     317        GETBITS(    antH, 16)
     318        handle->antList6[handle->antSize6 + 0] = antX;
     319        handle->antList6[handle->antSize6 + 1] = antY;
     320        handle->antList6[handle->antSize6 + 2] = antZ;
     321        handle->antList6[handle->antSize6 + 3] = antH;
     322        if(handle->antSize6 < 100 - 6 ) {handle->antSize6 += 4;}
     323        ret = 1006;
     324      }
     325      break;
     326    case 1007:
     327      {
     328        char *antC = '\0'; /* Antenna Descriptor */
     329        char *antS = '\0';
     330        antC = (char*) malloc(32);   
     331        antS  = (char*) malloc(32);   
     332        uint32_t antN;
     333        uint32_t antD;
     334        uint32_t jj;
     335
     336        SKIPBITS(12)
     337        GETBITS(antN, 8)
     338        if ((antN>0) && (antN<32)) {
     339          for (jj = 0; jj < antN; jj++) {
     340            GETBITS(antD, 8)
     341            sprintf(antS,"%c",antD);
     342            if (jj<1) {
     343              strcpy(antC,antS);
     344            } else {
     345              strcat(antC,antS);
     346            }
     347          }
     348          handle->antType[handle->antSize] = antC;
     349          if(handle->antSize < 100) {handle->antSize += 1;}
     350        }
     351        ret = 1007;
     352      }
     353      break;
     354    case 1008:
     355      {
     356        char *antC = '\0'; /* Antenna Descriptor */
     357        char *antS = '\0';
     358        antC = (char*) malloc(32);   
     359        antS  = (char*) malloc(32);   
     360        uint32_t antN;
     361        uint32_t antD;
     362        uint32_t jj;
     363
     364        SKIPBITS(12)
     365        GETBITS(antN, 8)
     366        if ((antN>0) && (antN<32)) {
     367          for (jj = 0; jj < antN; jj++) {
     368            GETBITS(antD, 8)
     369            sprintf(antS,"%c",antD);
     370            if (jj<1) {
     371              strcpy(antC,antS);
     372            } else {
     373              strcat(antC,antS);
     374            }
     375          }
     376          handle->antType[handle->antSize] = antC;
     377          if(handle->antSize < 100) {handle->antSize += 1;}
     378        }
     379        ret = 1008;
    305380      }
    306381      break;
     
    16391714
    16401715#ifndef NO_RTCM3_MAIN
    1641 static char datestr[]     = "$Date: 2008/09/02 14:14:33 $";
     1716static char datestr[]     = "$Date: 2008/09/22 09:39:49 $";
    16421717
    16431718/* The string, which is send as agent in HTTP request */
  • trunk/BNC/bncabout.html

    r1040 r1184  
    2121The Bundesamt fuer Geodaesie und Kartographie (BKG) may not be held liable for damages of any kind, direct or consequential, which may result from the use of this software.<br>
    2222<br>
    23 BKG, Frankfurt, Germany, September 2008<br>
     23BKG, Frankfurt, Germany, November 2008<br>
    2424E-Mail: <a><u>euref-ip@bkg.bund.de</u></a>.<br>
    2525</p>
  • trunk/BNC/bncgetthread.cpp

    r1168 r1184  
    737737            bool dump = true;
    738738
    739             RTCM2Decoder* decoder2 = dynamic_cast<RTCM2Decoder*>(_decoder);
    740             if ( decoder2 && !_rnx_set_position ) {
     739     RTCM2Decoder* decoder2 = dynamic_cast<RTCM2Decoder*>(_decoder);
     740     if ( decoder2 && !_rnx_set_position ) {
    741741              double stax, stay, staz;
    742742              double dL1[3], dL2[3];
     
    796796        if ( _checkMountPoint == _staID || _checkMountPoint == "ALL" ) {
    797797
    798           // RTCM message types
    799           // ------------------
     798          // RTCMv3 message types
     799          // --------------------
    800800          if (0<_decoder->_typeList.size()) {
    801801            QString type;
     
    807807          _decoder->_typeList.clear();
    808808
    809           // Antenna XYZ & H
    810           // ---------------
    811           if (0<_decoder->_antList.size()) {
     809          // RTCMv3 antenna descriptor
     810          // -------------------------
     811          if (0<_decoder->_antType.size()) {
     812            QString ant1;
     813            for (int ii=0;ii<_decoder->_antType.size();ii++) {
     814              ant1 =  QString("%1 ").arg(_decoder->_antType[ii]);
     815              emit(newMessage(_staID + ": Antenna descriptor " + ant1.toAscii() ));
     816            }
     817          }
     818          _decoder->_antType.clear();
     819
     820          // RTCMv3 antenna XYZ
     821          // ------------------
     822          if (0<_decoder->_antList5.size()) {
     823            QString ant1,ant2,ant3;
     824            for (int ii=0;ii<_decoder->_antList5.size();ii+=3) {
     825              ant1 =  QString("%1 ").arg(_decoder->_antList5[ii+0]*0.0001,0,'f',4);
     826              ant2 =  QString("%1 ").arg(_decoder->_antList5[ii+1]*0.0001,0,'f',4);
     827              ant3 =  QString("%1 ").arg(_decoder->_antList5[ii+2]*0.0001,0,'f',4);
     828              emit(newMessage(_staID + ": ARP (ITRF) X " + ant1.toAscii() + "m" ));
     829              emit(newMessage(_staID + ": ARP (ITRF) Y " + ant2.toAscii() + "m"));
     830              emit(newMessage(_staID + ": ARP (ITRF) Z " + ant3.toAscii() + "m"));
     831            }
     832          }
     833          _decoder->_antList5.clear();
     834
     835          // RTCMv3 antenna XYZ-H
     836          // --------------------
     837          if (0<_decoder->_antList6.size()) {
    812838            QString ant1,ant2,ant3,ant4;
    813             for (int ii=0;ii<_decoder->_antList.size();ii+=4) {
    814               ant1 =  QString("%1 ").arg(_decoder->_antList[ii+0]*0.0001,0,'f',4);
    815               ant2 =  QString("%1 ").arg(_decoder->_antList[ii+1]*0.0001,0,'f',4);
    816               ant3 =  QString("%1 ").arg(_decoder->_antList[ii+2]*0.0001,0,'f',4);
    817               ant4 =  QString("%1 ").arg(_decoder->_antList[ii+3]*0.0001,0,'f',4);
     839            for (int ii=0;ii<_decoder->_antList6.size();ii+=4) {
     840              ant1 =  QString("%1 ").arg(_decoder->_antList6[ii+0]*0.0001,0,'f',4);
     841              ant2 =  QString("%1 ").arg(_decoder->_antList6[ii+1]*0.0001,0,'f',4);
     842              ant3 =  QString("%1 ").arg(_decoder->_antList6[ii+2]*0.0001,0,'f',4);
     843              ant4 =  QString("%1 ").arg(_decoder->_antList6[ii+3]*0.0001,0,'f',4);
    818844              emit(newMessage(_staID + ": ARP (ITRF) X " + ant1.toAscii() + "m" ));
    819845              emit(newMessage(_staID + ": ARP (ITRF) Y " + ant2.toAscii() + "m"));
     
    822848            }
    823849          }
    824           _decoder->_antList.clear();
     850          _decoder->_antList6.clear();
    825851        }
    826852      }
  • trunk/BNC/bnchelp.html

    r1165 r1184  
    7171&nbsp; &nbsp; &nbsp; 3.4.1. <a href=#genlog>Logfile</a><br>
    7272&nbsp; &nbsp; &nbsp; 3.4.2. <a href=#genapp>Append Files</a><br>
     73&nbsp; &nbsp; &nbsp; 3.4.3. <a href=#reconf>Reread Configuration</a><br>
    73743.5. <a href=#rinex>RINEX - Observations</a><br>
    7475&nbsp; &nbsp; &nbsp; 3.5.1. <a href=#rnxname>File Names</a><br>
     
    165166</p>
    166167<p><a name="general"><h4>3.4. General</h4></p>
     168<p>
     169The following defines general settings for BNC's logfile, file handling and re-configuration on-the-fly.
     170</p>
    167171
    168172<p><a name="genlog"><h4>3.4.1 Logfile - optional</h4></p>
     
    171175</p>
    172176
    173 <p><a name="genapp"><h4>3.4.2 Append Files</h4></p>
     177<p><a name="genapp"><h4>3.4.2 Append Files - optional</h4></p>
    174178<p>
    175179When BNC is started, new files are created by default and any existing files with the same name will be overwritten. However, users might want to append existing files following a restart of BNC, a system crash or when BNC crashed. Tick 'Append files' to continue with existing files and keep what has been recorded so far. Note that option 'Append files' affects all types of files created by BNC.
     180</p>
     181
     182<p><a name="reconf"><h4>3.4.3 Reread Configuration - mandatory</h4></p>
     183<p>
     184When operating BNC in online mode, some configuration parameters can be changed on-the-fly without interrupting the running process. For that BNC rereads parts of its configuration (see section 'Config File') in pre-defined intervals. Configuration parameters that can be changed on-the-fly are
     185</p>
     186<p>
     187<ul>
     188<li>'mountPoints' to change the selection of streams to be processed, see section 'Mountpoints',</li>
     189<li>'waitTime' to change the 'Wait for full epoch' parameter, see section 'Synchronized Observations', and</li>
     190<li>'binSample' to change the 'Sampling' parameter, see section 'Synchronized Observations'.</li>
     191</ul>
     192</p>
     193<p>
     194Select '1 min', '1 hour', or '1 day' to let BNC reread the above mentioned configuration parameters every full minute, hour, or day and thus avoid usage of 'Start', 'Stop', or 'Quit' buttons.
    176195</p>
    177196
     
    675694<p>
    676695Command line options are available to run BNC in 'no window' mode or let it read data from a file in 'offline' mode.
    677 BNC will then use processing options from the configuration file ${HOME}/.config/BKG/BNC_NTRIP_Client.conf (Unix/Linux, see Config File example in the Annex) or from the register BKG_NTRIP_Client (Windows). Note that the self-explaining contents of the configuration file or the Windows register can easily be edited.
     696BNC will then use processing options from the configuration file ${HOME}/.config/BKG/BNC_NTRIP_Client.conf (Unix/Linux, see 'Config File' example in the Annex) or from the register BKG_NTRIP_Client (Windows). Note that the self-explaining contents of the configuration file or the Windows register can easily be edited.
    678697</p>
    679698
     
    790809<tr><td>Jul 2007 &nbsp;</td><td>Version 1.4 &nbsp;</td><td>[Bug] Skip messages from proxy server<br> [Bug] Call RINEX script through 'nohup'</td></tr>
    791810<tr><td>Apr 2008 &nbsp;</td><td>Version 1.5 &nbsp;</td><td>[Add] Handle ephemeris from RTCM Version 3.x streams<br> [Add] Upgrade to Qt Version 4.3.2<br> [Add] Optional RINEX v3 output<br> [Add] SBAS support<br> [Bug] RINEX skeleton download following stream outage<br> [Add] Handle ephemeris from RTIGS streams<br> [Add] Monitor stream failure/recovery and latency<br> [Mod] Redesign of main window<br> [Bug] Freezing of About window on Mac systems<br> [Bug] Fixed problem with PRN 32 in RTCMv2 decoder<br> [Bug] Fix for Trimble 4000SSI receivers in RTCMv2 decoder<br> [Mod] Major revision of input buffer in RTCMv2 decoder</td></tr>
    792 <tr><td>Oct 2008 &nbsp;</td><td>Version 1.6 &nbsp;</td><td>[Mod] Fill blanc columns in RINEXv3 with 0.000<br> [Add] RTCMv3 decoder for clock and orbit corrections<br>[Add] Check RTCMv3 streams for incoming message types<br> [Add] Decode RTCMv2 message types 3, 20, 21, and 22<br> [Add] Loss of lock and lock time indicator in RINEX output<br> [Bug] Rounding error in RTCMv3 decoder concern. GLONASS height<br> [Mod] Accept GLONASS in RTCMv3 when transmitted first<br> [Add] Leap second 1 January 2009<br> [Add] Read data from file, offline mode</td></tr>
     811<tr><td>Nov 2008 &nbsp;</td><td>Version 1.6 &nbsp;</td><td>[Mod] Fill blanc columns in RINEXv3 with 0.000<br> [Add] RTCMv3 decoder for clock and orbit corrections<br>[Add] Check RTCMv3 streams for incoming message types<br> [Add] Decode RTCMv2 message types 3, 20, 21, and 22<br> [Add] Loss of lock and lock time indicator in RINEX output<br> [Bug] Rounding error in RTCMv3 decoder concern. GLONASS height<br> [Mod] Accept GLONASS in RTCMv3 when transmitted first<br> [Add] Leap second 1 January 2009<br> [Add] Read data from file, offline mode</td></tr>
    793812</table>
    794813</p>
     
    9831002casterPort=80
    9841003casterUser=user
     1004corrIntr=1 day
     1005corrPath=
     1006corrPort=
     1007corrTime=5
    9851008ephIntr=1 day
    9861009ephPath=/home/user/rinex
     
    9901013mountPoints=//user:pass@www.euref-ip.net:2101/ACOR0 RTCM_2.3 43.36 351.60 no, //user:pass@www.igs-ip.net:2101/FFMJ3 RTCM_3.0 41.58 1.40 no
    9911014obsRate=
     1015onTheFlyInterval=1 day
    9921016outEphPort=2102
    9931017outFile=/home/user/ascii
     
    9981022rnxAppend=2
    9991023rnxIntr=15 min
    1000 rnxPath=/home/weber/rinex
     1024rnxPath=/home/user/rinex
    10011025rnxSampl=0
    1002 rnxScript=/home/weber/up2archive
     1026rnxScript=/home/user/up2archive
    10031027rnxSkel=SKL
    10041028rnxV3=2
     
    10061030</pre>
    10071031</p>
     1032<p>
     1033Note that on Windows systems configuration parameters are saved in register BKG_NTRIP_Client.
     1034<p>
    10081035
    10091036<p><a name="links"><h3>8.5 Links</h3></p>
  • trunk/BNC/bncwindow.cpp

    r1181 r1184  
    273273  _rnxSkelLineEdit->setWhatsThis(tr("<p>Whenever BNC starts generating RINEX Observation files (and then once every day at midnight), it first tries to retrieve information needed for RINEX headers from so-called public RINEX header skeleton files which are derived from sitelogs. However, sometimes public RINEX header skeleton files are not available, its contents is not up to date, or you need to put additional/optional records in the RINEX header.</p><p>For that BNC allows using personal skeleton files that contain the header records you would like to include. You can derive a personal RINEX header skeleton file from the information given in an up to date sitelog. A file in the RINEX 'Directory' with the RINEX 'Skeleton extension' is interpreted by BNC as a personal RINEX header skeleton file for the corresponding stream.</p>"));
    274274  _rnxAppendCheckBox->setWhatsThis(tr("<p>When BNC is started, new files are created by default and any existing files with the same name will be overwritten. However, users might want to append already existing files following a restart of BNC, a system crash or when BNC crashed. Tick 'Append files' to continue with existing files and keep what has been recorded so far.</p>"));
     275  _onTheFlyComboBox->setWhatsThis(tr("<p>When operating BNC in online mode, some configuration parameters can be changed on-the-fly without interrupting the running process. For that BNC rereads parts of its configuration in pre-defined intervals.<p></p>Select '1 min', '1 hour', or '1 day' to let BNC reread its configuration every full minute, hour, or day and thus avoid usage of 'Start', 'Stop', or 'Quit' buttons.</p>"));
    275276  _rnxIntrComboBox->setWhatsThis(tr("<p>Select the length of the RINEX Observation file.</p>"));
    276277  _ephIntrComboBox->setWhatsThis(tr("<p>Select the length of the RINEX Navigation file.</p>"));
     
    332333  gLayout->addWidget(new QLabel("Append files")    ,1,0 );
    333334  gLayout->addWidget(_rnxAppendCheckBox,     1,1  );
    334   gLayout->addWidget(new QLabel("Reread Configuration every")    ,2,0 );
     335  gLayout->addWidget(new QLabel("Reread configuration")    ,2,0 );
    335336  gLayout->addWidget(_onTheFlyComboBox,     2,1  );
    336   gLayout->addWidget(new QLabel("General settings for logfile and file handling."),3, 0, 1, 2, Qt::AlignLeft);
     337  gLayout->addWidget(new QLabel("General settings for logfile, file handling and re-configuration on-the-fly."),3, 0, 1, 2, Qt::AlignLeft);
    337338  gLayout->addWidget(new QLabel("    "),4,0);
    338339  gLayout->addWidget(new QLabel("    "),5,0);
Note: See TracChangeset for help on using the changeset viewer.