Index: trunk/BNC/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 1298)
+++ trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 1299)
@@ -309,9 +309,4 @@
     t_listMap::const_iterator ieph = _ephList.find(PRN);
 
-    if ( ieph == _ephList.end() ) {
-      errmsg.push_back("missing eph for " + PRN);
-      continue;
-    }
-
     double L1 = 0;
     double L2 = 0;
@@ -361,5 +356,8 @@
       }
 
-      eph = ieph->second->getEph(IODcorr);
+      // Select corresponding ephemerides
+      if ( ieph != _ephList.end() ) {
+	eph = ieph->second->getEph(IODcorr);
+      }
 
       if ( eph ) {
@@ -443,8 +441,8 @@
       _obsList.push_back( new_obs );
 
-      ///ostringstream hasIODstr;
-      ///copy(hasIOD.begin(), hasIOD.end(), ostream_iterator<string>(hasIODstr, "    "));
-      ///errmsg.push_back("decoded PRN " + PRN + " : " + hasIODstr.str());
-    }
-  }
-}
+      ////ostringstream hasIODstr;
+      ////copy(hasIOD.begin(), hasIOD.end(), ostream_iterator<string>(hasIODstr, "    "));
+      ////errmsg.push_back("decoded PRN " + PRN + " : " + hasIODstr.str());
+    }
+  }
+}
Index: trunk/BNC/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 1298)
+++ trunk/BNC/RTCM3/RTCM3Decoder.cpp	(revision 1299)
@@ -163,5 +163,5 @@
                     .arg(_numLat)
                     .arg(_numGaps);
-                    emit(newMessage(QString(_staID + late ).toAscii() ) );
+                    emit(newMessage(QString(_staID + late ).toAscii(), true) );
                   } else {
                   late = QString(": Mean latency %1 sec, min %2, max %3, rms %4, %5 epochs")
@@ -171,5 +171,5 @@
                     .arg(int((sqrt((_sumLatQ - _sumLat * _sumLat / _numLat)/_numLat))*100)/100.)
                     .arg(_numLat);
-                  emit(newMessage(QString(_staID + late ).toAscii() ) );
+                  emit(newMessage(QString(_staID + late ).toAscii(), true) );
                   }
                 }
@@ -269,5 +269,5 @@
             
             if (rr == 2) {
-              emit(newMessage( (_staID + ": No valid RINEX! All values are modulo 299792.458!").toAscii() ));
+              emit(newMessage( (_staID + ": No valid RINEX! All values are modulo 299792.458!").toAscii(), true));
             }
             
@@ -368,5 +368,5 @@
               .arg(ep->TOC,       6)
               .arg(ep->TOE,       6);
-            emit(newMessage(msg.toAscii()));
+            emit newMessage(msg.toAscii(), false);
 #endif
 
Index: trunk/BNC/RTCM3/RTCM3Decoder.h
===================================================================
--- trunk/BNC/RTCM3/RTCM3Decoder.h	(revision 1298)
+++ trunk/BNC/RTCM3/RTCM3Decoder.h	(revision 1299)
@@ -42,5 +42,5 @@
   virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg);
  signals:
-  void newMessage(QByteArray msg);
+  void newMessage(QByteArray msg,bool showOnScreen);
   void newGPSEph(gpsephemeris* gpseph);
   void newGlonassEph(glonassephemeris* glonasseph);
Index: trunk/BNC/bnc.pro
===================================================================
--- trunk/BNC/bnc.pro	(revision 1298)
+++ trunk/BNC/bnc.pro	(revision 1299)
@@ -5,6 +5,6 @@
 ###CONFIG += debug
 
-##DEFINES += NO_RTCM3_MAIN DEBUG_RTCM2_2021
 DEFINES += NO_RTCM3_MAIN 
+###DEFINES += DEBUG_RTCM2_2021
 
 RESOURCES += bnc.qrc
Index: trunk/BNC/bncapp.cpp
===================================================================
--- trunk/BNC/bncapp.cpp	(revision 1298)
+++ trunk/BNC/bncapp.cpp	(revision 1299)
@@ -147,10 +147,10 @@
 // Write a Program Message
 ////////////////////////////////////////////////////////////////////////////
-void bncApp::slotMessage(const QByteArray msg) {
+void bncApp::slotMessage(const QByteArray msg, bool showOnScreen) {
 
   QMutexLocker locker(&_mutexMessage);
 
   messagePrivate(msg);
-  emit newMessage(msg);
+  emit newMessage(msg, showOnScreen);
 }
 
@@ -573,5 +573,5 @@
     _server = new QTcpServer;
     if ( !_server->listen(QHostAddress::Any, _port) ) {
-      slotMessage("bncApp: cannot listen on ephemeris port");
+      slotMessage("bncApp: cannot listen on ephemeris port", true);
     }
     connect(_server, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
@@ -589,5 +589,5 @@
     _serverCorr = new QTcpServer;
     if ( !_serverCorr->listen(QHostAddress::Any, _portCorr) ) {
-      slotMessage("bncApp: cannot listen on correction port");
+      slotMessage("bncApp: cannot listen on correction port", true);
     }
     connect(_serverCorr, SIGNAL(newConnection()), this, SLOT(slotNewConnectionCorr()));
@@ -646,5 +646,5 @@
                     _lastDumpCoSec - coTime + _waitCoTime);
     messagePrivate(line.toAscii());
-    emit( newMessage(line.toAscii()) );
+    emit( newMessage(line.toAscii(), true) );
     return;
   }
Index: trunk/BNC/bncapp.h
===================================================================
--- trunk/BNC/bncapp.h	(revision 1298)
+++ trunk/BNC/bncapp.h	(revision 1299)
@@ -45,5 +45,5 @@
     void setWaitCoTime(int waitCoTime) {_waitCoTime = waitCoTime;}
   public slots:
-    void slotMessage(const QByteArray msg);
+    void slotMessage(const QByteArray msg, bool showOnScreen);
     void slotNewGPSEph(gpsephemeris* gpseph);
     void slotNewGlonassEph(glonassephemeris* glonasseph);
@@ -52,5 +52,5 @@
 
   signals:
-    void newMessage(QByteArray msg);
+    void newMessage(QByteArray msg, bool showOnScreen);
     void newEphGPS(gpsephemeris gpseph);
     void newEphGlonass(glonassephemeris glonasseph);
Index: trunk/BNC/bnccaster.cpp
===================================================================
--- trunk/BNC/bnccaster.cpp	(revision 1298)
+++ trunk/BNC/bnccaster.cpp	(revision 1299)
@@ -54,6 +54,6 @@
   QSettings settings;
 
-  connect(this, SIGNAL(newMessage(QByteArray)), 
-          (bncApp*) qApp, SLOT(slotMessage(const QByteArray)));
+  connect(this, SIGNAL(newMessage(QByteArray,bool)), 
+          (bncApp*) qApp, SLOT(slotMessage(const QByteArray,bool)));
 
   if ( !outFileName.isEmpty() ) {
@@ -80,5 +80,5 @@
     _server = new QTcpServer;
     if ( !_server->listen(QHostAddress::Any, _port) ) {
-      emit newMessage("bncCaster: cannot listen on sync port");
+      emit newMessage("bncCaster: cannot listen on sync port", true);
     }
     connect(_server, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
@@ -94,5 +94,5 @@
     _uServer = new QTcpServer;
     if ( !_uServer->listen(QHostAddress::Any, uPort) ) {
-      emit newMessage("bncCaster: cannot listen on usync port");
+      emit newMessage("bncCaster: cannot listen on usync port", true);
     }
     connect(_uServer, SIGNAL(newConnection()), this, SLOT(slotNewUConnection()));
@@ -196,5 +196,5 @@
            !settings.value("outPort").toString().isEmpty() ) { 
         emit( newMessage(QString("Station %1: old epoch %2 thrown away")
-                                   .arg(staID.data()).arg(iSec).toAscii()) );
+                                   .arg(staID.data()).arg(iSec).toAscii(), true) );
       }
     }
@@ -220,5 +220,5 @@
   _sockets->push_back( _server->nextPendingConnection() );
   emit( newMessage(QString("New Connection # %1")
-                   .arg(_sockets->size()).toAscii()) );
+                   .arg(_sockets->size()).toAscii(), true) );
 }
 
@@ -226,5 +226,5 @@
   _uSockets->push_back( _uServer->nextPendingConnection() );
   emit( newMessage(QString("New Connection (usync) # %1")
-                   .arg(_uSockets->size()).toAscii()) );
+                   .arg(_uSockets->size()).toAscii(), true) );
 }
 
@@ -253,7 +253,7 @@
   _staIDs.removeAll(staID);
   emit( newMessage(
-           QString("Mountpoint size %1").arg(_staIDs.size()).toAscii()) );
+           QString("Mountpoint size %1").arg(_staIDs.size()).toAscii(), true) );
   if (_staIDs.size() == 0) {
-    emit(newMessage("bncCaster:: last get thread terminated"));
+    emit(newMessage("bncCaster:: last get thread terminated", true));
     emit getThreadErrors();
   }
@@ -442,5 +442,5 @@
   emit mountPointsRead(_threads);
   emit( newMessage(QString("Configuration read: %1 stream(s)")
-                            .arg(_threads.count()).toAscii()) );
+                            .arg(_threads.count()).toAscii(), true) );
 
   // (Re-) Start the configuration timer
Index: trunk/BNC/bnccaster.h
===================================================================
--- trunk/BNC/bnccaster.h	(revision 1298)
+++ trunk/BNC/bnccaster.h	(revision 1299)
@@ -50,5 +50,5 @@
    void mountPointsRead(QList<bncGetThread*>);
    void getThreadErrors();   
-   void newMessage(QByteArray msg);
+   void newMessage(QByteArray msg, bool showOnScreen);
 
  private slots:
Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 1298)
+++ trunk/BNC/bncgetthread.cpp	(revision 1299)
@@ -111,6 +111,6 @@
       
   bncApp* app = (bncApp*) qApp;
-  app->connect(this, SIGNAL(newMessage(QByteArray)), 
-               app, SLOT(slotMessage(const QByteArray)));
+  app->connect(this, SIGNAL(newMessage(QByteArray,bool)), 
+               app, SLOT(slotMessage(const QByteArray,bool)));
 
   _decoder    = 0;
@@ -406,14 +406,14 @@
         emit(newMessage((_staID + ": Caster Response: " + line + 
                          "          Adjust User-ID and Password Register, see"
-                         "\n          " + reg).toAscii()));
+                         "\n          " + reg).toAscii(), true));
         return fatal;
       }
       if (line.indexOf("ICY 200 OK") != 0) {
-        emit(newMessage((_staID + ": Wrong Caster Response:\n" + line).toAscii()));
+        emit(newMessage((_staID + ": Wrong Caster Response:\n" + line).toAscii(), true));
         return failure;
       }
     }
     else {
-      emit(newMessage(_staID + ": Response Timeout"));
+      emit(newMessage(_staID + ": Response Timeout", true));
       return failure;
     }
@@ -424,23 +424,23 @@
   if (!_decoder) { 
     if      (_format.indexOf("RTCM_2") != -1) {
-      emit(newMessage("Get Data: " + _staID + " in RTCM 2.x format"));
+      emit(newMessage("Get Data: " + _staID + " in RTCM 2.x format", true));
       _decoder = new RTCM2Decoder(_staID.data());
     }
     else if (_format.indexOf("RTCM_3") != -1) {
-      emit(newMessage("Get Data: " + _staID + " in RTCM 3.x format"));
+      emit(newMessage("Get Data: " + _staID + " in RTCM 3.x format", true));
       _decoder = new RTCM3Decoder(_staID);
-      connect((RTCM3Decoder*) _decoder, SIGNAL(newMessage(QByteArray)), 
-              this, SIGNAL(newMessage(QByteArray)));
+      connect((RTCM3Decoder*) _decoder, SIGNAL(newMessage(QByteArray,bool)), 
+              this, SIGNAL(newMessage(QByteArray,bool)));
     }
     else if (_format.indexOf("RTIGS") != -1) {
-      emit(newMessage("Get Data: " + _staID + " in RTIGS format"));
+      emit(newMessage("Get Data: " + _staID + " in RTIGS format", true));
       _decoder = new RTIGSDecoder();
     }
     else if (_format.indexOf("ZERO") != -1) {
-      emit(newMessage("Get Data: " + _staID + " in original format"));
+      emit(newMessage("Get Data: " + _staID + " in original format", true));
       _decoder = new bncZeroDecoder(_staID);
     }
     else {
-      emit(newMessage(_staID + ": Unknown data format " + _format));
+      emit(newMessage(_staID + ": Unknown data format " + _format, true));
       if (_rawInpFile) {
         cerr << "Uknown data format" << endl;
@@ -491,5 +491,5 @@
   }
   else if (irc != success) {
-    emit(newMessage(_staID + ": initRun failed, reconnecting"));
+    emit(newMessage(_staID + ": initRun failed, reconnecting", true));
     tryReconnect();
   }
@@ -506,5 +506,5 @@
     try {
       if (_socket && _socket->state() != QAbstractSocket::ConnectedState) {
-        emit(newMessage(_staID + ": Socket not connected, reconnecting"));
+        emit(newMessage(_staID + ": Socket not connected, reconnecting", true));
         tryReconnect();
       }
@@ -553,5 +553,5 @@
 #ifdef DEBUG_RTCM2_2021
           for (unsigned ii = 0; ii < errmsg.size(); ii++) {
-            emit newMessage(_staID + ": " + errmsg[ii].c_str());
+            emit newMessage(_staID + ": " + errmsg[ii].c_str(), false);
           }
 #endif
@@ -574,5 +574,5 @@
 #ifdef DEBUG_RTCM2_2021
               for (unsigned ii = 0; ii < errmsg.size(); ii++) {
-                emit newMessage(_staID + ": " + errmsg[ii].c_str());
+                emit newMessage(_staID + ": " + errmsg[ii].c_str(), false);
               }
 #endif
@@ -619,5 +619,6 @@
                 _endDateCor = QDateTime::currentDateTime().addSecs(- _adviseReco * 60).toUTC().date().toString("yy-MM-dd");
                 _endTimeCor = QDateTime::currentDateTime().addSecs(- _adviseReco * 60).toUTC().time().toString("hh:mm:ss");
-                emit(newMessage((_staID + ": Recovery threshold exceeded, corruption ended " + _endDateCor + " " + _endTimeCor).toAscii()));
+                emit(newMessage((_staID + ": Recovery threshold exceeded, corruption ended " 
+                                + _endDateCor + " " + _endTimeCor).toAscii(), true));
                 callScript(("End_Corrupted " + _endDateCor + " " + _endTimeCor + " Begin was " + _begDateCor + " " + _begTimeCor).toAscii());
                 endCorrupt = true;
@@ -632,5 +633,6 @@
                   _begDateCor = _decodeSucc.toUTC().date().toString("yy-MM-dd");
                   _begTimeCor = _decodeSucc.toUTC().time().toString("hh:mm:ss");
-                  emit(newMessage((_staID + ": Failure threshold exceeded, corrupted since " + _begDateCor + " " + _begTimeCor).toAscii()));
+                  emit(newMessage((_staID + ": Failure threshold exceeded, corrupted since " 
+                                  + _begDateCor + " " + _begTimeCor).toAscii(), true));
                   callScript(("Begin_Corrupted " + _begDateCor + " " + _begTimeCor).toAscii());
                   begCorrupt = true;
@@ -653,5 +655,6 @@
             _endDateOut = QDateTime::currentDateTime().addSecs(- _adviseReco * 60).toUTC().date().toString("yy-MM-dd");
             _endTimeOut = QDateTime::currentDateTime().addSecs(- _adviseReco * 60).toUTC().time().toString("hh:mm:ss");
-            emit(newMessage((_staID + ": Recovery threshold exceeded, outage ended " + _endDateOut + " " + _endTimeOut).toAscii()));
+            emit(newMessage((_staID + ": Recovery threshold exceeded, outage ended " 
+                            + _endDateOut + " " + _endTimeOut).toAscii(), true));
             callScript(("End_Outage " + _endDateOut + " " + _endTimeOut + " Begin was " + _begDateOut + " " + _begTimeOut).toAscii());
           }
@@ -671,5 +674,5 @@
             for (int ii=0;ii<_decoder->_typeList.size();ii++) {
               type =  QString("%1 ").arg(_decoder->_typeList[ii]);
-              emit(newMessage(_staID + ": Received message type " + type.toAscii() ));
+              emit(newMessage(_staID + ": Received message type " + type.toAscii(), true));
             }
           }
@@ -681,5 +684,5 @@
             for (int ii=0;ii<_decoder->_antType.size();ii++) {
               ant1 =  QString("%1 ").arg(_decoder->_antType[ii]);
-              emit(newMessage(_staID + ": Antenna descriptor " + ant1.toAscii() ));
+              emit(newMessage(_staID + ": Antenna descriptor " + ant1.toAscii(), true));
             }
           }
@@ -697,10 +700,10 @@
 	      case GPSDecoder::t_antInfo::APC: antT = "APC"; break;
 	      }
-              emit(newMessage(_staID + ": " + antT + " (ITRF) X " + ant1 + "m"));
-              emit(newMessage(_staID + ": " + antT + " (ITRF) Y " + ant2 + "m"));
-              emit(newMessage(_staID + ": " + antT + " (ITRF) Z " + ant3 + "m"));
+              emit(newMessage(_staID + ": " + antT + " (ITRF) X " + ant1 + "m", true));
+              emit(newMessage(_staID + ": " + antT + " (ITRF) Y " + ant2 + "m", true));
+              emit(newMessage(_staID + ": " + antT + " (ITRF) Z " + ant3 + "m", true));
 	      if (_decoder->_antList[ii].height_f) {
 		QByteArray ant4 = QString("%1 ").arg(_decoder->_antList[ii].height,0,'f',4).toAscii();
-		emit(newMessage(_staID + ": Antenna height above marker "  + ant4 + "m"));
+		emit(newMessage(_staID + ": Antenna height above marker "  + ant4 + "m", true));
 	      }
 	      emit(newAntCrd(_staID, 
@@ -752,5 +755,5 @@
             if (week != obs->_o.GPSWeek || dt > maxDt) {
               if  (!wrongEpoch) {
-                emit( newMessage(_staID + ": Wrong observation epoch(s)") );
+                emit( newMessage(_staID + ": Wrong observation epoch(s)", true) );
                 wrongEpoch = true;
               }
@@ -777,5 +780,5 @@
                           .arg(numLat)
                           .arg(numGaps)
-                          .toAscii()) );
+                          .toAscii(), true) );
                       } else {
                         emit( newMessage(QString("%1: Mean latency %2 sec, min %3, max %4, rms %5, %6 epochs")
@@ -786,5 +789,5 @@
                           .arg(int((sqrt((sumLatQ - sumLat * sumLat / numLat)/numLat))*100)/100.)
                           .arg(numLat)
-                          .toAscii()) );
+                          .toAscii(), true) );
                       }
                     }
@@ -882,10 +885,10 @@
       // ------------------
       else {
-        emit(newMessage(_staID + ": Data Timeout, reconnecting"));
+        emit(newMessage(_staID + ": Data Timeout, reconnecting", true));
         tryReconnect();
       }
     }
     catch (const char* msg) {
-      emit(newMessage(_staID + msg));
+      emit(newMessage(_staID + msg, true));
       tryReconnect();
     }
@@ -931,5 +934,6 @@
           _begDateOut = _decodeTime.toUTC().date().toString("yy-MM-dd");
           _begTimeOut = _decodeTime.toUTC().time().toString("hh:mm:ss");
-          emit(newMessage((_staID + ": Failure threshold exceeded, outage since " + _begDateOut + " " + _begTimeOut).toAscii()));
+          emit(newMessage((_staID + ": Failure threshold exceeded, outage since " 
+                          + _begDateOut + " " + _begTimeOut).toAscii(), true));
           callScript(("Begin_Outage " + _begDateOut + " " + _begTimeOut).toAscii());
         }
@@ -978,5 +982,5 @@
       }
       
-      emit(newMessage(msg.toAscii()));
+      emit(newMessage(msg.toAscii(), false));
 #endif
     }
Index: trunk/BNC/bncgetthread.h
===================================================================
--- trunk/BNC/bncgetthread.h	(revision 1298)
+++ trunk/BNC/bncgetthread.h	(revision 1299)
@@ -63,5 +63,5 @@
    void newAntCrd(QByteArray staID, double xx, double yy, double zz, QByteArray antType);
    void error(QByteArray staID);
-   void newMessage(QByteArray msg);
+   void newMessage(QByteArray msg, bool showOnScreen);
 
  public slots:
Index: trunk/BNC/bncmain.cpp
===================================================================
--- trunk/BNC/bncmain.cpp	(revision 1298)
+++ trunk/BNC/bncmain.cpp	(revision 1299)
@@ -180,5 +180,5 @@
     app.connect(caster, SIGNAL(getThreadErrors()), &app, SLOT(quit()));
   
-    ((bncApp*)qApp)->slotMessage("============ Start BNC ============");
+    ((bncApp*)qApp)->slotMessage("============ Start BNC ============", true);
 
     // Normal case - data from Internet
Index: trunk/BNC/bncwindow.cpp
===================================================================
--- trunk/BNC/bncwindow.cpp	(revision 1298)
+++ trunk/BNC/bncwindow.cpp	(revision 1299)
@@ -66,6 +66,6 @@
   setWindowTitle(tr("BKG Ntrip Client (BNC) Version 1.7"));
 
-  connect((bncApp*)qApp, SIGNAL(newMessage(QByteArray)), 
-           this, SLOT(slotWindowMessage(QByteArray)));
+  connect((bncApp*)qApp, SIGNAL(newMessage(QByteArray,bool)), 
+           this, SLOT(slotWindowMessage(QByteArray,bool)));
 
   // Create Actions
@@ -681,5 +681,5 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncWindow::slotGetThreadErrors() {
-  ((bncApp*)qApp)->slotMessage("All Get Threads Terminated");
+  ((bncApp*)qApp)->slotMessage("All Get Threads Terminated", true);
   if (!_actStop->isEnabled()) {
     _actGetData->setEnabled(true);
@@ -708,5 +708,5 @@
            this, SLOT(slotMountPointsRead(QList<bncGetThread*>)));
 
-  ((bncApp*)qApp)->slotMessage("============ Start BNC ============");
+  ((bncApp*)qApp)->slotMessage("============ Start BNC ============", true);
 
   _caster->slotReadMountPoints();
@@ -758,5 +758,5 @@
 // Display Program Messages 
 ////////////////////////////////////////////////////////////////////////////
-void bncWindow::slotWindowMessage(const QByteArray msg) {
+void bncWindow::slotWindowMessage(const QByteArray msg, bool showOnScreen) {
 
 #ifdef DEBUG_RTCM2_2021  
@@ -765,4 +765,8 @@
   const int maxBufferSize = 10000;
 #endif
+
+  if (! showOnScreen ) {
+    return;
+  }
  
   QString txt = _log->toPlainText() + "\n" + 
Index: trunk/BNC/bncwindow.h
===================================================================
--- trunk/BNC/bncwindow.h	(revision 1298)
+++ trunk/BNC/bncwindow.h	(revision 1299)
@@ -61,5 +61,5 @@
 
   private slots:
-    void slotWindowMessage(const QByteArray msg);
+    void slotWindowMessage(const QByteArray msg, bool showOnScreen);
     void slotHelp();
     void slotAbout();
