Index: trunk/BNC/src/bncconst.cpp
===================================================================
--- trunk/BNC/src/bncconst.cpp	(revision 8406)
+++ trunk/BNC/src/bncconst.cpp	(revision 8407)
@@ -35,7 +35,15 @@
 double t_CST::freq(t_frequency::type fType, int slotNum) {
   switch (fType) {
+  // GPS
   case t_frequency::G1:    return 1575420000.0;
   case t_frequency::G2:    return 1227600000.0;
   case t_frequency::G5:    return 1176450000.0;
+  // GLONASS
+  case t_frequency::R1:    return 1602000000.0 + 562500.0 * slotNum;
+  //case t_frequency::R1a:   return 1600995000.0;
+  case t_frequency::R2:    return 1246000000.0 + 437500.0 * slotNum;
+  //case t_frequency::R2a:   return 1248060000.0;
+  case t_frequency::R3:    return 1202025000.0;
+  // Galileo
   case t_frequency::E1:    return 1575420000.0;
   case t_frequency::E5:    return 1176450000.0;
@@ -43,17 +51,20 @@
   case t_frequency::E8:    return 1191795000.0;
   case t_frequency::E6:    return 1278750000.0;
-  case t_frequency::R1:    return 1602000000.0 + 562500.0 * slotNum;
-  case t_frequency::R2:    return 1246000000.0 + 437500.0 * slotNum;
+  // QZSS
   case t_frequency::J1:    return 1575420000.0;
   case t_frequency::J2:    return 1227600000.0;
   case t_frequency::J5:    return 1176450000.0;
   case t_frequency::J6:    return 1278750000.0;
+  // BDS
+  case t_frequency::C2:    return 1561098000.0;
+  case t_frequency::C1:    return 1575420000.0;
+  case t_frequency::C7:    return 1207140000.0;
+  case t_frequency::C6:    return 1268520000.0;
+  // irnss
+  case t_frequency::I5:    return 1176450000.0;
+  case t_frequency::I9:    return 2492028000.0;
+  // SBAS
   case t_frequency::S1:    return 1575420000.0;
   case t_frequency::S5:    return 1176450000.0;
-  case t_frequency::C2:    return 1561098000.0;
-  case t_frequency::C7:    return 1207140000.0;
-  case t_frequency::C6:    return 1268520000.0;
-  case t_frequency::I5:    return 1176450000.0;
-  case t_frequency::I9:    return 2492028000.0;
   case t_frequency::dummy:
   case t_frequency::max:   return 0.0;
Index: trunk/BNC/src/bncconst.h
===================================================================
--- trunk/BNC/src/bncconst.h	(revision 8406)
+++ trunk/BNC/src/bncconst.h	(revision 8407)
@@ -32,5 +32,16 @@
 class t_frequency {
  public:
-  enum type {dummy = 0, G1, G2, G5, R1, R2,
+  enum type {dummy = 0,
+                        // GPS
+                        G1,
+                        G2,
+                        G5,
+                        // GLONASS
+                        R1, // G1
+ //                       R1a,// G1a / 1600.995
+                        R2, // G2
+//                        R2a,// G1b / 1248.06
+                        R3, // G3  / 1202.025
+                        // Galileo
                         E1, // E1  / 1575.42
                         E5, // E5a / 1176.45
@@ -38,23 +49,35 @@
                         E8, // E5(E5a+E5b) / 1191.795
                         E6, // E6  / 1278.75
+                        // QZSS
                         J1, // 1575.42
                         J2, // 1227.60
                         J5, // 1176.45
-                        J6, // Lex(6) 1278.75
+                        J6, // 1278.75
+                        // BDS
+                        C2, // 1561.098
+                        C1, // 1575.42
+                        C5, // 1176.45
+                        C7, // 1207.14
+                        C6, // 1268.52
+                        // IRNSS
+                        I5, // 1176.45
+                        I9, // 2492.028
+                        // SBAS
                         S1, // 1575.42
                         S5, // 1176.45
-                        C2, // 1561.098
-                        C7, // 1207.14
-                        C6, // 1268.52
-                        I5, // 1176.45
-                        I9, // 2492.028
              max};
 
   static std::string toString(type tt) {
+    // GPS
     if      (tt == G1) return "G1";
     else if (tt == G2) return "G2";
     else if (tt == G5) return "G5";
+    // GLONASS
     else if (tt == R1) return "R1";
+//    else if (tt == R1a) return "R5";
     else if (tt == R2) return "R2";
+//    else if (tt == R2a) return "R7";
+    else if (tt == R3) return "R3";
+    // Galileo
     else if (tt == E1) return "E1";
     else if (tt == E5) return "E5";
@@ -62,23 +85,33 @@
     else if (tt == E7) return "E7";
     else if (tt == E8) return "E8";
+    // QZSS
     else if (tt == J1) return "J1";
     else if (tt == J2) return "J2";
     else if (tt == J5) return "J5";
     else if (tt == J6) return "J6";
+    // BDS
+    else if (tt == C2) return "C2";
+    else if (tt == C1) return "C1";
+    else if (tt == C5) return "C5";
+    else if (tt == C7) return "C7";
+    else if (tt == C6) return "C6";
+    // IRNSS
+    else if (tt == I5) return "I5";
+    else if (tt == I9) return "I9";
+    // SBAS
     else if (tt == S1) return "S1";
     else if (tt == S5) return "S5";
-    else if (tt == C2) return "C2";
-    else if (tt == C7) return "C7";
-    else if (tt == C6) return "C6";
-    else if (tt == I5) return "I5";
-    else if (tt == I9) return "I9";
     return std::string();
   }
   static enum type toInt(std::string s) {
+    // GPS
     if      (s == "G1") return G1;
     else if (s == "G2") return G2;
     else if (s == "G5") return G5;
+    // GLONASS
     else if (s == "R1") return R1;
     else if (s == "R2") return R2;
+    else if (s == "R3") return R3;
+    // Galileo
     else if (s == "E1") return E1;
     else if (s == "E5") return E5;
@@ -86,15 +119,21 @@
     else if (s == "E7") return E7;
     else if (s == "E8") return E8;
+    // QZSS
     else if (s == "J1") return J1;
     else if (s == "J2") return J2;
     else if (s == "J5") return J5;
     else if (s == "J6") return J6;
+    // BDS
+    else if (s == "C2") return C2;
+    else if (s == "C1") return C1;
+    else if (s == "C5") return C5;
+    else if (s == "C7") return C7;
+    else if (s == "C6") return C6;
+    // IRNSS
+    else if (s == "I5") return I5;
+    else if (s == "I9") return I9;
+    // SBAS
     else if (s == "S1") return S1;
     else if (s == "S5") return S5;
-    else if (s == "C2") return C2;
-    else if (s == "C7") return C7;
-    else if (s == "C6") return C6;
-    else if (s == "I5") return I5;
-    else if (s == "I9") return I9;
     return type();
   }
Index: trunk/BNC/src/rinex/rnxobsfile.cpp
===================================================================
--- trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 8406)
+++ trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 8407)
@@ -345,5 +345,6 @@
                    << "C1P" << "L1P" << "S1P"
                    << "C2C" << "L2C" << "S2C"
-                   << "C2P" << "L2P" << "S2P";
+                   << "C2P" << "L2P" << "S2P"
+                   << "C3I" << "L3I" << "S3I";
 
     _obsTypes['E'] << "C1X" << "L1X" << "S1X"
