Index: /branches/BNC_2.12/ChangeLog.txt
===================================================================
--- /branches/BNC_2.12/ChangeLog.txt	(revision 8842)
+++ /branches/BNC_2.12/ChangeLog.txt	(revision 8843)
@@ -1,2 +1,9 @@
+--------------------------------------------------------------------------------
+ BNC VERSION 2.12.11 (08.11.2019)
+--------------------------------------------------------------------------------
+    CHANGED   (08.11.2019): Harmonization of RTCM3 Signal ID Mapping and
+                            RTCM SSR Signal and Tracking Mode Identifiers
+                            for BDS and QZSS
+
 --------------------------------------------------------------------------------
  BNC VERSION 2.12.10 (02.10.2019)
Index: /branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- /branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp	(revision 8842)
+++ /branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp	(revision 8843)
@@ -356,5 +356,5 @@
         {0.0, 0},
         {0.0, 0},
-        {GPS_WAVELENGTH_L1, "1Z"}, // not defined in RTCM3.3?
+        {0.0, 0},
         {0.0, 0},
         {0.0, 0},
@@ -421,9 +421,5 @@
     };
 
-/**
- * MSM signal types for IRNSS
- *
- * NOTE: Uses 0.0, 1.0 for wavelength as sat index dependence is done later!
- */
+/** MSM signal types for IRNSS */
 static struct CodeData irn[RTCM3_MSM_NUMSIG] = {
         {0.0, 0},
@@ -751,5 +747,5 @@
             case 'I':
               cd = irn[RTCM3_MSM_NUMSIG - j - 1];
-              break;              
+              break;
           }
           if (cd.code) {
@@ -1681,5 +1677,5 @@
             if (DecodeIRNSSEphemeris(_Message, _BlockSize))
               decoded = true;
-            break;            
+            break;
           case 1045:
           case 1046:
Index: /branches/BNC_2.12/src/RTCM3/RTCM3coDecoder.cpp
===================================================================
--- /branches/BNC_2.12/src/RTCM3/RTCM3coDecoder.cpp	(revision 8842)
+++ /branches/BNC_2.12/src/RTCM3/RTCM3coDecoder.cpp	(revision 8843)
@@ -687,18 +687,22 @@
       case CODETYPEGPS_L1_P:          return "1P";
       case CODETYPEGPS_L1_Z:          return "1W";
-      case CODETYPEGPS_L1_Y:          return "1Y";
-      case CODETYPEGPS_L1_M:          return "1M";
+      //case CODETYPEGPS_L1_Y:          return "1Y";
+      //case CODETYPEGPS_L1_M:          return "1M";
+      //case CODETYPEGPS_SEMI_CODELESS: return "2D";
       case CODETYPEGPS_L2_CA:         return "2C";
-      case CODETYPEGPS_SEMI_CODELESS: return "2D";
+      case CODETYPEGPS_L2_P:          return "2P";
+      case CODETYPEGPS_L2_Z:          return "2W";
+
       case CODETYPEGPS_L2C_M:         return "2S";
       case CODETYPEGPS_L2C_L:         return "2L";
       case CODETYPEGPS_L2C_ML:        return "2X";
-      case CODETYPEGPS_L2_P:          return "2P";
-      case CODETYPEGPS_L2_Z:          return "2W";
-      case CODETYPEGPS_L2_Y:          return "2Y";
-      case CODETYPEGPS_L2_M:          return "2M";
+
+      //case CODETYPEGPS_L2_Y:          return "2Y";
+      //case CODETYPEGPS_L2_M:          return "2M";
+
       case CODETYPEGPS_L5_I:          return "5I";
       case CODETYPEGPS_L5_Q:          return "5Q";
       case CODETYPEGPS_L5_IQ:         return "5X";
+
       case CODETYPEGPS_L1C_D:         return "1S";
       case CODETYPEGPS_L1C_P:         return "1L";
@@ -711,12 +715,16 @@
       case CODETYPEGLONASS_L1_CA:     return "1C";
       case CODETYPEGLONASS_L1_P:      return "1P";
+
       case CODETYPEGLONASS_L2_CA:     return "2C";
       case CODETYPEGLONASS_L2_P:      return "2P";
+
       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";
@@ -732,13 +740,17 @@
       case CODETYPEGALILEO_E1_BC:     return "1X";
       case CODETYPEGALILEO_E1_ABC:    return "1Z";
+
       case CODETYPEGALILEO_E5A_I:     return "5I";
       case CODETYPEGALILEO_E5A_Q:     return "5Q";
       case CODETYPEGALILEO_E5A_IQ:    return "5X";
+
       case CODETYPEGALILEO_E5B_I:     return "7I";
       case CODETYPEGALILEO_E5B_Q:     return "7Q";
       case CODETYPEGALILEO_E5B_IQ:    return "7X";
+
       case CODETYPEGALILEO_E5_I:      return "8I";
       case CODETYPEGALILEO_E5_Q:      return "8Q";
       case CODETYPEGALILEO_E5_IQ:     return "8X";
+
       case CODETYPEGALILEO_E6_A:      return "6A";
       case CODETYPEGALILEO_E6_B:      return "6B";
@@ -752,22 +764,20 @@
     switch (type) {
       case CODETYPEQZSS_L1_CA:         return "1C";
-      case CODETYPEQZSS_L1C_D:         return "1S";
-      case CODETYPEQZSS_L1C_P:         return "1L";
+
+      case CODETYPEQZSS_L6_D:          return "6S";
+      case CODETYPEQZSS_L6_P:          return "6L";
+      case CODETYPEQZSS_L6_DP:         return "6X";
+
       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_L1C_D:         return "1S";
+      case CODETYPEQZSS_L1C_P:         return "1L";
       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 "";
     }
@@ -776,4 +786,5 @@
     switch (type) {
       case CODETYPE_SBAS_L1_CA:       return "1C";
+
       case CODETYPE_SBAS_L5_I:        return "5I";
       case CODETYPE_SBAS_L5_Q:        return "5Q";
@@ -787,13 +798,17 @@
       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_B2a_D:        return "5D";
       case CODETYPE_BDS_B2a_P:        return "5P";
       case CODETYPE_BDS_B2a_DP:       return "5X";
+
       case CODETYPE_BDS_B1C_D:        return "1D";
       case CODETYPE_BDS_B1C_P:        return "1P";
Index: /branches/BNC_2.12/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h
===================================================================
--- /branches/BNC_2.12/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h	(revision 8842)
+++ /branches/BNC_2.12/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h	(revision 8843)
@@ -144,8 +144,8 @@
   CODETYPEGPS_L1_P           = 1,
   CODETYPEGPS_L1_Z           = 2,
-  CODETYPEGPS_L1_Y           = 3,
-  CODETYPEGPS_L1_M           = 4,
+  //CODETYPEGPS_L1_Y           = 3,
+  //CODETYPEGPS_L1_M           = 4,
   CODETYPEGPS_L2_CA          = 5,
-  CODETYPEGPS_SEMI_CODELESS  = 6,
+  //CODETYPEGPS_SEMI_CODELESS  = 6,
   CODETYPEGPS_L2C_M          = 7,
   CODETYPEGPS_L2C_L          = 8,
@@ -153,6 +153,6 @@
   CODETYPEGPS_L2_P           = 10,
   CODETYPEGPS_L2_Z           = 11,
-  CODETYPEGPS_L2_Y           = 12,
-  CODETYPEGPS_L2_M           = 13,
+  //CODETYPEGPS_L2_Y           = 12,
+  //CODETYPEGPS_L2_M           = 13,
   CODETYPEGPS_L5_I           = 14,
   CODETYPEGPS_L5_Q           = 15,
@@ -175,5 +175,4 @@
   CODETYPEGLONASS_L3_Q       = 11,
   CODETYPEGLONASS_L3_IQ      = 12,
-
 
   CODETYPEGALILEO_E1_A       = 0,
@@ -209,5 +208,5 @@
   CODETYPEQZSS_L6_P          = 10,
   CODETYPEQZSS_L6_DP         = 11,
-  CODETYPEQZSS_L1C_DP        = 12,
+  CODETYPEQZSS_L1C_DP        = 12,/*
   CODETYPEQZSS_L1_S          = 13,
   CODETYPEQZSS_L5_D          = 14,
@@ -215,5 +214,5 @@
   CODETYPEQZSS_L5_DP         = 16,
   CODETYPEQZSS_L6_E          = 17,
-  CODETYPEQZSS_L6_DE         = 18,
+  CODETYPEQZSS_L6_DE         = 18,*/
 
   CODETYPE_SBAS_L1_CA        = 0,
Index: /branches/BNC_2.12/src/bncversion.h
===================================================================
--- /branches/BNC_2.12/src/bncversion.h	(revision 8842)
+++ /branches/BNC_2.12/src/bncversion.h	(revision 8843)
@@ -3,5 +3,5 @@
 #define BNCVERSION_H
 
-#define BNCVERSION "2.12.10"
+#define BNCVERSION "2.12.11"
 #define BNCPGMNAME "BNC " BNCVERSION
 
Index: /branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- /branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp	(revision 8842)
+++ /branches/BNC_2.12/src/upload/bncrtnetuploadcaster.cpp	(revision 8843)
@@ -684,12 +684,4 @@
               biasSat->Biases[ii].Bias = it.value();
             }
-            else if (it.key() == "2D") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEGPS_SEMI_CODELESS;
-              biasSat->Biases[ii].Bias = it.value();
-            }
             else if (it.key() == "2S") {
               int ii = biasSat->NumberOfCodeBiases;
@@ -1054,4 +1046,12 @@
               biasSat->Biases[ii].Bias = it.value();
             }
+            else if (it.key() == "1X") {
+              int ii = biasSat->NumberOfCodeBiases;
+              if (ii >= CLOCKORBIT_NUMBIAS)
+                break;
+              biasSat->NumberOfCodeBiases += 1;
+              biasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP;
+              biasSat->Biases[ii].Bias = it.value();
+            }
             else if (it.key() == "2S") {
               int ii = biasSat->NumberOfCodeBiases;
@@ -1126,61 +1126,5 @@
               biasSat->Biases[ii].Bias = it.value();
             }
-            else if (it.key() == "1X") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-            else if (it.key() == "1Z") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L1_S;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-            else if (it.key() == "5D") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L5_D;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-            else if (it.key() == "5P") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L5_P;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-            else if (it.key() == "5Z") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L5_DP;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-            else if (it.key() == "6E") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L6_E;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-            else if (it.key() == "6Z") {
-              int ii = biasSat->NumberOfCodeBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              biasSat->NumberOfCodeBiases += 1;
-              biasSat->Biases[ii].Type = CODETYPEQZSS_L6_DE;
-              biasSat->Biases[ii].Bias = it.value();
-            }
-           }
+          }
         }
         else if (prn.system() == 'S') {
@@ -1445,15 +1389,4 @@
               phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
             }
-            else if (pbSig.type == "2D") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEGPS_SEMI_CODELESS;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
             else if (pbSig.type == "2S") {
               int ii = phasebiasSat->NumberOfPhaseBiases;
@@ -1979,4 +1912,15 @@
               phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
             }
+            else if (pbSig.type == "1X") {
+              int ii = phasebiasSat->NumberOfPhaseBiases;
+              if (ii >= CLOCKORBIT_NUMBIAS)
+                break;
+              phasebiasSat->NumberOfPhaseBiases += 1;
+              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP;
+              phasebiasSat->Biases[ii].Bias = pbSig.bias;
+              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
+              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
+              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
+            }
             else if (pbSig.type == "2S") {
               int ii = phasebiasSat->NumberOfPhaseBiases;
@@ -2072,81 +2016,4 @@
               phasebiasSat->NumberOfPhaseBiases += 1;
               phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_DP;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "1X") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "1Z") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1_S;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "5D") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_D;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "5P") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_P;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "5Z") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_DP;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "6E") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_E;
-              phasebiasSat->Biases[ii].Bias = pbSig.bias;
-              phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
-              phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
-              phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
-            }
-            else if (pbSig.type == "6Z") {
-              int ii = phasebiasSat->NumberOfPhaseBiases;
-              if (ii >= CLOCKORBIT_NUMBIAS)
-                break;
-              phasebiasSat->NumberOfPhaseBiases += 1;
-              phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_DE;
               phasebiasSat->Biases[ii].Bias = pbSig.bias;
               phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator;
