Index: trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 9541)
+++ trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 9765)
@@ -1091,4 +1091,5 @@
     eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.type());
     eph._TOT = 0.9999e9;
+    eph._navType = t_eph::LNAV;
 
     emit newGPSEph(eph);
@@ -1216,4 +1217,6 @@
     _gloFrq = QString("%1 %2").arg(eph._prn.toString().c_str()).arg(eph._frequency_number, 2, 'f', 0);
 
+    eph._navType = t_eph::FDMA;
+
     emit newGlonassEph(eph);
     decoded = true;
@@ -1299,4 +1302,5 @@
     eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.type());
     eph._TOT = 0.9999e9;
+    eph._navType = t_eph::LNAV;
 
     emit newGPSEph(eph);
@@ -1390,4 +1394,5 @@
     SKIPBITS(2)
     eph._TOT = 0.9999e9;
+    eph._navType = t_eph::LNAV;
 
     emit newGPSEph(eph);
@@ -1445,4 +1450,5 @@
     eph._TOT = 0.9999E9;
     eph._health = 0;
+    eph._navType = t_eph::SBASL1;
 
     emit newSBASEph(eph);
@@ -1529,4 +1535,5 @@
         return false;
       }
+      eph._navType = t_eph::INAF;
     }
     else {
@@ -1540,4 +1547,5 @@
       GETBITS(eph._E5aHS, 2)
       GETBITS(eph._e5aDataInValid, 1)
+      eph._navType = t_eph::FNAV;
     }
     eph._TOT = 0.9999e9;
@@ -1562,4 +1570,5 @@
 bool RTCM3Decoder::DecodeBDSEphemeris(unsigned char* data, int size) {
   bool decoded = false;
+  const double iMaxGEO = 10.0 / 180.0 * M_PI;
 
   if (size == 70) {
@@ -1622,4 +1631,12 @@
 
     eph._TOT = 0.9999E9;
+    if (eph._i0 > iMaxGEO) {
+      eph._navType = t_eph::D1;
+    }
+    else {
+      eph._navType = t_eph::D2;
+    }
+
+
     emit newBDSEph(eph);
     decoded = true;
