Index: trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 8624)
+++ trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp	(revision 8629)
@@ -713,15 +713,12 @@
       case CODETYPEGLONASS_L1_CA:     return "1C";
       case CODETYPEGLONASS_L1_P:      return "1P";
-
-      case CODETYPEGLONASS_L1a_OCd:   return "1A";
-      case CODETYPEGLONASS_L1a_OCp:   return "1B";
-      case CODETYPEGLONASS_L1a_OCdp:  return "1X";
-
       case CODETYPEGLONASS_L2_CA:     return "2C";
       case CODETYPEGLONASS_L2_P:      return "2P";
-      case CODETYPEGLONASS_L2a_CSI:   return "1A";
-      case CODETYPEGLONASS_L2a_OCp:   return "1B";
-      case CODETYPEGLONASS_L2a_CSIOCp:return "1X";
-
+      case CODETYPEGLONASS_L1a_OCd:   return "4A";
+      case CODETYPEGLONASS_L1a_OCp:   return "4B";
+      case CODETYPEGLONASS_L1a_OCdp:  return "4X";
+      case CODETYPEGLONASS_L2a_CSI:   return "6A";
+      case CODETYPEGLONASS_L2a_OCp:   return "6B";
+      case CODETYPEGLONASS_L2a_CSIOCp:return "6X";
       case CODETYPEGLONASS_L3_I:      return "3I";
       case CODETYPEGLONASS_L3_Q:      return "3Q";
@@ -763,19 +760,20 @@
       case CODETYPEQZSS_L1C_D:         return "1S";
       case CODETYPEQZSS_L1C_P:         return "1L";
-      case CODETYPEQZSS_L1C_DP:        return "1X";
-
       case CODETYPEQZSS_L2C_M:         return "2S";
       case CODETYPEQZSS_L2C_L:         return "2L";
       case CODETYPEQZSS_L2C_ML:        return "2X";
-
       case CODETYPEQZSS_L5_I:          return "5I";
       case CODETYPEQZSS_L5_Q:          return "5Q";
       case CODETYPEQZSS_L5_IQ:         return "5X";
-
       case CODETYPEQZSS_L6_D:          return "6S";
       case CODETYPEQZSS_L6_P:          return "6L";
       case CODETYPEQZSS_L6_DP:         return "6X";
-      case CODETYPEQZSS_L6E:           return "6E";
-
+      case CODETYPEQZSS_L1C_DP:        return "1X";
+      case CODETYPEQZSS_L1_S:          return "1Z";
+      case CODETYPEQZSS_L5_D:          return "5D";
+      case CODETYPEQZSS_L5_P:          return "5P";
+      case CODETYPEQZSS_L5_DP:         return "5Z";
+      case CODETYPEQZSS_L6_E:          return "6E";
+      case CODETYPEQZSS_L6_DE:         return "6Z";
       default: return "";
     }
@@ -796,12 +794,16 @@
       case CODETYPE_BDS_B1_Q:         return "2Q";
       case CODETYPE_BDS_B1_IQ:        return "2X";
-
+      case CODETYPE_BDS_B3_I:         return "6I";
+      case CODETYPE_BDS_B3_Q:         return "6Q";
+      case CODETYPE_BDS_B3_IQ:        return "6X";
       case CODETYPE_BDS_B2_I:         return "7I";
       case CODETYPE_BDS_B2_Q:         return "7Q";
       case CODETYPE_BDS_B2_IQ:        return "7X";
-
-      case CODETYPE_BDS_B3_I:         return "6I";
-      case CODETYPE_BDS_B3_Q:         return "6Q";
-      case CODETYPE_BDS_B3_IQ:        return "6X";
+      case CODETYPE_BDS_B1a_D:        return "1D";
+      case CODETYPE_BDS_B1a_P:        return "1P";
+      case CODETYPE_BDS_B1a_DP:       return "1X";
+      case CODETYPE_BDS_B2a_D:        return "2D";
+      case CODETYPE_BDS_B2a_P:        return "2P";
+      case CODETYPE_BDS_B2a_DP:       return "2X";
       default: return "";
     }
Index: trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h
===================================================================
--- trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h	(revision 8624)
+++ trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h	(revision 8629)
@@ -210,9 +210,9 @@
   CODETYPEQZSS_L6_DP         = 11,
   CODETYPEQZSS_L1C_DP        = 12,
-  CODETYPEQZSS_L1S           = 13,
+  CODETYPEQZSS_L1_S          = 13,
   CODETYPEQZSS_L5_D          = 14,
   CODETYPEQZSS_L5_P          = 15,
   CODETYPEQZSS_L5_DP         = 16,
-  CODETYPEQZSS_L6E           = 17,
+  CODETYPEQZSS_L6_E          = 17,
   CODETYPEQZSS_L6_DE         = 18,
 
Index: trunk/BNC/src/bncconst.cpp
===================================================================
--- trunk/BNC/src/bncconst.cpp	(revision 8624)
+++ trunk/BNC/src/bncconst.cpp	(revision 8629)
@@ -41,7 +41,7 @@
   // GLONASS
   case t_frequency::R1:    return 1602000000.0 + 562500.0 * slotNum;
-  //case t_frequency::R1a:   return 1600995000.0;
+  case t_frequency::R4:    return 1600995000.0;
   case t_frequency::R2:    return 1246000000.0 + 437500.0 * slotNum;
-  //case t_frequency::R2a:   return 1248060000.0;
+  case t_frequency::R6:    return 1248060000.0;
   case t_frequency::R3:    return 1202025000.0;
   // Galileo
@@ -51,4 +51,7 @@
   case t_frequency::E8:    return 1191795000.0;
   case t_frequency::E6:    return 1278750000.0;
+  // SBAS
+  case t_frequency::S1:    return 1575420000.0;
+  case t_frequency::S5:    return 1176450000.0;
   // QZSS
   case t_frequency::J1:    return 1575420000.0;
@@ -59,12 +62,12 @@
   case t_frequency::C2:    return 1561098000.0;
   case t_frequency::C1:    return 1575420000.0;
+  case t_frequency::C5:    return 1176450000.0;
   case t_frequency::C7:    return 1207140000.0;
+  case t_frequency::C8:    return 1191795000.0;
   case t_frequency::C6:    return 1268520000.0;
-  // irnss
+  // 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::dummy:
   case t_frequency::max:   return 0.0;
Index: trunk/BNC/src/bncconst.h
===================================================================
--- trunk/BNC/src/bncconst.h	(revision 8624)
+++ trunk/BNC/src/bncconst.h	(revision 8629)
@@ -34,12 +34,12 @@
   enum type {dummy = 0,
                         // GPS
-                        G1,
-                        G2,
-                        G5,
+                        G1, // L1 / 1575.42
+                        G2, // L2 / 1227.60
+                        G5, // L5 / 1176.45
                         // GLONASS
-                        R1, // G1
- //                       R1a,// G1a / 1600.995
-                        R2, // G2
-//                        R2a,// G1b / 1248.06
+                        R1, // G1  / 1602 + k * 9/16 (k = -7 .. +12)
+                        R4, // G1a / 1600.995
+                        R2, // G2  / 1246 + k * 7/16 (k = -7 .. +12)
+                        R6, // G1b / 1248.06
                         R3, // G3  / 1202.025
                         // Galileo
@@ -50,20 +50,21 @@
                         E6, // E6  / 1278.75
                         // QZSS
-                        J1, // 1575.42
-                        J2, // 1227.60
-                        J5, // 1176.45
-                        J6, // 1278.75
+                        J1, // L1 / 1575.42
+                        J2, // L2 / 1227.60
+                        J5, // L5 / 1176.45
+                        J6, // L6 / 1278.75
                         // BDS
-                        C2, // 1561.098
-                        C1, // 1575.42
-                        C5, // 1176.45
-                        C7, // 1207.14
-                        C6, // 1268.52
+                        C2, // B1-2 / 1561.098
+                        C1, // B1   / 1575.42 (BDS-3 signals)
+                        C5, // B2a  / 1176.45 (BDS-3 signals)
+                        C7, // B2b  / 1207.14 (BDS-2 signals)
+                        C8, // B2 (B2a + B2b) / 1191.795 (BDS-3 signals)
+                        C6, // B3   / 1268.52
                         // IRNSS
-                        I5, // 1176.45
-                        I9, // 2492.028
+                        I5, // L5 / 1176.45
+                        I9, // S  / 2492.028
                         // SBAS
-                        S1, // 1575.42
-                        S5, // 1176.45
+                        S1, // L1 / 1575.42
+                        S5, // L5 / 1176.45
              max};
 
@@ -75,7 +76,7 @@
     // GLONASS
     else if (tt == R1) return "R1";
-//    else if (tt == R1a) return "R5";
+    else if (tt == R4) return "R4";
     else if (tt == R2) return "R2";
-//    else if (tt == R2a) return "R7";
+    else if (tt == R6) return "R6";
     else if (tt == R3) return "R3";
     // Galileo
@@ -95,4 +96,5 @@
     else if (tt == C5) return "C5";
     else if (tt == C7) return "C7";
+    else if (tt == C8) return "C8";
     else if (tt == C6) return "C6";
     // IRNSS
@@ -129,4 +131,5 @@
     else if (s == "C5") return C5;
     else if (s == "C7") return C7;
+    else if (s == "C8") return C8;
     else if (s == "C6") return C6;
     // IRNSS
Index: trunk/BNC/src/rinex/rnxobsfile.cpp
===================================================================
--- trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 8624)
+++ trunk/BNC/src/rinex/rnxobsfile.cpp	(revision 8629)
@@ -334,11 +334,11 @@
 
     _obsTypes['J'] << "C1C" << "L1C"  << "S1C"
-                   << "C1S" << "L1S"  << "S1S"
-                   << "C1L" << "L1L"  << "S1L"
+                   << "C1Z" << "L1Z"  << "S1Z"
                    << "C1X" << "L1X"  << "S1X"
-                   << "C2S" << "L2S"  << "S2S"
                    << "C2L" << "L2L"  << "S2L"
                    << "C2X" << "L2X"  << "S2X"
-                   << "C5X" << "L5X"  << "S5X";
+                   << "C5Q" << "L5Q"  << "S5Q"
+                   << "C5X" << "L5X"  << "S5X"
+                   << "C6L" << "L6L"  << "S6L";
 
     _obsTypes['R'] << "C1C" << "L1C" << "S1C"
@@ -346,5 +346,7 @@
                    << "C2C" << "L2C" << "S2C"
                    << "C2P" << "L2P" << "S2P"
-                   << "C3I" << "L3I" << "S3I";
+                   << "C3I" << "L3I" << "S3I"
+                   << "C4X" << "L4X" << "S4X"
+                   << "C6X" << "L6X" << "S5X";
 
     _obsTypes['E'] << "C1X" << "L1X" << "S1X"
