Index: /trunk/BNC/src/bncconst.h
===================================================================
--- /trunk/BNC/src/bncconst.h	(revision 6559)
+++ /trunk/BNC/src/bncconst.h	(revision 6560)
@@ -71,4 +71,26 @@
     return std::string();
   }
+  static enum type toInt(std::string s) {
+    if      (s == "G1") return G1;
+    else if (s == "G2") return G2;
+    else if (s == "G5") return G5;
+    else if (s == "R1") return R1;
+    else if (s == "R2") return R2;
+    else if (s == "E1") return E1;
+    else if (s == "E5") return E5;
+    else if (s == "E6") return E6;
+    else if (s == "E7") return E7;
+    else if (s == "E8") return E8;
+    else if (s == "J1") return J1;
+    else if (s == "J2") return J2;
+    else if (s == "J5") return J5;
+    else if (s == "J6") return J6;
+    else if (s == "S1") return S1;
+    else if (s == "S5") return S5;
+    else if (s == "C1") return C1;
+    else if (s == "C7") return C7;
+    else if (s == "C6") return C6;
+    return type();
+  }
 };
 
Index: /trunk/BNC/src/rinex/reqcanalyze.cpp
===================================================================
--- /trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 6559)
+++ /trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 6560)
@@ -360,62 +360,18 @@
       t_frequency::type fA = t_frequency::dummy;
       t_frequency::type fB = t_frequency::dummy;
-      if      (satObs._prn.system() == 'G') {
-        if      (frqObs->_rnxType2ch[0] == '1') {
-          fA = t_frequency::G1;
-          fB = t_frequency::G2;
-        }
-        else if (frqObs->_rnxType2ch[0] == '2') {
-          fA = t_frequency::G2;
-          fB = t_frequency::G1;
-        }
-      }
-      else if (satObs._prn.system() == 'R') {
-        if      (frqObs->_rnxType2ch[0] == '1') {
-          fA = t_frequency::R1;
-          fB = t_frequency::R2;
-        }
-        else if (frqObs->_rnxType2ch[0] == '2') {
-          fA = t_frequency::R2;
-          fB = t_frequency::R1;
-        }
-      }
-      else if (satObs._prn.system() == 'E') {
-        if      (frqObs->_rnxType2ch[0] == '1') {
-          fA = t_frequency::E1;
-          fB = t_frequency::E5;
-        }
-        else if (frqObs->_rnxType2ch[0] == '5') {
-          fA = t_frequency::E5;
-          fB = t_frequency::E1;
-        }
-      }
-      else if (satObs._prn.system() == 'J') {
-        if      (frqObs->_rnxType2ch[0] == '1') {
-          fA = t_frequency::J1;
-          fB = t_frequency::J2;
-        }
-        else if (frqObs->_rnxType2ch[0] == '2') {
-          fA = t_frequency::J2;
-          fB = t_frequency::J1;
-        }
-      }
-      else if (satObs._prn.system() == 'S') {
-        if      (frqObs->_rnxType2ch[0] == '1') {
-          fA = t_frequency::S1;
-          fB = t_frequency::S5;
-        }
-        else if (frqObs->_rnxType2ch[0] == '5') {
-          fA = t_frequency::S5;
-          fB = t_frequency::S1;
-        }
-      }
-      else if (satObs._prn.system() == 'C') {
-        if      (frqObs->_rnxType2ch[0] == '1') {
-          fA = t_frequency::C1;
-          fB = t_frequency::C7;
-        }
-        else if (frqObs->_rnxType2ch[0] == '7') {
-          fA = t_frequency::C7;
-          fB = t_frequency::C1;
+      char sys             = satObs._prn.system();
+      std::string frqType1, frqType2;
+      if (_signalTypes.find(sys) != _signalTypes.end()) {
+        frqType1.push_back(sys);
+        frqType1.push_back(_signalTypes[sys][0][0].toAscii());
+        frqType2.push_back(sys);
+        frqType2.push_back(_signalTypes[sys][1][0].toAscii());
+        if      (frqObs->_rnxType2ch[0] == frqType1[1]) {
+          fA = t_frequency::toInt(frqType1);
+          fB = t_frequency::toInt(frqType2);
+        }
+        else if (frqObs->_rnxType2ch[0] == frqType2[1]) {
+          fA = t_frequency::toInt(frqType2);
+          fB = t_frequency::toInt(frqType1);
         }
       }
