GREAT多频多系统GREAT-UPD开源代码-第4.1章 代码解读之gnss.h/gnss.cpp
第4.1章 代码解读之gnss.h/gnss.cpp
1. GNSS系统设定
///< GNSS systems and augmentations
enum GSYS
{ // GXX = -1,
GPS, GAL, GLO, BDS, QZS, SBS, IRN, GNS
};
- GPS = GPS
- GAL = Galileo
- GLO= GLONASS
- BDS= Beidou
- QZS= QZSS
- SBS = 未知
- IRN = 未知
- GNS= GNSS
2. 频率ID
///< GNSS freq Sequence ID
enum FREQ_SEQ
{
FREQ_1 = 1, FREQ_2 = 2, FREQ_3 = 3, FREQ_4 = 4, FREQ_5 = 5,
FREQ_X = 999
};
对应下表中的
Freq | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
主要是程序中对频率ID的约定俗称顺序
System | Frequency. | Signal Priority (1: highest > 10: lowest) * | |||||||
Freq | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
GPS | L1 | 1M | 1Y | 1W | 1P | 1X | 1L | 1S | 1C |
L2 | 2M | 2Y | 2W | 2P | 2X | 2L | 2S | 2C | |
L5 | 5X | 5Q | 5I | ||||||
GLONASS | G1(range) | 1P | 1C | ||||||
G1(phase) | 1C | 1P | |||||||
G2 | 2P | 2C | |||||||
Galileo | E1 | 1Z | 1X | 1C | 1B | 1A | |||
E5a | 5X | 5Q | 5I | ||||||
E5b | 7X | 7Q | 7I | ||||||
BeiDou | B1 | 2X | 2Q | 2I | |||||
B2 | 7X | 7Q | 7I | ||||||
B3 | 6X | 6Q | 6I |
3.GNSS频率
///< GNSS frequencies
enum GFRQ
{ // FXX = -1,
G01 = 10, G02 = 11, G05 = 12, ///< GPS
R01 = 20, R02 = 21, ///< GLONASS FDMA
R01_CDMA = 30, R02_CDMA = 31,
R03_CDMA = 32, R05_CDMA = 33, ///< GLONASS CDMA
E01 = 50, E05 = 51, E07 = 52,
E08 = 53, E06 = 54, ///< Galileo
C02 = 60, C07 = 61, C06 = 62, ///< BeiDou
J01 = 70, J02 = 71, J05 = 72,
J06 = 73, ///< QZSS
S01 = 80, S05 = 81, ///< SBAS
I05 = 90, ///< IRNSS
LAST_GFRQ = 999
};
4. 观测值类型
///< GNSS type/band/attr definitions
enum GOBSTYPE
{
TYPE_C = 1, TYPE_L = 2, TYPE_D = 3, TYPE_S = 4,
TYPE_P = 101, // only for P-code!
TYPE = 999 // "" UNKNOWN
};
- C=pseudorange
- L=carrier phase
- D=doppler
- S=signal strength
5. 观测值band
enum GOBSBAND
{
BAND_1 = 1, BAND_2 = 2, BAND_3 = 3, BAND_5 = 5,
BAND_6 = 6, BAND_7 = 7, BAND_8 = 8,
BAND_A = 101, BAND_B = 102, BAND_C = 103, BAND_D = 104,
BAND = 999 // "" UNKNOWN
};
band / frequency in obs type
Examples:
• L1C: C/A code-derived L1 carrier phase (GPS, GLONASS) Carrier phase on E2-L1- E1 derived from C channel (Galileo)
• C2L: L2C pseudorange derived from the L channel (GPS)
• C2X: L2C pseudorange derived from the mixed (M+L) codes (GPS)
如上中间的数字。
6. 观测值attr,追踪方式
enum GOBSATTR
{
ATTR_A, ATTR_B, ATTR_C, ATTR_D, ATTR_I, ATTR_L, ATTR_M, ATTR_N,
ATTR_P, ATTR_Q, ATTR_S, ATTR_W, ATTR_X, ATTR_Y, ATTR_Z,
ATTR_NULL, // " " 2CHAR code
ATTR = 999 // "" UNKNOWN
};
attribute tracking mode or channel, e.g., I, Q, etc
7. 观测值类型,全部类型,band,attr考虑
///< GNSS observations
enum GOBS
{
///< psedorange [in meters] (RINEX 3.x)
C1A = 0, C1B, C1C, C1I, C1L, C1M, C1P, C1S, C1Q, C1W, C1X, C1Y, C1Z,
C2C, C2D, C2I, C2L, C2M, C2P, C2S, C2Q, C2W, C2X, C2Y,
C3I, C3Q, C3X,
C5A, C5B, C5C, C5I, C5Q, C5X,
C6A, C6B, C6C, C6I, C6L, C6S, C6Q, C6X, C6Z,
C7I, C7Q, C7X,
C8I, C8Q, C8X,
///< carrier phase [in whole cycles] (RINEX 3.x)
L1A = 100, L1B, L1C, L1I, L1L, L1M, L1N, L1P, L1S, L1Q, L1W, L1X, L1Y, L1Z,
L2C, L2D, L2I, L2L, L2M, L2N, L2P, L2S, L2Q, L2W, L2X, L2Y,
L3I, L3Q, L3X,
L5A, L5B, L5C, L5I, L5Q, L5X,
L6A, L6B, L6C, L6I, L6L, L6S, L6Q, L6X, L6Z,
L7I, L7Q, L7X,
L8I, L8Q, L8X,
///< doppler [cycles/sec] (RINEX 3.x)
D1A = 200, D1B, D1C, D1I, D1L, D1M, D1N, D1P, D1S, D1Q, D1W, D1X, D1Y, D1Z,
D2C, D2D, D2I, D2L, D2M, D2N, D2P, D2S, D2Q, D2W, D2X, D2Y,
D3I, D3Q, D3X,
D5A, D5B, D5C, D5I, D5Q, D5X,
D6A, D6B, D6C, D6I, D6L, D6S, D6Q, D6X, D6Z,
D7I, D7Q, D7X,
D8I, D8Q, D8X,
///< signal strength [DBHZ] (RINEX 3.x)
S1A = 300, S1B, S1C, S1I, S1L, S1M, S1N, S1P, S1S, S1Q, S1W, S1X, S1Y, S1Z,
S2C, S2D, S2I, S2L, S2M, S2N, S2P, S2S, S2Q, S2W, S2X, S2Y,
S3I, S3Q, S3X,
S5A, S5B, S5C, S5I, S5Q, S5X,
S6A, S6B, S6C, S6I, S6L, S6S, S6Q, S6X, S6Z,
S7I, S7Q, S7X,
S8I, S8Q, S8X,
///< special cases: v2.x or unknown tracking modes
P1 = 1000, P2, P5, C1, C2, C5, C6, C7, C8, CA, CB, CC, CD,
L1 = 1100, L2, L5, L6, L7, L8, LA, LB, LC, LD,
D1 = 1200, D2, D5, D6, D7, D8, DA, DB, DC, DD,
S1 = 1300, S2, S5, S6, S7, S8, SA, SB, SC, SD,
X ///< LAST_GOBS
};
8. GREAT-UPD中默认的频率和频段的优先顺序
///< static map of default GNSS freq priorities
const t_map_freq GNSS_FREQ_PRIORITY =
{
{GPS , { LAST_GFRQ, G01, G02, G05}},
{GLO , { LAST_GFRQ, R01, R02, R03_CDMA, R05_CDMA}},
{GAL , { LAST_GFRQ, E01, E05, E07, E08, E06 }},
{BDS , { LAST_GFRQ, C02, C07, C06, }},
{QZS , { LAST_GFRQ, J01, J02, J05, J06 }},
{SBS , { LAST_GFRQ, S01, S05 }},
{GNS , { }},
};
///< static map of default GNSS band priorities
const t_map_band GNSS_BAND_PRIORITY=
{
{GPS,{ BAND, BAND_1, BAND_2, BAND_5 }},
{GLO,{ BAND, BAND_1, BAND_2, BAND_3, BAND_5 }},
{GAL,{ BAND, BAND_1, BAND_5, BAND_7, BAND_8, BAND_6 }},
{BDS,{ BAND, BAND_2, BAND_7, BAND_6, }},
{QZS,{ BAND, BAND_1, BAND_2, BAND_5, BAND_6 }},
{SBS,{ BAND, BAND_1, BAND_5 }},
{GNS,{ }},
};
t_map_gnss GNSS_DATA_PRIORITY()
{
t_map_gnss m;
m[GPS][BAND_1][TYPE_C] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_NULL };
m[GPS][BAND_1][TYPE_L] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_N, ATTR_NULL };
m[GPS][BAND_1][TYPE_D] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_N, ATTR_NULL };
m[GPS][BAND_1][TYPE_S] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_N, ATTR_NULL };
m[GPS][BAND_1][TYPE_P] = { ATTR_NULL };
m[GPS][BAND_2][TYPE_C] = { ATTR_C, ATTR_D, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_NULL };
m[GPS][BAND_2][TYPE_L] = { ATTR_C, ATTR_D, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_N, ATTR_NULL };
m[GPS][BAND_2][TYPE_D] = { ATTR_C, ATTR_D, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_N, ATTR_NULL };
m[GPS][BAND_2][TYPE_S] = { ATTR_C, ATTR_D, ATTR_S, ATTR_L, ATTR_X, ATTR_P, ATTR_W, ATTR_Y, ATTR_M, ATTR_N, ATTR_NULL };
m[GPS][BAND_2][TYPE_P] = { ATTR_NULL };
m[GPS][BAND_5][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GPS][BAND_5][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GPS][BAND_5][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GPS][BAND_5][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GPS][BAND_A][TYPE_C] = { ATTR_NULL };
m[GPS][BAND_A][TYPE_L] = { ATTR_NULL };
m[GPS][BAND_A][TYPE_D] = { ATTR_NULL };
m[GPS][BAND_A][TYPE_S] = { ATTR_NULL };
m[GPS][BAND_B][TYPE_C] = { ATTR_NULL };
m[GPS][BAND_B][TYPE_L] = { ATTR_NULL };
m[GPS][BAND_B][TYPE_D] = { ATTR_NULL };
m[GPS][BAND_B][TYPE_S] = { ATTR_NULL };
m[GLO][BAND_1][TYPE_C] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_1][TYPE_L] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_1][TYPE_D] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_1][TYPE_S] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_1][TYPE_P] = { ATTR_NULL };
m[GLO][BAND_2][TYPE_C] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_2][TYPE_L] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_2][TYPE_D] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_2][TYPE_S] = { ATTR_C, ATTR_P, ATTR_NULL };
m[GLO][BAND_2][TYPE_P] = { ATTR_NULL };
m[GLO][BAND_3][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GLO][BAND_3][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GLO][BAND_3][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GLO][BAND_3][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GLO][BAND_A][TYPE_C] = { ATTR_NULL };
m[GLO][BAND_A][TYPE_L] = { ATTR_NULL };
m[GLO][BAND_A][TYPE_D] = { ATTR_NULL };
m[GLO][BAND_A][TYPE_S] = { ATTR_NULL };
m[GLO][BAND_B][TYPE_C] = { ATTR_NULL };
m[GLO][BAND_B][TYPE_L] = { ATTR_NULL };
m[GLO][BAND_B][TYPE_D] = { ATTR_NULL };
m[GLO][BAND_B][TYPE_S] = { ATTR_NULL };
m[GAL][BAND_1][TYPE_C] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_1][TYPE_L] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_1][TYPE_D] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_1][TYPE_S] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_5][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_5][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_5][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_5][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_6][TYPE_C] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_6][TYPE_L] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_6][TYPE_D] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_6][TYPE_S] = { ATTR_A, ATTR_B, ATTR_C, ATTR_X, ATTR_Z, ATTR_NULL };
m[GAL][BAND_7][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_7][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_7][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_7][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_8][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_8][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_8][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_8][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[GAL][BAND_A][TYPE_C] = { ATTR_NULL };
m[GAL][BAND_A][TYPE_L] = { ATTR_NULL };
m[GAL][BAND_A][TYPE_D] = { ATTR_NULL };
m[GAL][BAND_A][TYPE_S] = { ATTR_NULL };
m[GAL][BAND_B][TYPE_C] = { ATTR_NULL };
m[GAL][BAND_B][TYPE_L] = { ATTR_NULL };
m[GAL][BAND_B][TYPE_D] = { ATTR_NULL };
m[GAL][BAND_B][TYPE_S] = { ATTR_NULL };
m[BDS][BAND_2][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_2][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_2][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_2][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_6][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_6][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_6][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_6][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_7][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_7][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_7][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[BDS][BAND_7][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X, ATTR_NULL };
m[SBS][BAND_1][TYPE_C] = { ATTR_C };
m[SBS][BAND_1][TYPE_L] = { ATTR_C };
m[SBS][BAND_1][TYPE_D] = { ATTR_C };
m[SBS][BAND_1][TYPE_S] = { ATTR_C };
m[SBS][BAND_1][TYPE_P] = { ATTR_NULL };
m[SBS][BAND_5][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X };
m[SBS][BAND_5][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X };
m[SBS][BAND_5][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X };
m[SBS][BAND_5][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X };
m[QZS][BAND_1][TYPE_C] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_Z };
m[QZS][BAND_1][TYPE_L] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_Z };
m[QZS][BAND_1][TYPE_D] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_Z };
m[QZS][BAND_1][TYPE_S] = { ATTR_C, ATTR_S, ATTR_L, ATTR_X, ATTR_Z };
m[QZS][BAND_2][TYPE_C] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_2][TYPE_L] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_2][TYPE_D] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_2][TYPE_S] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_5][TYPE_C] = { ATTR_I, ATTR_Q, ATTR_X };
m[QZS][BAND_5][TYPE_L] = { ATTR_I, ATTR_Q, ATTR_X };
m[QZS][BAND_5][TYPE_D] = { ATTR_I, ATTR_Q, ATTR_X };
m[QZS][BAND_5][TYPE_S] = { ATTR_I, ATTR_Q, ATTR_X };
m[QZS][BAND_6][TYPE_C] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_6][TYPE_L] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_6][TYPE_D] = { ATTR_S, ATTR_L, ATTR_X };
m[QZS][BAND_6][TYPE_S] = { ATTR_S, ATTR_L, ATTR_X };
return m;
}
9. GREAT-UPD支持的卫星列表
t_map_sats GNSS_SATS()
{
t_map_sats m;
// (string) necessary for VS2013
m[GPS] = { (string)"G01",(string)"G02",(string)"G03",(string)"G04",(string)"G05",(string)"G06",(string)"G07",(string)"G08",(string)"G09",(string)"G10",
(string)"G11",(string)"G12",(string)"G13",(string)"G14",(string)"G15",(string)"G16",(string)"G17",(string)"G18",(string)"G19",(string)"G20",
(string)"G21",(string)"G22",(string)"G23",(string)"G24",(string)"G25",(string)"G26",(string)"G27",(string)"G28",(string)"G29",(string)"G30",
(string)"G31",(string)"G32" };
m[GLO] = { (string)"R01",(string)"R02",(string)"R03",(string)"R04",(string)"R05",(string)"R06",(string)"R07",(string)"R08",(string)"R09",(string)"R10",
(string)"R11",(string)"R12",(string)"R13",(string)"R14",(string)"R15",(string)"R16",(string)"R17",(string)"R18",(string)"R19",(string)"R20",
(string)"R21",(string)"R22",(string)"R23",(string)"R24" };
m[GAL] = { (string)"E01",(string)"E02",(string)"E03",(string)"E04",(string)"E05",(string)"E06",(string)"E07",(string)"E08",(string)"E09",(string)"E10",
(string)"E11",(string)"E12",(string)"E13",(string)"E14",(string)"E15",(string)"E16",(string)"E17",(string)"E18",(string)"E19",(string)"E20",
(string)"E21",(string)"E22",(string)"E23",(string)"E24",(string)"E25",(string)"E26",(string)"E27",(string)"E28",(string)"E29",(string)"E30",
(string)"E31",(string)"E32",(string)"E33",(string)"E34",(string)"E35",(string)"E36" };
m[BDS] = { (string)"C01",(string)"C02",(string)"C03",(string)"C04",(string)"C05",(string)"C06",(string)"C07",(string)"C08",(string)"C09",(string)"C10",
(string)"C11",(string)"C12",(string)"C13",(string)"C14",(string)"C15",(string)"C16",(string)"C17",(string)"C18",(string)"C19",(string)"C20",
(string)"C21",(string)"C22",(string)"C23",(string)"C24",(string)"C25",(string)"C26",(string)"C27",(string)"C28",(string)"C29",(string)"C30",
(string)"C31",(string)"C32",(string)"C33",(string)"C34",(string)"C35",(string)"C36",(string)"C37",(string)"C38",(string)"C39" };
m[SBS] = { (string)"S20",(string)"S24",(string)"S25",(string)"S26",(string)"S27",(string)"S28",(string)"S29",
(string)"S33",(string)"S35",(string)"S36",(string)"S37",(string)"S38",
(string)"S40",
(string)"S83" };
m[QZS] = { (string)"J01",(string)"J02",(string)"J03",(string)"J07" };
return m;
}
10. 其他辅助函数
// ------------------------------------------------------------------------------------------------------
// GLOBAL FUNCTIONS
// ------------------------------------------------------------------------------------------------------
/**@brief get GOBSATTR enum from gobs string */
GNUT_LIBRARY_EXPORT GOBSATTR str2gobsattr(string s);
/**@brief get GOBSBAND enum from gobs string */
GNUT_LIBRARY_EXPORT GOBSBAND str2gobsband(string s);
/**@brief get GOBSTYPE enum from gobs string */
GNUT_LIBRARY_EXPORT GOBSTYPE str2gobstype(string s);
/**@brief get GOBSATTR enum from char */
GNUT_LIBRARY_EXPORT GOBSATTR char2gobsattr(char c);
/**@brief get GOBSBAND enum from char */
GNUT_LIBRARY_EXPORT GOBSBAND char2gobsband(char c);
/**@brief get GOBSTYPE enum from char */
GNUT_LIBRARY_EXPORT GOBSTYPE char2gobstype(char c);
/**@brief get string enum from GOBSATTR */
GNUT_LIBRARY_EXPORT string gobsattr2str(GOBSATTR e);
/**@brief get string enum from GOBSBAND */
GNUT_LIBRARY_EXPORT string gobsband2str(GOBSBAND e);
/**@brief get string enum from GOBSTYPE */
GNUT_LIBRARY_EXPORT string gobstype2str(GOBSTYPE e);
/**@brief get string from GOBS enum */
GNUT_LIBRARY_EXPORT string gobs2str(GOBS);
/**@brief get GOBS enum from string */
GNUT_LIBRARY_EXPORT GOBS str2gobs(string s);
/**@brief get GOBS enum (pha->snr) */
GNUT_LIBRARY_EXPORT GOBS pha2snr(GOBS o);
/**@brief get true for code obs */
GNUT_LIBRARY_EXPORT bool gobs_code(GOBS o);
/**@brief get true for phase obs */
GNUT_LIBRARY_EXPORT bool gobs_phase(GOBS o);
/**@brief static map of default GNSS satellites */
GNUT_LIBRARY_EXPORT t_map_sats GNSS_SATS();
/**@brief static map of default GNSS navigation types */
GNUT_LIBRARY_EXPORT t_map_gnav GNSS_GNAV();
/**@brief static map of default GNSS data types/bands/attrs priorities */
GNUT_LIBRARY_EXPORT t_map_gnss GNSS_DATA_PRIORITY();