Index: trunk/rtcm3torinex/lib/rtcm3torinex.c
===================================================================
--- trunk/rtcm3torinex/lib/rtcm3torinex.c	(revision 4383)
+++ trunk/rtcm3torinex/lib/rtcm3torinex.c	(revision 4417)
@@ -2,5 +2,5 @@
   Converter for RTCM3 data to RINEX.
   $Id$
-  Copyright (C) 2005-2008 by Dirk Stöcker <stoecker@alberding.eu>
+  Copyright (C) 2005-2012 by Dirk Stöcker <stoecker@alberding.eu>
 
   This software is a complete NTRIP-RTCM3 to RINEX converter as well as
Index: trunk/rtcm3torinex/lib/rtcm3torinex.h
===================================================================
--- trunk/rtcm3torinex/lib/rtcm3torinex.h	(revision 4383)
+++ trunk/rtcm3torinex/lib/rtcm3torinex.h	(revision 4417)
@@ -5,5 +5,5 @@
   Converter for RTCM3 data to RINEX.
   $Id$
-  Copyright (C) 2005-2006 by Dirk Stöcker <stoecker@alberding.eu>
+  Copyright (C) 2005-2012 by Dirk Stöcker <stoecker@alberding.eu>
 
   This program is free software; you can redistribute it and/or modify
@@ -66,13 +66,24 @@
 #define GNSSENTRY_SNR     3
 
-#define GNSSENTRY_C1DATA     ((0<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L1CDATA    ((0<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D1CDATA    ((0<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S1CDATA    ((0<<2)+GNSSENTRY_SNR)
-
-#define GNSSENTRY_C2DATA     ((1<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L2CDATA    ((1<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D2CDATA    ((1<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S2CDATA    ((1<<2)+GNSSENTRY_SNR)
+#define GNSSENTRY_TYPEC1    (0<<2)
+#define GNSSENTRY_TYPEC2    (1<<2)
+#define GNSSENTRY_TYPEP1    (2<<2)
+#define GNSSENTRY_TYPEP2    (3<<2)
+#define GNSSENTRY_TYPEC5    (4<<2)
+#define GNSSENTRY_TYPEC6    (5<<2)
+#define GNSSENTRY_TYPEC5B   (6<<2)
+#define GNSSENTRY_TYPEC5AB  (7<<2)
+#define GNSSENTRY_TYPECSAIF (8<<2)
+#define GNSSENTRY_TYPEC1N   (9<<2)
+
+#define GNSSENTRY_C1DATA     (GNSSENTRY_TYPEC1+GNSSENTRY_CODE)
+#define GNSSENTRY_L1CDATA    (GNSSENTRY_TYPEC1+GNSSENTRY_PHASE)
+#define GNSSENTRY_D1CDATA    (GNSSENTRY_TYPEC1+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S1CDATA    (GNSSENTRY_TYPEC1+GNSSENTRY_SNR)
+
+#define GNSSENTRY_C2DATA     (GNSSENTRY_TYPEC2+GNSSENTRY_CODE)
+#define GNSSENTRY_L2CDATA    (GNSSENTRY_TYPEC2+GNSSENTRY_PHASE)
+#define GNSSENTRY_D2CDATA    (GNSSENTRY_TYPEC2+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S2CDATA    (GNSSENTRY_TYPEC2+GNSSENTRY_SNR)
 
 #define GNSSENTRY_CB1DATA    GNSSENTRY_C2DATA
@@ -81,23 +92,23 @@
 #define GNSSENTRY_SB1DATA    GNSSENTRY_S2CDATA
 
-#define GNSSENTRY_P1DATA     ((2<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L1PDATA    ((2<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D1PDATA    ((2<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S1PDATA    ((2<<2)+GNSSENTRY_SNR)
-
-#define GNSSENTRY_P2DATA     ((3<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L2PDATA    ((3<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D2PDATA    ((3<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S2PDATA    ((3<<2)+GNSSENTRY_SNR)
-
-#define GNSSENTRY_C5DATA     ((4<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L5DATA     ((4<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D5DATA     ((4<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S5DATA     ((4<<2)+GNSSENTRY_SNR)
-
-#define GNSSENTRY_C6DATA     ((5<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L6DATA     ((5<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D6DATA     ((5<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S6DATA     ((5<<2)+GNSSENTRY_SNR)
+#define GNSSENTRY_P1DATA     (GNSSENTRY_TYPEP1+GNSSENTRY_CODE)
+#define GNSSENTRY_L1PDATA    (GNSSENTRY_TYPEP1+GNSSENTRY_PHASE)
+#define GNSSENTRY_D1PDATA    (GNSSENTRY_TYPEP1+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S1PDATA    (GNSSENTRY_TYPEP1+GNSSENTRY_SNR)
+
+#define GNSSENTRY_P2DATA     (GNSSENTRY_TYPEP2+GNSSENTRY_CODE)
+#define GNSSENTRY_L2PDATA    (GNSSENTRY_TYPEP2+GNSSENTRY_PHASE)
+#define GNSSENTRY_D2PDATA    (GNSSENTRY_TYPEP2+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S2PDATA    (GNSSENTRY_TYPEP2+GNSSENTRY_SNR)
+
+#define GNSSENTRY_C5DATA     (GNSSENTRY_TYPEC5+GNSSENTRY_CODE)
+#define GNSSENTRY_L5DATA     (GNSSENTRY_TYPEC5+GNSSENTRY_PHASE)
+#define GNSSENTRY_D5DATA     (GNSSENTRY_TYPEC5+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S5DATA     (GNSSENTRY_TYPEC5+GNSSENTRY_SNR)
+
+#define GNSSENTRY_C6DATA     (GNSSENTRY_TYPEC6+GNSSENTRY_CODE)
+#define GNSSENTRY_L6DATA     (GNSSENTRY_TYPEC6+GNSSENTRY_PHASE)
+#define GNSSENTRY_D6DATA     (GNSSENTRY_TYPEC6+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S6DATA     (GNSSENTRY_TYPEC6+GNSSENTRY_SNR)
 
 #define GNSSENTRY_CB3DATA    GNSSENTRY_C6DATA
@@ -111,8 +122,8 @@
 #define GNSSENTRY_SLEXDATA   GNSSENTRY_S6DATA
 
-#define GNSSENTRY_C5BDATA    ((6<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L5BDATA    ((6<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D5BDATA    ((6<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S5BDATA    ((6<<2)+GNSSENTRY_SNR)
+#define GNSSENTRY_C5BDATA    (GNSSENTRY_TYPEC5B+GNSSENTRY_CODE)
+#define GNSSENTRY_L5BDATA    (GNSSENTRY_TYPEC5B+GNSSENTRY_PHASE)
+#define GNSSENTRY_D5BDATA    (GNSSENTRY_TYPEC5B+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S5BDATA    (GNSSENTRY_TYPEC5B+GNSSENTRY_SNR)
 
 #define GNSSENTRY_CB2DATA    GNSSENTRY_C5BDATA
@@ -121,18 +132,18 @@
 #define GNSSENTRY_SB2DATA    GNSSENTRY_S5BDATA
 
-#define GNSSENTRY_C5ABDATA   ((7<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L5ABDATA   ((7<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D5ABDATA   ((7<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S5ABDATA   ((7<<2)+GNSSENTRY_SNR)
-
-#define GNSSENTRY_CSAIFDATA  ((8<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_LSAIFDATA  ((8<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_DSAIFDATA  ((8<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_SSAIFDATA  ((8<<2)+GNSSENTRY_SNR)
-
-#define GNSSENTRY_C1NDATA    ((9<<2)+GNSSENTRY_CODE)
-#define GNSSENTRY_L1NDATA    ((9<<2)+GNSSENTRY_PHASE)
-#define GNSSENTRY_D1NDATA    ((9<<2)+GNSSENTRY_DOPPLER)
-#define GNSSENTRY_S1NDATA    ((9<<2)+GNSSENTRY_SNR)
+#define GNSSENTRY_C5ABDATA   (GNSSENTRY_TYPEC5AB+GNSSENTRY_CODE)
+#define GNSSENTRY_L5ABDATA   (GNSSENTRY_TYPEC5AB+GNSSENTRY_PHASE)
+#define GNSSENTRY_D5ABDATA   (GNSSENTRY_TYPEC5AB+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S5ABDATA   (GNSSENTRY_TYPEC5AB+GNSSENTRY_SNR)
+
+#define GNSSENTRY_CSAIFDATA  (GNSSENTRY_TYPECSAIF+GNSSENTRY_CODE)
+#define GNSSENTRY_LSAIFDATA  (GNSSENTRY_TYPECSAIF+GNSSENTRY_PHASE)
+#define GNSSENTRY_DSAIFDATA  (GNSSENTRY_TYPECSAIF+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_SSAIFDATA  (GNSSENTRY_TYPECSAIF+GNSSENTRY_SNR)
+
+#define GNSSENTRY_C1NDATA    (GNSSENTRY_TYPEC1N+GNSSENTRY_CODE)
+#define GNSSENTRY_L1NDATA    (GNSSENTRY_TYPEC1N+GNSSENTRY_PHASE)
+#define GNSSENTRY_D1NDATA    (GNSSENTRY_TYPEC1N+GNSSENTRY_DOPPLER)
+#define GNSSENTRY_S1NDATA    (GNSSENTRY_TYPEC1N+GNSSENTRY_SNR)
 
 #define GNSSENTRY_NUMBER     40 /* number of types!!! */
Index: trunk/rtcm3torinex/lib/rtcm3torinexsupport.c
===================================================================
--- trunk/rtcm3torinex/lib/rtcm3torinexsupport.c	(revision 4417)
+++ trunk/rtcm3torinex/lib/rtcm3torinexsupport.c	(revision 4417)
@@ -0,0 +1,75 @@
+/*
+  Converter for RTCM3 data to RINEX.
+  $Id$
+  Copyright (C) 2005-2012 by Dirk Stöcker <stoecker@alberding.eu>
+
+  This software is a complete NTRIP-RTCM3 to RINEX converter as well as
+  a module of the BNC tool for multiformat conversion. Contact Dirk
+  Stöcker for suggestions and bug reports related to the RTCM3 to RINEX
+  conversion problems and the author of BNC for all the other problems.
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+  or read http://www.gnu.org/licenses/gpl.txt
+*/
+
+#include "rtcm3torinex.h"
+
+int rrinex3codetoentry(const char *code)
+{
+  int res = 0;
+  switch(code[0])
+  {
+  case 'C': res += GNSSENTRY_CODE; break;
+  case 'L': res += GNSSENTRY_PHASE; break;
+  case 'D': res += GNSSENTRY_DOPPLER; break;
+  case 'S': res += GNSSENTRY_SNR; break;
+  default:
+    return -1;
+  }
+  switch(code[1])
+  {
+  case '1':
+    switch(code[2])
+    {
+    default:
+    case 'C': res += GNSSENTRY_TYPEC1; break;
+    case 'P': case'W': case 'Y': res += GNSSENTRY_TYPEP1; break;
+    case 'A': case'B':
+    case 'S': case'L': case 'X': res += GNSSENTRY_TYPEC1N; break;
+    case 'Z': res += GNSSENTRY_TYPECSAIF; break;
+    }
+    break;
+  case '2':
+    switch(code[2])
+    {
+    default:
+    case 'P': case 'W': case 'Y': res += GNSSENTRY_TYPEP2; break;
+    case 'C': case 'S': case 'L': case 'X': res += GNSSENTRY_TYPEC2; break;
+    }
+    break;
+  case '5':
+    res += GNSSENTRY_TYPEC5;
+    break;
+  case '6':
+    res += GNSSENTRY_TYPEC6;
+    break;
+  case '7':
+    res += GNSSENTRY_TYPEC5B;
+    break;
+  case '8':
+    res += GNSSENTRY_TYPEC5AB;
+    break;
+  }
+}
