Index: trunk/BNC/RTCM/GPSDecoder.h
===================================================================
--- trunk/BNC/RTCM/GPSDecoder.h	(revision 2692)
+++ trunk/BNC/RTCM/GPSDecoder.h	(revision 2702)
@@ -35,36 +35,5 @@
 #include "bncconst.h"
 
-class t_obsInternal {
- public:
-
-  t_obsInternal() {
-    satSys      = 'G';
-    satNum      = 0;
-    slotNum     = 0;
-    GPSWeek     = 0;
-    GPSWeeks    = 0.0;
-
-    C1          = 0.0;
-    P1          = 0.0;
-    L1          = 0.0;
-    S1          = 0.0;
-
-    C2          = 0.0;
-    P2          = 0.0;
-    L2          = 0.0;
-    S2          = 0.0;
- 
-    C5          = 0.0;
-    L5          = 0.0;
-    S5          = 0.0;
-
-    slip_cnt_L1 = -1;
-    slip_cnt_L2 = -1;
-    slip_cnt_L5 = -1;
-    StatID[0]   = '\x0';
-  }
-
-  ~t_obsInternal() {}
-
+struct t_obsInternal {
   char   StatID[20+1]; // Station ID
   char   satSys;       // Satellite System ('G' or 'R')
@@ -76,14 +45,23 @@
   double C1;           // CA-code pseudorange (meters)
   double P1;           // P1-code pseudorange (meters)
-  double L1;           // L1 carrier phase (cycles)
-  double S1;           // raw L1 signal strength
+  double L1C;          // L1 carrier phase (cycles)
+  double D1C;          // Doppler L1
+  double S1C;          // raw L1 signal strength
+  double L1P;          // L1 carrier phase (cycles)
+  double D1P;          // Doppler L1
+  double S1P;          // raw L1 signal strength
 
   double C2;           // CA-code pseudorange (meters)
   double P2;           // P2-code pseudorange (meters)
-  double L2;           // L2 carrier phase (cycles)
-  double S2;           // raw L2 signal strength
+  double L2C;          // L2 carrier phase (cycles)
+  double D2C;          // Doppler L2
+  double S2C;          // raw L2 signal strength
+  double L2P;          // L2 carrier phase (cycles)
+  double D2P;          // Doppler L2
+  double S2P;          // raw L2 signal strength
 
   double C5;           // Pseudorange (meters)
   double L5;           // L5 carrier phase (cycles)
+  double D5;           // Doppler L5
   double S5;           // raw L5 signal strength
 
@@ -97,7 +75,40 @@
   enum t_obs_status {initial, posted, received};
   t_obs() {
-    _status = initial;
+    _status        = initial;
+    _o.satSys      = 'G';
+    _o.satNum      = 0;
+    _o.slotNum     = 0;
+    _o.GPSWeek     = 0;
+    _o.GPSWeeks    = 0.0;
+    _o.C1          = 0.0;
+    _o.P1          = 0.0;
+    _o.L1C         = 0.0;
+    _o.D1C         = 0.0;
+    _o.S1C         = 0.0;
+    _o.L1P         = 0.0;
+    _o.D1P         = 0.0;
+    _o.S1P         = 0.0;
+    _o.C2          = 0.0;
+    _o.P2          = 0.0;
+    _o.L2C         = 0.0;
+    _o.D2C         = 0.0;
+    _o.S2C         = 0.0;
+    _o.L2P         = 0.0;
+    _o.D2P         = 0.0;
+    _o.S2P         = 0.0;
+    _o.C5          = 0.0;
+    _o.L5          = 0.0;
+    _o.D5          = 0.0;
+    _o.S5          = 0.0;
+    _o.slip_cnt_L1 = -1;
+    _o.slip_cnt_L2 = -1;
+    _o.slip_cnt_L5 = -1;
+    _o.StatID[0]   = '\x0';
   }
   ~t_obs() {}
+  double L1() const {return (_o.L1P != 0.0 ? _o.L1P : _o.L1C);}
+  double L2() const {return (_o.L2P != 0.0 ? _o.L2P : _o.L2C);}
+  double S1() const {return (_o.L1P != 0.0 ? _o.S1P : _o.S1C);}
+  double S2() const {return (_o.L2P != 0.0 ? _o.S2P : _o.S2C);}
   t_obsInternal _o;
   t_obs_status  _status;
Index: trunk/BNC/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 2692)
+++ trunk/BNC/RTCM/RTCM2Decoder.cpp	(revision 2702)
@@ -155,6 +155,6 @@
           obs->_o.P1            = _ObsBlock.rng_P1[iSat];
           obs->_o.P2            = _ObsBlock.rng_P2[iSat];
-          obs->_o.L1            = _ObsBlock.resolvedPhase_L1(iSat);
-          obs->_o.L2            = _ObsBlock.resolvedPhase_L2(iSat);
+          obs->_o.L1P           = _ObsBlock.resolvedPhase_L1(iSat);
+          obs->_o.L2P           = _ObsBlock.resolvedPhase_L2(iSat);
 	  obs->_o.slip_cnt_L1   = _ObsBlock.slip_L1[iSat];
 	  obs->_o.slip_cnt_L2   = _ObsBlock.slip_L2[iSat];
@@ -394,9 +394,9 @@
 	switch (ii) {
 	case 0: // --- L1 ---
-	  new_obs->_o.L1 = *obsVal / LAMBDA_1;
+	  new_obs->_o.L1P = *obsVal / LAMBDA_1;
 	  new_obs->_o.slip_cnt_L1   = corr->lock1;
 	  break;
 	case 1: // --- L2 ---
-	  new_obs->_o.L2 = *obsVal / LAMBDA_2;
+	  new_obs->_o.L2P = *obsVal / LAMBDA_2;
 	  new_obs->_o.slip_cnt_L2   = corr->lock2;
 	  break;
