Index: trunk/BNC/bncapp.cpp
===================================================================
--- trunk/BNC/bncapp.cpp	(revision 515)
+++ trunk/BNC/bncapp.cpp	(revision 516)
@@ -58,4 +58,29 @@
 
   _bncVersion  = "BNC 1.4";
+  // Lists of Ephemeris
+  // ------------------
+  _ephFile     = 0;
+  _ephStream   = 0;
+  for (int ii = PRN_GPS_START; ii <= PRN_GPS_END; ii++) {
+    _gpsEph[ii-PRN_GPS_START] = 0;
+  }
+  for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {
+    _glonassEph[ii-PRN_GLONASS_START] = 0;
+  }
+
+  // Eph file
+  // --------
+  _ephFile   = 0;
+  _ephStream = 0;
+  QString ephFileName = "TEST.EPH";
+  ////  QString ephFileName = settings.value("ephFile").toString();
+  if ( !ephFileName.isEmpty() ) {
+    expandEnvVar(ephFileName);
+    _ephFile = new QFile(ephFileName);
+    _ephFile->open(QIODevice::WriteOnly);
+    _ephStream = new QTextStream();
+    _ephStream->setDevice(_ephFile);
+    printEphHeader();
+  }
 }
 
@@ -65,4 +90,12 @@
   delete _logStream;
   delete _logFile;
+  delete _ephStream;
+  delete _ephFile;
+  for (int ii = PRN_GPS_START; ii <= PRN_GPS_END; ii++) {
+    delete _gpsEph[ii-PRN_GPS_START];
+  }
+  for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {
+    delete _glonassEph[ii-PRN_GLONASS_START];
+  }
 }
 
@@ -104,6 +137,18 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncApp::slotNewGPSEph(gpsephemeris* gpseph) {
-  cout << "GPS: " << gpseph->satellite << endl;
-  delete gpseph;
+
+  QMutexLocker locker(&_mutex);
+
+  gpsephemeris** ee = &_gpsEph[gpseph->satellite-PRN_GPS_START];
+  if ( *ee == 0 || (*ee)->IODE != gpseph->IODE ) { 
+    cout << "new GPS: " << gpseph->satellite << endl;
+    delete *ee;
+    *ee = gpseph;
+    printGPSEph(gpseph);
+  }
+  else {
+    cout << "GPS: " << gpseph->satellite << endl;
+    delete gpseph;
+  }
 }
     
@@ -111,6 +156,26 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncApp::slotNewGlonassEph(glonassephemeris* glonasseph) {
+
+  QMutexLocker locker(&_mutex);
+
   cout << "GLONASS: " << glonasseph->almanac_number << endl;
   delete glonasseph;
 }
 
+// 
+////////////////////////////////////////////////////////////////////////////
+void bncApp::printEphHeader() {
+
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////
+void bncApp::printGPSEph(gpsephemeris* ep) {
+
+}
+
+// 
+////////////////////////////////////////////////////////////////////////////
+void bncApp::printGlonassEph(glonassephemeris* ep) {
+
+}
Index: trunk/BNC/bncapp.h
===================================================================
--- trunk/BNC/bncapp.h	(revision 515)
+++ trunk/BNC/bncapp.h	(revision 516)
@@ -44,9 +44,17 @@
     void slotNewGlonassEph(glonassephemeris* glonasseph);
   private:
-    QFile*       _logFile;
-    QTextStream* _logStream;
-    int          _logFileFlag;
-    QString      _bncVersion;
-    QMutex       _mutex;
+    void printEphHeader();
+    void printGPSEph(gpsephemeris* ep);
+    void printGlonassEph(glonassephemeris* ep);
+
+    QFile*            _logFile;
+    QTextStream*      _logStream;
+    int               _logFileFlag;
+    QString           _bncVersion;
+    QMutex            _mutex;
+    QFile*            _ephFile;
+    QTextStream*      _ephStream;
+    gpsephemeris*     _gpsEph[PRN_GPS_END - PRN_GPS_START + 1];
+    glonassephemeris* _glonassEph[PRN_GLONASS_END - PRN_GLONASS_START + 1];
 };
 #endif
