ObservationType.java

  1. /* Copyright 2002-2018 CS Systèmes d'Information
  2.  * Licensed to CS Systèmes d'Information (CS) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * CS licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *   http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.orekit.gnss;

  18. import java.util.HashMap;
  19. import java.util.Map;

  20. /** Enumerate for all the Observation Types for Rinex 2 and 3.
  21.  * For Rinex 2, there is an two-character enumerate composed of the Observation
  22.  * Code (C,P,L,D,S) and the Frequency code (1,2,5,6,7,8).
  23.  * For Rinex 3 there is a three-character enumerate composed of the Observation
  24.  * Code (C,L,D,S), the frequency code (1,2,5,6,7,8) and a final attribute depending
  25.  * on the tracking mode or channel.
  26.  *
  27.  */
  28. public enum ObservationType {

  29.     /** Pseudorange GPS L1 / GLONASS G1 / Galileo E2-L1-E1 / SBAS L1 for Rinex2. */
  30.     C1(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.R01, Frequency.C01, Frequency.S01),

  31.     /** Pseudorange GPS L2 / GLONASS G2 for Rinex2. */
  32.     C2(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.R02),

  33.     /** Pseudorange GPS L5 / Galileo E5a / SBAS L5 for Rinex2. */
  34.     C5(MeasurementType.PSEUDO_RANGE, Frequency.G05, Frequency.E05, Frequency.S05),

  35.     /** Pseudorange Galileo E6 for Rinex2. */
  36.     C6(MeasurementType.PSEUDO_RANGE, Frequency.E06),

  37.     /** Pseudorange Galileo E5b for Rinex2. */
  38.     C7(MeasurementType.PSEUDO_RANGE, Frequency.E07),

  39.     /** Pseudorange Galileo E5a+b for Rinex2. */
  40.     C8(MeasurementType.PSEUDO_RANGE, Frequency.E08),

  41.     /** Pseudorange GPS L1 / GLONASS G1 for Rinex2. */
  42.     P1(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.R01),

  43.     /** Pseudorange GPS L2 / GLONASS G2 for Rinex2. */
  44.     P2(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.R02),

  45.     /** Carrier-phase GPS L1 / GLONASS G1 / Galileo E2-L1-E1 / SBAS L1 for Rinex2. */
  46.     L1(MeasurementType.CARRIER_PHASE, Frequency.G01, Frequency.R01, Frequency.C01, Frequency.S01),

  47.     /** Carrier-phase GPS L2 / GLONASS G2 for Rinex2. */
  48.     L2(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.R02),

  49.     /** Carrier-phase GPS L5 / Galileo E5a / SBAS L5 for Rinex2. */
  50.     L5(MeasurementType.CARRIER_PHASE, Frequency.G05, Frequency.E05, Frequency.S05),

  51.     /** Carrier-phase Galileo E6 for Rinex2. */
  52.     L6(MeasurementType.CARRIER_PHASE, Frequency.E06),

  53.     /** Carrier-phase Galileo E5b for Rinex2. */
  54.     L7(MeasurementType.CARRIER_PHASE, Frequency.E07),

  55.     /** Carrier-phase Galileo E5a+b for Rinex2. */
  56.     L8(MeasurementType.CARRIER_PHASE, Frequency.E08),

  57.     /** Doppler GPS L1 / GLONASS G1 / Galileo E2-L1-E1 / SBAS L1 for Rinex2. */
  58.     D1(MeasurementType.DOPPLER, Frequency.G01, Frequency.R01, Frequency.C01, Frequency.S01),

  59.     /** Doppler GPS L2 / GLONASS G2 for Rinex2. */
  60.     D2(MeasurementType.DOPPLER, Frequency.G02, Frequency.R02),

  61.     /** Doppler GPS L5 / Galileo E5a / SBAS L5 for Rinex2. */
  62.     D5(MeasurementType.DOPPLER, Frequency.G05, Frequency.E05, Frequency.S05),

  63.     /** Doppler Galileo E6 for Rinex2. */
  64.     D6(MeasurementType.DOPPLER, Frequency.E06),

  65.     /** Doppler Galileo E5b for Rinex2. */
  66.     D7(MeasurementType.DOPPLER, Frequency.E07),

  67.     /** Doppler Galileo E5a+b for Rinex2. */
  68.     D8(MeasurementType.DOPPLER, Frequency.E08),

  69.     /** Doppler GPS L1 / GLONASS G1 / Galileo E2-L1-E1 / SBAS L1 for Rinex2. */
  70.     S1(MeasurementType.SIGNAL_STRENGTH, Frequency.G01, Frequency.R01, Frequency.C01, Frequency.S01),

  71.     /** Signal Strength GPS L2 / GLONASS G2 for Rinex2. */
  72.     S2(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.R02),

  73.     /** Signal Strength GPS L5 / Galileo E5a / SBAS L5 for Rinex2. */
  74.     S5(MeasurementType.SIGNAL_STRENGTH, Frequency.G05, Frequency.E05, Frequency.S05),

  75.     /** Signal Strength Galileo E6 for Rinex2. */
  76.     S6(MeasurementType.SIGNAL_STRENGTH, Frequency.E06),

  77.     /** Signal Strength Galileo E5b for Rinex2. */
  78.     S7(MeasurementType.SIGNAL_STRENGTH, Frequency.E07),

  79.     /** Signal Strength Galileo E5a+b for Rinex2. */
  80.     S8(MeasurementType.SIGNAL_STRENGTH, Frequency.E08),

  81.     /** Pseudorange Galileo E1 A for Rinex3. */
  82.     C1A(MeasurementType.PSEUDO_RANGE, Frequency.E01),

  83.     /** Pseudorange Galileo E1 I/NAV OS/CS/SoL for Rinex3. */
  84.     C1B(MeasurementType.PSEUDO_RANGE, Frequency.E01),

  85.     /** Pseudorange GPS L1 C/A / GLONASS G1 C/A / Galileo E1 C / SBAS L1 C/A / QZSS L1 C/A for Rinex3. */
  86.     C1C(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.R01, Frequency.E01, Frequency.S01, Frequency.J01),

  87.     /** Pseudorange Beidou B1 I for Rinex3.02. */
  88.     C1I(MeasurementType.PSEUDO_RANGE, Frequency.B01),

  89.     /** Pseudorange GPS L1 L1C(P) / QZSS L1 L1C(P) for Rinex3. */
  90.     C1L(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.J01),

  91.     /** Pseudorange GPS L1 M for Rinex3. */
  92.     C1M(MeasurementType.PSEUDO_RANGE, Frequency.G01),

  93.     /** Pseudorange GPS L1 P(AS off) / GLONASS G1 P for Rinex3. */
  94.     C1P(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.R01),

  95.     /** Pseudorange Beidou B1 Q for Rinex3.02. */
  96.     C1Q(MeasurementType.PSEUDO_RANGE, Frequency.B01),

  97.     /** Pseudorange GPS L1 L1C(D) / QZSS L1 L1C(D) for Rinex3. */
  98.     C1S(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.J01),

  99.     /** Pseudorange GPS L1 Z-tracking and similar (AS on) for Rinex3. */
  100.     C1W(MeasurementType.PSEUDO_RANGE, Frequency.G01),

  101.     /** Pseudorange GPS L1 L1C (D+P) / Galileo E1 B+C / QZSS L1 L1C(D+P) for Rinex3. */
  102.     C1X(MeasurementType.PSEUDO_RANGE, Frequency.G01, Frequency.E01, Frequency.J01),

  103.     /** Pseudorange GPS L1 Y for Rinex3. */
  104.     C1Y(MeasurementType.PSEUDO_RANGE, Frequency.G01),

  105.     /** Pseudorange Galileo E1 C1Z A+B+C / QZSS L1 L1-SAIF for Rinex3. */
  106.     C1Z(MeasurementType.PSEUDO_RANGE, Frequency.E01, Frequency.J01),

  107.     /** Pseudorange GPS L2 C/A / GLONASS G2 C/A for Rinex3. */
  108.     C2C(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.R02),

  109.     /** Pseudorange GPS L1(C/A)+(P2-P1) (semi-codeless) for Rinex3. */
  110.     C2D(MeasurementType.PSEUDO_RANGE, Frequency.G01),

  111.     /** Pseudorange Beidou B1 I for Rinex3.03. */
  112.     C2I(MeasurementType.PSEUDO_RANGE, Frequency.B01),

  113.     /** Pseudorange GPS L2 L2C(L) / QZSS L2 L2C(2) for Rinex3. */
  114.     C2L(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.J02),

  115.     /** Pseudorange GPS L2 M for Rinex3. */
  116.     C2M(MeasurementType.PSEUDO_RANGE, Frequency.G02),

  117.     /** Pseudorange GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  118.     C2P(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.R02),

  119.     /** Pseudorange Beidou B1 Q for Rinex3.03. */
  120.     C2Q(MeasurementType.PSEUDO_RANGE, Frequency.B01),

  121.     /** Pseudorange GPS L2 L2C(M) / QZSS L2 L2C(M) for Rinex3. */
  122.     C2S(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.J02),

  123.     /** Pseudorange GPS L2 Z-tracking and similar (AS on) for Rinex3. */
  124.     C2W(MeasurementType.PSEUDO_RANGE, Frequency.G02),

  125.     /** Pseudorange GPS L2 L2C (M+L) / QZSS L2 L2C(M+L) for Rinex3. */
  126.     C2X(MeasurementType.PSEUDO_RANGE, Frequency.G02, Frequency.J02),

  127.     /** Pseudorange GPS L2 Y for Rinex3. */
  128.     C2Y(MeasurementType.PSEUDO_RANGE, Frequency.G02),

  129.     /** Pseudorange GPS L5 I/ Galileo E5a F/NAV OS / SBAS L5 I / QZSS L5 I for Rinex3. */
  130.     C5I(MeasurementType.PSEUDO_RANGE, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  131.     /** Pseudorange GPS L5 Q/ Galileo E5a Q / SBAS L5 Q / QZSS L5 Q for Rinex3. */
  132.     C5Q(MeasurementType.PSEUDO_RANGE, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  133.     /** Pseudorange GPS L5 I+Q/ Galileo E5a I+Q / SBAS L5 I+Q / QZSS L5 I+Q for Rinex3. */
  134.     C5X(MeasurementType.PSEUDO_RANGE, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  135.     /** Pseudorange Galileo E6 A PRS for Rinex3. */
  136.     C6A(MeasurementType.PSEUDO_RANGE, Frequency.E06),

  137.     /** Pseudorange Galileo E6 B C/NAV CS for Rinex3. */
  138.     C6B(MeasurementType.PSEUDO_RANGE, Frequency.E06),

  139.     /** Pseudorange Galileo E6 C no data for Rinex3. */
  140.     C6C(MeasurementType.PSEUDO_RANGE, Frequency.E06),

  141.     /** Pseudorange Beidou B3 I for Rinex3. */
  142.     C6I(MeasurementType.PSEUDO_RANGE, Frequency.B03),

  143.     /** Pseudorange Beidou B3 Q for Rinex3. */
  144.     C6Q(MeasurementType.PSEUDO_RANGE, Frequency.B03),

  145.     /** Pseudorange Galileo E6 B+C / QZSS LEX(6) S+L / Beidou B3 I+Q for Rinex3. */
  146.     C6X(MeasurementType.PSEUDO_RANGE, Frequency.E06, Frequency.J06, Frequency.B03),

  147.     /** Pseudorange Galileo E6 A+B+C for Rinex3. */
  148.     C6Z(MeasurementType.PSEUDO_RANGE, Frequency.E06),

  149.     /** Pseudorange Galileo E5b I I/NAV OS/CS/SoL / Beidou B2 I for Rinex3. */
  150.     C7I(MeasurementType.PSEUDO_RANGE, Frequency.E07, Frequency.B02),

  151.     /** Pseudorange Galileo Q no data / Beidou B2 Q for Rinex3. */
  152.     C7Q(MeasurementType.PSEUDO_RANGE, Frequency.E07, Frequency.B02),

  153.     /** Pseudorange Galileo E5b I+Q / Beidou B2 I+Q for Rinex3. */
  154.     C7X(MeasurementType.PSEUDO_RANGE, Frequency.E07, Frequency.B02),

  155.     /** Pseudorange Galileo E5(E5a+E5b) I for Rinex3. */
  156.     C8I(MeasurementType.PSEUDO_RANGE, Frequency.E08),

  157.     /** Pseudorange Galileo E5(E5a+E5b) Q for Rinex3. */
  158.     C8Q(MeasurementType.PSEUDO_RANGE, Frequency.E08),

  159.     /** Pseudorange Galileo E5(E5a+E5b) I+Q for Rinex3. */
  160.     C8X(MeasurementType.PSEUDO_RANGE, Frequency.E08),

  161.     /** Doppler Galileo E1 A for Rinex3. */
  162.     D1A(MeasurementType.DOPPLER, Frequency.E01),

  163.     /** Doppler Galileo E1 I/NAV OS/CS/SoL for Rinex3. */
  164.     D1B(MeasurementType.DOPPLER, Frequency.E01),

  165.     /** Doppler GPS L1 C/A / GLONASS G1 C/A / Galileo E1 C / SBAS L1 C/A / QZSS L1 C/A for Rinex3. */
  166.     D1C(MeasurementType.DOPPLER, Frequency.G01, Frequency.R01, Frequency.E01, Frequency.S01, Frequency.J01),

  167.     /** Doppler Beidou B1 I for Rinex3. */
  168.     D1I(MeasurementType.DOPPLER, Frequency.B01),

  169.     /** Doppler GPS L1 L1C(P) / QZSS L1 L1C(P) for Rinex3. */
  170.     D1L(MeasurementType.DOPPLER, Frequency.G01, Frequency.J01),

  171.     /** Doppler GPS L2 M for Rinex3. */
  172.     D1M(MeasurementType.DOPPLER, Frequency.G02),

  173.     /** Doppler GPS L1 codeless for Rinex3. */
  174.     D1N(MeasurementType.DOPPLER, Frequency.G01),

  175.     /** Doppler GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  176.     D1P(MeasurementType.DOPPLER, Frequency.G02, Frequency.R02),

  177.     /** Doppler GPS L1 L1C(D) / QZSS L1 L1C(D) for Rinex3. */
  178.     D1S(MeasurementType.DOPPLER, Frequency.G01, Frequency.J01),

  179.     /** Doppler GPS L1 Z-tracking and similar (AS on) for Rinex3. */
  180.     D1W(MeasurementType.DOPPLER, Frequency.G01),

  181.     /** Doppler GPS L1 L1C (D+P) / Galileo E1 B+C / QZSS L1 L1C(D+P) for Rinex3. */
  182.     D1X(MeasurementType.DOPPLER, Frequency.G01, Frequency.E01, Frequency.J01),

  183.     /** Doppler GPS L1 Y for Rinex3. */
  184.     D1Y(MeasurementType.DOPPLER, Frequency.G01),

  185.     /** Doppler Galileo E1 C1Z A+B+C / QZSS L1 L1-SAIF for Rinex3. */
  186.     D1Z(MeasurementType.DOPPLER, Frequency.E01, Frequency.J01),

  187.     /** Doppler GPS L2 C/A / GLONASS G2 C/A for Rinex3. */
  188.     D2C(MeasurementType.DOPPLER, Frequency.G02, Frequency.R02),

  189.     /** Doppler GPS L1(C/A)+(P2-P1) (semi-codeless) for Rinex3. */
  190.     D2D(MeasurementType.DOPPLER, Frequency.G01),

  191.     /** Doppler Beidou B1 I for Rinex3.03. */
  192.     D2I(MeasurementType.DOPPLER, Frequency.B01),

  193.     /** Doppler GPS L2 L2C(L) / QZSS L2 L2C(2) for Rinex3. */
  194.     D2L(MeasurementType.DOPPLER, Frequency.G02, Frequency.J02),

  195.     /** Doppler GPS L2 M for Rinex3. */
  196.     D2M(MeasurementType.DOPPLER, Frequency.G02),

  197.     /** Doppler GPS L2 codeless for Rinex3. */
  198.     D2N(MeasurementType.DOPPLER, Frequency.G02),

  199.     /** Doppler GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  200.     D2P(MeasurementType.DOPPLER, Frequency.G02, Frequency.R02),

  201.     /** Doppler Beidou B1 Q for Rinex3.03. */
  202.     D2Q(MeasurementType.DOPPLER, Frequency.B01),

  203.     /** Doppler GPS L2 L2C(M) / QZSS L2 L2C(M) for Rinex3. */
  204.     D2S(MeasurementType.DOPPLER, Frequency.G02, Frequency.J02),

  205.     /** Doppler GPS L2 Z-tracking and similar (AS on) for Rinex3. */
  206.     D2W(MeasurementType.DOPPLER, Frequency.G02),

  207.     /** Doppler GPS L2 L2C (M+L) / QZSS L2 L2C(M+L) for Rinex3. */
  208.     D2X(MeasurementType.DOPPLER, Frequency.G02, Frequency.J02),

  209.     /** Doppler GPS L2 Y for Rinex3. */
  210.     D2Y(MeasurementType.DOPPLER, Frequency.G02),

  211.     /** Doppler GPS L5 I/ Galileo E5a F/NAV OS / SBAS L5 I / QZSS L5 I for Rinex3. */
  212.     D5I(MeasurementType.DOPPLER, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  213.     /** Doppler GPS L5 Q/ Galileo E5a Q / SBAS L5 Q / QZSS L5 Q for Rinex3. */
  214.     D5Q(MeasurementType.DOPPLER, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  215.     /** Doppler GPS L5 I+Q/ Galileo E5a I+Q / SBAS L5 I+Q / QZSS L5 I+Q for Rinex3. */
  216.     D5X(MeasurementType.DOPPLER, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  217.     /** Doppler Galileo E6 A PRS for Rinex3. */
  218.     D6A(MeasurementType.DOPPLER, Frequency.E06),

  219.     /** Doppler Galileo E6 B C/NAV CS for Rinex3. */
  220.     D6B(MeasurementType.DOPPLER, Frequency.E06),

  221.     /** Doppler Galileo E6 C no data for Rinex3. */
  222.     D6C(MeasurementType.DOPPLER, Frequency.E06),

  223.     /** Doppler Beidou B3 I for Rinex3. */
  224.     D6I(MeasurementType.DOPPLER, Frequency.B03),

  225.     /** Doppler Beidou B3 Q for Rinex3. */
  226.     D6Q(MeasurementType.DOPPLER, Frequency.B03),

  227.     /** Doppler Galileo E6 B+C / QZSS LEX(6) S+L / Beidou B3 I+Q for Rinex3. */
  228.     D6X(MeasurementType.DOPPLER, Frequency.E06, Frequency.J06, Frequency.B03),

  229.     /** Doppler Galileo E6 A+B+C for Rinex3. */
  230.     D6Z(MeasurementType.DOPPLER, Frequency.E06),

  231.     /** Doppler Galileo E5b I I/NAV OS/CS/SoL / Beidou B2 I for Rinex3. */
  232.     D7I(MeasurementType.DOPPLER, Frequency.E07, Frequency.B02),

  233.     /** Doppler Galileo Q no data / Beidou B2 Q for Rinex3. */
  234.     D7Q(MeasurementType.DOPPLER, Frequency.E07, Frequency.B02),

  235.     /** Doppler Galileo E5b I+Q / Beidou B2 I+Q for Rinex3. */
  236.     D7X(MeasurementType.DOPPLER, Frequency.E07, Frequency.B02),

  237.     /** Doppler Galileo E5(E5a+E5b) I for Rinex3. */
  238.     D8I(MeasurementType.DOPPLER, Frequency.E08),

  239.     /** Doppler Galileo E5(E5a+E5b) Q for Rinex3. */
  240.     D8Q(MeasurementType.DOPPLER, Frequency.E08),

  241.     /** Doppler Galileo E5(E5a+E5b) I+Q for Rinex3. */
  242.     D8X(MeasurementType.DOPPLER, Frequency.E08),

  243.     /** Carrier-phase Galileo E1 A for Rinex3. */
  244.     L1A(MeasurementType.CARRIER_PHASE, Frequency.E01),

  245.     /** Carrier-phase Galileo E1 I/NAV OS/CS/SoL for Rinex3. */
  246.     L1B(MeasurementType.CARRIER_PHASE, Frequency.E01),

  247.     /** Carrier-phase GPS L1 C/A / GLONASS G1 C/A / Galileo E1 C / SBAS L1 C/A / QZSS L1 C/A for Rinex3. */
  248.     L1C(MeasurementType.CARRIER_PHASE, Frequency.G01, Frequency.R01, Frequency.E01, Frequency.S01, Frequency.J01),

  249.     /** Carrier-phase Beidou B1 I for Rinex3. */
  250.     L1I(MeasurementType.CARRIER_PHASE, Frequency.B01),

  251.     /** Carrier-phase GPS L1 L1C(P) / QZSS L1 L1C(P) for Rinex3. */
  252.     L1L(MeasurementType.CARRIER_PHASE, Frequency.G01, Frequency.J01),

  253.     /** Carrier-phase GPS L2 M for Rinex3. */
  254.     L1M(MeasurementType.CARRIER_PHASE, Frequency.G02),

  255.     /** Carrier-phase GPS L1 codeless for Rinex3. */
  256.     L1N(MeasurementType.CARRIER_PHASE, Frequency.G01),

  257.     /** Carrier-phase GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  258.     L1P(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.R02),

  259.     /** Carrier-phase GPS L1 L1C(D) / QZSS L1 L1C(D) for Rinex3. */
  260.     L1S(MeasurementType.CARRIER_PHASE, Frequency.G01, Frequency.J01),

  261.     /** Carrier-phase GPS L1 Z-tracking and similar (AS on) for Rinex3. */
  262.     L1W(MeasurementType.CARRIER_PHASE, Frequency.G01),

  263.     /** Carrier-phase GPS L1 L1C (D+P) / Galileo E1 B+C / QZSS L1 L1C(D+P) for Rinex3. */
  264.     L1X(MeasurementType.CARRIER_PHASE, Frequency.G01, Frequency.E01, Frequency.J01),

  265.     /** Carrier-phase GPS L1 Y for Rinex3. */
  266.     L1Y(MeasurementType.CARRIER_PHASE, Frequency.G01),

  267.     /** Carrier-phase Galileo E1 C1Z A+B+C / QZSS L1 L1-SAIF for Rinex3. */
  268.     L1Z(MeasurementType.CARRIER_PHASE, Frequency.E01, Frequency.J01),

  269.     /** Carrier-phase GPS L2 C/A / GLONASS G2 C/A for Rinex3. */
  270.     L2C(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.R02),

  271.     /** Carrier-phase GPS L1(C/A)+(P2-P1) (semi-codeless) for Rinex3. */
  272.     L2D(MeasurementType.CARRIER_PHASE, Frequency.G01),

  273.     /** Carrier-phase Beidou B1 I for Rinex3.03. */
  274.     L2I(MeasurementType.CARRIER_PHASE, Frequency.B01),

  275.     /** Carrier-phase GPS L2 L2C(L) / QZSS L2 L2C(2) for Rinex3. */
  276.     L2L(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.J02),

  277.     /** Carrier-phase GPS L2 M for Rinex3. */
  278.     L2M(MeasurementType.CARRIER_PHASE, Frequency.G02),

  279.     /** Carrier-phase GPS L2 codeless for Rinex3. */
  280.     L2N(MeasurementType.CARRIER_PHASE, Frequency.G02),

  281.     /** Carrier-phase GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  282.     L2P(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.R02),

  283.     /** Carrier-phase Beidou B1 Q for Rinex3.03. */
  284.     L2Q(MeasurementType.CARRIER_PHASE, Frequency.B01),

  285.     /** Carrier-phase GPS L2 L2C(M) / QZSS L2 L2C(M) for Rinex3. */
  286.     L2S(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.J02),

  287.     /** Carrier-phase GPS L2 Z-tracking and similar (AS on) for Rinex3. */
  288.     L2W(MeasurementType.CARRIER_PHASE, Frequency.G02),

  289.     /** Carrier-phase GPS L2 L2C (M+L) / QZSS L2 L2C(M+L) for Rinex3. */
  290.     L2X(MeasurementType.CARRIER_PHASE, Frequency.G02, Frequency.J02),

  291.     /** Carrier-phase GPS L2 Y for Rinex3. */
  292.     L2Y(MeasurementType.CARRIER_PHASE, Frequency.G02),

  293.     /** Carrier-phase GPS L5 I/ Galileo E5a F/NAV OS / SBAS L5 I / QZSS L5 I for Rinex3. */
  294.     L5I(MeasurementType.CARRIER_PHASE, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  295.     /** Carrier-phase GPS L5 Q/ Galileo E5a Q / SBAS L5 Q / QZSS L5 Q for Rinex3. */
  296.     L5Q(MeasurementType.CARRIER_PHASE, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  297.     /** Carrier-phase GPS L5 I+Q/ Galileo E5a I+Q / SBAS L5 I+Q / QZSS L5 I+Q for Rinex3. */
  298.     L5X(MeasurementType.CARRIER_PHASE, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  299.     /** Carrier-phase Galileo E6 A PRS for Rinex3. */
  300.     L6A(MeasurementType.CARRIER_PHASE, Frequency.E06),

  301.     /** Carrier-phase Galileo E6 B C/NAV CS for Rinex3. */
  302.     L6B(MeasurementType.CARRIER_PHASE, Frequency.E06),

  303.     /** Carrier-phase Galileo E6 C no data for Rinex3. */
  304.     L6C(MeasurementType.CARRIER_PHASE, Frequency.E06),

  305.     /** Carrier-phase Beidou B3 I for Rinex3. */
  306.     L6I(MeasurementType.CARRIER_PHASE, Frequency.B03),

  307.     /** Carrier-phase Beidou B3 Q for Rinex3. */
  308.     L6Q(MeasurementType.CARRIER_PHASE, Frequency.B03),

  309.     /** Carrier-phase Galileo E6 B+C / QZSS LEX(6) S+L / Beidou B3 I+Q for Rinex3. */
  310.     L6X(MeasurementType.CARRIER_PHASE, Frequency.E06, Frequency.J06, Frequency.B03),

  311.     /** Carrier-phase Galileo E6 A+B+C for Rinex3. */
  312.     L6Z(MeasurementType.CARRIER_PHASE, Frequency.E06),

  313.     /** Carrier-phase Galileo E5b I I/NAV OS/CS/SoL / Beidou B2 I for Rinex3. */
  314.     L7I(MeasurementType.CARRIER_PHASE, Frequency.E07, Frequency.B02),

  315.     /** Carrier-phase Galileo Q no data / Beidou B2 Q for Rinex3. */
  316.     L7Q(MeasurementType.CARRIER_PHASE, Frequency.E07, Frequency.B02),

  317.     /** Carrier-phase Galileo E5b I+Q / Beidou B2 I+Q for Rinex3. */
  318.     L7X(MeasurementType.CARRIER_PHASE, Frequency.E07, Frequency.B02),

  319.     /** Carrier-phase Galileo E5(E5a+E5b) I for Rinex3. */
  320.     L8I(MeasurementType.CARRIER_PHASE, Frequency.E08),

  321.     /** Carrier-phase Galileo E5(E5a+E5b) Q for Rinex3. */
  322.     L8Q(MeasurementType.CARRIER_PHASE, Frequency.E08),

  323.     /** Carrier-phase Galileo E5(E5a+E5b) I+Q for Rinex3. */
  324.     L8X(MeasurementType.CARRIER_PHASE, Frequency.E08),

  325.     /** Signal-strength Galileo E1 A for Rinex3. */
  326.     S1A(MeasurementType.SIGNAL_STRENGTH, Frequency.E01),

  327.     /** Signal-strength Galileo E1 I/NAV OS/CS/SoL for Rinex3. */
  328.     S1B(MeasurementType.SIGNAL_STRENGTH, Frequency.E01),

  329.     /** Signal-strength GPS L1 C/A / GLONASS G1 C/A / Galileo E1 C / SBAS L1 C/A / QZSS L1 C/A for Rinex3. */
  330.     S1C(MeasurementType.SIGNAL_STRENGTH, Frequency.G01, Frequency.R01, Frequency.E01, Frequency.S01, Frequency.J01),

  331.     /** Signal-strength Beidou B1 I for Rinex3. */
  332.     S1I(MeasurementType.SIGNAL_STRENGTH, Frequency.B01),

  333.     /** Signal-strength GPS L1 L1C(P) / QZSS L1 L1C(P) for Rinex3. */
  334.     S1L(MeasurementType.SIGNAL_STRENGTH, Frequency.G01, Frequency.J01),

  335.     /** Signal-strength GPS L2 M for Rinex3. */
  336.     S1M(MeasurementType.SIGNAL_STRENGTH, Frequency.G02),

  337.     /** Signal-strength GPS L1 codeless for Rinex3. */
  338.     S1N(MeasurementType.SIGNAL_STRENGTH, Frequency.G01),

  339.     /** Signal-strength GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  340.     S1P(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.R02),

  341.     /** Signal-strength GPS L1 L1C(D) / QZSS L1 L1C(D) for Rinex3. */
  342.     S1S(MeasurementType.SIGNAL_STRENGTH, Frequency.G01, Frequency.J01),

  343.     /** Signal-strength GPS L1 Z-tracking and similar (AS on) for Rinex3. */
  344.     S1W(MeasurementType.SIGNAL_STRENGTH, Frequency.G01),

  345.     /** Signal-strength GPS L1 L1C (D+P) / Galileo E1 B+C / QZSS L1 L1C(D+P) for Rinex3. */
  346.     S1X(MeasurementType.SIGNAL_STRENGTH, Frequency.G01, Frequency.E01, Frequency.J01),

  347.     /** Signal-strength GPS L1 Y for Rinex3. */
  348.     S1Y(MeasurementType.SIGNAL_STRENGTH, Frequency.G01),

  349.     /** Signal-strength Galileo E1 C1Z A+B+C / QZSS L1 L1-SAIF for Rinex3. */
  350.     S1Z(MeasurementType.SIGNAL_STRENGTH, Frequency.E01, Frequency.J01),

  351.     /** Signal-strength GPS L2 C/A / GLONASS G2 C/A for Rinex3. */
  352.     S2C(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.R02),

  353.     /** Signal-strength GPS L1(C/A)+(P2-P1) (semi-codeless) for Rinex3. */
  354.     S2D(MeasurementType.SIGNAL_STRENGTH, Frequency.G01),

  355.     /** Signal-strength Beidou B1 I for Rinex3.03. */
  356.     S2I(MeasurementType.SIGNAL_STRENGTH, Frequency.B01),

  357.     /** Signal-strength GPS L2 L2C(L) / QZSS L2 L2C(2) for Rinex3. */
  358.     S2L(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.J02),

  359.     /** Signal-strength GPS L2 M for Rinex3. */
  360.     S2M(MeasurementType.SIGNAL_STRENGTH, Frequency.G02),

  361.     /** Signal-strength GPS L2 codeless for Rinex3. */
  362.     S2N(MeasurementType.SIGNAL_STRENGTH, Frequency.G02),

  363.     /** Signal-strength GPS L2 P(AS off) / GLONASS G2 P for Rinex3. */
  364.     S2P(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.R02),

  365.     /** Signal-strength Beidou B1 Q for Rinex3.03. */
  366.     S2Q(MeasurementType.SIGNAL_STRENGTH, Frequency.B01),

  367.     /** Signal-strength GPS L2 L2C(M) / QZSS L2 L2C(M) for Rinex3. */
  368.     S2S(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.J02),

  369.     /** Signal-strength GPS L2 Z-tracking and similar (AS on) for Rinex3. */
  370.     S2W(MeasurementType.SIGNAL_STRENGTH, Frequency.G02),

  371.     /** Signal-strength GPS L2 L2C (M+L) / QZSS L2 L2C(M+L) for Rinex3. */
  372.     S2X(MeasurementType.SIGNAL_STRENGTH, Frequency.G02, Frequency.J02),

  373.     /** Signal-strength GPS L2 Y for Rinex3. */
  374.     S2Y(MeasurementType.SIGNAL_STRENGTH, Frequency.G02),

  375.     /** Signal-strength GPS L5 I/ Galileo E5a F/NAV OS / SBAS L5 I / QZSS L5 I for Rinex3. */
  376.     S5I(MeasurementType.SIGNAL_STRENGTH, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  377.     /** Signal-strength GPS L5 Q/ Galileo E5a Q / SBAS L5 Q / QZSS L5 Q for Rinex3. */
  378.     S5Q(MeasurementType.SIGNAL_STRENGTH, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  379.     /** Signal-strength GPS L5 I+Q/ Galileo E5a I+Q / SBAS L5 I+Q / QZSS L5 I+Q for Rinex3. */
  380.     S5X(MeasurementType.SIGNAL_STRENGTH, Frequency.G05, Frequency.E05, Frequency.S05, Frequency.J05),

  381.     /** Signal-strength Galileo E6 A PRS for Rinex3. */
  382.     S6A(MeasurementType.SIGNAL_STRENGTH, Frequency.E06),

  383.     /** Signal-strength Galileo E6 B C/NAV CS for Rinex3. */
  384.     S6B(MeasurementType.SIGNAL_STRENGTH, Frequency.E06),

  385.     /** Signal-strength Galileo E6 C no data for Rinex3. */
  386.     S6C(MeasurementType.SIGNAL_STRENGTH, Frequency.E06),

  387.     /** Signal-strength Beidou B3 I for Rinex3. */
  388.     S6I(MeasurementType.SIGNAL_STRENGTH, Frequency.B03),

  389.     /** Signal-strength Beidou B3 Q for Rinex3. */
  390.     S6Q(MeasurementType.SIGNAL_STRENGTH, Frequency.B03),

  391.     /** Signal-strength Galileo E6 B+C / QZSS LEX(6) S+L / Beidou B3 I+Q for Rinex3. */
  392.     S6X(MeasurementType.SIGNAL_STRENGTH, Frequency.E06, Frequency.J06, Frequency.B03),

  393.     /** Signal-strength Galileo E6 A+B+C for Rinex3. */
  394.     S6Z(MeasurementType.SIGNAL_STRENGTH, Frequency.E06),

  395.     /** Signal-strength Galileo E5b I I/NAV OS/CS/SoL / Beidou B2 I for Rinex3. */
  396.     S7I(MeasurementType.SIGNAL_STRENGTH, Frequency.E07, Frequency.B02),

  397.     /** Signal-strength Galileo Q no data / Beidou B2 Q for Rinex3. */
  398.     S7Q(MeasurementType.SIGNAL_STRENGTH, Frequency.E07, Frequency.B02),

  399.     /** Signal-strength Galileo E5b I+Q / Beidou B2 I+Q for Rinex3. */
  400.     S7X(MeasurementType.SIGNAL_STRENGTH, Frequency.E07, Frequency.B02),

  401.     /** Signal-strength Galileo E5(E5a+E5b) I for Rinex3. */
  402.     S8I(MeasurementType.SIGNAL_STRENGTH, Frequency.E08),

  403.     /** Signal-strength Galileo E5(E5a+E5b) Q for Rinex3. */
  404.     S8Q(MeasurementType.SIGNAL_STRENGTH, Frequency.E08),

  405.     /** Signal-strength Galileo E5(E5a+E5b) I+Q for Rinex3. */
  406.     S8X(MeasurementType.SIGNAL_STRENGTH, Frequency.E08);

  407.     /** Measurement type. */
  408.     private final MeasurementType type;

  409.     /** Map of ferquencies. */
  410.     private final Map<SatelliteSystem, Frequency> frequencies;

  411.     /** Simple  constructor.
  412.      * @param type measurement type
  413.      * @param frequencies compatible frequencies
  414.      */
  415.     ObservationType(final MeasurementType type, final Frequency... frequencies) {
  416.         this.type = type;
  417.         this.frequencies = new HashMap<>(frequencies.length);
  418.         for (final Frequency f : frequencies) {
  419.             this.frequencies.put(f.getSatelliteSystem(), f);
  420.         }
  421.     }

  422.     /** Get the measurement type.
  423.      * @return measurement type
  424.      */
  425.     public MeasurementType getMeasurementType() {
  426.         return type;
  427.     }

  428.     /** Get the frequency for a specified satellite system.
  429.      * @param system satellite system
  430.      * @return frequency for the satellite system, or null if satellite system not compatible
  431.      */
  432.     public Frequency getFrequency(final SatelliteSystem system) {
  433.         return frequencies.get(system);
  434.     }

  435. }