├── GUI
├── Header.png
├── LICENSE
├── LinuxStyle.qss
├── MacStyle.qss
├── MainLogo.gif
├── Qt_source
│ ├── Qt_Static_Build_Linux.pdf
│ ├── Qt_Static_Build_Linux_to_ARM64.pdf
│ ├── Qt_Static_Build_Linux_to_ARMv7hf.pdf
│ └── Qt_source.txt
├── WinStyle.qss
├── adderror_rinex.cpp
├── analysis.cpp
├── antenna_advanced.cpp
├── antenna_advanced.h
├── antenna_advanced.ui
├── compareOrbits.cpp
├── config.xlaunch
├── converter.cpp
├── coord_converter.cpp
├── coord_converter.h
├── coord_converter.ui
├── cs_igf_advanced.cpp
├── cs_igf_advanced.h
├── cs_igf_advanced.ui
├── cs_li_advanced.cpp
├── cs_li_advanced.h
├── cs_li_advanced.ui
├── cs_mw_advanced.cpp
├── cs_mw_advanced.h
├── cs_mw_advanced.ui
├── cs_sf_advanced.cpp
├── cs_sf_advanced.h
├── cs_sf_advanced.ui
├── date_converter.cpp
├── date_converter.h
├── date_converter.ui
├── downarrow.png
├── downarrow_disabled.png
├── filter.cpp
├── freqmeas_order.cpp
├── freqmeas_order.h
├── freqmeas_order.ui
├── gAGE.ico
├── gLAB.icns
├── gLAB.pro
├── gLAB.pro.user
├── gLAB.rc
├── gLAB_FAQ.txt
├── gLAB_Reference_Position_File_Example.txt
├── gLAB_SUM.pdf
├── gLAB_Sigma_Multipath_File_Example.txt
├── gLAB_User_Error_File_Example.txt
├── gLAB_adderror.cfg
├── gLAB_command_line_help.txt
├── gLAB_command_line_messages.txt
├── gLAB_command_line_sbas_maps_description.txt
├── gage_logo.png
├── glab_const.h
├── glab_gui.cpp
├── glab_gui.h
├── glab_gui.ui
├── glab_tooltip.cpp
├── glab_tooltip.h
├── glab_tooltip.ui
├── graph_command_line_help.txt
├── igp_grid.jpg
├── igp_grid_big.jpg
├── input.cpp
├── load_positioning.cpp
├── main.cpp
├── meas_select.cpp
├── meas_select.h
├── meas_select.ui
├── modelling.cpp
├── multi_threading.cpp
├── multi_threading.h
├── multi_threading.ui
├── myresources.qrc
├── output.cpp
├── preprocess.cpp
├── sbas_obad_set.cpp
├── sbas_obad_set.h
├── sbas_obad_set.ui
├── showOrbits.cpp
├── snr_advanced.cpp
├── snr_advanced.h
├── snr_advanced.ui
└── warning.png
├── Graphical_tool
├── LICENSE
└── graph.py
├── LICENSE
├── README.md
├── README_install.txt
├── core
├── LICENSE
├── Makefile
├── Makefile_multithread
├── dataHandling.c
├── dataHandling.h
├── filter.c
├── filter.h
├── gLAB.c
├── input.c
├── input.h
├── model.c
├── model.h
├── output.c
├── output.h
├── preprocessing.c
└── preprocessing.h
└── gLAB_SUM.pdf
/GUI/Header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/Header.png
--------------------------------------------------------------------------------
/GUI/LICENSE:
--------------------------------------------------------------------------------
1 | GNU LESSER GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 |
9 | This version of the GNU Lesser General Public License incorporates
10 | the terms and conditions of version 3 of the GNU General Public
11 | License, supplemented by the additional permissions listed below.
12 |
13 | 0. Additional Definitions.
14 |
15 | As used herein, "this License" refers to version 3 of the GNU Lesser
16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU
17 | General Public License.
18 |
19 | "The Library" refers to a covered work governed by this License,
20 | other than an Application or a Combined Work as defined below.
21 |
22 | An "Application" is any work that makes use of an interface provided
23 | by the Library, but which is not otherwise based on the Library.
24 | Defining a subclass of a class defined by the Library is deemed a mode
25 | of using an interface provided by the Library.
26 |
27 | A "Combined Work" is a work produced by combining or linking an
28 | Application with the Library. The particular version of the Library
29 | with which the Combined Work was made is also called the "Linked
30 | Version".
31 |
32 | The "Minimal Corresponding Source" for a Combined Work means the
33 | Corresponding Source for the Combined Work, excluding any source code
34 | for portions of the Combined Work that, considered in isolation, are
35 | based on the Application, and not on the Linked Version.
36 |
37 | The "Corresponding Application Code" for a Combined Work means the
38 | object code and/or source code for the Application, including any data
39 | and utility programs needed for reproducing the Combined Work from the
40 | Application, but excluding the System Libraries of the Combined Work.
41 |
42 | 1. Exception to Section 3 of the GNU GPL.
43 |
44 | You may convey a covered work under sections 3 and 4 of this License
45 | without being bound by section 3 of the GNU GPL.
46 |
47 | 2. Conveying Modified Versions.
48 |
49 | If you modify a copy of the Library, and, in your modifications, a
50 | facility refers to a function or data to be supplied by an Application
51 | that uses the facility (other than as an argument passed when the
52 | facility is invoked), then you may convey a copy of the modified
53 | version:
54 |
55 | a) under this License, provided that you make a good faith effort to
56 | ensure that, in the event an Application does not supply the
57 | function or data, the facility still operates, and performs
58 | whatever part of its purpose remains meaningful, or
59 |
60 | b) under the GNU GPL, with none of the additional permissions of
61 | this License applicable to that copy.
62 |
63 | 3. Object Code Incorporating Material from Library Header Files.
64 |
65 | The object code form of an Application may incorporate material from
66 | a header file that is part of the Library. You may convey such object
67 | code under terms of your choice, provided that, if the incorporated
68 | material is not limited to numerical parameters, data structure
69 | layouts and accessors, or small macros, inline functions and templates
70 | (ten or fewer lines in length), you do both of the following:
71 |
72 | a) Give prominent notice with each copy of the object code that the
73 | Library is used in it and that the Library and its use are
74 | covered by this License.
75 |
76 | b) Accompany the object code with a copy of the GNU GPL and this license
77 | document.
78 |
79 | 4. Combined Works.
80 |
81 | You may convey a Combined Work under terms of your choice that,
82 | taken together, effectively do not restrict modification of the
83 | portions of the Library contained in the Combined Work and reverse
84 | engineering for debugging such modifications, if you also do each of
85 | the following:
86 |
87 | a) Give prominent notice with each copy of the Combined Work that
88 | the Library is used in it and that the Library and its use are
89 | covered by this License.
90 |
91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license
92 | document.
93 |
94 | c) For a Combined Work that displays copyright notices during
95 | execution, include the copyright notice for the Library among
96 | these notices, as well as a reference directing the user to the
97 | copies of the GNU GPL and this license document.
98 |
99 | d) Do one of the following:
100 |
101 | 0) Convey the Minimal Corresponding Source under the terms of this
102 | License, and the Corresponding Application Code in a form
103 | suitable for, and under terms that permit, the user to
104 | recombine or relink the Application with a modified version of
105 | the Linked Version to produce a modified Combined Work, in the
106 | manner specified by section 6 of the GNU GPL for conveying
107 | Corresponding Source.
108 |
109 | 1) Use a suitable shared library mechanism for linking with the
110 | Library. A suitable mechanism is one that (a) uses at run time
111 | a copy of the Library already present on the user's computer
112 | system, and (b) will operate properly with a modified version
113 | of the Library that is interface-compatible with the Linked
114 | Version.
115 |
116 | e) Provide Installation Information, but only if you would otherwise
117 | be required to provide such information under section 6 of the
118 | GNU GPL, and only to the extent that such information is
119 | necessary to install and execute a modified version of the
120 | Combined Work produced by recombining or relinking the
121 | Application with a modified version of the Linked Version. (If
122 | you use option 4d0, the Installation Information must accompany
123 | the Minimal Corresponding Source and Corresponding Application
124 | Code. If you use option 4d1, you must provide the Installation
125 | Information in the manner specified by section 6 of the GNU GPL
126 | for conveying Corresponding Source.)
127 |
128 | 5. Combined Libraries.
129 |
130 | You may place library facilities that are a work based on the
131 | Library side by side in a single library together with other library
132 | facilities that are not Applications and are not covered by this
133 | License, and convey such a combined library under terms of your
134 | choice, if you do both of the following:
135 |
136 | a) Accompany the combined library with a copy of the same work based
137 | on the Library, uncombined with any other library facilities,
138 | conveyed under the terms of this License.
139 |
140 | b) Give prominent notice with the combined library that part of it
141 | is a work based on the Library, and explaining where to find the
142 | accompanying uncombined form of the same work.
143 |
144 | 6. Revised Versions of the GNU Lesser General Public License.
145 |
146 | The Free Software Foundation may publish revised and/or new versions
147 | of the GNU Lesser General Public License from time to time. Such new
148 | versions will be similar in spirit to the present version, but may
149 | differ in detail to address new problems or concerns.
150 |
151 | Each version is given a distinguishing version number. If the
152 | Library as you received it specifies that a certain numbered version
153 | of the GNU Lesser General Public License "or any later version"
154 | applies to it, you have the option of following the terms and
155 | conditions either of that published version or of any later version
156 | published by the Free Software Foundation. If the Library as you
157 | received it does not specify a version number of the GNU Lesser
158 | General Public License, you may choose any version of the GNU Lesser
159 | General Public License ever published by the Free Software Foundation.
160 |
161 | If the Library as you received it specifies that a proxy can decide
162 | whether future versions of the GNU Lesser General Public License shall
163 | apply, that proxy's public statement of acceptance of any version is
164 | permanent authorization for you to choose that version for the
165 | Library.
166 |
--------------------------------------------------------------------------------
/GUI/LinuxStyle.qss:
--------------------------------------------------------------------------------
1 | QPushButton {
2 | border-radius: 2px; padding: 3px; width: 70px;
3 | }
4 | QPushButton:enabled{
5 | background-color:rgb(235,235,245); color:black;
6 | border: 1px solid rgb(124,124,124);
7 | }
8 | QPushButton:disabled{
9 | background-color:rgb(203,203,203); color:rgb(156,156,156);
10 | border: 1px solid rgb(185,185,185);
11 | }
12 | QPushButton:checked {
13 | background-color:rgb(173,216,230); color:black;
14 | border: 1px solid rgb(124,124,124);
15 | }
16 | QGroupBox {
17 | margin-top: -9px; padding-top: 18px;
18 | }
19 | QGroupBox::title {
20 | left: 6px; top: 12px;
21 | }
22 | QToolTip {
23 | border: 1px solid black;
24 | background-color: rgb(255,255,220);
25 | }
26 |
--------------------------------------------------------------------------------
/GUI/MacStyle.qss:
--------------------------------------------------------------------------------
1 | QPushButton {
2 | border-radius: 2px; padding: 3px; width: 70px;
3 | }
4 | QPushButton:enabled{
5 | background-color:rgb(235,235,245); color:black;
6 | border: 1px solid rgb(124,124,124);
7 | }
8 | QPushButton:disabled{
9 | background-color:rgb(203,203,203); color:rgb(156,156,156);
10 | border: 1px solid rgb(185,185,185);
11 | }
12 | QPushButton:checked {
13 | background-color:rgb(173,216,230); color:black;
14 | border: 1px solid rgb(124,124,124);
15 | }
16 | QLineEdit:enabled{
17 | background-color:white; color:black;
18 | }
19 | QLineEdit:disabled{
20 | background-color:rgb(236,236,236); color:rgb(176,176,176);
21 | }
22 | QGroupBox {
23 | margin-top: 0px; padding-top: 7px;
24 | }
25 | QToolTip {
26 | border: 1px solid black;
27 | background-color: rgb(255,255,220);
28 | }
29 |
--------------------------------------------------------------------------------
/GUI/MainLogo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/MainLogo.gif
--------------------------------------------------------------------------------
/GUI/Qt_source/Qt_Static_Build_Linux.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/Qt_source/Qt_Static_Build_Linux.pdf
--------------------------------------------------------------------------------
/GUI/Qt_source/Qt_Static_Build_Linux_to_ARM64.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/Qt_source/Qt_Static_Build_Linux_to_ARM64.pdf
--------------------------------------------------------------------------------
/GUI/Qt_source/Qt_Static_Build_Linux_to_ARMv7hf.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/Qt_source/Qt_Static_Build_Linux_to_ARMv7hf.pdf
--------------------------------------------------------------------------------
/GUI/Qt_source/Qt_source.txt:
--------------------------------------------------------------------------------
1 | Qt software, including tools for creating the GUI, compiler and the Qt source can be downloaded from:
2 |
3 | https://download.qt.io/official_releases/qt/
--------------------------------------------------------------------------------
/GUI/WinStyle.qss:
--------------------------------------------------------------------------------
1 | QComboBox {
2 | border-radius: 2px; padding: 3px; width: 70px;
3 | }
4 | QComboBox:enabled{
5 | background-color:rgb(235,235,245); color:black;
6 | border: 1px solid rgb(124,124,124);
7 | }
8 | QComboBox:disabled{
9 | background-color:rgb(203,203,203); color:rgb(156,156,156);
10 | border: 1px solid rgb(185,185,185);
11 | }
12 | QComboBox::drop-down {
13 | border-width: 0px;
14 | }
15 | QComboBox::down-arrow {
16 | image: url(:/data/downarrow.png);
17 | }
18 | QComboBox::down-arrow:disabled {
19 | image: url(:/data/downarrow_disabled.png);
20 | }
21 | QToolTip {
22 | border: 1px solid black;
23 | background-color: rgb(255,255,220);
24 | }
25 |
--------------------------------------------------------------------------------
/GUI/antenna_advanced.h:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 | #ifndef ANTENNA_ADVANCED_H
16 | #define ANTENNA_ADVANCED_H
17 |
18 | #include
19 | #include
20 | #include
21 | //#include
22 | #include
23 | #include
24 | #include "glab_const.h"
25 |
26 | namespace Ui {
27 | class GNSS_Antenna_Advanced;
28 | }
29 |
30 | class GNSS_Antenna_Advanced : public QDialog
31 | {
32 | Q_OBJECT
33 |
34 | public:
35 | explicit GNSS_Antenna_Advanced(QWidget *parent = nullptr);
36 | ~GNSS_Antenna_Advanced();
37 |
38 | public:
39 | //This is a definition of a variable with a pointer to a function type "void" with no parameters for class gLAB_GUI
40 | typedef void (GNSS_Antenna_Advanced::*VoidNoParamFuncPointer)();
41 | //Declare array of pointers to pushButton of GERSCJI
42 | QPushButton *PushButtonGNSS[MAX_GNSS];
43 | //Declare array of pointer to pushButton GNSS SNR _clicked() functions
44 | VoidNoParamFuncPointer PushButtonGNSSFunctions[MAX_GNSS];
45 | //Declare array of pointers to Specify RadioButton GERSCJI
46 | QRadioButton *RadioGNSSSpecify[MAX_GNSS][MAX_GNSS_FREQ];
47 | //Declare array of pointers to Copy RadioButton GERSCJI
48 | QRadioButton *RadioGNSSCopyFrom[MAX_GNSS][MAX_GNSS_FREQ];
49 | //Declare array of pointers to LineEdit of frequency's NEU of GERSCJI
50 | QLineEdit *LineEditGNSSNEU[MAX_GNSS][MAX_GNSS_FREQ][3];
51 | //Declare array of pointers to comboBox of constellations GERSCJI
52 | QComboBox *ComboBoxAPCSameAsConst[MAX_GNSS][MAX_GNSS_FREQ];
53 | //Declare array of pointers to comboBox of frequencies per constellation GERSCJI
54 | QComboBox *ComboBoxAPCSameAsFreq[MAX_GNSS][MAX_GNSS_FREQ][MAX_GNSS];
55 |
56 | int OkFlag;
57 |
58 | private slots:
59 | void InitPushButtonGNSSPointers();
60 | void InitPushButtonGNSSMinFuncPointers();
61 | void InitAPCPointers();
62 |
63 |
64 |
65 | void on_pushButtonGPS_clicked();
66 | void on_pushButtonGalileo_clicked();
67 | void on_pushButtonGLONASS_clicked();
68 | void on_pushButtonGEO_clicked();
69 | void on_pushButtonBDS_clicked();
70 | void on_pushButtonQZSS_clicked();
71 | void on_pushButtonIRNSS_clicked();
72 |
73 | //GPS
74 | void SetDefaultAPCGPS();
75 | void on_radioButtonAPCReadF1GPS_clicked();
76 | void on_radioButtonAPCSpecifyF1GPS_clicked();
77 | void on_radioButtonAPCCopyF1GPS_clicked();
78 | void on_radioButtonAPCReadF2GPS_clicked();
79 | void on_radioButtonAPCCopyF2GPS_clicked();
80 | void on_radioButtonAPCSpecifyF2GPS_clicked();
81 | void on_radioButtonAPCReadF5GPS_clicked();
82 | void on_radioButtonAPCSpecifyF5GPS_clicked();
83 | void on_radioButtonAPCCopyF5GPS_clicked();
84 | void on_comboBoxAPCSameAsGPSF1Const_currentIndexChanged(int index);
85 | void on_comboBoxAPCSameAsGPSF2Const_currentIndexChanged(int index);
86 | void on_comboBoxAPCSameAsGPSF5Const_currentIndexChanged(int index);
87 | //Galileo
88 | void SetDefaultAPCGalileo();
89 | void on_radioButtonAPCReadF1Galileo_clicked();
90 | void on_radioButtonAPCSpecifyF1Galileo_clicked();
91 | void on_radioButtonAPCCopyF1Galileo_clicked();
92 | void on_radioButtonAPCReadF5Galileo_clicked();
93 | void on_radioButtonAPCSpecifyF5Galileo_clicked();
94 | void on_radioButtonAPCCopyF5Galileo_clicked();
95 | void on_radioButtonAPCReadF6Galileo_clicked();
96 | void on_radioButtonAPCSpecifyF6Galileo_clicked();
97 | void on_radioButtonAPCCopyF6Galileo_clicked();
98 | void on_radioButtonAPCReadF7Galileo_clicked();
99 | void on_radioButtonAPCSpecifyF7Galileo_clicked();
100 | void on_radioButtonAPCCopyF7Galileo_clicked();
101 | void on_radioButtonAPCReadF8Galileo_clicked();
102 | void on_radioButtonAPCSpecifyF8Galileo_clicked();
103 | void on_radioButtonAPCCopyF8Galileo_clicked();
104 | void on_comboBoxAPCSameAsGalileoF1Const_currentIndexChanged(int index);
105 | void on_comboBoxAPCSameAsGalileoF5Const_currentIndexChanged(int index);
106 | void on_comboBoxAPCSameAsGalileoF6Const_currentIndexChanged(int index);
107 | void on_comboBoxAPCSameAsGalileoF7Const_currentIndexChanged(int index);
108 | void on_comboBoxAPCSameAsGalileoF8Const_currentIndexChanged(int index);
109 | //GLONASS
110 | void SetDefaultAPCGLONASS();
111 | void on_radioButtonAPCReadF1GLONASS_clicked();
112 | void on_radioButtonAPCSpecifyF1GLONASS_clicked();
113 | void on_radioButtonAPCCopyF1GLONASS_clicked();
114 | void on_radioButtonAPCReadF2GLONASS_clicked();
115 | void on_radioButtonAPCSpecifyF2GLONASS_clicked();
116 | void on_radioButtonAPCCopyF2GLONASS_clicked();
117 | void on_radioButtonAPCReadF3GLONASS_clicked();
118 | void on_radioButtonAPCSpecifyF3GLONASS_clicked();
119 | void on_radioButtonAPCCopyF3GLONASS_clicked();
120 | void on_radioButtonAPCReadF4GLONASS_clicked();
121 | void on_radioButtonAPCSpecifyF4GLONASS_clicked();
122 | void on_radioButtonAPCCopyF4GLONASS_clicked();
123 | void on_radioButtonAPCReadF6GLONASS_clicked();
124 | void on_radioButtonAPCSpecifyF6GLONASS_clicked();
125 | void on_radioButtonAPCCopyF6GLONASS_clicked();
126 | void on_comboBoxAPCSameAsGLONASSF1Const_currentIndexChanged(int index);
127 | void on_comboBoxAPCSameAsGLONASSF2Const_currentIndexChanged(int index);
128 | void on_comboBoxAPCSameAsGLONASSF3Const_currentIndexChanged(int index);
129 | void on_comboBoxAPCSameAsGLONASSF4Const_currentIndexChanged(int index);
130 | void on_comboBoxAPCSameAsGLONASSF6Const_currentIndexChanged(int index);
131 | //GEO
132 | void SetDefaultAPCGEO();
133 | void on_radioButtonAPCReadF1GEO_clicked();
134 | void on_radioButtonAPCSpecifyF1GEO_clicked();
135 | void on_radioButtonAPCCopyF1GEO_clicked();
136 | void on_radioButtonAPCReadF5GEO_clicked();
137 | void on_radioButtonAPCCopyF5GEO_clicked();
138 | void on_radioButtonAPCSpecifyF5GEO_clicked();
139 | void on_comboBoxAPCSameAsGEOF1Const_currentIndexChanged(int index);
140 | void on_comboBoxAPCSameAsGEOF5Const_currentIndexChanged(int index);
141 | //BDS
142 | void SetDefaultAPCBDS();
143 | void on_radioButtonAPCReadF1BDS_clicked();
144 | void on_radioButtonAPCSpecifyF1BDS_clicked();
145 | void on_radioButtonAPCCopyF1BDS_clicked();
146 | void on_radioButtonAPCReadF2BDS_clicked();
147 | void on_radioButtonAPCSpecifyF2BDS_clicked();
148 | void on_radioButtonAPCCopyF2BDS_clicked();
149 | void on_radioButtonAPCReadF5BDS_clicked();
150 | void on_radioButtonAPCSpecifyF5BDS_clicked();
151 | void on_radioButtonAPCCopyF5BDS_clicked();
152 | void on_radioButtonAPCReadF6BDS_clicked();
153 | void on_radioButtonAPCSpecifyF6BDS_clicked();
154 | void on_radioButtonAPCCopyF6BDS_clicked();
155 | void on_radioButtonAPCReadF7BDS_clicked();
156 | void on_radioButtonAPCSpecifyF7BDS_clicked();
157 | void on_radioButtonAPCCopyF7BDS_clicked();
158 | void on_radioButtonAPCReadF8BDS_clicked();
159 | void on_radioButtonAPCSpecifyF8BDS_clicked();
160 | void on_radioButtonAPCCopyF8BDS_clicked();
161 | void on_comboBoxAPCSameAsBDSF1Const_currentIndexChanged(int index);
162 | void on_comboBoxAPCSameAsBDSF2Const_currentIndexChanged(int index);
163 | void on_comboBoxAPCSameAsBDSF5Const_currentIndexChanged(int index);
164 | void on_comboBoxAPCSameAsBDSF6Const_currentIndexChanged(int index);
165 | void on_comboBoxAPCSameAsBDSF7Const_currentIndexChanged(int index);
166 | void on_comboBoxAPCSameAsBDSF8Const_currentIndexChanged(int index);
167 | //QZSS
168 | void SetDefaultAPCQZSS();
169 | void on_radioButtonAPCReadF1QZSS_clicked();
170 | void on_radioButtonAPCSpecifyF1QZSS_clicked();
171 | void on_radioButtonAPCCopyF1QZSS_clicked();
172 | void on_radioButtonAPCReadF2QZSS_clicked();
173 | void on_radioButtonAPCSpecifyF2QZSS_clicked();
174 | void on_radioButtonAPCCopyF2QZSS_clicked();
175 | void on_radioButtonAPCReadF5QZSS_clicked();
176 | void on_radioButtonAPCSpecifyF5QZSS_clicked();
177 | void on_radioButtonAPCCopyF5QZSS_clicked();
178 | void on_radioButtonAPCReadF6QZSS_clicked();
179 | void on_radioButtonAPCSpecifyF6QZSS_clicked();
180 | void on_radioButtonAPCCopyF6QZSS_clicked();
181 | void on_comboBoxAPCSameAsQZSSF1Const_currentIndexChanged(int index);
182 | void on_comboBoxAPCSameAsQZSSF2Const_currentIndexChanged(int index);
183 | void on_comboBoxAPCSameAsQZSSF5Const_currentIndexChanged(int index);
184 | void on_comboBoxAPCSameAsQZSSF6Const_currentIndexChanged(int index);
185 | //IRNSS
186 | void SetDefaultAPCIRNSS();
187 | void on_radioButtonAPCReadF5IRNSS_clicked();
188 | void on_radioButtonAPCSpecifyF5IRNSS_clicked();
189 | void on_radioButtonAPCCopyF5IRNSS_clicked();
190 | void on_radioButtonAPCReadF9IRNSS_clicked();
191 | void on_radioButtonAPCSpecifyF9IRNSS_clicked();
192 | void on_radioButtonAPCCopyF9IRNSS_clicked();
193 | void on_comboBoxAPCSameAsIRNSSF5Const_currentIndexChanged(int index);
194 | void on_comboBoxAPCSameAsIRNSSF9Const_currentIndexChanged(int index);
195 |
196 | void on_pushButtonAntAdvancedDefault_clicked();
197 | void on_pushButtonAntAdvancedOk_clicked();
198 | void on_pushButtonAntAdvancedCancel_clicked();
199 |
200 | public:
201 | void changePushButtonGPS(bool checked);
202 | void changePushButtonGalileo(bool checked);
203 | void changePushButtonGLONASS(bool checked);
204 | void changePushButtonGEO(bool checked);
205 | void changePushButtonBDS(bool checked);
206 | void changePushButtonQZSS(bool checked);
207 | void changePushButtonIRNSS(bool checked);
208 | void on_pushButtonPublicGPS_clicked();
209 | void on_pushButtonPublicGalileo_clicked();
210 | void on_pushButtonPublicGLONASS_clicked();
211 | void on_pushButtonPublicGEO_clicked();
212 | void on_pushButtonPublicBDS_clicked();
213 | void on_pushButtonPublicQZSS_clicked();
214 | void on_pushButtonPublicIRNSS_clicked();
215 |
216 | void setAPCdefaults();
217 |
218 | void changeCurrentPage();
219 |
220 | void getgLABOptions(QString *errorString, QString *warningString, QString *saveString, QStringList *runString);
221 | void loadgLABOptions(QString *warningString, QStringList *ParametersList);
222 |
223 | private:
224 | Ui::GNSS_Antenna_Advanced *UiAntenna;
225 | };
226 |
227 | #endif // ANTENNA_ADVANCED_H
228 |
--------------------------------------------------------------------------------
/GUI/config.xlaunch:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/GUI/coord_converter.cpp:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 | #include "coord_converter.h"
16 | #include "ui_coord_converter.h"
17 | #include "math.h"
18 |
19 | GNSS_Coord_converter::GNSS_Coord_converter(QWidget *parent) :
20 | QDialog(parent),
21 | uiCoord(new Ui::GNSS_Coord_converter)
22 | {
23 | uiCoord->setupUi(this);
24 |
25 | // Set StyleSheet
26 | #if (defined Q_OS_WIN32)
27 | QFile qss(":/data/WinStyle.qss");
28 | qss.open(QFile::ReadOnly);
29 | this->setStyleSheet(qss.readAll());
30 | qss.close();
31 | #elif (defined Q_OS_MAC)
32 | QFile qss(":/data/MacStyle.qss");
33 | qss.open(QFile::ReadOnly);
34 | this->setStyleSheet(qss.readAll());
35 | qss.close();
36 | #else
37 | QFile qss(":/data/LinuxStyle.qss");
38 | qss.open(QFile::ReadOnly);
39 | this->setStyleSheet(qss.readAll());
40 | qss.close();
41 | #endif
42 |
43 | #ifdef Q_OS_WIN32
44 | setMaximumWidth(700);
45 | setMinimumWidth(700);
46 | #elif defined Q_OS_MAC
47 | setMaximumWidth(800);
48 | setMinimumWidth(800);
49 | #endif
50 |
51 | QLocale qlocale(QLocale::C);
52 | qlocale.setNumberOptions(QLocale::RejectGroupSeparator);
53 | auto ldouble = new QDoubleValidator(-100000000, 100000000,6, this);
54 | ldouble->setLocale(qlocale); // lineEdit validation for coordinates XYZ
55 | auto ldoublePositive = new QDoubleValidator(0, 100000000,6, this);
56 | ldoublePositive->setLocale(qlocale); // lineEdit validation
57 | auto ldoubleHeight = new QDoubleValidator(-10000, 100000000,6, this);
58 | ldoubleHeight->setLocale(qlocale); // lineEdit validation for Geocentric Height (-10Km onwards)
59 | auto lLongitude = new QDoubleValidator(-180, 180,14, this);
60 | lLongitude->setLocale(qlocale); // lineEdit validation for longitude
61 | auto lLatitude = new QDoubleValidator(-90, 90,14, this);
62 | lLatitude->setLocale(qlocale); // lineEdit validation for longitude
63 |
64 | uiCoord->lineEditCoordConvX->setValidator(ldouble);
65 | uiCoord->lineEditCoordConvY->setValidator(ldouble);
66 | uiCoord->lineEditCoordConvZ->setValidator(ldouble);
67 | uiCoord->lineEditCoordConvGeodLon->setValidator(lLongitude);
68 | uiCoord->lineEditCoordConvGeodLat->setValidator(lLatitude);
69 | uiCoord->lineEditCoordConvGeodHeight->setValidator(ldoubleHeight);
70 | uiCoord->lineEditCoordConvGeocLon->setValidator(lLongitude);
71 | uiCoord->lineEditCoordConvGeocLat->setValidator(lLatitude);
72 | uiCoord->lineEditCoordConvGeocRadius->setValidator(ldoublePositive);
73 |
74 | uiCoord->lineEditCoordConvX->setText("6378137.0000");
75 | uiCoord->lineEditCoordConvY->setText("0");
76 | uiCoord->lineEditCoordConvZ->setText("0");
77 | this->on_lineEditCoordConvX_textEdited();
78 |
79 | }
80 |
81 | GNSS_Coord_converter::~GNSS_Coord_converter()
82 | {
83 | delete uiCoord;
84 | }
85 |
86 | void GNSS_Coord_converter::on_pushButtonCoordConvClose_clicked()
87 | {
88 | this->close();
89 | }
90 |
91 | void GNSS_Coord_converter::on_lineEditCoordConvX_textEdited()
92 | {
93 | double positionXYZ[3];
94 | double positionGeod[3];
95 | double positionGeoc[3];
96 |
97 | if (uiCoord->lineEditCoordConvX->text()==""|| uiCoord->lineEditCoordConvY->text()==""|| uiCoord->lineEditCoordConvZ->text()=="") {
98 | return;
99 | }
100 | positionXYZ[0]=uiCoord->lineEditCoordConvX->text().toDouble();
101 | positionXYZ[1]=uiCoord->lineEditCoordConvY->text().toDouble();
102 | positionXYZ[2]=uiCoord->lineEditCoordConvZ->text().toDouble();
103 |
104 | //Get geodesic coordinates
105 | this->XYZ2Geod(positionXYZ,positionGeod);
106 | //Get geocentric coordinates
107 | this->XYZ2Geoc(positionXYZ,positionGeoc);
108 |
109 | //Set geodesic coordinates
110 | uiCoord->lineEditCoordConvGeodLon->setText(QString("%1").arg(positionGeod[1]*r2d,0,'f',10));
111 | uiCoord->lineEditCoordConvGeodLat->setText(QString("%1").arg(positionGeod[0]*r2d,0,'f',10));
112 | uiCoord->lineEditCoordConvGeodHeight->setText(QString("%1").arg(positionGeod[2],0,'f',4));
113 |
114 | //Set geocentric coordinates
115 | uiCoord->lineEditCoordConvGeocLon->setText(QString("%1").arg(positionGeoc[1]*r2d,0,'f',10));
116 | uiCoord->lineEditCoordConvGeocLat->setText(QString("%1").arg(positionGeoc[0]*r2d,0,'f',10));
117 | uiCoord->lineEditCoordConvGeocRadius->setText(QString("%1").arg(positionGeoc[2],0,'f',4));
118 | }
119 |
120 | void GNSS_Coord_converter::on_lineEditCoordConvY_textEdited()
121 | {
122 | this->on_lineEditCoordConvX_textEdited();
123 | }
124 |
125 | void GNSS_Coord_converter::on_lineEditCoordConvZ_textEdited()
126 | {
127 | this->on_lineEditCoordConvX_textEdited();
128 | }
129 |
130 | void GNSS_Coord_converter::on_lineEditCoordConvGeodLon_textEdited()
131 | {
132 | double positionXYZ[3];
133 | double positionGeod[3];
134 | double positionGeoc[3];
135 |
136 | if (uiCoord->lineEditCoordConvGeodLat->text()==""|| uiCoord->lineEditCoordConvGeodLon->text()==""|| uiCoord->lineEditCoordConvGeodHeight->text()=="") {
137 | return;
138 | }
139 |
140 | positionGeod[0]=uiCoord->lineEditCoordConvGeodLat->text().toDouble()*d2r;
141 | positionGeod[1]=uiCoord->lineEditCoordConvGeodLon->text().toDouble()*d2r;
142 | positionGeod[2]=uiCoord->lineEditCoordConvGeodHeight->text().toDouble();
143 |
144 | //Get cartesian coordinates
145 | this->Geod2XYZ(positionGeod,positionXYZ);
146 | //Get geocentric coordinates
147 | this->XYZ2Geoc(positionXYZ,positionGeoc);
148 |
149 | //Set cartesian coordinates
150 | uiCoord->lineEditCoordConvX->setText(QString("%1").arg(positionXYZ[0],0,'f',4));
151 | uiCoord->lineEditCoordConvY->setText(QString("%1").arg(positionXYZ[1],0,'f',4));
152 | uiCoord->lineEditCoordConvZ->setText(QString("%1").arg(positionXYZ[2],0,'f',4));
153 |
154 | //Set geocentric coordinates
155 | uiCoord->lineEditCoordConvGeocLon->setText(QString("%1").arg(positionGeoc[1]*r2d,0,'f',10));
156 | uiCoord->lineEditCoordConvGeocLat->setText(QString("%1").arg(positionGeoc[0]*r2d,0,'f',10));
157 | uiCoord->lineEditCoordConvGeocRadius->setText(QString("%1").arg(positionGeoc[2],0,'f',4));
158 |
159 | }
160 |
161 | void GNSS_Coord_converter::on_lineEditCoordConvGeodLat_textEdited()
162 | {
163 | this->on_lineEditCoordConvGeodLon_textEdited();
164 | }
165 |
166 | void GNSS_Coord_converter::on_lineEditCoordConvGeodHeight_textEdited()
167 | {
168 | this->on_lineEditCoordConvGeodLon_textEdited();
169 | }
170 |
171 | void GNSS_Coord_converter::on_lineEditCoordConvGeocLon_textEdited()
172 | {
173 | double positionXYZ[3];
174 | double positionGeod[3];
175 | double positionGeoc[3];
176 |
177 | if (uiCoord->lineEditCoordConvGeocLat->text()==""|| uiCoord->lineEditCoordConvGeocLon->text()==""|| uiCoord->lineEditCoordConvGeocRadius->text()=="") {
178 | return;
179 | }
180 |
181 | positionGeoc[0]=uiCoord->lineEditCoordConvGeocLat->text().toDouble()*d2r;
182 | positionGeoc[1]=uiCoord->lineEditCoordConvGeocLon->text().toDouble()*d2r;
183 | positionGeoc[2]=uiCoord->lineEditCoordConvGeocRadius->text().toDouble();
184 |
185 | //Get cartesian coordinates
186 | this->Geoc2XYZ(positionGeoc,positionXYZ);
187 | //Get geodetic coordinates
188 | this->XYZ2Geod(positionXYZ,positionGeod);
189 |
190 | //Set cartesian coordinates
191 | uiCoord->lineEditCoordConvX->setText(QString("%1").arg(positionXYZ[0],0,'f',4));
192 | uiCoord->lineEditCoordConvY->setText(QString("%1").arg(positionXYZ[1],0,'f',4));
193 | uiCoord->lineEditCoordConvZ->setText(QString("%1").arg(positionXYZ[2],0,'f',4));
194 |
195 | //Set geodesic coordinates
196 | uiCoord->lineEditCoordConvGeodLon->setText(QString("%1").arg(positionGeod[1]*r2d,0,'f',10));
197 | uiCoord->lineEditCoordConvGeodLat->setText(QString("%1").arg(positionGeod[0]*r2d,0,'f',10));
198 | uiCoord->lineEditCoordConvGeodHeight->setText(QString("%1").arg(positionGeod[2],0,'f',4));
199 |
200 | }
201 |
202 | void GNSS_Coord_converter::on_lineEditCoordConvGeocLat_textEdited()
203 | {
204 | this->on_lineEditCoordConvGeocLon_textEdited();
205 | }
206 |
207 | void GNSS_Coord_converter::on_lineEditCoordConvGeocRadius_textEdited()
208 | {
209 | this->on_lineEditCoordConvGeocLon_textEdited();
210 | }
211 |
212 | ////////////////////////////////////////////////////
213 | // Coordinate Conversion functions
214 |
215 | //Convert XYZ to Geodetic
216 | void GNSS_Coord_converter::XYZ2Geod (double *positionXYZ, double *positionNEU) {
217 | const double tol = 1e-11;
218 | const double a = 6378137.; //a = EARTH_RADIUS = 6378137.
219 | const double f = 1/298.257223563;
220 | const double b = a*(1-f);
221 | const double e2 = (a*a-b*b)/(a*a);
222 | double p;
223 | double longitude;
224 | double latitude,latitudePrev;
225 | double xn;
226 | double heightOverElipsoide=0.;
227 |
228 | // WGS84 parameters (in meters)
229 | //positionNEU[0] -> latitude (rad)
230 | //positionNEU[1] -> longitude (rad)
231 | //positionNEU[2] -> height (m)
232 |
233 | longitude = atan2(positionXYZ[1],positionXYZ[0]);
234 | p = sqrt(positionXYZ[0]*positionXYZ[0]+positionXYZ[1]*positionXYZ[1]);
235 | if (p==0) p=0.00001;
236 | latitude = atan((positionXYZ[2]/p)/(1-e2));
237 |
238 | latitudePrev = latitude + tol*2; // To overbound the following while
239 | while (fabs(latitude-latitudePrev) > tol) {
240 | latitudePrev = latitude;
241 | xn = a*a/sqrt((a*cos(latitude))*(a*cos(latitude)) + (b*sin(latitude))*(b*sin(latitude)));
242 | heightOverElipsoide = p/cos(latitude)-xn;
243 | if ((xn+heightOverElipsoide)!=0)
244 | latitude = atan((positionXYZ[2]/p)/(1-e2*(xn/(xn+heightOverElipsoide))));
245 | else
246 | latitude = 0;
247 | }
248 |
249 | positionNEU[0] = latitude;
250 | positionNEU[1] = longitude;
251 | positionNEU[2] = heightOverElipsoide;
252 | }
253 |
254 | //Convert Geodetic to XYZ
255 | void GNSS_Coord_converter::Geod2XYZ (double *positionNEU, double *positionXYZ) {
256 | const double a = 6378137.; //a = EARTH_RADIUS = 6378137.
257 | const double f = 1/298.257223563;
258 | const double b = a*(1-f);
259 | const double e2 = (a*a-b*b)/(a*a);
260 | double N;
261 |
262 | // WGS84 parameters (in meters)
263 | //positionNEU[0] -> latitude (rad)
264 | //positionNEU[1] -> longitude (rad)
265 | //positionNEU[2] -> height (m)
266 |
267 |
268 | N=a/sqrt(1-e2*sin(positionNEU[0])*sin(positionNEU[0]));
269 |
270 | positionXYZ[0] = (N+positionNEU[2])*cos(positionNEU[0])*cos(positionNEU[1]);
271 | positionXYZ[1] = (N+positionNEU[2])*cos(positionNEU[0])*sin(positionNEU[1]);
272 | positionXYZ[2] = ((1-e2)*N+positionNEU[2])*sin(positionNEU[0]);
273 | }
274 |
275 |
276 | //Convert XYZ to Geocentric
277 | void GNSS_Coord_converter::XYZ2Geoc(double *positionXYZ, double *positionGeoc) {
278 |
279 | //positionGeoc[0] -> latitude (rad)
280 | //positionGeoc[1] -> longitude (rad)
281 | //positionGeoc[2] -> radius (m)
282 | //positionGeoc[0]=atan2(sqrt(positionXYZ[0]*positionXYZ[0]+positionXYZ[1]*positionXYZ[1]),positionXYZ[2]);
283 | if (positionXYZ[2]==0.) {
284 | positionGeoc[0]=0;
285 | } else {
286 | positionGeoc[0]=asin(positionXYZ[2]/(sqrt(positionXYZ[0]*positionXYZ[0]+positionXYZ[1]*positionXYZ[1]+positionXYZ[2]*positionXYZ[2])));
287 | }
288 | positionGeoc[1]=atan2(positionXYZ[1],positionXYZ[0]);
289 | positionGeoc[2]=sqrt(positionXYZ[0]*positionXYZ[0]+positionXYZ[1]*positionXYZ[1]+positionXYZ[2]*positionXYZ[2]);
290 |
291 | }
292 |
293 | //Convert Geocentric to XYZ
294 | void GNSS_Coord_converter::Geoc2XYZ(double *positionGeoc, double *positionXYZ) {
295 |
296 | //positionGeoc[0] -> latitude (rad)
297 | //positionGeoc[1] -> longitude (rad)
298 | //positionGeoc[2] -> radius (m)
299 | positionXYZ[0]=positionGeoc[2]*cos(positionGeoc[0])*cos(positionGeoc[1]);
300 | positionXYZ[1]=positionGeoc[2]*cos(positionGeoc[0])*sin(positionGeoc[1]);
301 | positionXYZ[2]=positionGeoc[2]*sin(positionGeoc[0]);
302 | }
303 |
--------------------------------------------------------------------------------
/GUI/coord_converter.h:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 |
16 | #ifndef COORD_CONVERTER_H
17 | #define COORD_CONVERTER_H
18 |
19 | #include
20 | #include
21 | #include
22 | #include
23 | #include
24 | //#include
25 |
26 | #define Pi 3.14159265358979
27 | #define d2r (Pi/180.)
28 | #define r2d (180./Pi)
29 |
30 | namespace Ui {
31 | class GNSS_Coord_converter;
32 | }
33 |
34 | class GNSS_Coord_converter : public QDialog
35 | {
36 | Q_OBJECT
37 |
38 | public:
39 | explicit GNSS_Coord_converter(QWidget *parent = 0);
40 | ~GNSS_Coord_converter();
41 |
42 | private slots:
43 | void on_pushButtonCoordConvClose_clicked();
44 | void on_lineEditCoordConvX_textEdited();
45 | void on_lineEditCoordConvY_textEdited();
46 | void on_lineEditCoordConvZ_textEdited();
47 | void on_lineEditCoordConvGeodLon_textEdited();
48 | void on_lineEditCoordConvGeodLat_textEdited();
49 | void on_lineEditCoordConvGeodHeight_textEdited();
50 | void on_lineEditCoordConvGeocLon_textEdited();
51 | void on_lineEditCoordConvGeocLat_textEdited();
52 | void on_lineEditCoordConvGeocRadius_textEdited();
53 | void XYZ2Geod(double *positionXYZ, double *positionNEU);
54 | void Geod2XYZ(double *positionNEU, double *positionXYZ);
55 | void XYZ2Geoc(double *positionXYZ, double *positionGeoc);
56 | void Geoc2XYZ(double *positionGeoc, double *positionXYZ);
57 |
58 | private:
59 | Ui::GNSS_Coord_converter *uiCoord;
60 | };
61 |
62 | #endif // COORD_CONVERTER_H
63 |
--------------------------------------------------------------------------------
/GUI/cs_sf_advanced.h:
--------------------------------------------------------------------------------
1 | #ifndef CS_SF_ADVANCED_H
2 | #define CS_SF_ADVANCED_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include "glab_const.h"
8 |
9 | namespace Ui {
10 | class GNSS_CS_SF_Advanced;
11 | }
12 |
13 | class GNSS_CS_SF_Advanced : public QDialog
14 | {
15 | Q_OBJECT
16 |
17 | public:
18 | explicit GNSS_CS_SF_Advanced(QWidget *parent = nullptr);
19 | ~GNSS_CS_SF_Advanced();
20 |
21 | public:
22 | //This is a definition of a variable with a pointer to a function type "void" with no parameters for class gLAB_GUI
23 | typedef void (GNSS_CS_SF_Advanced::*VoidNoParamFuncPointer)();
24 | //Declare array of pointers to pushButton of GERSCJI
25 | QPushButton *PushButtonGNSS[MAX_GNSS];
26 | //Declare array of pointer to pushButton GNSS _clicked() functions
27 | VoidNoParamFuncPointer PushButtonGNSSFunctions[MAX_GNSS];
28 | //Declare array of pointers to Frame of combinations of GERSCJI
29 | QWidget *FrameCombGNSS[MAX_GNSS][3];
30 | //Declare array of pointers to ComboBox of frequencies of GERSCJI
31 | QComboBox *ComboBoxFreqGNSS[MAX_GNSS][3];
32 | //Declare array of pointers to ComboBox of measurements (1: code1, 2: phase1) of GERSCJI
33 | QComboBox *ComboBoxMeasGNSS[MAX_GNSS][3][2][MAX_GNSS_FREQ];
34 |
35 | int OkFlag;
36 |
37 | private slots:
38 | void InitPushButtonGNSSPointers();
39 | void InitPushButtonGNSSMinFuncPointers();
40 | void InitCombinationPointers();
41 |
42 | void on_pushButtonGPS_clicked();
43 | void on_pushButtonGalileo_clicked();
44 | void on_pushButtonGLONASS_clicked();
45 | void on_pushButtonGEO_clicked();
46 | void on_pushButtonBDS_clicked();
47 | void on_pushButtonQZSS_clicked();
48 | void on_pushButtonIRNSS_clicked();
49 |
50 | //GPS
51 | void SetDefaultGPS();
52 | void on_pushButtonSFGPSAdd_clicked();
53 | void on_pushButtonSFGPSDel_clicked();
54 | void on_comboBoxSFComb1Freq1GPS_currentIndexChanged(int index);
55 | void on_comboBoxSFComb1Code1F1MeasGPS_currentIndexChanged(int index);
56 | void on_comboBoxSFComb1Code1F2MeasGPS_currentIndexChanged(int index);
57 | void on_comboBoxSFComb1Code1F5MeasGPS_currentIndexChanged(int index);
58 | void on_comboBoxSFComb1Phase1F1MeasGPS_currentIndexChanged(int index);
59 | void on_comboBoxSFComb1Phase1F2MeasGPS_currentIndexChanged(int index);
60 | void on_comboBoxSFComb1Phase1F5MeasGPS_currentIndexChanged(int index);
61 | void on_comboBoxSFComb2Freq1GPS_currentIndexChanged(int index);
62 | void on_comboBoxSFComb2Code1F1MeasGPS_currentIndexChanged(int index);
63 | void on_comboBoxSFComb2Code1F2MeasGPS_currentIndexChanged(int index);
64 | void on_comboBoxSFComb2Code1F5MeasGPS_currentIndexChanged(int index);
65 | void on_comboBoxSFComb2Phase1F1MeasGPS_currentIndexChanged(int index);
66 | void on_comboBoxSFComb2Phase1F2MeasGPS_currentIndexChanged(int index);
67 | void on_comboBoxSFComb2Phase1F5MeasGPS_currentIndexChanged(int index);
68 | void on_comboBoxSFComb3Freq1GPS_currentIndexChanged(int index);
69 | void on_comboBoxSFComb3Code1F1MeasGPS_currentIndexChanged(int index);
70 | void on_comboBoxSFComb3Code1F2MeasGPS_currentIndexChanged(int index);
71 | void on_comboBoxSFComb3Code1F5MeasGPS_currentIndexChanged(int index);
72 | void on_comboBoxSFComb3Phase1F1MeasGPS_currentIndexChanged(int index);
73 | void on_comboBoxSFComb3Phase1F2MeasGPS_currentIndexChanged(int index);
74 | void on_comboBoxSFComb3Phase1F5MeasGPS_currentIndexChanged(int index);
75 |
76 | //Galileo
77 | void SetDefaultGalileo();
78 | void on_pushButtonSFGalileoAdd_clicked();
79 | void on_pushButtonSFGalileoDel_clicked();
80 | void on_comboBoxSFComb1Freq1Galileo_currentIndexChanged(int index);
81 | void on_comboBoxSFComb1Code1F1MeasGalileo_currentIndexChanged(int index);
82 | void on_comboBoxSFComb1Code1F5MeasGalileo_currentIndexChanged(int index);
83 | void on_comboBoxSFComb1Code1F6MeasGalileo_currentIndexChanged(int index);
84 | void on_comboBoxSFComb1Code1F7MeasGalileo_currentIndexChanged(int index);
85 | void on_comboBoxSFComb1Code1F8MeasGalileo_currentIndexChanged(int index);
86 | void on_comboBoxSFComb1Phase1F1MeasGalileo_currentIndexChanged(int index);
87 | void on_comboBoxSFComb1Phase1F5MeasGalileo_currentIndexChanged(int index);
88 | void on_comboBoxSFComb1Phase1F6MeasGalileo_currentIndexChanged(int index);
89 | void on_comboBoxSFComb1Phase1F7MeasGalileo_currentIndexChanged(int index);
90 | void on_comboBoxSFComb1Phase1F8MeasGalileo_currentIndexChanged(int index);
91 | void on_comboBoxSFComb2Freq1Galileo_currentIndexChanged(int index);
92 | void on_comboBoxSFComb2Code1F1MeasGalileo_currentIndexChanged(int index);
93 | void on_comboBoxSFComb2Code1F5MeasGalileo_currentIndexChanged(int index);
94 | void on_comboBoxSFComb2Code1F6MeasGalileo_currentIndexChanged(int index);
95 | void on_comboBoxSFComb2Code1F7MeasGalileo_currentIndexChanged(int index);
96 | void on_comboBoxSFComb2Code1F8MeasGalileo_currentIndexChanged(int index);
97 | void on_comboBoxSFComb2Phase1F1MeasGalileo_currentIndexChanged(int index);
98 | void on_comboBoxSFComb2Phase1F5MeasGalileo_currentIndexChanged(int index);
99 | void on_comboBoxSFComb2Phase1F6MeasGalileo_currentIndexChanged(int index);
100 | void on_comboBoxSFComb2Phase1F7MeasGalileo_currentIndexChanged(int index);
101 | void on_comboBoxSFComb2Phase1F8MeasGalileo_currentIndexChanged(int index);
102 | void on_comboBoxSFComb3Freq1Galileo_currentIndexChanged(int index);
103 | void on_comboBoxSFComb3Code1F1MeasGalileo_currentIndexChanged(int index);
104 | void on_comboBoxSFComb3Code1F5MeasGalileo_currentIndexChanged(int index);
105 | void on_comboBoxSFComb3Code1F6MeasGalileo_currentIndexChanged(int index);
106 | void on_comboBoxSFComb3Code1F7MeasGalileo_currentIndexChanged(int index);
107 | void on_comboBoxSFComb3Code1F8MeasGalileo_currentIndexChanged(int index);
108 | void on_comboBoxSFComb3Phase1F1MeasGalileo_currentIndexChanged(int index);
109 | void on_comboBoxSFComb3Phase1F5MeasGalileo_currentIndexChanged(int index);
110 | void on_comboBoxSFComb3Phase1F6MeasGalileo_currentIndexChanged(int index);
111 | void on_comboBoxSFComb3Phase1F7MeasGalileo_currentIndexChanged(int index);
112 | void on_comboBoxSFComb3Phase1F8MeasGalileo_currentIndexChanged(int index);
113 |
114 | //GLONASS
115 | void SetDefaultGLONASS();
116 | void on_pushButtonSFGLONASSAdd_clicked();
117 | void on_pushButtonSFGLONASSDel_clicked();
118 | void on_comboBoxSFComb1Freq1GLONASS_currentIndexChanged(int index);
119 | void on_comboBoxSFComb1Code1F1MeasGLONASS_currentIndexChanged(int index);
120 | void on_comboBoxSFComb1Code1F2MeasGLONASS_currentIndexChanged(int index);
121 | void on_comboBoxSFComb1Code1F3MeasGLONASS_currentIndexChanged(int index);
122 | void on_comboBoxSFComb1Code1F4MeasGLONASS_currentIndexChanged(int index);
123 | void on_comboBoxSFComb1Code1F6MeasGLONASS_currentIndexChanged(int index);
124 | void on_comboBoxSFComb1Phase1F1MeasGLONASS_currentIndexChanged(int index);
125 | void on_comboBoxSFComb1Phase1F2MeasGLONASS_currentIndexChanged(int index);
126 | void on_comboBoxSFComb1Phase1F3MeasGLONASS_currentIndexChanged(int index);
127 | void on_comboBoxSFComb1Phase1F4MeasGLONASS_currentIndexChanged(int index);
128 | void on_comboBoxSFComb1Phase1F6MeasGLONASS_currentIndexChanged(int index);
129 | void on_comboBoxSFComb2Freq1GLONASS_currentIndexChanged(int index);
130 | void on_comboBoxSFComb2Code1F1MeasGLONASS_currentIndexChanged(int index);
131 | void on_comboBoxSFComb2Code1F2MeasGLONASS_currentIndexChanged(int index);
132 | void on_comboBoxSFComb2Code1F3MeasGLONASS_currentIndexChanged(int index);
133 | void on_comboBoxSFComb2Code1F4MeasGLONASS_currentIndexChanged(int index);
134 | void on_comboBoxSFComb2Code1F6MeasGLONASS_currentIndexChanged(int index);
135 | void on_comboBoxSFComb2Phase1F1MeasGLONASS_currentIndexChanged(int index);
136 | void on_comboBoxSFComb2Phase1F2MeasGLONASS_currentIndexChanged(int index);
137 | void on_comboBoxSFComb2Phase1F3MeasGLONASS_currentIndexChanged(int index);
138 | void on_comboBoxSFComb2Phase1F4MeasGLONASS_currentIndexChanged(int index);
139 | void on_comboBoxSFComb2Phase1F6MeasGLONASS_currentIndexChanged(int index);
140 | void on_comboBoxSFComb3Freq1GLONASS_currentIndexChanged(int index);
141 | void on_comboBoxSFComb3Code1F1MeasGLONASS_currentIndexChanged(int index);
142 | void on_comboBoxSFComb3Code1F2MeasGLONASS_currentIndexChanged(int index);
143 | void on_comboBoxSFComb3Code1F3MeasGLONASS_currentIndexChanged(int index);
144 | void on_comboBoxSFComb3Code1F4MeasGLONASS_currentIndexChanged(int index);
145 | void on_comboBoxSFComb3Code1F6MeasGLONASS_currentIndexChanged(int index);
146 | void on_comboBoxSFComb3Phase1F1MeasGLONASS_currentIndexChanged(int index);
147 | void on_comboBoxSFComb3Phase1F2MeasGLONASS_currentIndexChanged(int index);
148 | void on_comboBoxSFComb3Phase1F3MeasGLONASS_currentIndexChanged(int index);
149 | void on_comboBoxSFComb3Phase1F4MeasGLONASS_currentIndexChanged(int index);
150 | void on_comboBoxSFComb3Phase1F6MeasGLONASS_currentIndexChanged(int index);
151 |
152 | //GEO
153 | void SetDefaultGEO();
154 | void on_pushButtonSFGEOAdd_clicked();
155 | void on_pushButtonSFGEODel_clicked();
156 | void on_comboBoxSFComb1Freq1GEO_currentIndexChanged(int index);
157 | void on_comboBoxSFComb1Code1F1MeasGEO_currentIndexChanged(int index);
158 | void on_comboBoxSFComb1Code1F5MeasGEO_currentIndexChanged(int index);
159 | void on_comboBoxSFComb1Phase1F1MeasGEO_currentIndexChanged(int index);
160 | void on_comboBoxSFComb1Phase1F5MeasGEO_currentIndexChanged(int index);
161 | void on_comboBoxSFComb2Freq1GEO_currentIndexChanged(int index);
162 | void on_comboBoxSFComb2Code1F1MeasGEO_currentIndexChanged(int index);
163 | void on_comboBoxSFComb2Code1F5MeasGEO_currentIndexChanged(int index);
164 | void on_comboBoxSFComb2Phase1F1MeasGEO_currentIndexChanged(int index);
165 | void on_comboBoxSFComb2Phase1F5MeasGEO_currentIndexChanged(int index);
166 | void on_comboBoxSFComb3Freq1GEO_currentIndexChanged(int index);
167 | void on_comboBoxSFComb3Code1F1MeasGEO_currentIndexChanged(int index);
168 | void on_comboBoxSFComb3Code1F5MeasGEO_currentIndexChanged(int index);
169 | void on_comboBoxSFComb3Phase1F1MeasGEO_currentIndexChanged(int index);
170 | void on_comboBoxSFComb3Phase1F5MeasGEO_currentIndexChanged(int index);
171 |
172 | //BDS
173 | void SetDefaultBDS();
174 | void on_pushButtonSFBDSAdd_clicked();
175 | void on_pushButtonSFBDSDel_clicked();
176 | void on_comboBoxSFComb1Freq1BDS_currentIndexChanged(int index);
177 | void on_comboBoxSFComb1Code1F2MeasBDS_currentIndexChanged(int index);
178 | void on_comboBoxSFComb1Code1F7MeasBDS_currentIndexChanged(int index);
179 | void on_comboBoxSFComb1Code1F6MeasBDS_currentIndexChanged(int index);
180 | void on_comboBoxSFComb1Code1F5MeasBDS_currentIndexChanged(int index);
181 | void on_comboBoxSFComb1Code1F1MeasBDS_currentIndexChanged(int index);
182 | void on_comboBoxSFComb1Code1F8MeasBDS_currentIndexChanged(int index);
183 | void on_comboBoxSFComb1Phase1F2MeasBDS_currentIndexChanged(int index);
184 | void on_comboBoxSFComb1Phase1F7MeasBDS_currentIndexChanged(int index);
185 | void on_comboBoxSFComb1Phase1F6MeasBDS_currentIndexChanged(int index);
186 | void on_comboBoxSFComb1Phase1F5MeasBDS_currentIndexChanged(int index);
187 | void on_comboBoxSFComb1Phase1F1MeasBDS_currentIndexChanged(int index);
188 | void on_comboBoxSFComb1Phase1F8MeasBDS_currentIndexChanged(int index);
189 | void on_comboBoxSFComb2Freq1BDS_currentIndexChanged(int index);
190 | void on_comboBoxSFComb2Code1F2MeasBDS_currentIndexChanged(int index);
191 | void on_comboBoxSFComb2Code1F7MeasBDS_currentIndexChanged(int index);
192 | void on_comboBoxSFComb2Code1F6MeasBDS_currentIndexChanged(int index);
193 | void on_comboBoxSFComb2Code1F5MeasBDS_currentIndexChanged(int index);
194 | void on_comboBoxSFComb2Code1F1MeasBDS_currentIndexChanged(int index);
195 | void on_comboBoxSFComb2Code1F8MeasBDS_currentIndexChanged(int index);
196 | void on_comboBoxSFComb2Phase1F2MeasBDS_currentIndexChanged(int index);
197 | void on_comboBoxSFComb2Phase1F7MeasBDS_currentIndexChanged(int index);
198 | void on_comboBoxSFComb2Phase1F6MeasBDS_currentIndexChanged(int index);
199 | void on_comboBoxSFComb2Phase1F5MeasBDS_currentIndexChanged(int index);
200 | void on_comboBoxSFComb2Phase1F1MeasBDS_currentIndexChanged(int index);
201 | void on_comboBoxSFComb2Phase1F8MeasBDS_currentIndexChanged(int index);
202 | void on_comboBoxSFComb3Freq1BDS_currentIndexChanged(int index);
203 | void on_comboBoxSFComb3Code1F2MeasBDS_currentIndexChanged(int index);
204 | void on_comboBoxSFComb3Code1F7MeasBDS_currentIndexChanged(int index);
205 | void on_comboBoxSFComb3Code1F6MeasBDS_currentIndexChanged(int index);
206 | void on_comboBoxSFComb3Code1F5MeasBDS_currentIndexChanged(int index);
207 | void on_comboBoxSFComb3Code1F1MeasBDS_currentIndexChanged(int index);
208 | void on_comboBoxSFComb3Code1F8MeasBDS_currentIndexChanged(int index);
209 | void on_comboBoxSFComb3Phase1F2MeasBDS_currentIndexChanged(int index);
210 | void on_comboBoxSFComb3Phase1F7MeasBDS_currentIndexChanged(int index);
211 | void on_comboBoxSFComb3Phase1F6MeasBDS_currentIndexChanged(int index);
212 | void on_comboBoxSFComb3Phase1F5MeasBDS_currentIndexChanged(int index);
213 | void on_comboBoxSFComb3Phase1F1MeasBDS_currentIndexChanged(int index);
214 | void on_comboBoxSFComb3Phase1F8MeasBDS_currentIndexChanged(int index);
215 |
216 | //QZSS
217 | void SetDefaultQZSS();
218 | void on_pushButtonSFQZSSAdd_clicked();
219 | void on_pushButtonSFQZSSDel_clicked();
220 | void on_comboBoxSFComb1Freq1QZSS_currentIndexChanged(int index);
221 | void on_comboBoxSFComb1Code1F1MeasQZSS_currentIndexChanged(int index);
222 | void on_comboBoxSFComb1Code1F2MeasQZSS_currentIndexChanged(int index);
223 | void on_comboBoxSFComb1Code1F5MeasQZSS_currentIndexChanged(int index);
224 | void on_comboBoxSFComb1Code1F6MeasQZSS_currentIndexChanged(int index);
225 | void on_comboBoxSFComb1Phase1F1MeasQZSS_currentIndexChanged(int index);
226 | void on_comboBoxSFComb1Phase1F2MeasQZSS_currentIndexChanged(int index);
227 | void on_comboBoxSFComb1Phase1F5MeasQZSS_currentIndexChanged(int index);
228 | void on_comboBoxSFComb1Phase1F6MeasQZSS_currentIndexChanged(int index);
229 | void on_comboBoxSFComb2Freq1QZSS_currentIndexChanged(int index);
230 | void on_comboBoxSFComb2Code1F1MeasQZSS_currentIndexChanged(int index);
231 | void on_comboBoxSFComb2Code1F2MeasQZSS_currentIndexChanged(int index);
232 | void on_comboBoxSFComb2Code1F5MeasQZSS_currentIndexChanged(int index);
233 | void on_comboBoxSFComb2Code1F6MeasQZSS_currentIndexChanged(int index);
234 | void on_comboBoxSFComb2Phase1F1MeasQZSS_currentIndexChanged(int index);
235 | void on_comboBoxSFComb2Phase1F2MeasQZSS_currentIndexChanged(int index);
236 | void on_comboBoxSFComb2Phase1F5MeasQZSS_currentIndexChanged(int index);
237 | void on_comboBoxSFComb2Phase1F6MeasQZSS_currentIndexChanged(int index);
238 | void on_comboBoxSFComb3Freq1QZSS_currentIndexChanged(int index);
239 | void on_comboBoxSFComb3Code1F1MeasQZSS_currentIndexChanged(int index);
240 | void on_comboBoxSFComb3Code1F2MeasQZSS_currentIndexChanged(int index);
241 | void on_comboBoxSFComb3Code1F5MeasQZSS_currentIndexChanged(int index);
242 | void on_comboBoxSFComb3Code1F6MeasQZSS_currentIndexChanged(int index);
243 | void on_comboBoxSFComb3Phase1F1MeasQZSS_currentIndexChanged(int index);
244 | void on_comboBoxSFComb3Phase1F2MeasQZSS_currentIndexChanged(int index);
245 | void on_comboBoxSFComb3Phase1F5MeasQZSS_currentIndexChanged(int index);
246 | void on_comboBoxSFComb3Phase1F6MeasQZSS_currentIndexChanged(int index);
247 |
248 | //IRNSS
249 | void SetDefaultIRNSS();
250 | void on_pushButtonSFIRNSSAdd_clicked();
251 | void on_pushButtonSFIRNSSDel_clicked();
252 | void on_comboBoxSFComb1Freq1IRNSS_currentIndexChanged(int index);
253 | void on_comboBoxSFComb1Code1F5MeasIRNSS_currentIndexChanged(int index);
254 | void on_comboBoxSFComb1Code1F9MeasIRNSS_currentIndexChanged(int index);
255 | void on_comboBoxSFComb1Phase1F5MeasIRNSS_currentIndexChanged(int index);
256 | void on_comboBoxSFComb1Phase1F9MeasIRNSS_currentIndexChanged(int index);
257 | void on_comboBoxSFComb2Freq1IRNSS_currentIndexChanged(int index);
258 | void on_comboBoxSFComb2Code1F5MeasIRNSS_currentIndexChanged(int index);
259 | void on_comboBoxSFComb2Code1F9MeasIRNSS_currentIndexChanged(int index);
260 | void on_comboBoxSFComb2Phase1F5MeasIRNSS_currentIndexChanged(int index);
261 | void on_comboBoxSFComb2Phase1F9MeasIRNSS_currentIndexChanged(int index);
262 | void on_comboBoxSFComb3Freq1IRNSS_currentIndexChanged(int index);
263 | void on_comboBoxSFComb3Code1F5MeasIRNSS_currentIndexChanged(int index);
264 | void on_comboBoxSFComb3Code1F9MeasIRNSS_currentIndexChanged(int index);
265 | void on_comboBoxSFComb3Phase1F5MeasIRNSS_currentIndexChanged(int index);
266 | void on_comboBoxSFComb3Phase1F9MeasIRNSS_currentIndexChanged(int index);
267 |
268 | void on_pushButtonCSSFAdvancedDefault_clicked();
269 | void on_pushButtonCSSFAdvancedOk_clicked();
270 | void on_pushButtonCSSFAdvancedCancel_clicked();
271 |
272 | public:
273 | void changePushButtonGPS(bool checked);
274 | void changePushButtonGalileo(bool checked);
275 | void changePushButtonGLONASS(bool checked);
276 | void changePushButtonGEO(bool checked);
277 | void changePushButtonBDS(bool checked);
278 | void changePushButtonQZSS(bool checked);
279 | void changePushButtonIRNSS(bool checked);
280 | void on_pushButtonPublicGPS_clicked();
281 | void on_pushButtonPublicGalileo_clicked();
282 | void on_pushButtonPublicGLONASS_clicked();
283 | void on_pushButtonPublicGEO_clicked();
284 | void on_pushButtonPublicBDS_clicked();
285 | void on_pushButtonPublicQZSS_clicked();
286 | void on_pushButtonPublicIRNSS_clicked();
287 |
288 | void setCSdefaults();
289 |
290 | void changeCurrentPage();
291 |
292 | int getgLABOptions(QString *errorString, QString *warningString, QString *saveString, QStringList *runString);
293 | void loadgLABOptions(QString *warningString, QStringList *ParametersList, const int freqMeas);
294 |
295 | private:
296 | Ui::GNSS_CS_SF_Advanced *uiCSSF;
297 | };
298 |
299 | #endif // CS_SF_ADVANCED_H
300 |
--------------------------------------------------------------------------------
/GUI/date_converter.h:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 |
16 | #ifndef GNSS_DATE_CONVERTER_H
17 | #define GNSS_DATE_CONVERTER_H
18 |
19 | #include
20 | #include
21 | #include
22 | #include
23 | //#include
24 |
25 |
26 | extern int DateConverterWindow;
27 |
28 | typedef struct {
29 | int MJDN;
30 | double SoD;
31 | } TTime;
32 |
33 | namespace Ui {
34 | class GNSS_Date_Converter;
35 | }
36 |
37 | class GNSS_Date_Converter : public QDialog
38 | {
39 | Q_OBJECT
40 |
41 | public:
42 |
43 | explicit GNSS_Date_Converter(QWidget *parent = 0);
44 | ~GNSS_Date_Converter();
45 |
46 | private slots:
47 | void on_pushButtonDateConverterClose_clicked();
48 | void closeEvent (QCloseEvent *event);
49 |
50 | double modulo (double a, double mod);
51 | void on_dateTimeEditDateConverterCalendar_dateTimeChanged();
52 | void on_lineEditDateConverterYear_textEdited();
53 | void on_lineEditDateConverterDoY_textEdited();
54 | void on_lineEditDateConverterSoD_textEdited();
55 | void on_lineEditDateConverterGPSWeek_textEdited();
56 | void on_lineEditDateConverterDoW_textEdited();
57 | void on_lineEditDateConverterSoW_textEdited();
58 | void on_lineEditDateConverterMJDN_textEdited();
59 | void on_lineEditDateConverterSoD_MJDN_textEdited();
60 | void tmstruct2datetime(struct tm *tmstruct, QDate *date, QTime *time, double SoD);
61 | void datetime2tmstruct(struct tm *tmstruct, QDate *date, QTime *time);
62 | int MJDN (struct tm *tm);
63 | void tm2t (TTime *t, struct tm *tm, double *seconds);
64 | void t2tm (TTime *t, struct tm *tm, double *seconds);
65 | void t2doy (TTime *t, int *year, double *doy);
66 | TTime gpsws2ttime (int GPSweek, double SoW);
67 | double yeardoy2MJDN (int year, int doy, int sod);
68 | void ttime2gpsweek (TTime *t, int *GPSweek, int *DoW, double *SoW);
69 | void tday_of_month (TTime *t, int *day_of_month, int *month_days, int *month_number);
70 | void doy2date (int year, int doy, QDate *date);
71 | void SoD2time (double SoD,QTime *time);
72 | void GPSTime2DateTime(int GPSWeek, double SoW, QDate *date, QTime *time);
73 |
74 | private:
75 | Ui::GNSS_Date_Converter *uiDate;
76 | };
77 |
78 | #endif // GNSS_DATE_CONVERTER_H
79 |
--------------------------------------------------------------------------------
/GUI/date_converter.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | GNSS_Date_Converter
4 |
5 |
6 |
7 | 0
8 | 0
9 | 706
10 | 260
11 |
12 |
13 |
14 |
15 | 0
16 | 0
17 |
18 |
19 |
20 |
21 | 706
22 | 260
23 |
24 |
25 |
26 |
27 | 706
28 | 260
29 |
30 |
31 |
32 | GNSS Date Converter
33 |
34 |
35 | -
36 |
37 |
38 |
39 | 0
40 | 0
41 |
42 |
43 |
44 | true
45 |
46 |
47 |
48 | -
49 |
50 |
51 | Enter date in calendar format (DD/MM/YYYY HH:MM:SS.zzz). "zzz" stands for milliseconds.
52 |
53 |
54 | color: rgb(0, 0, 0);
55 |
56 |
57 | Calendar format:
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 | 0
66 | 0
67 |
68 |
69 |
70 | true
71 |
72 |
73 |
74 | -
75 |
76 |
77 |
78 | 0
79 | 0
80 |
81 |
82 |
83 | true
84 |
85 |
86 |
87 | -
88 |
89 |
90 |
91 | 0
92 | 0
93 |
94 |
95 |
96 | true
97 |
98 |
99 |
100 | -
101 |
102 |
103 |
104 | 0
105 | 0
106 |
107 |
108 |
109 | Year (in calendar format).
110 |
111 |
112 | color: rgb(0, 0, 0);
113 |
114 |
115 | Year:
116 |
117 |
118 |
119 | -
120 |
121 |
122 |
123 | 0
124 | 0
125 |
126 |
127 |
128 | true
129 |
130 |
131 |
132 | -
133 |
134 |
135 |
136 | 0
137 | 0
138 |
139 |
140 |
141 | Day of Year. Range is [1 to 366].
142 |
143 |
144 | color: rgb(0, 0, 0);
145 |
146 |
147 | Day of Year:
148 |
149 |
150 |
151 | -
152 |
153 |
154 |
155 | 0
156 | 0
157 |
158 |
159 |
160 | Seconds of day. Range is [0 to 86400).
161 |
162 |
163 | color: rgb(0, 0, 0);
164 |
165 |
166 | Seconds of Day:
167 |
168 |
169 |
170 | -
171 |
172 |
173 |
174 | 0
175 | 0
176 |
177 |
178 |
179 | GPS week number (without rollover). The GPS week starts on the 6<sup>th</sup> of January of 1980.<br><br><b>NOTE:</b> To convert from Galileo week to GPS week, add 1024.<br>
180 |
181 |
182 | color: rgb(0, 0, 0);
183 |
184 |
185 | GPSWeek:
186 |
187 |
188 |
189 | -
190 |
191 |
192 |
193 | 0
194 | 0
195 |
196 |
197 |
198 | Seconds of Week, starting on Sunday. Range is [0-604800).
199 |
200 |
201 | color: rgb(0, 0, 0);
202 |
203 |
204 | Seconds of Week:
205 |
206 |
207 |
208 | -
209 |
210 |
211 |
212 | 0
213 | 0
214 |
215 |
216 |
217 | true
218 |
219 |
220 |
221 | -
222 |
223 |
224 |
225 | 0
226 | 0
227 |
228 |
229 |
230 | true
231 |
232 |
233 |
234 | -
235 |
236 |
237 |
238 | 0
239 | 0
240 |
241 |
242 |
243 | Day of week, starting on Sunday. Range is [0-6]. Day 0 is Sunday.
244 |
245 |
246 | color: rgb(0, 0, 0);
247 |
248 |
249 | Day of Week:
250 |
251 |
252 |
253 | -
254 |
255 |
256 |
257 | 0
258 | 0
259 |
260 |
261 |
262 | Modified Julian Day Number (MJDN). <br><br>The Julian day is a continuous count of days since midday January 14713 BC.<br><br>The modified Julian day is the Julian Day - 2400000.5. The "0.5" offset is to make the MJDN start at midnight instead of at midday. The modified Julian day also allows managing smaller numbers.<br>
263 |
264 |
265 | color: rgb(0, 0, 0);
266 |
267 |
268 | MJDN:
269 |
270 |
271 |
272 | -
273 |
274 |
275 |
276 | 0
277 | 0
278 |
279 |
280 |
281 | Seconds of day. Range is [0 to 86400).
282 |
283 |
284 | color: rgb(0, 0, 0);
285 |
286 |
287 | Seconds of Day:
288 |
289 |
290 |
291 | -
292 |
293 |
294 |
295 | 0
296 | 0
297 |
298 |
299 |
300 | true
301 |
302 |
303 |
304 | -
305 |
306 |
307 |
308 | 0
309 | 0
310 |
311 |
312 |
313 |
314 | 180
315 | 16777215
316 |
317 |
318 |
319 | QFrame::NoFrame
320 |
321 |
322 | QFrame::Raised
323 |
324 |
325 |
326 | 0
327 |
328 |
329 | 0
330 |
331 |
332 | 0
333 |
334 |
335 | 0
336 |
337 |
-
338 |
339 |
340 |
341 | 0
342 | 0
343 |
344 |
345 |
346 |
347 | 180
348 | 0
349 |
350 |
351 |
352 | color: rgb(0, 0, 0);
353 |
354 |
355 |
356 | 1980
357 | 1
358 | 6
359 |
360 |
361 |
362 | dd/MM/yyyy HH:mm:ss.zzz
363 |
364 |
365 | true
366 |
367 |
368 |
369 |
370 |
371 |
372 | -
373 |
374 |
375 |
376 | 0
377 | 0
378 |
379 |
380 |
381 | Qt::NoFocus
382 |
383 |
384 | Close
385 |
386 |
387 |
388 | -
389 |
390 |
391 |
392 | 0
393 | 0
394 |
395 |
396 |
397 | color: rgb(0, 0, 0);
398 |
399 |
400 | Enter a date format and it will be automatically converted to the other date formats:
401 |
402 |
403 |
404 | -
405 |
406 |
407 |
408 | 0
409 | 0
410 |
411 |
412 |
413 | color: rgb(0, 0, 0);
414 |
415 |
416 | NOTE: Dates supported are from 06/01/1980 (DD/MM/YYYY format) onwards.
417 |
418 |
419 |
420 |
421 |
422 |
423 | dateTimeEditDateConverterCalendar
424 | lineEditDateConverterYear
425 | lineEditDateConverterDoY
426 | lineEditDateConverterSoD
427 | lineEditDateConverterGPSWeek
428 | lineEditDateConverterDoW
429 | lineEditDateConverterSoW
430 | lineEditDateConverterMJDN
431 | lineEditDateConverterSoD_MJDN
432 | pushButtonDateConverterClose
433 |
434 |
435 |
436 |
437 |
--------------------------------------------------------------------------------
/GUI/downarrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/downarrow.png
--------------------------------------------------------------------------------
/GUI/downarrow_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/downarrow_disabled.png
--------------------------------------------------------------------------------
/GUI/freqmeas_order.h:
--------------------------------------------------------------------------------
1 | #ifndef FREQMEAS_ORDER_H
2 | #define FREQMEAS_ORDER_H
3 |
4 | #include
5 | #include
6 | #include
7 | //#include
8 | #include
9 | #include
10 | #include "glab_const.h"
11 |
12 | namespace Ui {
13 | class GNSS_FreqMeas_Order;
14 | }
15 |
16 | class GNSS_FreqMeas_Order : public QDialog
17 | {
18 | Q_OBJECT
19 |
20 | public:
21 | explicit GNSS_FreqMeas_Order(QWidget *parent = nullptr);
22 | ~GNSS_FreqMeas_Order();
23 |
24 | public:
25 | //This is a definition of a variable with a pointer to a function type "void" with no parameters for class gLAB_GUI
26 | typedef void (GNSS_FreqMeas_Order::*VoidNoParamFuncPointer)();
27 | //This is a definition of a variable with a pointer to a function type "void" with bool parameters for class gLAB_GUI
28 | typedef void (GNSS_FreqMeas_Order::*VoidBoolParamFuncPointer)(bool checked);
29 | //Declare array of pointers to pushButton of GERSCJI
30 | QPushButton *PushButtonGNSS[MAX_GNSS];
31 | //Declare array of pointer to pushButton GNSS _clicked() functions
32 | VoidNoParamFuncPointer PushButtonGNSSFunctions[MAX_GNSS];
33 | //Declare array of pointers to CheckBox of Freq/Meas Order of GERSCJI
34 | QCheckBox *CheckBoxGNSSOrder[MAX_GNSS];
35 | //Declare array of pointers to clicked CheckBox functions of Freq/Meas Order of GERSCJI
36 | VoidBoolParamFuncPointer GroupBoxGNSSOrder[MAX_GNSS];
37 | //Declare array of pointers to TableWidget of [0:freq, 1:code, 2:phase, 3:doppler] of GERSCJI
38 | QTableWidget *TableGNSS[MAX_GNSS][4];
39 |
40 | QString FreqBackGroundColor;
41 | QString MeasBackGroundColor;
42 |
43 | QBrush gnssUnSelected,FreqSelected,MeasSelected;
44 |
45 | int OkFlag;
46 |
47 | private slots:
48 | void InitPushButtonGNSSPointers();
49 | void InitPushButtonGNSSMinFuncPointers();
50 | void InitFreqMeasPointers();
51 |
52 | void Item_clicked(QTableWidgetItem *tableItem);
53 | void Item_doubleClicked(QTableWidgetItem *tableItem);
54 | void freqDoubleClicked(QTableWidgetItem *tableItem);
55 | void moveFreqRow(QTableWidget *pTable, int currentRow, int toRow, int doubleClickFlag);
56 | void moveMeasColumn(QTableWidget *pTable, int currentColumn, int toColumn, int doubleClickFlag);
57 |
58 | void on_pushButtonGPS_clicked();
59 | void on_pushButtonGalileo_clicked();
60 | void on_pushButtonGLONASS_clicked();
61 | void on_pushButtonGEO_clicked();
62 | void on_pushButtonBDS_clicked();
63 | void on_pushButtonQZSS_clicked();
64 | void on_pushButtonIRNSS_clicked();
65 |
66 | //GPS
67 | void SetDefaultGPS();
68 | void on_checkBoxOrderFreqMeasGPS_clicked(bool checked);
69 | void on_pushButtonOrderFreqBoostGPS_clicked();
70 | void on_pushButtonOrderFreqLowerGPS_clicked();
71 | void on_pushButtonOrderMeasBoostGPS_clicked();
72 | void on_pushButtonOrderMeasLowerGPS_clicked();
73 | void on_pushButtonOrderFreqCodeBoostGPS_clicked();
74 | void on_pushButtonOrderFreqCodeLowerGPS_clicked();
75 | void on_pushButtonOrderMeasCodeBoostGPS_clicked();
76 | void on_pushButtonOrderMeasCodeLowerGPS_clicked();
77 | void on_pushButtonOrderFreqPhaseBoostGPS_clicked();
78 | void on_pushButtonOrderFreqPhaseLowerGPS_clicked();
79 | void on_pushButtonOrderMeasPhaseBoostGPS_clicked();
80 | void on_pushButtonOrderMeasPhaseLowerGPS_clicked();
81 | void on_pushButtonOrderFreqDopplerBoostGPS_clicked();
82 | void on_pushButtonOrderFreqDopplerLowerGPS_clicked();
83 | void on_pushButtonOrderMeasDopplerBoostGPS_clicked();
84 | void on_pushButtonOrderMeasDopplerLowerGPS_clicked();
85 | //Galileo
86 | void SetDefaultGalileo();
87 | void on_checkBoxOrderFreqMeasGalileo_clicked(bool checked);
88 | void on_pushButtonOrderFreqBoostGalileo_clicked();
89 | void on_pushButtonOrderFreqLowerGalileo_clicked();
90 | void on_pushButtonOrderMeasBoostGalileo_clicked();
91 | void on_pushButtonOrderMeasLowerGalileo_clicked();
92 | void on_pushButtonOrderFreqCodeBoostGalileo_clicked();
93 | void on_pushButtonOrderFreqCodeLowerGalileo_clicked();
94 | void on_pushButtonOrderMeasCodeBoostGalileo_clicked();
95 | void on_pushButtonOrderMeasCodeLowerGalileo_clicked();
96 | void on_pushButtonOrderFreqPhaseBoostGalileo_clicked();
97 | void on_pushButtonOrderFreqPhaseLowerGalileo_clicked();
98 | void on_pushButtonOrderMeasPhaseBoostGalileo_clicked();
99 | void on_pushButtonOrderMeasPhaseLowerGalileo_clicked();
100 | void on_pushButtonOrderFreqDopplerBoostGalileo_clicked();
101 | void on_pushButtonOrderFreqDopplerLowerGalileo_clicked();
102 | void on_pushButtonOrderMeasDopplerBoostGalileo_clicked();
103 | void on_pushButtonOrderMeasDopplerLowerGalileo_clicked();
104 | //GLONASS
105 | void SetDefaultGLONASS();
106 | void on_checkBoxOrderFreqMeasGLONASS_clicked(bool checked);
107 | void on_pushButtonOrderFreqBoostGLONASS_clicked();
108 | void on_pushButtonOrderFreqLowerGLONASS_clicked();
109 | void on_pushButtonOrderMeasBoostGLONASS_clicked();
110 | void on_pushButtonOrderMeasLowerGLONASS_clicked();
111 | void on_pushButtonOrderFreqCodeBoostGLONASS_clicked();
112 | void on_pushButtonOrderFreqCodeLowerGLONASS_clicked();
113 | void on_pushButtonOrderMeasCodeBoostGLONASS_clicked();
114 | void on_pushButtonOrderMeasCodeLowerGLONASS_clicked();
115 | void on_pushButtonOrderFreqPhaseBoostGLONASS_clicked();
116 | void on_pushButtonOrderFreqPhaseLowerGLONASS_clicked();
117 | void on_pushButtonOrderMeasPhaseBoostGLONASS_clicked();
118 | void on_pushButtonOrderMeasPhaseLowerGLONASS_clicked();
119 | void on_pushButtonOrderFreqDopplerBoostGLONASS_clicked();
120 | void on_pushButtonOrderFreqDopplerLowerGLONASS_clicked();
121 | void on_pushButtonOrderMeasDopplerBoostGLONASS_clicked();
122 | void on_pushButtonOrderMeasDopplerLowerGLONASS_clicked();
123 | //GEO
124 | void SetDefaultGEO();
125 | void on_checkBoxOrderFreqMeasGEO_clicked(bool checked);
126 | void on_pushButtonOrderFreqBoostGEO_clicked();
127 | void on_pushButtonOrderFreqLowerGEO_clicked();
128 | void on_pushButtonOrderMeasBoostGEO_clicked();
129 | void on_pushButtonOrderMeasLowerGEO_clicked();
130 | void on_pushButtonOrderFreqCodeBoostGEO_clicked();
131 | void on_pushButtonOrderFreqCodeLowerGEO_clicked();
132 | void on_pushButtonOrderMeasCodeBoostGEO_clicked();
133 | void on_pushButtonOrderMeasCodeLowerGEO_clicked();
134 | void on_pushButtonOrderFreqPhaseBoostGEO_clicked();
135 | void on_pushButtonOrderFreqPhaseLowerGEO_clicked();
136 | void on_pushButtonOrderMeasPhaseBoostGEO_clicked();
137 | void on_pushButtonOrderMeasPhaseLowerGEO_clicked();
138 | void on_pushButtonOrderFreqDopplerBoostGEO_clicked();
139 | void on_pushButtonOrderFreqDopplerLowerGEO_clicked();
140 | void on_pushButtonOrderMeasDopplerBoostGEO_clicked();
141 | void on_pushButtonOrderMeasDopplerLowerGEO_clicked();
142 | //BDS
143 | void SetDefaultBDS();
144 | void on_checkBoxOrderFreqMeasBDS_clicked(bool checked);
145 | void on_pushButtonOrderFreqBoostBDS_clicked();
146 | void on_pushButtonOrderFreqLowerBDS_clicked();
147 | void on_pushButtonOrderMeasBoostBDS_clicked();
148 | void on_pushButtonOrderMeasLowerBDS_clicked();
149 | void on_pushButtonOrderFreqCodeBoostBDS_clicked();
150 | void on_pushButtonOrderFreqCodeLowerBDS_clicked();
151 | void on_pushButtonOrderMeasCodeBoostBDS_clicked();
152 | void on_pushButtonOrderMeasCodeLowerBDS_clicked();
153 | void on_pushButtonOrderFreqPhaseBoostBDS_clicked();
154 | void on_pushButtonOrderFreqPhaseLowerBDS_clicked();
155 | void on_pushButtonOrderMeasPhaseBoostBDS_clicked();
156 | void on_pushButtonOrderMeasPhaseLowerBDS_clicked();
157 | void on_pushButtonOrderFreqDopplerBoostBDS_clicked();
158 | void on_pushButtonOrderFreqDopplerLowerBDS_clicked();
159 | void on_pushButtonOrderMeasDopplerBoostBDS_clicked();
160 | void on_pushButtonOrderMeasDopplerLowerBDS_clicked();
161 | //QZSS
162 | void SetDefaultQZSS();
163 | void on_checkBoxOrderFreqMeasQZSS_clicked(bool checked);
164 | void on_pushButtonOrderFreqBoostQZSS_clicked();
165 | void on_pushButtonOrderFreqLowerQZSS_clicked();
166 | void on_pushButtonOrderMeasBoostQZSS_clicked();
167 | void on_pushButtonOrderMeasLowerQZSS_clicked();
168 | void on_pushButtonOrderFreqCodeBoostQZSS_clicked();
169 | void on_pushButtonOrderFreqCodeLowerQZSS_clicked();
170 | void on_pushButtonOrderMeasCodeBoostQZSS_clicked();
171 | void on_pushButtonOrderMeasCodeLowerQZSS_clicked();
172 | void on_pushButtonOrderFreqPhaseBoostQZSS_clicked();
173 | void on_pushButtonOrderFreqPhaseLowerQZSS_clicked();
174 | void on_pushButtonOrderMeasPhaseBoostQZSS_clicked();
175 | void on_pushButtonOrderMeasPhaseLowerQZSS_clicked();
176 | void on_pushButtonOrderFreqDopplerBoostQZSS_clicked();
177 | void on_pushButtonOrderFreqDopplerLowerQZSS_clicked();
178 | void on_pushButtonOrderMeasDopplerBoostQZSS_clicked();
179 | void on_pushButtonOrderMeasDopplerLowerQZSS_clicked();
180 | //IRNSS
181 | void SetDefaultIRNSS();
182 | void on_checkBoxOrderFreqMeasIRNSS_clicked(bool checked);
183 | void on_pushButtonOrderFreqBoostIRNSS_clicked();
184 | void on_pushButtonOrderFreqLowerIRNSS_clicked();
185 | void on_pushButtonOrderMeasBoostIRNSS_clicked();
186 | void on_pushButtonOrderMeasLowerIRNSS_clicked();
187 | void on_pushButtonOrderFreqCodeBoostIRNSS_clicked();
188 | void on_pushButtonOrderFreqCodeLowerIRNSS_clicked();
189 | void on_pushButtonOrderMeasCodeBoostIRNSS_clicked();
190 | void on_pushButtonOrderMeasCodeLowerIRNSS_clicked();
191 | void on_pushButtonOrderFreqPhaseBoostIRNSS_clicked();
192 | void on_pushButtonOrderFreqPhaseLowerIRNSS_clicked();
193 | void on_pushButtonOrderMeasPhaseBoostIRNSS_clicked();
194 | void on_pushButtonOrderMeasPhaseLowerIRNSS_clicked();
195 | void on_pushButtonOrderFreqDopplerBoostIRNSS_clicked();
196 | void on_pushButtonOrderFreqDopplerLowerIRNSS_clicked();
197 | void on_pushButtonOrderMeasDopplerBoostIRNSS_clicked();
198 | void on_pushButtonOrderMeasDopplerLowerIRNSS_clicked();
199 |
200 | void on_pushButtonFreqMeasOrderDefault_clicked();
201 | void on_pushButtonFreqMeasOrderOk_clicked();
202 | void on_pushButtonFreqMeasOrderCancel_clicked();
203 |
204 | public:
205 | void changePushButtonGPS(bool checked);
206 | void changePushButtonGalileo(bool checked);
207 | void changePushButtonGLONASS(bool checked);
208 | void changePushButtonGEO(bool checked);
209 | void changePushButtonBDS(bool checked);
210 | void changePushButtonQZSS(bool checked);
211 | void changePushButtonIRNSS(bool checked);
212 | void on_pushButtonPublicGPS_clicked();
213 | void on_pushButtonPublicGalileo_clicked();
214 | void on_pushButtonPublicGLONASS_clicked();
215 | void on_pushButtonPublicGEO_clicked();
216 | void on_pushButtonPublicBDS_clicked();
217 | void on_pushButtonPublicQZSS_clicked();
218 | void on_pushButtonPublicIRNSS_clicked();
219 |
220 | void setFreqMeasdefaults();
221 |
222 | void changeCurrentPage();
223 |
224 | void getgLABOptions(QString *errorString, QString *warningString, QString *saveString, QStringList *runString);
225 | void loadgLABOptions(QString *warningString, QStringList *ParametersList, const int freqMeas);
226 |
227 | private:
228 | Ui::GNSS_FreqMeas_Order *uiFreqMeas;
229 | };
230 |
231 | #endif // FREQMEAS_ORDER_H
232 |
--------------------------------------------------------------------------------
/GUI/gAGE.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/gAGE.ico
--------------------------------------------------------------------------------
/GUI/gLAB.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/gLAB.icns
--------------------------------------------------------------------------------
/GUI/gLAB.pro:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------
2 | #
3 | # Project created by QtCreator 2016-11-11T13:49:49
4 | #
5 | #-------------------------------------------------
6 | #This file is part of gLAB's GUI.
7 | #
8 | # gLAB's GUI is free software: you can redistribute it and/or modify
9 | # it under the terms of the Lesser GNU General Public License as published by
10 | # the Free Software Foundation, either version 3.
11 | #
12 | # gLAB's GUI is distributed in the hope that it will be useful,
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | # Lesser GNU General Public License for more details.
16 | #
17 | # You should have received a copy of the Lesser GNU General Public License
18 | # along with gLAB's GUI. If not, see .
19 | #
20 |
21 | QT += core gui network
22 | CONFIG += g++11
23 | CONFIG += c++11
24 | CONFIG += resources_big #This flag is to avoid memory allocation error in 32-bit g++ compiler when compiling myresources.qrc
25 |
26 | #QMAKE_CXXFLAGS_RELEASE += -O3 # Release -O3 (no use)
27 |
28 | win32 {
29 | QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread
30 | }
31 | macx: ICON = gLAB.icns
32 |
33 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
34 |
35 | linux-arm-gnueabihf-g++ {
36 | TARGET = gLAB_GUI_ARMv7
37 | } else:contains(QT_ARCH, arm64) {
38 | TARGET = gLAB_GUI_ARM64
39 | #} else:linux-g++{
40 | # contains(QT_ARCH, x86_64){
41 | # TARGET = gLAB_GUI_64
42 | # } else {
43 | # TARGET = gLAB_GUI
44 | # }
45 | } else {
46 | TARGET = gLAB_GUI
47 | }
48 | TEMPLATE = app
49 |
50 | win32: RC_FILE = gLAB.rc
51 |
52 | SOURCES += main.cpp \
53 | antenna_advanced.cpp \
54 | cs_igf_advanced.cpp \
55 | cs_li_advanced.cpp \
56 | cs_mw_advanced.cpp \
57 | cs_sf_advanced.cpp \
58 | freqmeas_order.cpp \
59 | glab_gui.cpp \
60 | glab_tooltip.cpp \
61 | input.cpp \
62 | meas_select.cpp \
63 | multi_threading.cpp \
64 | preprocess.cpp \
65 | modelling.cpp \
66 | filter.cpp \
67 | output.cpp \
68 | analysis.cpp \
69 | converter.cpp \
70 | compareOrbits.cpp \
71 | sbas_obad_set.cpp \
72 | showOrbits.cpp \
73 | coord_converter.cpp \
74 | date_converter.cpp \
75 | adderror_rinex.cpp \
76 | snr_advanced.cpp \
77 | load_positioning.cpp
78 |
79 | HEADERS += \
80 | antenna_advanced.h \
81 | cs_igf_advanced.h \
82 | cs_li_advanced.h \
83 | cs_mw_advanced.h \
84 | cs_sf_advanced.h \
85 | freqmeas_order.h \
86 | glab_const.h \
87 | glab_gui.h \
88 | coord_converter.h \
89 | date_converter.h \
90 | glab_tooltip.h \
91 | meas_select.h \
92 | multi_threading.h \
93 | sbas_obad_set.h \
94 | snr_advanced.h \
95 |
96 | FORMS += \
97 | antenna_advanced.ui \
98 | cs_igf_advanced.ui \
99 | cs_li_advanced.ui \
100 | cs_mw_advanced.ui \
101 | cs_sf_advanced.ui \
102 | freqmeas_order.ui \
103 | glab_gui.ui \
104 | coord_converter.ui \
105 | date_converter.ui \
106 | glab_tooltip.ui \
107 | meas_select.ui \
108 | multi_threading.ui \
109 | sbas_obad_set.ui \
110 | snr_advanced.ui \
111 |
112 | RESOURCES += \
113 | myresources.qrc
114 |
--------------------------------------------------------------------------------
/GUI/gLAB.rc:
--------------------------------------------------------------------------------
1 | IDI_ICON1 ICON DISCARDABLE "gAGE.ico"
2 |
--------------------------------------------------------------------------------
/GUI/gLAB_Reference_Position_File_Example.txt:
--------------------------------------------------------------------------------
1 | #gLAB version v6.0.0, built on Nov 22 2024 23:58:23
2 | #This is an example of a reference position file
3 | #Lines with comments start with a '#' or '%' at the beginning of line
4 | #If the symbol # is found in the middle of the line, the rest of the line will be omitted, as it will be considered a comment
5 | #Empty lines will be skipped
6 | #By executing 'gLAB -referenceposfile > referencepositionfile.txt' a valid reference position file is created (this file). Dates and positions have to be adjusted by user
7 | #
8 | #The following lines explain the rules for creating a reference position file:
9 | #Data columns do not need to have a specific number of spaces between them, as well as leading and trailing spaces at the beginning or end of line respectively are ignored. Furthermore, leading zero for values lower than 1 is optional.
10 | #Data columns may have as column separator white spaces (' '), commas (',') or semicolon (';'). gLAB, internally, will replace all commas and semicolons by spaces, therefore, these column separators can be set combined in different or in the same line.
11 | #Numbers MUST have decimals with a dot ('.'), as commas are treated as a column separator.
12 | #The first line of data (first line non empty or without a '#') must have the names of the elements of each column.
13 | #Names of columns are case insensitive, and must be given in the same order as the data (so gLAB what type of data has each column).
14 | #The order of the data is not important as long as the data type matches the position of the name of the data in the first line.
15 | #The accepted names of columns are (all time tags must be in GPS time):
16 | #Year -> Year
17 | #DoY -> Day of Year
18 | #SoD -> Seconds of Day
19 | #GPSWeek -> GPSWeek
20 | #SoW -> Seconds of Day
21 | #Date -> Date in calendar format (YYYY/MM/DD)
22 | #Time -> Time in calendar format (HH:MM:SS.zzz). 'zzz' are milliseconds
23 | #X -> X coordinate (metres)
24 | #Y -> Y coordinate (metres)
25 | #Z -> Z coordinate (metres)
26 | #Lon -> Longitude (degrees). Range is [-180..180]. Values outside of this range will be rejected
27 | #Longitude -> Longitude (degrees). Range is [-180..180]. Values outside of this range will be rejected
28 | #Lat -> Latitude (degrees). Range is [-90..90]. Values outside of this range will be rejected
29 | #Latitude -> Latitude (degrees). Range is [-90..90]. Values outside of this range will be rejected
30 | #Height -> Height (metres)
31 | #
32 | #X, Y and Z are in cartesian ECEF WGS84 reference frame.
33 | #Latitude, Longitude and Height are in geodetic ECEF WGS84 reference frame.
34 | #
35 | #The file must contain a full set of valid date and coordinates. That is, it must have at least the fields 'Year, DoY, SoD' or 'GPSWeek, SoW' or 'Date Time' for the date, and fields 'X, Y ,Z' or 'Lon, Lat, Height' for the coordinates
36 | #If file contains more than one date formats or both coordinate systems, gLAB will prefer 'Year, DoY, SoD' format for date and 'X, Y, Z' for coordinates (it has less computational cost)
37 | #All other columns that do not match any of the accepted names will be ignored.
38 | #
39 | #Furthermore, RTKlib output file is also supported (output must be in 'Lat/Lon/Height' -in ellipsodial or geodetic height- or 'X/Y/Z-ECEF' formats).
40 | #
41 | #For example, the first line could be like the following samples (note that order and number of column separators is not important):
42 | #Year DoY SoD X Y Z
43 | #Year, DoY, SoD, X, Y, Z
44 | #GPSWeek SoW Y X Z
45 | #DoY SoD Year Lon Lat Height
46 | #SoW GPSWeek Lat Lon Height
47 | #DoY Year Lon Height SoD Lat
48 | #
49 | #The lines below are a valid set of data lines:
50 | Year DoY SoD X Y Z
51 | 2014 067 21200.000 3219920.5954 4672079.7551 3465886.3080
52 | 2014 067 21500.000 3219919.9508 4672079.7847 3465887.1434
53 | 2014 067 21800.000 3219920.2422 4672080.7439 3465887.0480
54 |
--------------------------------------------------------------------------------
/GUI/gLAB_SUM.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/gLAB_SUM.pdf
--------------------------------------------------------------------------------
/GUI/gLAB_Sigma_Multipath_File_Example.txt:
--------------------------------------------------------------------------------
1 | #gLAB version v6.0.0, built on Nov 22 2024 23:58:23
2 | #Lines with comments start with a # at the beginning of line
3 | #If the symbol # is found in the middle of the line, the rest of the line will be omitted, as it will be considered a comment
4 | #Empty lines will be skipped
5 | #This is an example of user multipath model configuration file.
6 | #This file is for introducing a user defined model for sigma multipath model for a SBAS receiver, which can be elevation or SNR dependent.
7 | #By executing 'gLAB -sigmamultipathfile > usermultipathfile.txt' a valid user multipath model configuration file is created (this file).
8 | #
9 | #The following lines explain the rules for creating this configuration file:
10 | #First line (non empty or without '#') indicates if the following values are for an elevation or S/N ratio model
11 | #Values for first line are: 'Elevation' or 'SNR' (values are case insensitive)
12 | #For example:
13 | #Elevation
14 | #SNR
15 | #
16 | #Values will be given in the same manner for both cases:
17 | #For each line, the first column will be either the elevation or the SNR sample, the second column will be the relevant sigma value for the sample.
18 | #There will be as many lines as the number of available samples.
19 | #Lines must be sorted from lower to higher range values. If lines are not sorted, gLAB will show an error and exit.
20 | #The unit for the samples are:
21 | # degrees for an elevation dependent model
22 | # dBHz for a S/N ratio dependent model
23 | #The unit for the sigma values are metres
24 | #Sigma values between intervals will be linearly interpolated
25 | #If a value to be interpolated is below the minimum sample, the minimum sample value will be used. The same criteria will be used for values over the maximum sample.
26 | #Range step does not need to be constant.
27 | #
28 | #If SNR model is selected and no SNR from RINEX is available, the highest SNR sample will be used.
29 | #
30 | #Example for an elevation dependent model:
31 | #Elevation
32 | #20 0.7
33 | #30 0.6
34 | #40 0.5
35 | #60 0.3
36 | #78 0.2
37 | #80 0.1
38 | #
39 | #Example for a SNR dependent model:
40 | #SNR
41 | #30 0.6
42 | #40 0.5
43 | #56 0.4
44 | #60 0.3
45 | #
46 | #Data columns do not need to have a specific number of spaces between them, as well as leading and trailing spaces at the beginning or end of line respectively are ignored. Furthermore, leading zero for values lower than 1 is optional.
47 | #Data columns may have as column separator white spaces (' '), commas (',') or semicolon (';'). gLAB, internally, will replace all commas and semicolons by spaces, therefore, these column separators can be set combined in different or in the same line.
48 | #Numbers MUST have decimals with a dot ('.'), as commas are treated as a column separator
49 | #For example, this line:
50 | #20 0.5
51 | #Can also be written like this:
52 | # 20 .5
53 | #
54 | Elevation
55 | 10 0.8
56 | 20 0.7
57 | 30 0.6
58 | 40 0.5
59 | 50 0.4
60 | 60 0.3
61 | 70 0.2
62 | 80 0.1
63 | 90 0.1
64 |
--------------------------------------------------------------------------------
/GUI/gLAB_User_Error_File_Example.txt:
--------------------------------------------------------------------------------
1 | #gLAB version v6.0.0, built on Nov 22 2024 23:58:23
2 | #This is an example of user-defined error configuration file
3 | #Lines with comments start with a # at the beginning of line
4 | #If the symbol # is found in the middle of the line, the rest of the line will be omitted, as it will be considered a comment
5 | #Empty lines will be skipped
6 | #By executing 'gLAB -usererrorfile > usererrorfile.txt' a valid user-defined error configuration file is created (this file). Only dates need to be adjusted by user
7 | #
8 | #The following lines explain the rules for creating a user defined error configuration file:
9 | #First line (non empty or without '#') will have two words:
10 | ##The first word indicates if time is given in [GPS week and ToW (Time of Week)] or in [GPS Year, DoY (Day of Year) and SoD (Seconds of Day)]:
11 | ## ToW -> Time of week (case insensitive)
12 | ## SoD -> Seconds of Day (case insensitive)
13 | ##The second word indicates if the user wants to indicate the duration of the user-defined error either by specifying the length (in seconds) with the word "Length" or by giving the date where the error ends (in the same time format as the initial time) with the word "Time".
14 | ## Length -> Length of user-defined error (case insensitive)
15 | ## Time -> End time (case insensitive)
16 | #
17 | #The second line indicates the seed (random function initial value) for the AWGN (Additive White Gaussian Noise) noise (applied just after being read). It can be the system time, specified with the word "Time" or by a number given by user. This line will start with the word "Seed" (or "seed") and then the word to specify the seed type:
18 | ## CurrentTime -> Use current execution time (from system) as seed (case insensitive)
19 | ## -> Use this number as seed. It must be a positive integer. Floating values will be truncated, but negative values will make gLAB show an error and exit.
20 | #
21 | #Each line will contain a type of user-defined error to be generated for a given time period.
22 | #The entries MUST be sorted by time (from earliest to latest). If entries are not sorted, user-defined errors from previous epochs will be ignored.
23 | #
24 | #The first word of each line will indicate the type of user-defined error to be generated
25 | #The type of user-defined error possible are:
26 | # Step -> for a step function
27 | # Ramp -> for a ramp function
28 | # Sinu -> for a sinusoidal function
29 | # AWGN -> for AWGN noise
30 | #The second word will be to indicate the constellation and PRN in which the error is added.
31 | ##The constellation will be given with one the following letters:
32 | # G -> GPS
33 | # R -> GLONASS
34 | # E -> Galileo
35 | # S -> SBAS
36 | # C -> BeiDou
37 | # J -> QZSS
38 | ##The PRN number is from 0 to 32. A PRN of 0 means that all satellites in the constellation will have this added noise.
39 | #The third word is to indicate the signal where to add the error.
40 | #The signal code must be one of the observation codes from RINEX version 3.03, (e.g. C1C, L1P, etc.). For a full list of observation codes, refer to [RINEX, The Receiver Independent Exchange Format, Version 3.02, 14 July 2015].
41 | #
42 | #Step function definition:
43 | # Step(t)=A*(u(t-t0)-u(t-t1))
44 | # Where:
45 | # A is the amplitude of step, which is a constant value. It is defined by the user (in metres).
46 | # t is the current epoch (in seconds of day).
47 | # t0 is the epoch where the step function begins (in seconds of day). It is defined by the user.
48 | # t1 is the epoch where the step function ends (in seconds of day). It is defined by the user.
49 | # u(t) is the unit step or Heavyside function, defined as:
50 | # t>=0 u(t)=1
51 | # t<0 u(t)=0
52 | # Step(t) is the added error to the measurement (in metres).
53 | #
54 | #Ramp function definition:
55 | # Ramp(t)=B*(t-t0)*(u(t-t0)-u(t-t1))
56 | # Where:
57 | # B is the amplitude of ramp, which is a constant value. It is defined by the user (in metres).
58 | # t is the current epoch (in seconds of day).
59 | # t0 is the epoch where the ramp function begins (in seconds of day). It is defined by the user.
60 | # t1 is the epoch where the ramp function ends (in seconds of day). It is defined by the user.
61 | # u(t) is the unit step or Heavyside function, defined as:
62 | # t>=0 u(t)=1
63 | # t<0 u(t)=0
64 | # Ramp(t) is the added error to the measurement (in metres).
65 | #
66 | #Sinusoidal function definition:
67 | # Sinusoidal(t)=C*sin(2*Pi*t/T + alpha)*(u(t-t0)-u(t-t1))
68 | # Where:
69 | # C is the amplitude of sinusoidal, which is a constant value. It is defined by the user (in metres).
70 | # T is the period of the sinusoidal, which is a constant value. It is defined by the user (in seconds).
71 | # alpha is the offset of the sinusoidal, which is a constant value. It is defined by the user (in degrees).
72 | # t is the current epoch (in seconds of day).
73 | # t0 is the epoch where the sinusoidal function begins (in seconds of day). It is defined by the user.
74 | # t1 is the epoch where the sinusoidal function ends (in seconds of day). It is defined by the user.
75 | # u(t) is the unit step or Heavyside function, defined as:
76 | # t>=0 u(t)=1
77 | # t<0 u(t)=0
78 | # sin(t) is the nominal sinusoidal function.
79 | # Sinusoidal(t) is the added error to the measurement (in metres).
80 | #
81 | #AWGN function definition:
82 | # AWGN(t)=w(t)*(u(t-t0)-u(t-t1))
83 | # Where:
84 | # w(t) is an Additive White Gaussian Noise (AWGN) random process. In particular:
85 | # w(t) samples has an associated sigma which can be defined by the user (in metres).
86 | # The mean value of w(t) samples is zero.
87 | # t is the current epoch (in seconds of day).
88 | # t0 is the epoch where the ramp function begins (in seconds of day). It is defined by the user.
89 | # t1 is the epoch where the ramp function ends (in seconds of day). It is defined by the user.
90 | # u(t) is the unit step or Heavyside function, defined as:
91 | # t>=0 u(t)=1
92 | # t<0 u(t)=0
93 | # AWGN(t) is the added error to the measurement (in metres).
94 | #
95 | #Example for Step function (using SoD and Length):
96 | #Step G3 C1C 5 2016 1 300 500
97 | # Where "G3" indicates satellite with PRN 3 from GPS constellation
98 | # "C1C" is the observation code for GPS L1 frequency civil psudorange measurement
99 | # "5" is the amplitude (in metres) of the step function
100 | # "2016" is the year when the step starts
101 | # "1" is the day of year when the step starts
102 | # "300" is the seconds of day when the step starts
103 | # "500" is the duration (in seconds) of the step
104 | #
105 | #Example for Ramp function (using SoD and Time):
106 | #Ramp G0 L1P 5 2016 1 300 2016 1 500
107 | # Where "G0" indicates all satellites from GPS constellation
108 | # "L1P" is the observation code for GPS L1 frequency carrier phase measurement
109 | # "5" is the amplitude (in metres/second) of the ramp function
110 | # "2016" is the year when the ramp starts
111 | # "1" is the day of year when the ramp starts
112 | # "300" is seconds of day when the ramp starts
113 | # "2016" is the year when the ramp ends
114 | # "1" is the day of year when the ramp ends
115 | # "500" is the seconds of day when the ramp ends
116 | #Example for Sinusoidal function (using ToW and Length):
117 | #Sinu G12 C1C 5 20E-6 90 1848 259200 500
118 | # Where "G12" indicates satellite with PRN 12 from GPS constellation
119 | # "C1C" is the observation code for GPS L1 frequency civil psudorange measurement
120 | # "5" is the amplitude (in metres) of the sinusoidal function
121 | # "20E-6" is the period of the signal (in seconds).
122 | # "90" is the offset (in degrees) to be added in the sinusoidal function
123 | # "1848" is the GPS week when the sinusoidal starts
124 | # "259200" is the seconds of week when the sinusoidal starts
125 | # "500" is the duration (in seconds) of the sinusoidal
126 | #
127 | #Example for AWGN function (using ToW and Time):
128 | #AWGN G31 C1C 5 1848 259200 1848 259700
129 | # Where "G31" indicates satellite with PRN 31 from GPS constellation
130 | # "C1C" is the observation code for GPS L1 frequency civil psudorange measurement
131 | # "5" is the standard deviation (in metres) of the AWGN random process
132 | # ""1848" is the GPS week when the AWGN starts
133 | # "259200" is the seconds of week when the AWGN starts
134 | # "1848" is the GPS week when the AWGN ends
135 | # "259700" is the seconds of week when the AWGN ends
136 | #
137 | #Data lines with wrong number of columns will be ignored (except for the initial two lines with time format and seed)
138 | #Data lines with a user-defined error model different from the ones listed above will be ignored
139 | #
140 | #Data columns do not need to have a specific number of spaces between them, as well as leading and trailing spaces at the beginning or end of line respectively are ignored. Furthermore, leading zero for values lower than 1 is optional.
141 | #Data columns may have as column separator white spaces (' '), commas (',') or semicolon (';'). gLAB, internally, will replace all commas and semicolons by spaces, therefore, these column separators can be combined in different or in the same line.
142 | #Numbers MUST have decimals with a dot ('.'), as commas are treated as a column separator
143 | #For example, this line:
144 | #Step G10 C1C 5 2016 1 300 50
145 | #Can also be written like this:
146 | # Step G10 C1C 5 2016 1 300 50
147 | #
148 | #gLAB will print the user-defined error in the lines starting with 'USERADDEDERROR' (which are enabled by default). The description of each field in the message is shown by executing 'gLAB -messages'.
149 | #
150 | #For RINEX 2 files, the user must use the equivalent measurements for RINEX 3. The measurement conversion table is:
151 | #C1 -> C1C (except for BeiDou, where it is transformed to C1X)
152 | #P1 -> C1P
153 | #L1 -> L1P (except for Galileo, QZSS and GEO, where it is transformed to L1C, and in BeiDou to L1X)
154 | #D1 -> D1P (except for Galileo, QZSS and GEO, where it is transformed to D1C, and in BeiDou to D1X)
155 | #S1 -> S1P (except for Galileo, QZSS and GEO, where it is transformed to S1C, and in BeiDou to S1X)
156 | #
157 | #C2 -> C2C (except for BeiDou and QZSS, where it is transformed to C2X)
158 | #P2 -> C2P (except for BeiDou and QZSS, where it is transformed to C2X)
159 | #L2 -> L2P (except for BeiDou and QZSS, where it is transformed to L2X)
160 | #D2 -> D2P (except for BeiDou and QZSS, where it is transformed to D2X)
161 | #S2 -> S2P (except for BeiDou and QZSS, where it is transformed to S2X)
162 | #
163 | #C3 -> C3X
164 | #L3 -> L3X
165 | #D3 -> D3X
166 | #S3 -> S3X
167 | #
168 | #C4 -> C4X
169 | #L4 -> L4X
170 | #D4 -> D4X
171 | #S4 -> S4X
172 | #
173 | #C5 -> C5X
174 | #L5 -> L5X
175 | #D5 -> D5X
176 | #S5 -> S5X
177 | #
178 | #C6 -> C6X
179 | #L6 -> L6X
180 | #D6 -> D6X
181 | #S6 -> S6X
182 | #
183 | #C7 -> C7X (except for GPS and QZSS, where it is transformed to C1X, and in GLONASS to C3X)
184 | #L7 -> L7X (except for GPS and QZSS, where it is transformed to L1X, and in GLONASS to L3X)
185 | #D7 -> D7X (except for GPS and QZSS, where it is transformed to D1X, and in GLONASS to D3X)
186 | #S7 -> S7X (except for GPS and QZSS, where it is transformed to S1X, and in GLONASS to S3X)
187 | #
188 | #C8 -> C8X (except for QZSS, where it is transformed to C1Z)
189 | #L8 -> L8X (except for QZSS, where it is transformed to L1Z)
190 | #D8 -> D8X (except for QZSS, where it is transformed to D1Z)
191 | #S8 -> S8X (except for QZSS, where it is transformed to S1Z)
192 | #
193 | #C9 -> C9X
194 | #L9 -> L9X
195 | #D9 -> D9X
196 | #S9 -> S9X
197 | #
198 | #Usage Example:
199 | SoD Length
200 | Seed 10
201 | #Add all user-defined errors at the same time
202 | Step G10 C1C 5 2016 1 300 50
203 | Ramp G20 C1C 5 2016 1 300 500
204 | Sinu G15 L1P 5 20E-6 90 2016 1 300 500
205 | AWGN G10 C1C 5 2016 1 300 500
206 | #Add some more user-defined error later
207 | Ramp G0 C1C 5 2016 1 500 400
208 | Sinu G32 L1P 5 20E-6 90 2016 1 5000 300
209 |
--------------------------------------------------------------------------------
/GUI/gLAB_adderror.cfg:
--------------------------------------------------------------------------------
1 | ###################################################
2 | #
3 | # gLAB - Version: 5.1.0
4 | # This is a self-generated configuration file.
5 | # It only contains the minimum options to change the defaults.
6 | # Created at: 12:22 on 14/12/2017
7 | #
8 | ###################################################
9 |
10 |
11 | -input:obs /home/deimos/argonaut/ARG31320.17o
12 | -input:usererror /home/deimos/newGUI/gLAB_Sigma_Multipath_File_Example.txt
13 | -output:rinex /home/deimos/argonaut/ARG31320.17o_usererror
14 | --print:info
15 |
16 |
--------------------------------------------------------------------------------
/GUI/gage_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/gage_logo.png
--------------------------------------------------------------------------------
/GUI/glab_const.h:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 | #ifndef GLAB_CONST_H
16 | #define GLAB_CONST_H
17 |
18 | #include
19 | #include
20 | #include
21 |
22 | #define MIN_EARTH_RADIUS 6356752.
23 | #define MAX_INPUT_PATH 7
24 | #define MAX_GNSS 7
25 | #define MAX_SATELLITES_PER_GNSS 70
26 | #define MAX_SAT_GPS 32
27 | #define MAX_SAT_GAL 36
28 | #define MAX_SAT_GLO 32
29 | #define MAX_SAT_GEO 39
30 | #define MAX_SAT_BDS 63
31 | #define MAX_SAT_QZS 10
32 | #define MAX_SAT_IRN 14
33 | #define MAX_GNSS_FREQ 6
34 | #define MAX_GNSS_FREQ_SLOTS 10 //GNSS Freq number are from 1 to 9, so we need 10 slots to access up to position 9
35 | #define MAX_GNSS_DUALFREQ 15
36 | #define MAX_GNSS_CODE 16
37 | #define KMLOPTIONSREDUCETHRESHOLD 1094
38 | #define MAXNAVIGATIONMODES 5 //SPP, PPP, SBAS 1F, SBAS DFMC, DGNSS
39 | #define SPPNAVMODE 0
40 | #define PPPNAVMODE 1
41 | #define SBAS1FNAVMODE 2
42 | #define SBASDFMCNAVMODE 3
43 | #define DGNSSNAVMODE 4
44 |
45 | #define DIFFEQTHRESHOLD 1E-4 //When comparing two floating points, if difference is below this threshold, values will be considered equal
46 |
47 | //measurement mode
48 | #define MEAS_MODE_SINGLE 0x01
49 | #define MEAS_MODE_DUAL 0x02
50 | #define MEAS_MODE_CODE 0x01
51 | #define MEAS_MODE_SMOOTH 0x02
52 | #define MEAS_MODE_CODEPHASE 0x04
53 | #define GEOMINPRN 20 //Minimum GEO PRN is 120
54 | #define GEOMINPRNOFFSET 19 //Minimum GEO PRN is 120, so the offset from 1 to 20 is 19
55 |
56 | #define FIRSTMEASARRAYPOS 0
57 | #define SECONDMEASARRAYPOS 1
58 | #define THIRDMEASARRAYPOS 2
59 | #define COMBMEAS1ARRAYPOS 0
60 | #define COMBMEAS2ARRAYPOS 1
61 | #define CODEARRAYPOS 0
62 | #define PHASEARRAYPOS 1
63 | #define GCARRAYPOS 2
64 | #define MAXMEASTOFILTER 3
65 | #define MAXMEASTYPE 3
66 | #define MEASANDPHASENUMSLOTS 2
67 | #define CONSTWEIGHTARRAYPOS 0
68 | #define MAXWEIGHTTYPES 5
69 |
70 | #define MINSNRTYPE 0
71 | #define MAXSNRTYPE 1
72 |
73 | #define NUMGPSVSNAVTYPES 2
74 | #define NUMGALVSNAVTYPES 2
75 |
76 |
77 | #define DEFAULT_PREFERRED_NAV_TIME "3600" //Preferred time frame for navigation message (seconds)
78 |
79 | //Enumerator for different GNSS systems
80 | enum GNSSystem {
81 | GNSSSystemUnknown = -1,
82 | GPS = 0,
83 | Galileo = 1,
84 | GLONASS = 2,
85 | GEO = 3,
86 | BDS = 4,
87 | QZSS = 5,
88 | IRNSS = 6,
89 | };
90 |
91 | //Enumerator for cycle-slip type
92 | enum CycleSlipType {
93 | CStypeUnknown = -1,
94 | CStypeSF = 0,
95 | CStypeMW = 1,
96 | CStypeLI = 2,
97 | CStypeIGF = 3
98 | };
99 |
100 | //Enumerator for cycle-slip parameter type
101 | enum CycleSlipParamType {
102 | CStypeParamUnknown = -1,
103 | CStypeParamFreq = 0,
104 | CStypeParamMeas= 1
105 | };
106 |
107 | //Enumerator for measurement target usage
108 | enum MeasTargetUsage {
109 | MeasTargetUnkown = -1,
110 | MeasTargetFilter = 0,
111 | MeasTargetSmooth = 1
112 | };
113 |
114 | //GNSS measurement selection types
115 | const QString MeasSelectTypeGNSS[2]={"Code-","Phase-"};
116 | //Satellite System indentifier for different GNSS systems
117 | const QString indentifierGNSS[MAX_GNSS]={"G","E","R","S","C","J","I"};
118 | //GNSS System name
119 | const QString GNSSName[MAX_GNSS]={"GPS","Galileo","GLONASS","GEO","BDS","QZSS","IRNSS"};
120 | //GNSS enum list
121 | const enum GNSSystem GNSSenums[MAX_GNSS]={GPS,Galileo,GLONASS,GEO,BDS,QZSS,IRNSS};
122 | //Default Reference constellation clock priority
123 | const QString RefGNSSClockPriority[MAX_GNSS]={"GPS","Galileo","GLONASS","BDS","QZSS","IRNSS","GEO"};
124 | //Default Reference constellation clock priority
125 | const QString ISCBGNSSOrder[MAX_GNSS]={"G","E","R","C","J","I","S"};
126 | //Maximum PRN number of each constellations
127 | const int listMaxSatGNSS[MAX_GNSS]={MAX_SAT_GPS,MAX_SAT_GAL,MAX_SAT_GLO,MAX_SAT_GEO,MAX_SAT_BDS,MAX_SAT_QZS,MAX_SAT_IRN};
128 | //Frequency number for different GNSS systems
129 | const int nFreqGNSS[MAX_GNSS]={3,5,5,2,6,4,2};
130 | //Dual Frequency number for different GNSS systems
131 | const int nDualFreqGNSS[MAX_GNSS]={3,10,10,1,15,6,1};
132 | //Frequency list for different GNSS systems
133 | const QStringList FreqBandGNSSList[MAX_GNSS]={ {"L1","L2","L5"},
134 | {"E1","E5a","E6","E5b","E5"},
135 | {"G1","G2","G3","G1a","G2a"},
136 | {"L1","L5"},
137 | {"B1","B1CA","B2a","B3","B2b","B2"},
138 | {"L1","L2","L5","L6"},
139 | {"L5","S"} };
140 | const QStringList FreqNameGNSSList[MAX_GNSS]={ {"F1 (L1)","F2 (L2)","F5 (L5)"},
141 | {"F1 (E1)","F5 (E5a)","F6 (E6)","F7 (E5b)","F8 (E5)"},
142 | {"F1 (G1)","F2 (G2)","F3 (G3)","F4 (G1a)","F6 (G2a)"},
143 | {"F1 (L1)","F5 (L5)"},
144 | {"F1 (B1)","F2 (B1CA)","F5 (B2a)","F6 (B3)","F7 (B2b)","F8 (B2)"},
145 | {"F1 (L1)","F2 (L2)","F5 (L5)","F6 (L6)"},
146 | {"F5 (L5)","F9 (S)"} };
147 | const QString FreqGNSSList[MAX_GNSS][MAX_GNSS_FREQ]={ {"1","2","5"},
148 | {"1","5","6","7","8"},
149 | {"1","2","3","4","6"},
150 | {"1","5"},
151 | {"1","2","5","6","7","8"},
152 | {"1","2","5","6"},
153 | {"5","9"} };
154 | const QStringList FreqDualGNSSList[MAX_GNSS]={ {"12","15","25"},
155 | {"15","16","17","18","56","57","58","67","68","78"},
156 | {"12","13","14","16","23","24","26","34","36","46"},
157 | {"15"},
158 | {"12","15","16","17","18","25","26","27","28","56","57","58","67","68","78"},
159 | {"12","15","16","25","26","56"},
160 | {"59"} };
161 | const QStringList FreqCodeDualGNSSList[MAX_GNSS]={ {"PC12","PC15","PC25"},
162 | {"PC15","PC16","PC17","PC18","PC56","PC57","PC58","PC67","PC68","PC78"},
163 | {"PC12","PC13","PC14","PC16","PC23","PC24","PC26","PC34","PC36","PC46"},
164 | {"PC15"},
165 | {"PC12","PC15","PC16","PC17","PC18","PC25","PC26","PC27","PC28","PC56","PC57","PC58","PC67","PC68","PC78"},
166 | {"PC12","PC15","PC16","PC25","PC26","PC56"},
167 | {"PC59"} };
168 | const QStringList FreqPhaseDualGNSSList[MAX_GNSS]={ {"LC12","LC15","LC25"},
169 | {"LC15","LC16","LC17","LC18","LC56","LC57","LC58","LC67","LC68","LC78"},
170 | {"LC12","LC13","LC14","LC16","LC23","LC24","LC26","LC34","LC36","LC46"},
171 | {"LC15"},
172 | {"LC12","LC15","LC16","LC17","LC18","LC25","LC26","LC27","LC28","LC56","LC57","LC58","LC67","LC68","LC78"},
173 | {"LC12","LC15","LC16","LC25","LC26","LC56"},
174 | {"LC59"} };
175 | const QStringList FreqIFDualGNSSList[MAX_GNSS]={ {"IF12","IF15","IF25"},
176 | {"IF15","IF16","IF17","IF18","IF56","IF57","IF58","IF67","IF68","IF78"},
177 | {"IF12","IF13","IF14","IF16","IF23","IF24","IF26","IF34","IF36","IF46"},
178 | {"IF15"},
179 | {"IF12","IF15","IF16","IF17","IF18","IF25","IF26","IF27","IF28","IF56","IF57","IF58","IF67","IF68","IF78"},
180 | {"IF12","IF15","IF16","IF25","IF26","IF56"},
181 | {"IF59"} };
182 |
183 | const int iFreqDualGNSS[MAX_GNSS][MAX_GNSS_DUALFREQ][2]={ { {0,1},{0,2},{1,2} },
184 | { {0,1},{0,2},{0,3},{0,4},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4} },
185 | { {0,1},{0,2},{0,3},{0,4},{1,2},{1,3},{1,4},{2,3},{2,4},{3,4} },
186 | { {0,1} },
187 | { {0,1},{0,2},{0,3},{0,4},{0,5},{1,2},{1,3},{1,4},{1,5},{2,3},{2,4},{2,5},{3,4},{3,5},{4,5} },
188 | { {0,1},{0,2},{0,3},{1,2},{1,3},{2,3} },
189 | { {0,1} } };
190 | //Frequency & Measurement order list for different GNSS systems
191 | const QString FreqGNSSOrder[MAX_GNSS]={"125","15678","12346","15","152768","1256","59"};
192 | const QString MeasGNSSOrder[MAX_GNSS][MAX_GNSS_FREQ]={ {"PWCYLSXMN","PWCYLSXDMN","QIX"},
193 | {"CXZBA","QIX","CXZBA","QIX","QIX"},
194 | {"PC","PC","QIX","ABX","ABX"},
195 | {"C","QIX"},
196 | {"PDLSXZ","QIX","PDX","QIPDXZ","QIPDXZ","PDX"},
197 | {"CLSEXZB","LSX","QIPDXZ","LSXEZ"},
198 | {"ACBX","ACBX"} };
199 | const QString MeasCodeGNSSOrder[MAX_GNSS][MAX_GNSS_FREQ]={ {"PWCYLSXM","PWCYLSXDM","QIX"},
200 | {"CXZBA","QIX","CXZBA","QIX","QIX"},
201 | {"PC","PC","QIX","ABX","ABX"},
202 | {"C","QIX"},
203 | {"PDLSXZ","QIX","PDX","QIPDXZ","QIPDXZ","PDX"},
204 | {"CLSEXZB","LSX","QIPDXZ","LSXEZ"},
205 | {"ACBX","ACBX"} };
206 |
207 | //SNR default value
208 | const int nSNRDef=9;
209 | const QString SNRDefValue[9]={"12","18","24","30","33","36","42","48","54"};
210 | //GNSS measurement noise mode
211 | const QString GNSSNoiseMode[5] = { "-filter:fixedweight", "-filter:elevweight", "-filter:sinelevweight", "-filter:snrweight", "-filter:snrelevweight" };
212 | //Navigation Messages Types
213 | const QStringList NavMessageTypes[MAX_GNSS][2]={ { {"LNAV", "CNAV"}, {"LNAV", "CNAV", "LNAVvsCNAV", "CNAVvsLNAV"} }, //GPS
214 | { {"INAVE1E5b", "INAVE1", "INAVE5b", "FNAV"}, {"INAVE1E5b", "INAVE1", "INAVE5b", "FNAV", "INAVvsFNAV", "FNAVvsINAV"} }, //Galileo
215 | { {"FDMA"}, {"FDMA"} }, //GLONASS
216 | { {"CNAV"}, {"CNAV"} }, //GEO
217 | { {"D1"}, {"D1"} }, //BDS
218 | { {"LNAV"}, {"LNAV"} }, //QZSS
219 | { {"CNAV"}, {"CNAV"} } //IRNSS
220 | };
221 | //Navigation Messages Types comparison (same as NavMessageTypes but with spaces to allow line breaking)
222 | const QStringList CompareNavMT[MAX_GNSS][2]={ { {"LNAV", "CNAV"}, {"LNAV", "CNAV", "LNAV vsCNAV", "CNAV vsLNAV"} }, //GPS
223 | { {"INAVE1E5b", "INAVE1", "INAVE5b", "FNAV"}, {"INAV E1E5b", "INAVE1", "INAVE5b", "FNAV", "INAV vsFNAV", "FNAV vsINAV"} }, //Galileo
224 | { {"FDMA"}, {"FDMA"} }, //GLONASS
225 | { {"CNAV"}, {"CNAV"} }, //GEO
226 | { {"D1"}, {"D1"} }, //BDS
227 | { {"LNAV"}, {"LNAV"} }, //QZSS
228 | { {"CNAV"}, {"CNAV"} } //IRNSS
229 | };
230 | //INAV default order
231 | const QString GPSNAVDefaultOrder=NavMessageTypes[GPS][0][0]+","+NavMessageTypes[GPS][0][1];
232 | const QString GalINAVDefaultOrder=NavMessageTypes[Galileo][0][0]+","+NavMessageTypes[Galileo][0][1]+","+NavMessageTypes[Galileo][0][2];
233 |
234 | //Default weights
235 | const QString SingleFreqDefaultFixedWeight[MAXMEASTYPE]={"1","0.01","0.5"}; //Code, phase and Graphic combination (in metres)
236 | const QString SingleFreqDefaultFixedWeightSquared[MAXMEASTYPE]={"1","1E-4","0.25"}; //Code, phase and Graphic combination (in metres^2)
237 | const QString DualFreqDefaultFixedWeight[MAXMEASTYPE] ={"3","0.03",""}; //Code and phase (in metres)
238 | const QString DualFreqDefaultFixedWeightSquared[MAXMEASTYPE] ={"9","9E-4",""}; //Code and phase (in metres^2)
239 | const QString WeightTypeDefaultBandCValues[MAXWEIGHTTYPES][2]={ {"",""}, //Fixed weight (B and c slots not used)
240 | {"0.53","10"}, //Elevation Weight (m, degrees)
241 | {"2.5E-3",""}, //sin(elevation) (m^2, C slot not used)
242 | {"4",""}, //SNR (m^2·Hz, C slot not used)
243 | {"4",""} //SNR+sin(elevation) (m^2·Hz, C slot not used)
244 | };
245 | //QT GUI default value
246 | const QString ButtonEnabledStyle="background-color:236,236,236; color:black;";
247 | const QString ButtonDisabledStyle="background-color:200,200,200; color:216,216,216;";
248 |
249 | const QString GreenColor = "#00ff00";
250 | const QString RedColor = "#ff0000";
251 | const QString pushColor = "#ebebf5"; //same as pushButton background-color "rgb(235,235,245)" defined in ***Style.qss file
252 | const QString pushClickedColor = "#ebf9eb";
253 |
254 | //Default constellations enabled or disabled in each navigation mode
255 | const int defaultConstEnabled[MAXNAVIGATIONMODES][MAX_GNSS]= {
256 | //SPP
257 | {1,1,1,0,1,1,1},
258 | //PPP
259 | {1,1,1,0,1,1,1},
260 | //SBAS 1F
261 | {1,0,0,0,0,0,0},
262 | //SBAS DFMC
263 | {1,1,0,0,0,0,0},
264 | //DGNSS
265 | {1,0,0,0,0,0,0}
266 | };
267 |
268 | //Frequencies available per constellation
269 | const int availGNSSFreq[MAX_GNSS][MAX_GNSS_FREQ_SLOTS]={ //List of available frequencies in each constellation
270 | //0,1,2,3,4,5,6,7,8,9
271 | /*GPS*/ {0,1,1,0,0,1,0,0,0,0},
272 | /*GAL*/ {0,1,0,0,0,1,1,1,1,0},
273 | /*GLO*/ {0,1,1,1,1,0,1,0,0,0},
274 | /*GEO*/ {0,1,0,0,0,1,0,0,0,0},
275 | /*BDS*/ {0,1,1,0,0,1,1,1,1,0},
276 | /*QZS*/ {0,1,1,0,0,1,1,0,0,0},
277 | /*IRN*/ {0,0,0,0,0,1,0,0,0,1}};
278 |
279 |
280 | //Regular expressions for satellite ranges check. Set here so if more constellations are added, they only have to be changed once
281 | const QString regExpConstOnly="[GERSCJIgerscji]";
282 | const QString regExpSatWithRanges="^[+-]{0,1}"+ regExpConstOnly + "{1,7}([1-6]{0,1}[0-9]-[1-6]{0,1}[0-9]|[0-9][0-9]|[1-9])(\\.([1-6]{0,1}[0-9]-[1-6]{0,1}[0-9]|[1-6]{0,1}[0-9])){0,}-";
283 | const QString regExpSatNoRanges="(^[+-]{0,1}0$|^[+-]{0,1}" + regExpConstOnly + "{1,7}0)$";
284 | const QString regExpStartWithConst="(^[+-]{0,1}0|^[+-]{0,1}" + regExpConstOnly + "{1,7}0)"; //Same as regExpSatNoRanges but without "$" at the end
285 | const QString attributes="ABCDESLIQXPWYZMN";
286 | const QString regExpValidAttributes="[" + attributes + "]";
287 |
288 | //Declaration of free functions (functions which does not belong to a class and can be called by any class)
289 | //This functions will be defined in glab_gui.cpp
290 | int checkConstellationQChar(QChar charac);
291 | enum GNSSystem gnssQchar2gnsstype(QChar GNSS);
292 |
293 | //This function is not assigned to any class so it can be called by any of the cycle-slip functions. It is defined in preprocessing.c
294 | int checkUserInputCycleSlipMeasurement (QString *warningString, QString param, const enum CycleSlipType CStype, const enum CycleSlipParamType paramType, const QRadioButton *MinNoiseButton);
295 |
296 | #endif // GLAB_CONST_H
297 |
--------------------------------------------------------------------------------
/GUI/glab_tooltip.cpp:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 | #include "glab_tooltip.h"
16 | #include "ui_glab_tooltip.h"
17 |
18 | gLAB_ToolTip::gLAB_ToolTip(QWidget *parent) :
19 | QDialog(parent),
20 | uiToolTip(new Ui::gLAB_ToolTip)
21 | {
22 | uiToolTip->setupUi(this);
23 |
24 | QFont font;
25 | #ifdef Q_OS_LINUX
26 | font.setPointSize(9);
27 | #elif defined(Q_OS_WIN32)
28 | font.setPointSize(9);
29 | #elif defined(Q_OS_MAC)
30 | font.setPointSize(13);
31 | #endif
32 |
33 | uiToolTip->textBrowserToolTip->setFont(font);
34 | QPalette pal = uiToolTip->textBrowserToolTip->palette();
35 | pal.setBrush(QPalette::Base,QColor("#FFFFDC"));
36 | uiToolTip->textBrowserToolTip->setPalette(pal);
37 |
38 | this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
39 | }
40 |
41 | gLAB_ToolTip::~gLAB_ToolTip()
42 | {
43 | delete uiToolTip;
44 | }
45 |
46 | int gLAB_ToolTip::tHeight(){
47 | return static_cast(uiToolTip->textBrowserToolTip->document()->size().height());
48 | }
49 | int gLAB_ToolTip::tWidth(){
50 | return static_cast(uiToolTip->textBrowserToolTip->document()->size().width());
51 | }
52 | void gLAB_ToolTip::setTooltip(const QString strTooltip){
53 | uiToolTip->textBrowserToolTip->setText(strTooltip);
54 | }
55 |
56 | bool gLAB_ToolTip::event(QEvent *event){
57 | if (event->type()==QEvent::Leave){
58 | this->close();
59 | }
60 | /*if (event->type()==QEvent::MouseMove){
61 | int mouseX=;
62 | }*/
63 | return QWidget::event(event);
64 | }
65 |
--------------------------------------------------------------------------------
/GUI/glab_tooltip.h:
--------------------------------------------------------------------------------
1 | #ifndef GLAB_TOOLTIP_H
2 | #define GLAB_TOOLTIP_H
3 |
4 | #include
5 | #include
6 | #include "glab_const.h"
7 |
8 | namespace Ui {
9 | class gLAB_ToolTip;
10 | }
11 |
12 | class gLAB_ToolTip : public QDialog
13 | {
14 | Q_OBJECT
15 |
16 | public:
17 | explicit gLAB_ToolTip(QWidget *parent = nullptr);
18 | ~gLAB_ToolTip();
19 |
20 | public:
21 | int tHeight();
22 | int tWidth();
23 | void setTooltip(const QString strTooltip);
24 |
25 | private:
26 | Ui::gLAB_ToolTip *uiToolTip;
27 |
28 | protected:
29 | bool event(QEvent *event);
30 | };
31 |
32 | #endif // GLAB_TOOLTIP_H
33 |
--------------------------------------------------------------------------------
/GUI/glab_tooltip.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | gLAB_ToolTip
4 |
5 |
6 |
7 | 0
8 | 0
9 | 300
10 | 50
11 |
12 |
13 |
14 |
15 | 0
16 | 0
17 |
18 |
19 |
20 |
21 | 0
22 | 10
23 |
24 |
25 |
26 |
27 | 850
28 | 450
29 |
30 |
31 |
32 | Dialog
33 |
34 |
35 |
36 |
37 |
38 | false
39 |
40 |
41 |
42 | 0
43 |
44 |
45 | 0
46 |
47 |
48 | 0
49 |
50 |
51 | 0
52 |
53 |
54 | 0
55 |
56 | -
57 |
58 |
59 |
60 | 0
61 | 0
62 |
63 |
64 |
65 |
66 | 0
67 | 10
68 |
69 |
70 |
71 |
72 | 850
73 | 450
74 |
75 |
76 |
77 | QTextBrowser {border: 1px solid black;}
78 |
79 |
80 | QFrame::NoFrame
81 |
82 |
83 | Qt::ScrollBarAsNeeded
84 |
85 |
86 | Qt::ScrollBarAlwaysOff
87 |
88 |
89 | QAbstractScrollArea::AdjustToContents
90 |
91 |
92 | true
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/GUI/igp_grid.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/igp_grid.jpg
--------------------------------------------------------------------------------
/GUI/igp_grid_big.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/igp_grid_big.jpg
--------------------------------------------------------------------------------
/GUI/main.cpp:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 |
16 | #include "glab_gui.h"
17 |
18 |
19 | int main(int argc, char *argv[]) {
20 | QApplication a(argc, argv);
21 |
22 | QPixmap pixSplash(":/data/MainLogo.gif");
23 | QSplashScreen winSplash(pixSplash.scaledToHeight(300,Qt::SmoothTransformation));
24 | winSplash.show();
25 | winSplash.showMessage("Loading...",Qt::AlignRight|Qt::AlignTop);
26 |
27 | a.setWindowIcon(QIcon(":/data/gAGE.ico"));
28 | QLoggingCategory::setFilterRules("qt.network.ssl.warning=false");
29 |
30 | gLAB_GUI w;
31 | w.show();
32 |
33 | winSplash.finish(&w);
34 |
35 | return a.exec();
36 | }
37 |
--------------------------------------------------------------------------------
/GUI/meas_select.h:
--------------------------------------------------------------------------------
1 | #ifndef MEAS_SELECT_H
2 | #define MEAS_SELECT_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | //#include
11 | #include "glab_const.h"
12 |
13 | extern QStringList EmptyMeas;
14 | extern QStringList GNSSFreqTypeMeas[MAX_GNSS][MAX_GNSS_FREQ][5];
15 |
16 | namespace Ui {
17 | class GNSS_Meas_Select;
18 | }
19 |
20 | class GNSS_Meas_Select : public QDialog
21 | {
22 | Q_OBJECT
23 |
24 | public:
25 | explicit GNSS_Meas_Select(QWidget *parent = nullptr);
26 | ~GNSS_Meas_Select();
27 |
28 | public:
29 | //This is a definition of a variable with a pointer to a function type "void" with no parameters for class gLAB_GUI
30 | typedef void (GNSS_Meas_Select::*VoidNoParamFuncPointer)();
31 | typedef void (GNSS_Meas_Select::*Void1IntFuncPointer)(bool p1);
32 | //Declare array of pointers to pushButton of GERSCJI
33 | QPushButton *PushButtonGNSS[MAX_GNSS];
34 | //Declare array of pointer to pushButton GNSS SNR _clicked() functions
35 | VoidNoParamFuncPointer PushButtonGNSSFunctions[MAX_GNSS];
36 |
37 | //Declare array of pointers to Frame of Label of GERSCJI
38 | QFrame *FrameGNSSLabel[MAX_GNSS][2];
39 | //Declare array of pointers to Frame of print of GERSCJI
40 | QFrame *FrameGNSSPrint[MAX_GNSS][10];
41 | //Declare array of pointers to ComBoBox of frequency of GERSCJI
42 | QComboBox *ComBoBoxGNSSFreq[MAX_GNSS][10];
43 | //Declare array of pointers to ComBoBox of type of GERSCJI
44 | QComboBox *ComBoBoxGNSSType[MAX_GNSS][10];
45 | //Declare array of pointers to ComBoBox of measurement of GERSCJI
46 | QComboBox *ComBoBoxGNSSMeas[MAX_GNSS][10];
47 |
48 | int nPrint[MAX_GNSS];
49 | int OkFlag,MeasFlag;
50 |
51 |
52 |
53 | private slots:
54 | void InitPushButtonGNSSPointers();
55 | void InitPushButtonGNSSMinFuncPointers();
56 | void InitMeasPointers();
57 |
58 | void cleanPrintMeas(int iGNSS,int iMeas);
59 | void changePrintMeas(int iGNSS,int iFreq,int iType,int iMeas);
60 |
61 | void on_pushButtonAddPrint_clicked();
62 | void on_pushButtonDelPrint_clicked();
63 |
64 | void on_pushButtonGPS_clicked();
65 | void on_pushButtonGalileo_clicked();
66 | void on_pushButtonGLONASS_clicked();
67 | void on_pushButtonGEO_clicked();
68 | void on_pushButtonBDS_clicked();
69 | void on_pushButtonQZSS_clicked();
70 | void on_pushButtonIRNSS_clicked();
71 |
72 | //GPS
73 | void SetDefaultMeasGPS();
74 | void on_comboBoxFreqGPS_1_currentIndexChanged(int index);
75 | void on_comboBoxFreqGPS_2_currentIndexChanged(int index);
76 | void on_comboBoxFreqGPS_3_currentIndexChanged(int index);
77 | void on_comboBoxFreqGPS_4_currentIndexChanged(int index);
78 | void on_comboBoxFreqGPS_5_currentIndexChanged(int index);
79 | void on_comboBoxFreqGPS_6_currentIndexChanged(int index);
80 | void on_comboBoxFreqGPS_7_currentIndexChanged(int index);
81 | void on_comboBoxFreqGPS_8_currentIndexChanged(int index);
82 | void on_comboBoxFreqGPS_9_currentIndexChanged(int index);
83 | void on_comboBoxFreqGPS_10_currentIndexChanged(int index);
84 | void on_comboBoxTypeGPS_1_currentIndexChanged(int index);
85 | void on_comboBoxTypeGPS_2_currentIndexChanged(int index);
86 | void on_comboBoxTypeGPS_3_currentIndexChanged(int index);
87 | void on_comboBoxTypeGPS_4_currentIndexChanged(int index);
88 | void on_comboBoxTypeGPS_5_currentIndexChanged(int index);
89 | void on_comboBoxTypeGPS_6_currentIndexChanged(int index);
90 | void on_comboBoxTypeGPS_7_currentIndexChanged(int index);
91 | void on_comboBoxTypeGPS_8_currentIndexChanged(int index);
92 | void on_comboBoxTypeGPS_9_currentIndexChanged(int index);
93 | void on_comboBoxTypeGPS_10_currentIndexChanged(int index);
94 |
95 | //Galileo
96 | void SetDefaultMeasGalileo();
97 | void on_comboBoxFreqGalileo_1_currentIndexChanged(int index);
98 | void on_comboBoxFreqGalileo_2_currentIndexChanged(int index);
99 | void on_comboBoxFreqGalileo_3_currentIndexChanged(int index);
100 | void on_comboBoxFreqGalileo_4_currentIndexChanged(int index);
101 | void on_comboBoxFreqGalileo_5_currentIndexChanged(int index);
102 | void on_comboBoxFreqGalileo_6_currentIndexChanged(int index);
103 | void on_comboBoxFreqGalileo_7_currentIndexChanged(int index);
104 | void on_comboBoxFreqGalileo_8_currentIndexChanged(int index);
105 | void on_comboBoxFreqGalileo_9_currentIndexChanged(int index);
106 | void on_comboBoxFreqGalileo_10_currentIndexChanged(int index);
107 | void on_comboBoxTypeGalileo_1_currentIndexChanged(int index);
108 | void on_comboBoxTypeGalileo_2_currentIndexChanged(int index);
109 | void on_comboBoxTypeGalileo_3_currentIndexChanged(int index);
110 | void on_comboBoxTypeGalileo_4_currentIndexChanged(int index);
111 | void on_comboBoxTypeGalileo_5_currentIndexChanged(int index);
112 | void on_comboBoxTypeGalileo_6_currentIndexChanged(int index);
113 | void on_comboBoxTypeGalileo_7_currentIndexChanged(int index);
114 | void on_comboBoxTypeGalileo_8_currentIndexChanged(int index);
115 | void on_comboBoxTypeGalileo_9_currentIndexChanged(int index);
116 | void on_comboBoxTypeGalileo_10_currentIndexChanged(int index);
117 |
118 | //GLONASS
119 | void SetDefaultMeasGLONASS();
120 | void on_comboBoxFreqGLONASS_1_currentIndexChanged(int index);
121 | void on_comboBoxFreqGLONASS_2_currentIndexChanged(int index);
122 | void on_comboBoxFreqGLONASS_3_currentIndexChanged(int index);
123 | void on_comboBoxFreqGLONASS_4_currentIndexChanged(int index);
124 | void on_comboBoxFreqGLONASS_5_currentIndexChanged(int index);
125 | void on_comboBoxFreqGLONASS_6_currentIndexChanged(int index);
126 | void on_comboBoxFreqGLONASS_7_currentIndexChanged(int index);
127 | void on_comboBoxFreqGLONASS_8_currentIndexChanged(int index);
128 | void on_comboBoxFreqGLONASS_9_currentIndexChanged(int index);
129 | void on_comboBoxFreqGLONASS_10_currentIndexChanged(int index);
130 | void on_comboBoxTypeGLONASS_1_currentIndexChanged(int index);
131 | void on_comboBoxTypeGLONASS_2_currentIndexChanged(int index);
132 | void on_comboBoxTypeGLONASS_3_currentIndexChanged(int index);
133 | void on_comboBoxTypeGLONASS_4_currentIndexChanged(int index);
134 | void on_comboBoxTypeGLONASS_5_currentIndexChanged(int index);
135 | void on_comboBoxTypeGLONASS_6_currentIndexChanged(int index);
136 | void on_comboBoxTypeGLONASS_7_currentIndexChanged(int index);
137 | void on_comboBoxTypeGLONASS_8_currentIndexChanged(int index);
138 | void on_comboBoxTypeGLONASS_9_currentIndexChanged(int index);
139 | void on_comboBoxTypeGLONASS_10_currentIndexChanged(int index);
140 |
141 | //GEO
142 | void SetDefaultMeasGEO();
143 | void on_comboBoxFreqGEO_1_currentIndexChanged(int index);
144 | void on_comboBoxFreqGEO_2_currentIndexChanged(int index);
145 | void on_comboBoxFreqGEO_3_currentIndexChanged(int index);
146 | void on_comboBoxFreqGEO_4_currentIndexChanged(int index);
147 | void on_comboBoxFreqGEO_5_currentIndexChanged(int index);
148 | void on_comboBoxFreqGEO_6_currentIndexChanged(int index);
149 | void on_comboBoxFreqGEO_7_currentIndexChanged(int index);
150 | void on_comboBoxFreqGEO_8_currentIndexChanged(int index);
151 | void on_comboBoxFreqGEO_9_currentIndexChanged(int index);
152 | void on_comboBoxFreqGEO_10_currentIndexChanged(int index);
153 | void on_comboBoxTypeGEO_1_currentIndexChanged(int index);
154 | void on_comboBoxTypeGEO_2_currentIndexChanged(int index);
155 | void on_comboBoxTypeGEO_3_currentIndexChanged(int index);
156 | void on_comboBoxTypeGEO_4_currentIndexChanged(int index);
157 | void on_comboBoxTypeGEO_5_currentIndexChanged(int index);
158 | void on_comboBoxTypeGEO_6_currentIndexChanged(int index);
159 | void on_comboBoxTypeGEO_7_currentIndexChanged(int index);
160 | void on_comboBoxTypeGEO_8_currentIndexChanged(int index);
161 | void on_comboBoxTypeGEO_9_currentIndexChanged(int index);
162 | void on_comboBoxTypeGEO_10_currentIndexChanged(int index);
163 |
164 | //BDS
165 | void SetDefaultMeasBDS();
166 | void on_comboBoxFreqBDS_1_currentIndexChanged(int index);
167 | void on_comboBoxFreqBDS_2_currentIndexChanged(int index);
168 | void on_comboBoxFreqBDS_3_currentIndexChanged(int index);
169 | void on_comboBoxFreqBDS_4_currentIndexChanged(int index);
170 | void on_comboBoxFreqBDS_5_currentIndexChanged(int index);
171 | void on_comboBoxFreqBDS_6_currentIndexChanged(int index);
172 | void on_comboBoxFreqBDS_7_currentIndexChanged(int index);
173 | void on_comboBoxFreqBDS_8_currentIndexChanged(int index);
174 | void on_comboBoxFreqBDS_9_currentIndexChanged(int index);
175 | void on_comboBoxFreqBDS_10_currentIndexChanged(int index);
176 | void on_comboBoxTypeBDS_1_currentIndexChanged(int index);
177 | void on_comboBoxTypeBDS_2_currentIndexChanged(int index);
178 | void on_comboBoxTypeBDS_3_currentIndexChanged(int index);
179 | void on_comboBoxTypeBDS_4_currentIndexChanged(int index);
180 | void on_comboBoxTypeBDS_5_currentIndexChanged(int index);
181 | void on_comboBoxTypeBDS_6_currentIndexChanged(int index);
182 | void on_comboBoxTypeBDS_7_currentIndexChanged(int index);
183 | void on_comboBoxTypeBDS_8_currentIndexChanged(int index);
184 | void on_comboBoxTypeBDS_9_currentIndexChanged(int index);
185 | void on_comboBoxTypeBDS_10_currentIndexChanged(int index);
186 |
187 | //QZSS
188 | void SetDefaultMeasQZSS();
189 | void on_comboBoxFreqQZSS_1_currentIndexChanged(int index);
190 | void on_comboBoxFreqQZSS_2_currentIndexChanged(int index);
191 | void on_comboBoxFreqQZSS_3_currentIndexChanged(int index);
192 | void on_comboBoxFreqQZSS_4_currentIndexChanged(int index);
193 | void on_comboBoxFreqQZSS_5_currentIndexChanged(int index);
194 | void on_comboBoxFreqQZSS_6_currentIndexChanged(int index);
195 | void on_comboBoxFreqQZSS_7_currentIndexChanged(int index);
196 | void on_comboBoxFreqQZSS_8_currentIndexChanged(int index);
197 | void on_comboBoxFreqQZSS_9_currentIndexChanged(int index);
198 | void on_comboBoxFreqQZSS_10_currentIndexChanged(int index);
199 | void on_comboBoxTypeQZSS_1_currentIndexChanged(int index);
200 | void on_comboBoxTypeQZSS_2_currentIndexChanged(int index);
201 | void on_comboBoxTypeQZSS_3_currentIndexChanged(int index);
202 | void on_comboBoxTypeQZSS_4_currentIndexChanged(int index);
203 | void on_comboBoxTypeQZSS_5_currentIndexChanged(int index);
204 | void on_comboBoxTypeQZSS_6_currentIndexChanged(int index);
205 | void on_comboBoxTypeQZSS_7_currentIndexChanged(int index);
206 | void on_comboBoxTypeQZSS_8_currentIndexChanged(int index);
207 | void on_comboBoxTypeQZSS_9_currentIndexChanged(int index);
208 | void on_comboBoxTypeQZSS_10_currentIndexChanged(int index);
209 |
210 | //IRNSS
211 | void SetDefaultMeasIRNSS();
212 | void on_comboBoxFreqIRNSS_1_currentIndexChanged(int index);
213 | void on_comboBoxFreqIRNSS_2_currentIndexChanged(int index);
214 | void on_comboBoxFreqIRNSS_3_currentIndexChanged(int index);
215 | void on_comboBoxFreqIRNSS_4_currentIndexChanged(int index);
216 | void on_comboBoxFreqIRNSS_5_currentIndexChanged(int index);
217 | void on_comboBoxFreqIRNSS_6_currentIndexChanged(int index);
218 | void on_comboBoxFreqIRNSS_7_currentIndexChanged(int index);
219 | void on_comboBoxFreqIRNSS_8_currentIndexChanged(int index);
220 | void on_comboBoxFreqIRNSS_9_currentIndexChanged(int index);
221 | void on_comboBoxFreqIRNSS_10_currentIndexChanged(int index);
222 | void on_comboBoxTypeIRNSS_1_currentIndexChanged(int index);
223 | void on_comboBoxTypeIRNSS_2_currentIndexChanged(int index);
224 | void on_comboBoxTypeIRNSS_3_currentIndexChanged(int index);
225 | void on_comboBoxTypeIRNSS_4_currentIndexChanged(int index);
226 | void on_comboBoxTypeIRNSS_5_currentIndexChanged(int index);
227 | void on_comboBoxTypeIRNSS_6_currentIndexChanged(int index);
228 | void on_comboBoxTypeIRNSS_7_currentIndexChanged(int index);
229 | void on_comboBoxTypeIRNSS_8_currentIndexChanged(int index);
230 | void on_comboBoxTypeIRNSS_9_currentIndexChanged(int index);
231 | void on_comboBoxTypeIRNSS_10_currentIndexChanged(int index);
232 |
233 |
234 | void on_pushButtonMeasSelectDefault_clicked();
235 | void on_pushButtonMeasSelectOk_clicked();
236 | void on_pushButtonMeasSelectCancel_clicked();
237 | void closeEvent(QCloseEvent *bar);
238 |
239 | public:
240 | void changePushButtonGPS(bool checked);
241 | void changePushButtonGalileo(bool checked);
242 | void changePushButtonGLONASS(bool checked);
243 | void changePushButtonGEO(bool checked);
244 | void changePushButtonBDS(bool checked);
245 | void changePushButtonQZSS(bool checked);
246 | void changePushButtonIRNSS(bool checked);
247 | void on_pushButtonPublicGPS_clicked();
248 | void on_pushButtonPublicGalileo_clicked();
249 | void on_pushButtonPublicGLONASS_clicked();
250 | void on_pushButtonPublicGEO_clicked();
251 | void on_pushButtonPublicBDS_clicked();
252 | void on_pushButtonPublicQZSS_clicked();
253 | void on_pushButtonPublicIRNSS_clicked();
254 |
255 | void setMeasdefaults();
256 |
257 | void changeCurrentPage();
258 |
259 | int getgLABOptions(QString *errorString, QString *warningString, QString *saveString, QStringList *runString);
260 | void loadgLABOptions(QString *warningString, QStringList *ParametersList);
261 |
262 | private:
263 | Ui::GNSS_Meas_Select *uiMeas;
264 | };
265 |
266 | #endif // MEAS_SELECT_H
267 |
--------------------------------------------------------------------------------
/GUI/multi_threading.cpp:
--------------------------------------------------------------------------------
1 | /*This file is part of gLAB's GUI.
2 |
3 | gLAB's GUI is free software: you can redistribute it and/or modify
4 | it under the terms of the Lesser GNU General Public License as published by
5 | the Free Software Foundation, either version 3.
6 |
7 | gLAB's GUI is distributed in the hope that it will be useful,
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 | Lesser GNU General Public License for more details.
11 |
12 | You should have received a copy of the Lesser GNU General Public License
13 | along with gLAB's GUI. If not, see .
14 | */
15 | #include "multi_threading.h"
16 | #include "ui_multi_threading.h"
17 | #include
18 | #include
19 |
20 | GNSS_Multi_Threading::GNSS_Multi_Threading(QWidget *parent) :
21 | QDialog(parent),
22 | uiMThread(new Ui::GNSS_Multi_Threading)
23 | {
24 | uiMThread->setupUi(this);
25 |
26 | // Set StyleSheet
27 | #if (defined Q_OS_WIN32)
28 | QFile qss(":/data/WinStyle.qss");
29 | qss.open(QFile::ReadOnly);
30 | this->setStyleSheet("QPushButton{border-radius: 2px; padding: 3px; width: 70px;}\
31 | QPushButton:enabled{background-color:rgb(235,235,245); color:black;border: 1px solid rgb(124,124,124);}\
32 | QPushButton:disabled{background-color:rgb(203,203,203); color:rgb(156,156,156);border: 1px solid rgb(185,185,185);}\
33 | QPushButton:checked{background-color:rgb(173,216,230); color:black;border: 1px solid rgb(124,124,124);}"+qss.readAll());
34 | qss.close();
35 | #elif (defined Q_OS_MAC)
36 | QFile qss(":/data/MacStyle.qss");
37 | qss.open(QFile::ReadOnly);
38 | this->setStyleSheet(qss.readAll());
39 | qss.close();
40 | #else
41 | QFile qss(":/data/LinuxStyle.qss");
42 | qss.open(QFile::ReadOnly);
43 | this->setStyleSheet(qss.readAll());
44 | qss.close();
45 | #endif
46 |
47 | nThreads=1;
48 |
49 | this->setWindowTitle("Set Multi-threading options");
50 |
51 | uiMThread->spinBoxNumberThreads->setRange(1,1000);
52 | uiMThread->spinBoxNumberThreads->setValue(1);
53 |
54 | uiMThread->pushButtonNumberThreadsCancel->setHidden(true); //Remove when Cancel buttons undo all changes made by the user
55 |
56 | uiMThread->pushButtonNumberThreadsOk->setFocus();
57 | }
58 | GNSS_Multi_Threading::~GNSS_Multi_Threading()
59 | {
60 | delete uiMThread;
61 | }
62 |
63 | void GNSS_Multi_Threading::on_spinBoxNumberThreads_valueChanged(int iValue) {
64 | nThreads=iValue;
65 | uiMThread->spinBoxNumberThreads->setValue(iValue);
66 | }
67 | void GNSS_Multi_Threading::on_pushButtonNumberThreadsDefault_clicked(){
68 | uiMThread->spinBoxNumberThreads->setValue(1);
69 | nThreads=1;
70 | }
71 | void GNSS_Multi_Threading::on_pushButtonNumberThreadsOk_clicked(){
72 | nThreads=uiMThread->spinBoxNumberThreads->value();
73 | this->close();
74 | }
75 | void GNSS_Multi_Threading::on_pushButtonNumberThreadsCancel_clicked(){
76 | this->close();
77 | }
78 | void GNSS_Multi_Threading::setThreadNumber(int numT){
79 | if ( numT>0 && numT<1001 ) {
80 | this->on_spinBoxNumberThreads_valueChanged(numT);
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/GUI/multi_threading.h:
--------------------------------------------------------------------------------
1 | #ifndef MULTI_THREADING_H
2 | #define MULTI_THREADING_H
3 |
4 | #include
5 |
6 | namespace Ui {
7 | class GNSS_Multi_Threading;
8 | }
9 |
10 | class GNSS_Multi_Threading : public QDialog
11 | {
12 | Q_OBJECT
13 |
14 | public:
15 | explicit GNSS_Multi_Threading(QWidget *parent = nullptr);
16 | ~GNSS_Multi_Threading();
17 |
18 | int nThreads;
19 |
20 | private slots:
21 | void on_spinBoxNumberThreads_valueChanged(int iValue);
22 |
23 | void on_pushButtonNumberThreadsDefault_clicked();
24 | void on_pushButtonNumberThreadsOk_clicked();
25 | void on_pushButtonNumberThreadsCancel_clicked();
26 |
27 | public:
28 | void setThreadNumber(int numT);
29 |
30 | private:
31 | Ui::GNSS_Multi_Threading *uiMThread;
32 | };
33 |
34 | #endif // MULTI_THREADING_H
35 |
--------------------------------------------------------------------------------
/GUI/multi_threading.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | GNSS_Multi_Threading
4 |
5 |
6 |
7 | 0
8 | 0
9 | 390
10 | 80
11 |
12 |
13 |
14 |
15 | 0
16 | 0
17 |
18 |
19 |
20 | Dialog
21 |
22 |
23 | -
24 |
25 |
26 |
27 | 50
28 | 25
29 |
30 |
31 |
32 |
33 | -
34 |
35 |
36 | QFrame::NoFrame
37 |
38 |
39 | QFrame::Raised
40 |
41 |
42 |
43 | 0
44 |
45 |
46 | 0
47 |
48 |
49 | 0
50 |
51 |
52 | 0
53 |
54 |
55 | 6
56 |
57 |
58 | 0
59 |
60 |
-
61 |
62 |
63 | OK
64 |
65 |
66 |
67 | -
68 |
69 |
70 | Qt::Horizontal
71 |
72 |
73 |
74 | 40
75 | 20
76 |
77 |
78 |
79 |
80 | -
81 |
82 |
83 | Cancel
84 |
85 |
86 |
87 | -
88 |
89 |
90 |
91 | 0
92 | 0
93 |
94 |
95 |
96 |
97 | 105
98 | 0
99 |
100 |
101 |
102 | Set Default
103 |
104 |
105 |
106 |
107 |
108 |
109 | -
110 |
111 |
112 |
113 | 0
114 | 25
115 |
116 |
117 |
118 | <b>Set number of threads:</b><br><br>Set the number of threads to use during gLAB processing. Multiple threads allow to parallelize computation load, but note that only the cycle-slip and model computation are run in multi-threading mode.<br>There must be as many cores as threads, so each thread run on a different core.<br>The default is to run with a single thread.<br><br><b>NOTE:</b> In gLAB, the single thread and multi-thread modes are separated in different command line executables (with the same source code). The names of the multi-thread executables are the following:<ul><li><b>Windows:</b> gLAB_MultiThread.exe</li><li><b>Linux:</b> gLAB_MultiThread_linux</li><li><b>Mac:</b> gLAB_MultiThread_mac<br></li></ul>
119 |
120 |
121 | color: rgb(0, 0, 0);
122 |
123 |
124 | Set number of threads:
125 |
126 |
127 |
128 | -
129 |
130 |
131 | Qt::Vertical
132 |
133 |
134 |
135 | 20
136 | 0
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 | spinBoxNumberThreads
145 | pushButtonNumberThreadsDefault
146 | pushButtonNumberThreadsCancel
147 | pushButtonNumberThreadsOk
148 |
149 |
150 |
151 |
152 |
--------------------------------------------------------------------------------
/GUI/myresources.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | gAGE.ico
4 | gage_logo.png
5 | Header.png
6 | warning.png
7 | MainLogo.gif
8 | graph_command_line_help.txt
9 | gLAB_User_Error_File_Example.txt
10 | gLAB_Sigma_Multipath_File_Example.txt
11 | gLAB_command_line_messages.txt
12 | gLAB_command_line_help.txt
13 | igp_grid.jpg
14 | gLAB_SUM.pdf
15 | gLAB.icns
16 | gLAB_Reference_Position_File_Example.txt
17 | gLAB_command_line_sbas_maps_description.txt
18 | LinuxStyle.qss
19 | WinStyle.qss
20 | MacStyle.qss
21 | downarrow.png
22 | downarrow_disabled.png
23 | gLAB_FAQ.txt
24 |
25 |
26 |
--------------------------------------------------------------------------------
/GUI/sbas_obad_set.h:
--------------------------------------------------------------------------------
1 | #ifndef SBAS_OBAD_SET_H
2 | #define SBAS_OBAD_SET_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include "glab_const.h"
10 |
11 | namespace Ui {
12 | class GNSS_SBAS_OBAD_Set;
13 | }
14 |
15 | class GNSS_SBAS_OBAD_Set : public QDialog
16 | {
17 | Q_OBJECT
18 |
19 | public:
20 | explicit GNSS_SBAS_OBAD_Set(QWidget *parent = nullptr);
21 | ~GNSS_SBAS_OBAD_Set();
22 |
23 | public:
24 | //Declare array of pointers to LineEdit of OBAD of GERSCJI
25 | QRadioButton *RadioButtonGNSSOBAD[MAX_GNSS][6];
26 | //Declare array of pointers to LineEdit of OBAD of GERSCJI
27 | QLineEdit *LineEditGNSSOBAD[MAX_GNSS][3];
28 |
29 | int OkFlag;
30 |
31 | private slots:
32 | void InitOBADPointers();
33 |
34 | //GPS
35 | void on_radioButtonIcorrOBADReadMT37GPS_clicked();
36 | void on_radioButtonIcorrOBADUserDefinedGPS_clicked();
37 | void on_radioButtonCcorrOBADReadMT37GPS_clicked();
38 | void on_radioButtonCcorrOBADUserDefinedGPS_clicked();
39 | void on_radioButtonRcorrOBADReadMT37GPS_clicked();
40 | void on_radioButtonRcorrOBADUserDefinedGPS_clicked();
41 | //Galileo
42 | void on_radioButtonIcorrOBADReadMT37Galileo_clicked();
43 | void on_radioButtonIcorrOBADUserDefinedGalileo_clicked();
44 | void on_radioButtonCcorrOBADReadMT37Galileo_clicked();
45 | void on_radioButtonCcorrOBADUserDefinedGalileo_clicked();
46 | void on_radioButtonRcorrOBADReadMT37Galileo_clicked();
47 | void on_radioButtonRcorrOBADUserDefinedGalileo_clicked();
48 | //GLONASS
49 | void on_radioButtonIcorrOBADReadMT37GLONASS_clicked();
50 | void on_radioButtonIcorrOBADUserDefinedGLONASS_clicked();
51 | void on_radioButtonCcorrOBADReadMT37GLONASS_clicked();
52 | void on_radioButtonCcorrOBADUserDefinedGLONASS_clicked();
53 | void on_radioButtonRcorrOBADReadMT37GLONASS_clicked();
54 | void on_radioButtonRcorrOBADUserDefinedGLONASS_clicked();
55 | //GEO
56 | void on_radioButtonIcorrOBADReadMT37GEO_clicked();
57 | void on_radioButtonIcorrOBADUserDefinedGEO_clicked();
58 | void on_radioButtonCcorrOBADReadMT37GEO_clicked();
59 | void on_radioButtonCcorrOBADUserDefinedGEO_clicked();
60 | void on_radioButtonRcorrOBADReadMT37GEO_clicked();
61 | void on_radioButtonRcorrOBADUserDefinedGEO_clicked();
62 | //BDS
63 | void on_radioButtonIcorrOBADReadMT37BDS_clicked();
64 | void on_radioButtonIcorrOBADUserDefinedBDS_clicked();
65 | void on_radioButtonCcorrOBADReadMT37BDS_clicked();
66 | void on_radioButtonCcorrOBADUserDefinedBDS_clicked();
67 | void on_radioButtonRcorrOBADReadMT37BDS_clicked();
68 | void on_radioButtonRcorrOBADUserDefinedBDS_clicked();
69 | //QZSS
70 | void on_radioButtonIcorrOBADReadMT37QZSS_clicked();
71 | void on_radioButtonIcorrOBADUserDefinedQZSS_clicked();
72 | void on_radioButtonCcorrOBADReadMT37QZSS_clicked();
73 | void on_radioButtonCcorrOBADUserDefinedQZSS_clicked();
74 | void on_radioButtonRcorrOBADReadMT37QZSS_clicked();
75 | void on_radioButtonRcorrOBADUserDefinedQZSS_clicked();
76 | //IRNSS
77 | void on_radioButtonIcorrOBADReadMT37IRNSS_clicked();
78 | void on_radioButtonIcorrOBADUserDefinedIRNSS_clicked();
79 | void on_radioButtonCcorrOBADReadMT37IRNSS_clicked();
80 | void on_radioButtonCcorrOBADUserDefinedIRNSS_clicked();
81 | void on_radioButtonRcorrOBADReadMT37IRNSS_clicked();
82 | void on_radioButtonRcorrOBADUserDefinedIRNSS_clicked();
83 |
84 | void on_pushButtonSBASOBADAdvancedDefault_clicked();
85 | void on_pushButtonSBASOBADAdvancedOk_clicked();
86 |
87 | public:
88 | void setGPS(bool checked);
89 | void setGalileo(bool checked);
90 | void setGLONASS(bool checked);
91 | void setGEO(bool checked);
92 | void setBDS(bool checked);
93 | void setQZSS(bool checked);
94 | void setIRNSS(bool checked);
95 |
96 | void setOBADDefaults();
97 | void setCurrentOBADPageDefaults();
98 |
99 | void changePage(int iPage);
100 |
101 | void getgLABOptions(const int optionType, QString *errorString, QString *warningString, QString *saveString, QStringList *runString);
102 | void loadgLABOptions(const int optionType, QString *warningString, QStringList *ParametersList);
103 |
104 | private:
105 | Ui::GNSS_SBAS_OBAD_Set *uiSBASOBAD;
106 |
107 | int OBADOK[3];
108 | QString OBADOptions[3][MAX_GNSS];
109 | };
110 |
111 | #endif // SBAS_OBAD_SET_H
112 |
--------------------------------------------------------------------------------
/GUI/snr_advanced.h:
--------------------------------------------------------------------------------
1 | #ifndef SNR_ADVANCED_H
2 | #define SNR_ADVANCED_H
3 |
4 | #include
5 | #include
6 | #include
7 | //#include
8 | #include
9 | #include
10 | #include "glab_const.h"
11 |
12 | namespace Ui {
13 | class GNSS_SNR_Advanced;
14 | }
15 |
16 | class GNSS_SNR_Advanced : public QDialog
17 | {
18 | Q_OBJECT
19 |
20 | public:
21 | explicit GNSS_SNR_Advanced(QWidget *parent = nullptr);
22 | explicit GNSS_SNR_Advanced(QWidget *parent = nullptr,int setMinorMax=0);
23 | ~GNSS_SNR_Advanced();
24 |
25 | public:
26 | //This is a definition of a variable with a pointer to a function type "void" with no parameters for class gLAB_GUI
27 | typedef void (GNSS_SNR_Advanced::*VoidNoParamFuncPointer)();
28 | //Declare array of pointers to pushButton of GERSCJI
29 | QPushButton *PushButtonGNSS[MAX_GNSS];
30 | //Declare array of pointer to pushButton GNSS SNR _clicked() functions
31 | VoidNoParamFuncPointer PushButtonGNSSFunctions[MAX_GNSS];
32 | //Declare array of pointers to ComboBox of defualt min/max SNR of GERSCJI
33 | QComboBox *ComboBoxGNSSDefaultSNR[2][MAX_GNSS];
34 | //Declare array of pointers to LineEdit of defualt min/max SNR of GERSCJI
35 | QLineEdit *LineEditGNSSDefaultSNR[2][MAX_GNSS];
36 | //Declare array of pointers to ComboBox of measurements of GERSCJI
37 | QComboBox *ComboBoxGNSSMeas[2][MAX_GNSS][MAX_GNSS_FREQ][2];
38 | //Declare array of pointers to ComboBox of min/max SNR of GERSCJI
39 | QComboBox *ComboBoxGNSSSNR[2][MAX_GNSS][MAX_GNSS_FREQ][2];
40 | //Declare array of pointers to LineEdit of min/max SNR of GERSCJI
41 | QLineEdit *LineEditGNSSSNR[2][MAX_GNSS][MAX_GNSS_FREQ][2];
42 |
43 | int OkFlag;
44 | int MinorMax; //MinSNR=0, MaxSNR=1
45 |
46 | private slots:
47 | void InitPushButtonGNSSPointers();
48 | void InitPushButtonGNSSMinFuncPointers();
49 | void InitComboBoxGNSSDefaultSNRPointers();
50 | void InitLineEditGNSSDefaultSNRPointers();
51 | void InitComboBoxGNSSMeasPointers();
52 | void InitComboBoxGNSSSNRPointers();
53 | void InitLineEditGNSSSNRPointers();
54 |
55 |
56 | void on_pushButtonGPS_clicked();
57 | void on_pushButtonGalileo_clicked();
58 | void on_pushButtonGLONASS_clicked();
59 | void on_pushButtonGEO_clicked();
60 | void on_pushButtonBDS_clicked();
61 | void on_pushButtonQZSS_clicked();
62 | void on_pushButtonIRNSS_clicked();
63 |
64 | //GPS
65 | //GPS Min
66 | void SetDefaultSNRThresholdMinGPS();
67 | void on_comboBoxSNRThresholdsMinGPS_currentIndexChanged(int index);
68 | void on_comboBoxSNRMinMeasF1CodeGPS_1_currentIndexChanged(int index);
69 | void on_comboBoxSNRMinSelectF1CodeGPS_1_currentIndexChanged(int index);
70 | void on_comboBoxSNRMinSelectF1CodeGPS_2_currentIndexChanged(int index);
71 | void on_comboBoxSNRMinMeasF2CodeGPS_1_currentIndexChanged(int index);
72 | void on_comboBoxSNRMinSelectF2CodeGPS_1_currentIndexChanged(int index);
73 | void on_comboBoxSNRMinSelectF2CodeGPS_2_currentIndexChanged(int index);
74 | void on_comboBoxSNRMinMeasF5CodeGPS_1_currentIndexChanged(int index);
75 | void on_comboBoxSNRMinSelectF5CodeGPS_1_currentIndexChanged(int index);
76 | void on_comboBoxSNRMinSelectF5CodeGPS_2_currentIndexChanged(int index);
77 | //GPS Max
78 | void SetDefaultSNRThresholdMaxGPS();
79 | void on_comboBoxSNRThresholdsMaxGPS_currentIndexChanged(int index);
80 | void on_comboBoxSNRMaxMeasF1CodeGPS_1_currentIndexChanged(int index);
81 | void on_comboBoxSNRMaxSelectF1CodeGPS_1_currentIndexChanged(int index);
82 | void on_comboBoxSNRMaxSelectF1CodeGPS_2_currentIndexChanged(int index);
83 | void on_comboBoxSNRMaxMeasF2CodeGPS_1_currentIndexChanged(int index);
84 | void on_comboBoxSNRMaxSelectF2CodeGPS_1_currentIndexChanged(int index);
85 | void on_comboBoxSNRMaxSelectF2CodeGPS_2_currentIndexChanged(int index);
86 | void on_comboBoxSNRMaxMeasF5CodeGPS_1_currentIndexChanged(int index);
87 | void on_comboBoxSNRMaxSelectF5CodeGPS_1_currentIndexChanged(int index);
88 | void on_comboBoxSNRMaxSelectF5CodeGPS_2_currentIndexChanged(int index);
89 | //Galileo
90 | //Galileo Min
91 | void SetDefaultSNRThresholdMinGalileo();
92 | void on_comboBoxSNRThresholdsMinGalileo_currentIndexChanged(int index);
93 | void on_comboBoxSNRMinMeasF1CodeGalileo_1_currentIndexChanged(int index);
94 | void on_comboBoxSNRMinSelectF1CodeGalileo_1_currentIndexChanged(int index);
95 | void on_comboBoxSNRMinSelectF1CodeGalileo_2_currentIndexChanged(int index);
96 | void on_comboBoxSNRMinMeasF5CodeGalileo_1_currentIndexChanged(int index);
97 | void on_comboBoxSNRMinSelectF5CodeGalileo_1_currentIndexChanged(int index);
98 | void on_comboBoxSNRMinSelectF5CodeGalileo_2_currentIndexChanged(int index);
99 | void on_comboBoxSNRMinMeasF6CodeGalileo_1_currentIndexChanged(int index);
100 | void on_comboBoxSNRMinSelectF6CodeGalileo_1_currentIndexChanged(int index);
101 | void on_comboBoxSNRMinSelectF6CodeGalileo_2_currentIndexChanged(int index);
102 | void on_comboBoxSNRMinMeasF7CodeGalileo_1_currentIndexChanged(int index);
103 | void on_comboBoxSNRMinSelectF7CodeGalileo_1_currentIndexChanged(int index);
104 | void on_comboBoxSNRMinSelectF7CodeGalileo_2_currentIndexChanged(int index);
105 | void on_comboBoxSNRMinMeasF8CodeGalileo_1_currentIndexChanged(int index);
106 | void on_comboBoxSNRMinSelectF8CodeGalileo_1_currentIndexChanged(int index);
107 | void on_comboBoxSNRMinSelectF8CodeGalileo_2_currentIndexChanged(int index);
108 | //Galileo Max
109 | void SetDefaultSNRThresholdMaxGalileo();
110 | void on_comboBoxSNRThresholdsMaxGalileo_currentIndexChanged(int index);
111 | void on_comboBoxSNRMaxMeasF1CodeGalileo_1_currentIndexChanged(int index);
112 | void on_comboBoxSNRMaxSelectF1CodeGalileo_1_currentIndexChanged(int index);
113 | void on_comboBoxSNRMaxSelectF1CodeGalileo_2_currentIndexChanged(int index);
114 | void on_comboBoxSNRMaxMeasF5CodeGalileo_1_currentIndexChanged(int index);
115 | void on_comboBoxSNRMaxSelectF5CodeGalileo_1_currentIndexChanged(int index);
116 | void on_comboBoxSNRMaxSelectF5CodeGalileo_2_currentIndexChanged(int index);
117 | void on_comboBoxSNRMaxMeasF6CodeGalileo_1_currentIndexChanged(int index);
118 | void on_comboBoxSNRMaxSelectF6CodeGalileo_1_currentIndexChanged(int index);
119 | void on_comboBoxSNRMaxSelectF6CodeGalileo_2_currentIndexChanged(int index);
120 | void on_comboBoxSNRMaxMeasF7CodeGalileo_1_currentIndexChanged(int index);
121 | void on_comboBoxSNRMaxSelectF7CodeGalileo_1_currentIndexChanged(int index);
122 | void on_comboBoxSNRMaxSelectF7CodeGalileo_2_currentIndexChanged(int index);
123 | void on_comboBoxSNRMaxMeasF8CodeGalileo_1_currentIndexChanged(int index);
124 | void on_comboBoxSNRMaxSelectF8CodeGalileo_1_currentIndexChanged(int index);
125 | void on_comboBoxSNRMaxSelectF8CodeGalileo_2_currentIndexChanged(int index);
126 | //GLONASS
127 | //GLONASS Min
128 | void SetDefaultSNRThresholdMinGLONASS();
129 | void on_comboBoxSNRThresholdsMinGLONASS_currentIndexChanged(int index);
130 | void on_comboBoxSNRMinMeasF1CodeGLONASS_1_currentIndexChanged(int index);
131 | void on_comboBoxSNRMinSelectF1CodeGLONASS_1_currentIndexChanged(int index);
132 | void on_comboBoxSNRMinSelectF1CodeGLONASS_2_currentIndexChanged(int index);
133 | void on_comboBoxSNRMinMeasF2CodeGLONASS_1_currentIndexChanged(int index);
134 | void on_comboBoxSNRMinSelectF2CodeGLONASS_1_currentIndexChanged(int index);
135 | void on_comboBoxSNRMinSelectF2CodeGLONASS_2_currentIndexChanged(int index);
136 | void on_comboBoxSNRMinMeasF3CodeGLONASS_1_currentIndexChanged(int index);
137 | void on_comboBoxSNRMinSelectF3CodeGLONASS_1_currentIndexChanged(int index);
138 | void on_comboBoxSNRMinSelectF3CodeGLONASS_2_currentIndexChanged(int index);
139 | void on_comboBoxSNRMinMeasF4CodeGLONASS_1_currentIndexChanged(int index);
140 | void on_comboBoxSNRMinSelectF4CodeGLONASS_1_currentIndexChanged(int index);
141 | void on_comboBoxSNRMinSelectF4CodeGLONASS_2_currentIndexChanged(int index);
142 | void on_comboBoxSNRMinMeasF6CodeGLONASS_1_currentIndexChanged(int index);
143 | void on_comboBoxSNRMinSelectF6CodeGLONASS_1_currentIndexChanged(int index);
144 | void on_comboBoxSNRMinSelectF6CodeGLONASS_2_currentIndexChanged(int index);
145 | //GLONASS Max
146 | void SetDefaultSNRThresholdMaxGLONASS();
147 | void on_comboBoxSNRThresholdsMaxGLONASS_currentIndexChanged(int index);
148 | void on_comboBoxSNRMaxMeasF1CodeGLONASS_1_currentIndexChanged(int index);
149 | void on_comboBoxSNRMaxSelectF1CodeGLONASS_1_currentIndexChanged(int index);
150 | void on_comboBoxSNRMaxSelectF1CodeGLONASS_2_currentIndexChanged(int index);
151 | void on_comboBoxSNRMaxMeasF2CodeGLONASS_1_currentIndexChanged(int index);
152 | void on_comboBoxSNRMaxSelectF2CodeGLONASS_1_currentIndexChanged(int index);
153 | void on_comboBoxSNRMaxSelectF2CodeGLONASS_2_currentIndexChanged(int index);
154 | void on_comboBoxSNRMaxMeasF3CodeGLONASS_1_currentIndexChanged(int index);
155 | void on_comboBoxSNRMaxSelectF3CodeGLONASS_1_currentIndexChanged(int index);
156 | void on_comboBoxSNRMaxSelectF3CodeGLONASS_2_currentIndexChanged(int index);
157 | void on_comboBoxSNRMaxMeasF4CodeGLONASS_1_currentIndexChanged(int index);
158 | void on_comboBoxSNRMaxSelectF4CodeGLONASS_1_currentIndexChanged(int index);
159 | void on_comboBoxSNRMaxSelectF4CodeGLONASS_2_currentIndexChanged(int index);
160 | void on_comboBoxSNRMaxMeasF6CodeGLONASS_1_currentIndexChanged(int index);
161 | void on_comboBoxSNRMaxSelectF6CodeGLONASS_1_currentIndexChanged(int index);
162 | void on_comboBoxSNRMaxSelectF6CodeGLONASS_2_currentIndexChanged(int index);
163 | //GEO
164 | //GEO Min
165 | void SetDefaultSNRThresholdMinGEO();
166 | void on_comboBoxSNRThresholdsMinGEO_currentIndexChanged(int index);
167 | void on_comboBoxSNRMinMeasF1CodeGEO_1_currentIndexChanged(int index);
168 | void on_comboBoxSNRMinSelectF1CodeGEO_1_currentIndexChanged(int index);
169 | void on_comboBoxSNRMinSelectF1CodeGEO_2_currentIndexChanged(int index);
170 | void on_comboBoxSNRMinMeasF5CodeGEO_1_currentIndexChanged(int index);
171 | void on_comboBoxSNRMinSelectF5CodeGEO_1_currentIndexChanged(int index);
172 | void on_comboBoxSNRMinSelectF5CodeGEO_2_currentIndexChanged(int index);
173 | //GEO Max
174 | void SetDefaultSNRThresholdMaxGEO();
175 | void on_comboBoxSNRThresholdsMaxGEO_currentIndexChanged(int index);
176 | void on_comboBoxSNRMaxMeasF1CodeGEO_1_currentIndexChanged(int index);
177 | void on_comboBoxSNRMaxSelectF1CodeGEO_1_currentIndexChanged(int index);
178 | void on_comboBoxSNRMaxSelectF1CodeGEO_2_currentIndexChanged(int index);
179 | void on_comboBoxSNRMaxMeasF5CodeGEO_1_currentIndexChanged(int index);
180 | void on_comboBoxSNRMaxSelectF5CodeGEO_1_currentIndexChanged(int index);
181 | void on_comboBoxSNRMaxSelectF5CodeGEO_2_currentIndexChanged(int index);
182 | //BDS
183 | //BDS Min
184 | void SetDefaultSNRThresholdMinBDS();
185 | void on_comboBoxSNRThresholdsMinBDS_currentIndexChanged(int index);
186 | void on_comboBoxSNRMinMeasF2CodeBDS_1_currentIndexChanged(int index);
187 | void on_comboBoxSNRMinSelectF2CodeBDS_1_currentIndexChanged(int index);
188 | void on_comboBoxSNRMinSelectF2CodeBDS_2_currentIndexChanged(int index);
189 | void on_comboBoxSNRMinMeasF7CodeBDS_1_currentIndexChanged(int index);
190 | void on_comboBoxSNRMinSelectF7CodeBDS_1_currentIndexChanged(int index);
191 | void on_comboBoxSNRMinSelectF7CodeBDS_2_currentIndexChanged(int index);
192 | void on_comboBoxSNRMinMeasF6CodeBDS_1_currentIndexChanged(int index);
193 | void on_comboBoxSNRMinSelectF6CodeBDS_1_currentIndexChanged(int index);
194 | void on_comboBoxSNRMinSelectF6CodeBDS_2_currentIndexChanged(int index);
195 | void on_comboBoxSNRMinMeasF5CodeBDS_1_currentIndexChanged(int index);
196 | void on_comboBoxSNRMinSelectF5CodeBDS_1_currentIndexChanged(int index);
197 | void on_comboBoxSNRMinSelectF5CodeBDS_2_currentIndexChanged(int index);
198 | void on_comboBoxSNRMinMeasF1CodeBDS_1_currentIndexChanged(int index);
199 | void on_comboBoxSNRMinSelectF1CodeBDS_1_currentIndexChanged(int index);
200 | void on_comboBoxSNRMinSelectF1CodeBDS_2_currentIndexChanged(int index);
201 | void on_comboBoxSNRMinMeasF8CodeBDS_1_currentIndexChanged(int index);
202 | void on_comboBoxSNRMinSelectF8CodeBDS_1_currentIndexChanged(int index);
203 | void on_comboBoxSNRMinSelectF8CodeBDS_2_currentIndexChanged(int index);
204 | //BDS Max
205 | void SetDefaultSNRThresholdMaxBDS();
206 | void on_comboBoxSNRThresholdsMaxBDS_currentIndexChanged(int index);
207 | void on_comboBoxSNRMaxMeasF2CodeBDS_1_currentIndexChanged(int index);
208 | void on_comboBoxSNRMaxSelectF2CodeBDS_1_currentIndexChanged(int index);
209 | void on_comboBoxSNRMaxSelectF2CodeBDS_2_currentIndexChanged(int index);
210 | void on_comboBoxSNRMaxMeasF7CodeBDS_1_currentIndexChanged(int index);
211 | void on_comboBoxSNRMaxSelectF7CodeBDS_1_currentIndexChanged(int index);
212 | void on_comboBoxSNRMaxSelectF7CodeBDS_2_currentIndexChanged(int index);
213 | void on_comboBoxSNRMaxMeasF6CodeBDS_1_currentIndexChanged(int index);
214 | void on_comboBoxSNRMaxSelectF6CodeBDS_1_currentIndexChanged(int index);
215 | void on_comboBoxSNRMaxSelectF6CodeBDS_2_currentIndexChanged(int index);
216 | void on_comboBoxSNRMaxMeasF5CodeBDS_1_currentIndexChanged(int index);
217 | void on_comboBoxSNRMaxSelectF5CodeBDS_1_currentIndexChanged(int index);
218 | void on_comboBoxSNRMaxSelectF5CodeBDS_2_currentIndexChanged(int index);
219 | void on_comboBoxSNRMaxMeasF1CodeBDS_1_currentIndexChanged(int index);
220 | void on_comboBoxSNRMaxSelectF1CodeBDS_1_currentIndexChanged(int index);
221 | void on_comboBoxSNRMaxSelectF1CodeBDS_2_currentIndexChanged(int index);
222 | void on_comboBoxSNRMaxMeasF8CodeBDS_1_currentIndexChanged(int index);
223 | void on_comboBoxSNRMaxSelectF8CodeBDS_1_currentIndexChanged(int index);
224 | void on_comboBoxSNRMaxSelectF8CodeBDS_2_currentIndexChanged(int index);
225 | //QZSS
226 | //QZSS Min
227 | void SetDefaultSNRThresholdMinQZSS();
228 | void on_comboBoxSNRThresholdsMinQZSS_currentIndexChanged(int index);
229 | void on_comboBoxSNRMinMeasF1CodeQZSS_1_currentIndexChanged(int index);
230 | void on_comboBoxSNRMinSelectF1CodeQZSS_1_currentIndexChanged(int index);
231 | void on_comboBoxSNRMinSelectF1CodeQZSS_2_currentIndexChanged(int index);
232 | void on_comboBoxSNRMinMeasF2CodeQZSS_1_currentIndexChanged(int index);
233 | void on_comboBoxSNRMinSelectF2CodeQZSS_1_currentIndexChanged(int index);
234 | void on_comboBoxSNRMinSelectF2CodeQZSS_2_currentIndexChanged(int index);
235 | void on_comboBoxSNRMinMeasF5CodeQZSS_1_currentIndexChanged(int index);
236 | void on_comboBoxSNRMinSelectF5CodeQZSS_1_currentIndexChanged(int index);
237 | void on_comboBoxSNRMinSelectF5CodeQZSS_2_currentIndexChanged(int index);
238 | void on_comboBoxSNRMinMeasF6CodeQZSS_1_currentIndexChanged(int index);
239 | void on_comboBoxSNRMinSelectF6CodeQZSS_1_currentIndexChanged(int index);
240 | void on_comboBoxSNRMinSelectF6CodeQZSS_2_currentIndexChanged(int index);
241 | //QZSS Max
242 | void SetDefaultSNRThresholdMaxQZSS();
243 | void on_comboBoxSNRThresholdsMaxQZSS_currentIndexChanged(int index);
244 | void on_comboBoxSNRMaxMeasF1CodeQZSS_1_currentIndexChanged(int index);
245 | void on_comboBoxSNRMaxSelectF1CodeQZSS_1_currentIndexChanged(int index);
246 | void on_comboBoxSNRMaxSelectF1CodeQZSS_2_currentIndexChanged(int index);
247 | void on_comboBoxSNRMaxMeasF2CodeQZSS_1_currentIndexChanged(int index);
248 | void on_comboBoxSNRMaxSelectF2CodeQZSS_1_currentIndexChanged(int index);
249 | void on_comboBoxSNRMaxSelectF2CodeQZSS_2_currentIndexChanged(int index);
250 | void on_comboBoxSNRMaxMeasF5CodeQZSS_1_currentIndexChanged(int index);
251 | void on_comboBoxSNRMaxSelectF5CodeQZSS_1_currentIndexChanged(int index);
252 | void on_comboBoxSNRMaxSelectF5CodeQZSS_2_currentIndexChanged(int index);
253 | void on_comboBoxSNRMaxMeasF6CodeQZSS_1_currentIndexChanged(int index);
254 | void on_comboBoxSNRMaxSelectF6CodeQZSS_1_currentIndexChanged(int index);
255 | void on_comboBoxSNRMaxSelectF6CodeQZSS_2_currentIndexChanged(int index);
256 | //IRNSS
257 | //IRNSS Min
258 | void SetDefaultSNRThresholdMinIRNSS();
259 | void on_comboBoxSNRThresholdsMinIRNSS_currentIndexChanged(int index);
260 | void on_comboBoxSNRMinMeasF5CodeIRNSS_1_currentIndexChanged(int index);
261 | void on_comboBoxSNRMinSelectF5CodeIRNSS_1_currentIndexChanged(int index);
262 | void on_comboBoxSNRMinSelectF5CodeIRNSS_2_currentIndexChanged(int index);
263 | void on_comboBoxSNRMinMeasF9CodeIRNSS_1_currentIndexChanged(int index);
264 | void on_comboBoxSNRMinSelectF9CodeIRNSS_1_currentIndexChanged(int index);
265 | void on_comboBoxSNRMinSelectF9CodeIRNSS_2_currentIndexChanged(int index);
266 | //IRNSS Max
267 | void SetDefaultSNRThresholdMaxIRNSS();
268 | void on_comboBoxSNRThresholdsMaxIRNSS_currentIndexChanged(int index);
269 | void on_comboBoxSNRMaxMeasF5CodeIRNSS_1_currentIndexChanged(int index);
270 | void on_comboBoxSNRMaxSelectF5CodeIRNSS_1_currentIndexChanged(int index);
271 | void on_comboBoxSNRMaxSelectF5CodeIRNSS_2_currentIndexChanged(int index);
272 | void on_comboBoxSNRMaxMeasF9CodeIRNSS_1_currentIndexChanged(int index);
273 | void on_comboBoxSNRMaxSelectF9CodeIRNSS_1_currentIndexChanged(int index);
274 | void on_comboBoxSNRMaxSelectF9CodeIRNSS_2_currentIndexChanged(int index);
275 |
276 | void on_pushButtonSNRAdvancedDefault_clicked();
277 | void on_pushButtonSNRAdvancedOk_clicked();
278 | void on_pushButtonSNRAdvancedCancel_clicked();
279 |
280 | public:
281 | void changePushButtonGPS(bool checked);
282 | void changePushButtonGalileo(bool checked);
283 | void changePushButtonGLONASS(bool checked);
284 | void changePushButtonGEO(bool checked);
285 | void changePushButtonBDS(bool checked);
286 | void changePushButtonQZSS(bool checked);
287 | void changePushButtonIRNSS(bool checked);
288 | void on_pushButtonPublicGPS_clicked();
289 | void on_pushButtonPublicGalileo_clicked();
290 | void on_pushButtonPublicGLONASS_clicked();
291 | void on_pushButtonPublicGEO_clicked();
292 | void on_pushButtonPublicBDS_clicked();
293 | void on_pushButtonPublicQZSS_clicked();
294 | void on_pushButtonPublicIRNSS_clicked();
295 |
296 | void setSNRdefaults();
297 |
298 | void changeCurrentPage();
299 |
300 | int getgLABOptions(QString *errorString, QString *warningString, QString *saveString, QStringList *runString);
301 | void loadgLABOptions(QString *warningString, QStringList *ParametersList);
302 |
303 | private:
304 | Ui::GNSS_SNR_Advanced *uiSNR;
305 |
306 | };
307 |
308 | #endif // SNR_ADVANCED_H
309 |
--------------------------------------------------------------------------------
/GUI/warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/GUI/warning.png
--------------------------------------------------------------------------------
/Graphical_tool/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2009, 2017 gAGE/UPC & ESA
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License").
4 | You may obtain a copy of the License at
5 |
6 | http://www.apache.org/licenses/LICENSE-2.0
7 |
8 | Unless required by applicable law or agreed to in writing, software
9 | distributed under the License is distributed on an "AS IS" BASIS,
10 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | See the License for the specific language governing permissions and
12 | limitations under the License.
13 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2009, 2024 gAGE/UPC & ESA
2 |
3 | The gLAB's GUI (gLAB_GUI and gLAB_GUI_64) is licensed under the GNU LESSER GENERAL PUBLIC LICENSE version 3,
4 | as it is build using the Qt library, which uses the LGPL license.
5 |
6 | This program is free software: you can redistribute it and/or modify
7 | it under the terms of the GNU General Public License as published by
8 | the Free Software Foundation, either version 3 of the License, or
9 | (at your option) any later version.
10 |
11 | This program is distributed in the hope that it will be useful,
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | GNU General Public License for more details.
15 |
16 | You should have received a copy of the GNU General Public License
17 | along with this program. If not, see:
18 |
19 | http://www.gnu.org/licenses/gpl.txt
20 | http://www.gnu.org/licenses/lgpl.txt
21 |
22 |
23 | The processing core (gLAB_linux) and graphical tool (graph.py) is
24 | licensed under the Apache License, Version 2.0 (the "License").
25 | You may obtain a copy of the License at
26 |
27 | http://www.apache.org/licenses/LICENSE-2.0
28 |
29 | Unless required by applicable law or agreed to in writing, software
30 | distributed under the License is distributed on an "AS IS" BASIS,
31 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
32 | See the License for the specific language governing permissions and
33 | limitations under the License.
34 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | GNSS-Lab Tool (gLAB)
2 | ====================
3 |
4 | This is an unofficial mirror of the source code for [GNSS-Lab Tool (gLAB)](https://gage.upc.edu/en/learning-materials/software-tools/glab) v6.0.0, an interactive educational software tool suite to process and analyse GNSS data. gLAB has been developed under an [European Space Agency (ESA)](https://www.esa.int/navigation) contract by the [Research Group of Astronomy and Geomatics (gAGE)](https://gage.upc.edu/) from the [Universitat Politecnica de Catalunya (UPC)](https://www.upc.edu/).
5 |
6 | gLAB performs precise modeling of GNSS observables (pseudorange and carrier phase) at the centimetre level, allowing both standalone GPS positioning and PPP. Every single error contributor may be assessed independently, which, in turn, provides a major educational benefit. gLAB is adapted to a variety of standard formats like RINEX-3.00, SP3, ANTEX and SINEX files, among others. Moreover, functionality is also included for GPS, Galileo and GLONASS, allowing performing some data analysis with real multi-constellation data.
7 |
8 | The gLAB software tool is quite flexible, able to run under Linux, Windows and Mac operating systems and is provided free of charge by [ESA Education Office](https://www.esa.int/education) to universities and GNSS professionals.
9 |
10 | * [gLAB - Download](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite/glab-download)
11 | * [gLAB - Release Notes](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite/glab-release-notes)
12 | * [gLAB - User Manual](gLAB_SUM.pdf)
13 | * [gLAB - FAQ](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite/glab-faq)
14 | * [gLAB - Tutorials](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite/glab-tutorials)
15 | * [gLAB - Citations](https://gage.upc.edu/en/learning-materials/software-tools/glab-tool-suite/glab-citations)
16 |
17 | Credits
18 | -------
19 |
20 | If you feel it is appropriate, you may consider paying us back by citing the **gLAB** paper:
21 |
22 | > Ibáñez D., Rovira-García A., Sanz J., Juan JM., Gonzalez-Casado G., Jimenez-Baños D., López-Echazarreta C., Lapin I. The GNSS Laboratory Tool Suite (gLAB) updates: SBAS, DGNSS and Global Monitoring System. 9th ESA Workshop on Satellite Navigation Technologies (NAVITEC 2018), Noordwijk, The Netherlands. December 5 - 7, 2018. DOI: [10.1109/NAVITEC.2018.8642707](https://doi.org/10.1109/NAVITEC.2018.8642707).
23 |
24 | When papers containing results or illustrations obtained using **gLAB** are being published.
25 |
26 | License
27 | -------
28 |
29 | The gLAB core (the `gLAB` executable) and the plotting tool (`graph.py`) are distributed under the Apache 2.0 license.
30 |
31 | The GUI (the `gLAB_GUI` executable) is provided under the GNU Lesser General Public License (LGPL) version 3, due to the GUI being developed under Qt 5.
32 |
--------------------------------------------------------------------------------
/README_install.txt:
--------------------------------------------------------------------------------
1 | Complete the following steps to compile the software
2 |
3 |
4 | PREVIOUS:
5 |
6 | a) For x86_64, all programs are precompiled, no package installation necessary.
7 |
8 | For ARMv7, ARMv8 or for compiling the core and running the plotting tool directly with python:
9 |
10 | - Install "make" and "gcc" to compile the core
11 |
12 | sudo apt-get install make gcc
13 |
14 | - Install Python 3 packages to run the plotting tool with python:
15 |
16 | sudo apt-get install python3-matplotlib python3-tk python3-numpy
17 |
18 | - For SBAS maps and WIR maps, the following packages are also needed:
19 |
20 | sudo apt-get install python3-mpltoolkits.basemap python-mpltoolkits.basemap-data
21 |
22 |
23 | NOTE: for Python 2 (not supported anymore), the packages are the following
24 |
25 | sudo apt-get install python python-matplotlib python-tk python-mpltoolkits.basemap python-mpltoolkits.basemap-data python-numpy
26 | b) For ARMv7 and ARMv8 (for x86_64 already compiled): compile the program by executing:
27 |
28 | make -j2
29 | make -f Makefile_multithread -j2
30 |
31 | c) Executing gLAB
32 |
33 | - Graphic user Interface
34 |
35 | ./gLAB_GUI (x86_64)
36 |
37 | ./gLAB_GUI_ARMv7 (ARMv7)
38 |
39 | ./gLAB_GUI_ARM64 (ARMv8 or aarch64)
40 |
41 |
42 | - Command line mode
43 |
44 | ./gLAB_linux
45 |
46 |
47 | - Plotting module
48 |
49 | ./graph/graph (x86_64)
50 |
51 | ./graph.py (ARMv7 and ARMv8)
52 |
53 |
--------------------------------------------------------------------------------
/core/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2009, 2017 gAGE/UPC & ESA
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License").
4 | You may obtain a copy of the License at
5 |
6 | http://www.apache.org/licenses/LICENSE-2.0
7 |
8 | Unless required by applicable law or agreed to in writing, software
9 | distributed under the License is distributed on an "AS IS" BASIS,
10 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 | See the License for the specific language governing permissions and
12 | limitations under the License.
13 |
--------------------------------------------------------------------------------
/core/Makefile:
--------------------------------------------------------------------------------
1 | CC = gcc
2 | CXXFLAGS += -O3 -s -fno-stack-protector -flto -DREADNOLOCK -DRANGECASE
3 | CXXFLAGS += -std=gnu99
4 | #CXXFLAGS += -fopenmp
5 |
6 |
7 | all: gLAB_linux
8 | clean:
9 | $(RM) gLAB.o dataHandling.o filter.o input.o model.o preprocessing.o output.o gLAB_linux
10 |
11 | gLAB_linux: gLAB.o dataHandling.o filter.o input.o model.o preprocessing.o output.o
12 | ${CC} ${CXXFLAGS} -o gLAB_linux $^ -lm
13 |
14 | gLAB.o: gLAB.c dataHandling.h
15 | ${CC} ${CXXFLAGS} -c -o $@ $<
16 |
17 | dataHandling.o: dataHandling.c dataHandling.h
18 | ${CC} ${CXXFLAGS} -c -o $@ $<
19 |
20 | filter.o: filter.c filter.h dataHandling.h
21 | ${CC} ${CXXFLAGS} -c -o $@ $<
22 |
23 | input.o: input.c input.h dataHandling.h
24 | ${CC} ${CXXFLAGS} -c -o $@ $<
25 |
26 | model.o: model.c model.h dataHandling.h
27 | ${CC} ${CXXFLAGS} -c -o $@ $<
28 |
29 | preprocessing.o: preprocessing.c preprocessing.h dataHandling.h
30 | ${CC} ${CXXFLAGS} -c -o $@ $<
31 |
32 | output.o: output.c output.h dataHandling.h
33 | ${CC} ${CXXFLAGS} -c -o $@ $<
34 |
35 |
--------------------------------------------------------------------------------
/core/Makefile_multithread:
--------------------------------------------------------------------------------
1 | CC = gcc
2 | CXXFLAGS += -O3 -s -fno-stack-protector -flto -DREADNOLOCK -DRANGECASE
3 | CXXFLAGS += -std=gnu99
4 | CXXFLAGS += -fopenmp
5 |
6 |
7 | all: gLAB_linux_MultiThread
8 | clean:
9 | $(RM) gLAB.o dataHandling.o filter.o input.o model.o preprocessing.o output.o gLAB_linux_MultiThread
10 |
11 | gLAB_linux_MultiThread: gLAB.o dataHandling.o filter.o input.o model.o preprocessing.o output.o
12 | ${CC} ${CXXFLAGS} -o gLAB_linux_MultiThread $^ -lm
13 |
14 | gLAB.o: gLAB.c dataHandling.h
15 | ${CC} ${CXXFLAGS} -c -o $@ $<
16 |
17 | dataHandling.o: dataHandling.c dataHandling.h
18 | ${CC} ${CXXFLAGS} -c -o $@ $<
19 |
20 | filter.o: filter.c filter.h dataHandling.h
21 | ${CC} ${CXXFLAGS} -c -o $@ $<
22 |
23 | input.o: input.c input.h dataHandling.h
24 | ${CC} ${CXXFLAGS} -c -o $@ $<
25 |
26 | model.o: model.c model.h dataHandling.h
27 | ${CC} ${CXXFLAGS} -c -o $@ $<
28 |
29 | preprocessing.o: preprocessing.c preprocessing.h dataHandling.h
30 | ${CC} ${CXXFLAGS} -c -o $@ $<
31 |
32 | output.o: output.c output.h dataHandling.h
33 | ${CC} ${CXXFLAGS} -c -o $@ $<
34 |
35 |
--------------------------------------------------------------------------------
/core/filter.h:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | Copyright & License:
3 | ====================
4 |
5 | Copyright 2009 - 2024 gAGE/UPC & ESA
6 |
7 | Licensed under the Apache License, Version 2.0 (the "License");
8 | you may not use this file except in compliance with the License.
9 | You may obtain a copy of the License at
10 |
11 | http://www.apache.org/licenses/LICENSE-2.0
12 |
13 | Unless required by applicable law or agreed to in writing, software
14 | distributed under the License is distributed on an "AS IS" BASIS,
15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | See the License for the specific language governing permissions and
17 | limitations under the License.
18 | ***************************************************************************/
19 |
20 | /****************************************************************************
21 | * Copyright: gAGE/UPC & ESA
22 | * Project: EDUNAV GNSS Lab Tool
23 | * Supervisor: Jaume Sanz Subirana (group of Astronomy and GEomatics - gAGE/UPC)
24 | * Author: Pere Ramos-Bosch (group of Astronomy and GEomatics - gAGE/UPC)
25 | * Curator: Adria Rovira-Garcia ( gAGE/UPC )
26 | * Developers: Deimos Ibáñez Segura ( gAGE/UPC )
27 | * Jesus Romero Sanchez ( gAGE/UPC )
28 | * glab.gage @ upc.edu
29 | * File: filter.h
30 | * Code Management Tool File Version: 6.0 Revision: 0
31 | * Date: 2024/11/22
32 | ***************************************************************************/
33 |
34 | /****************************************************************************
35 | * MODULE DESCRIPTION
36 | *
37 | * Name: filter
38 | * Language: C
39 | *
40 | * Purpose:
41 | * The purpose of this module is to contain all the necessary functions to
42 | * do a Kalman filtering process.
43 | *
44 | * Function:
45 | * This class is in charge of declaring providing all the necessary functions
46 | * to do a Kalman filtering process. It has a high level function (Kalman) in
47 | * which, given all necessary inputs, provides the estimated values for the
48 | * parameters
49 | *
50 | * Dependencies:
51 | * dataHandling, model
52 | *
53 | * Files modified:
54 | * None
55 | *
56 | * Files read:
57 | * None
58 | *
59 | * Resources usage:
60 | * See Design Document
61 | ****************************************************************************/
62 |
63 | /****************************
64 | * RELEASE_HISTORY
65 | * -------------
66 | * gLAB v1.3.1
67 | * Release: 2010/01/22
68 | * Change Log: First public version
69 | * -------------
70 | * gLAB v1.3.2
71 | * Release: 2010/01/22
72 | * Change Log: No changes in this file
73 | * -------------
74 | * gLAB v1.4.0
75 | * Release: 2010/01/22
76 | * Change Log: No changes in this file
77 | * -------------
78 | * gLAB v1.4.1
79 | * Release: 2010/07/09
80 | * Change Log: No changes in this file.
81 | * -------------
82 | * gLAB v1.4.2
83 | * Release: 2010/07/31
84 | * Change Log: No changes in this file.
85 | * -------------
86 | * gLAB v1.4.3
87 | * Release: 2010/08/31
88 | * Change Log: No changes in this file.
89 | * -------------
90 | * gLAB v1.4.4
91 | * Release: 2010/09/22
92 | * Change Log: No changes in this file.
93 | * -------------
94 | * gLAB v1.4.5
95 | * Release: 2010/10/31
96 | * Change Log: Dilution Of Precision extension: (GDOP, PDOP, TDOP, VDOP, HDOP).
97 | * -----------
98 | * gLAB v2.0.0
99 | * Release: 2012/12/31
100 | * Change Log: gLAB version released together with the Educational Book:
101 | * "GNSS Data Processing" (Vol. 1 and Vol. 2). ESA TM-23.
102 | * Authors: J. Sanz Subirana, J.M. Juan Zornoza and M. Hernandez-Pajares
103 | * ISBN: 978-92-9221-885-0 (two volumes)
104 | * ISSN: 1013-7076
105 | * December 2012.
106 | * -----------
107 | * gLAB v2.2.0
108 | * Release: 2014/09/22
109 | * Change Log: No changes in this file.
110 | * -----------
111 | * gLAB v2.2.1
112 | * Release: 2014/12/23
113 | * Change Log: No changes in this file.
114 | * -----------
115 | * gLAB v2.2.2
116 | * Release: 2015/03/02
117 | * Change Log: No changes in this file.
118 | * -----------
119 | * gLAB v2.2.3
120 | * Release: 2015/05/28
121 | * Change Log: No changes in this file.
122 | * -----------
123 | * gLAB v2.2.4
124 | * Release: 2015/07/01
125 | * Change Log: No changes in this file.
126 | * -----------
127 | * gLAB v2.2.5
128 | * Release: 2015/10/20
129 | * Change Log: No changes in this file.
130 | * -----------
131 | * gLAB v2.2.6
132 | * Release: 2015/11/25
133 | * Change Log: No changes in this file.
134 | * -----------
135 | * gLAB v2.2.7
136 | * Release: 2016/03/01
137 | * Change Log: No changes in this file.
138 | * -----------
139 | * gLAB v2.2.8
140 | * Release: 2016/04/12
141 | * Change Log: No changes in this file.
142 | * -----------
143 | * gLAB v3.0.0
144 | * Release: 2016/09/05
145 | * Change Log: Added step detector function.
146 | * -----------
147 | * gLAB v3.1.0
148 | * Release: 2016/09/26
149 | * Change Log: No changes in this file.
150 | * -----------
151 | * gLAB v3.1.1
152 | * Release: 2016/10/21
153 | * Change Log: No changes in this file.
154 | * -----------
155 | * gLAB v4.0.0
156 | * Release: 2017/03/03
157 | * Change Log: No changes in this file.
158 | * -----------
159 | * gLAB v4.1.0
160 | * Release: 2017/04/07
161 | * Change Log: Added functions PrefitOutlierDetectorMedian and PrefitOutlierDetectorAbsolute for prefit outlier detection.
162 | * -----------
163 | * gLAB v4.2.0
164 | * Release: 2017/05/22
165 | * Change Log: No changes in this file.
166 | * -----------
167 | * gLAB v5.0.0
168 | * Release: 2017/06/30
169 | * Change Log: No changes in this file.
170 | * -----------
171 | * gLAB v5.1.0
172 | * Release: 2017/11/24
173 | * Change Log: No changes in this file.
174 | * -----------
175 | * gLAB v5.1.1
176 | * Release: 2017/12/22
177 | * Change Log: No changes in this file.
178 | * -----------
179 | * gLAB v5.1.2
180 | * Release: 2018/01/12
181 | * Change Log: No changes in this file.
182 | * -----------
183 | * gLAB v5.1.3
184 | * Release: 2018/01/19
185 | * Change Log: No changes in this file.
186 | * -----------
187 | * gLAB v5.2.0
188 | * Release: 2018/03/09
189 | * Change Log: No changes in this file.
190 | * -----------
191 | * gLAB v5.3.0
192 | * Release: 2018/06/08
193 | * Change Log: No changes in this file.
194 | * -----------
195 | * gLAB v5.4.0
196 | * Release: 2018/11/16
197 | * Change Log: No changes in this file.
198 | * -----------
199 | * gLAB v5.4.1
200 | * Release: 2019/02/15
201 | * Change Log: No changes in this file.
202 | * -----------
203 | * gLAB v5.4.2
204 | * Release: 2019/03/08
205 | * Change Log: No changes in this file.
206 | * -----------
207 | * gLAB v5.4.3
208 | * Release: 2019/03/20
209 | * Change Log: No changes in this file.
210 | * -----------
211 | * gLAB v5.4.4
212 | * Release: 2019/05/10
213 | * Change Log: No changes in this file.
214 | * -----------
215 | * gLAB v5.5.0
216 | * Release: 2020/11/13
217 | * Change Log: No changes in this file.
218 | * -----------
219 | * gLAB v5.5.1
220 | * Release: 2020/12/11
221 | * Change Log: No changes in this file.
222 | * -----------
223 | * gLAB v6.0.0
224 | * Release: 2024/11/22
225 | * Change Log: Added multi-constellation support (Galileo, GLONASS, GEO, BDS, QZSS and IRNSS).
226 | * Added multi-frequency support (all RINEX frequencies).
227 | * Added SBAS DFMC processing.
228 | * -----------
229 | * END_RELEASE_HISTORY
230 | *****************************/
231 |
232 | #ifndef FILTER_H_
233 | #define FILTER_H_
234 |
235 | #if defined __WIN32__
236 | //This is to allow %lld, %llu and %n format specifiers in printf with MinGW
237 | #define __USE_MINGW_ANSI_STDIO 1
238 | #endif
239 |
240 | /* System modules */
241 | #include
242 | #include
243 |
244 | /* External classes */
245 | #include "dataHandling.h"
246 | #include "model.h"
247 |
248 | /* Internal types, constants and data */
249 |
250 | // Matrix handling
251 | int m2v (int i, int j);
252 | //static inline int m2v_opt (int i, int j); //Static functions must be declared only in the .c file where is going to be used
253 | int cholinv (double *mat, int n);
254 | int cholinv_opt (double *mat, const int n);
255 | void mxv (double *restrict mat, double *restrict vec, const int n);
256 |
257 | // Filtering
258 | int StepDetector (TEpoch *epoch, TOptions *options);
259 | void PrefitOutlierDetectorAbsolute (TEpoch *epoch, TOptions *options);
260 | void PrefitOutlierDetectorMedian (TEpoch *epoch, TOptions *options);
261 | int fillUsableSatellites (TEpoch *epoch, TEpoch *epochDGNSS, TOptions *options);
262 | int changeReferenceConstellationFilter (enum GNSSystem lastGNSSselected, TEpoch *epoch, TOptions *options);
263 | int isEpochComputable (TEpoch *epoch);
264 | int calculateUnknowns (TEpoch *epoch, TOptions *options);
265 | void initUnkinfo (TEpoch *epoch, TUnkinfo *unkinfo, double t, TOptions *options);
266 | int prepareCorrelation (TEpoch *epoch,TFilterSolution *solution,enum GNSSystem *GNSSlist,int *PRNlist, TUnkinfo *unkinfo, TUnkinfo *prevUnkinfo, TOptions *options);
267 | void atwa_atwy_insertline (double *restrict atwa, double *restrict atwy, const double *restrict unk, const double prefit, const int nunk, const double sigma2);
268 | void atwa_atwy_insertLineWithCorrelation (double *atwa, double *atwy, const double *corr, const double apriorivalue, const int nunk, const double multiplier, const int iniunk);
269 | void designSystem (TEpoch *epoch, double *atwa, double *atwy, TUnkinfo *unkinfo, double **G, double *prefits, double *weights, int computeStanfordESA, TConstellation *constellationPrint, TOptions *options);
270 | void designSystemIniValues (double *restrict atwa, double *restrict atwy, const TUnkinfo *unkinfo, const TFilterSolution *solution);
271 | double calculatePostfits (TEpoch *epoch, double *solution, TUnkinfo *unkinfo, TConstellation *constellationPrint, TOptions *options);
272 | int computeSolution (TEpoch *epoch,double *stddev2postfit, TFilterSolution *solution, double *newcorrelations, double *newparameterValues, TUnkinfo *unkinfo, TStdESA *StdESA, TConstellation *constellationPrint, TOptions *options);
273 | int calculateDOP (TEpoch *epoch, TFilterSolution *solution, char *errorstr, TOptions *options);
274 | void StanfordESAComputationRecursiveSingleConst (TEpoch *epoch, char *epochString, int *restrict k, int *restrict kmask, const int numsat, const int depth, double **restrict G, const double *restrict prefits, const double *restrict weights, TUnkinfo *unkinfo, TStdESA *StdESA, TOptions *options);
275 | void StanfordESAComputationRecursiveMultiConst (TEpoch *epoch, char *epochString, int *restrict k, int *restrict kmask, const int numsat, const int depth, int numInterSystemClocks, double **restrict G, const double *restrict prefits, const double *restrict weights, TUnkinfo *unkinfo, TStdESA *StdESA, TOptions *options);
276 | void DGNSSSummaryDataUpdate (TEpoch *epoch, TFilterSolution *solution, TOptions *options);
277 | void SBASSummaryDataUpdate (TEpoch *epoch, TFilterSolution *solution, TSBASdatabox *SBASdatabox, TOptions *options);
278 | void SummaryDataUpdate (TEpoch *epoch, TFilterSolution *solution, TOptions *options);
279 | int calculateSBASAvailability (FILE *fdDiscont, FILE *fdDiscontHour, int LatPos, int LonPos, double latitude, double longitude, TEpoch *epoch, TSBASPlots *SBASplots, TOptions *options);
280 | void updatePRNlist (TEpoch *epoch, enum GNSSystem *GNSSlist, int *PRNlist, TFilterSolution *solution);
281 | int Kalman (TEpoch *epoch, TEpoch *epochDGNSS, TFilterSolution *solution, TUnkinfo *prevUnkinfo, TStdESA *StdESA, TConstellation *constellationPrint, TOptions *options);
282 |
283 | #endif /*FILTER_H_*/
284 |
--------------------------------------------------------------------------------
/core/input.h:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | Copyright & License:
3 | ====================
4 |
5 | Copyright 2009 - 2024 gAGE/UPC & ESA
6 |
7 | Licensed under the Apache License, Version 2.0 (the "License");
8 | you may not use this file except in compliance with the License.
9 | You may obtain a copy of the License at
10 |
11 | http://www.apache.org/licenses/LICENSE-2.0
12 |
13 | Unless required by applicable law or agreed to in writing, software
14 | distributed under the License is distributed on an "AS IS" BASIS,
15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | See the License for the specific language governing permissions and
17 | limitations under the License.
18 | ***************************************************************************/
19 |
20 | /****************************************************************************
21 | * Copyright: gAGE/UPC & ESA
22 | * Project: EDUNAV GNSS Lab Tool
23 | * Supervisor: Jaume Sanz Subirana (group of Astronomy and GEomatics - gAGE/UPC)
24 | * Author: Pere Ramos-Bosch (group of Astronomy and GEomatics - gAGE/UPC)
25 | * Curator: Adria Rovira-Garcia ( gAGE/UPC )
26 | * Developers: Deimos Ibanez Segura ( gAGE/UPC )
27 | * Jesus Romero Sanchez ( gAGE/UPC )
28 | * glab.gage @ upc.edu
29 | * File: input.h
30 | * Code Management Tool File Version: 6.0 Revision: 0
31 | * Date: 2024/11/22
32 | ***************************************************************************/
33 |
34 | /****************************************************************************
35 | * MODULE DESCRIPTION
36 | *
37 | * Name: input
38 | * Language: C
39 | *
40 | * Purpose:
41 | * The purpose of this module is to serve as "driver" from the different ways
42 | * that the data can be stored in the form of files and the rest of the program
43 | *
44 | * Function:
45 | * This class is in charge of reading the different data formats in which the
46 | * data can be stored, and save it to the internal data structures.
47 | *
48 | * Dependencies:
49 | * dataHandling
50 | *
51 | * Files modified:
52 | * None
53 | *
54 | * Files read:
55 | * Depending on function
56 | *
57 | * Resources usage:
58 | * See Design Document
59 | ****************************************************************************/
60 |
61 | /****************************
62 | * RELEASE_HISTORY
63 | * -------------
64 | * gLAB v1.3.1
65 | * Release: 2010/01/22
66 | * Change Log: First public version.
67 | * -------------
68 | * gLAB v1.3.2
69 | * Release: 2010/02/23
70 | * Change Log: Included input files: SINEX, DCB and GPS_Receiver_Type.
71 | * Forward/Backward processing included.
72 | * -------------
73 | * gLAB v1.4.0
74 | * Release: 2010/06/21
75 | * Change Log: No changes in this file.
76 | * -------------
77 | * gLAB v1.4.1
78 | * Release: 2010/07/09
79 | * Change Log: No changes in this file.
80 | * -------------
81 | * gLAB v1.4.2
82 | * Release: 2010/07/31
83 | * Change Log: No changes in this file.
84 | * -------------
85 | * gLAB v1.4.3
86 | * Release: 2010/08/31
87 | * Change Log: No changes in this file.
88 | * -------------
89 | * gLAB v1.4.4
90 | * Release: 2010/09/22
91 | * Change Log: No changes in this file.
92 | * -------------
93 | * gLAB v1.4.5
94 | * Release: 2010/10/31
95 | * Change Log: No changes in this file.
96 | * -----------
97 | * gLAB v2.0.0
98 | * Release: 2012/12/31
99 | * Change Log: gLAB version released together with the Educational Book:
100 | * "GNSS Data Processing" (Vol. 1 and Vol. 2). ESA TM-23.
101 | * Authors: J. Sanz Subirana, J.M. Juan Zornoza and M. Hernandez-Pajares
102 | * ISBN: 978-92-9221-885-0 (two volumes)
103 | * ISSN: 1013-7076
104 | * December 2012.
105 | * -----------
106 | * gLAB v2.2.0
107 | * Release: 2014/09/22
108 | * Change Log: Added function for reading Fast-PPP columnar files.
109 | * Added function for reading files for Galileo tropospheric model.
110 | * -----------
111 | * gLAB v2.2.1
112 | * Release: 2014/12/23
113 | * Change Log: No changes in this file.
114 | * -----------
115 | * gLAB v2.2.2
116 | * Release: 2015/03/02
117 | * Change Log: No changes in this file.
118 | * -----------
119 | * gLAB v2.2.3
120 | * Release: 2015/05/28
121 | * Change Log: No changes in this file.
122 | * -----------
123 | * gLAB v2.2.4
124 | * Release: 2015/07/01
125 | * Change Log: No changes in this file.
126 | * -----------
127 | * gLAB v2.2.5
128 | * Release: 2015/10/20
129 | * Change Log: No changes in this file
130 | * -----------
131 | * gLAB v2.2.6
132 | * Release: 2015/11/25
133 | * Change Log: No changes in this file.
134 | * -----------
135 | * gLAB v2.2.7
136 | * Release: 2016/03/01
137 | * Change Log: No changes in this file.
138 | * -----------
139 | * gLAB v2.2.8
140 | * Release: 2016/04/12
141 | * Change Log: No changes in this file.
142 | * -----------
143 | * gLAB v3.0.0
144 | * Release: 2016/09/05
145 | * Change Log: Added SBAS processing.
146 | * Added addUserError function for reading user-defined error from text file.
147 | * Deleted function beforeReadEpochUpdate.
148 | * Deleted function afterReadEpochUpdate.
149 | * Added function dictionaryUpdate.
150 | * -----------
151 | * gLAB v3.1.0
152 | * Release: 2016/09/26
153 | * Change Log: No changes in this file.
154 | * -----------
155 | * gLAB v3.1.1
156 | * Release: 2016/10/21
157 | * Change Log: No changes in this file.
158 | * -----------
159 | * gLAB v4.0.0
160 | * Release: 2017/03/03
161 | * Change Log: Added functions to decode RTCM binary files.
162 | * -----------
163 | * gLAB v4.1.0
164 | * Release: 2017/04/07
165 | * Change Log: No changes in this file.
166 | * -----------
167 | * gLAB v4.2.0
168 | * Release: 2017/05/22
169 | * Change Log: No changes in this file.
170 | * -----------
171 | * gLAB v5.0.0
172 | * Release: 2017/06/30
173 | * Change Log: No changes in this file.
174 | * -----------
175 | * gLAB v5.1.0
176 | * Release: 2017/11/24
177 | * Change Log: Added functions 'readReferenceFile' and 'readPosFile' for reading a reference
178 | * position file.
179 | * -----------
180 | * gLAB v5.1.1
181 | * Release: 2017/12/22
182 | * Change Log: No changes in this file.
183 | * -----------
184 | * gLAB v5.1.2
185 | * Release: 2018/01/12
186 | * Change Log: No changes in this file.
187 | * -----------
188 | * gLAB v5.1.3
189 | * Release: 2018/01/19
190 | * Change Log: Removed 'readIONEXFile' function because it is no longer used.
191 | * Removed 'readRinexNavFile' function because it is no longer used.
192 | * -----------
193 | * gLAB v5.2.0
194 | * Release: 2018/03/09
195 | * Change Log: No changes in this file.
196 | * -----------
197 | * gLAB v5.3.0
198 | * Release: 2018/06/08
199 | * Change Log: No changes in this file.
200 | * -----------
201 | * gLAB v5.4.0
202 | * Release: 2018/11/16
203 | * Change Log: No changes in this file.
204 | * -----------
205 | * gLAB v5.4.1
206 | * Release: 2019/02/15
207 | * Change Log: No changes in this file.
208 | * -----------
209 | * gLAB v5.4.2
210 | * Release: 2019/03/08
211 | * Change Log: No changes in this file.
212 | * -----------
213 | * gLAB v5.4.3
214 | * Release: 2019/03/20
215 | * Change Log: No changes in this file.
216 | * -----------
217 | * gLAB v5.4.4
218 | * Release: 2019/05/10
219 | * Change Log: No changes in this file.
220 | * -----------
221 | * gLAB v5.5.0
222 | * Release: 2020/11/13
223 | * Change Log: No changes in this file.
224 | * -----------
225 | * gLAB v5.5.1
226 | * Release: 2020/12/11
227 | * Change Log: No changes in this file.
228 | * -----------
229 | * gLAB v6.0.0
230 | * Release: 2024/11/22
231 | * Change Log: Added multi-constellation support (Galileo, GLONASS, GEO, BDS, QZSS and IRNSS).
232 | * Added multi-frequency support (all RINEX frequencies).
233 | * Added SBAS DFMC processing.
234 | * -----------
235 | * END_RELEASE_HISTORY
236 | *****************************/
237 |
238 | #ifndef INPUT_H_
239 | #define INPUT_H_
240 |
241 | #if defined __WIN32__
242 | //This is to allow %lld, %llu and %n format specifiers in printf with MinGW
243 | #define __USE_MINGW_ANSI_STDIO 1
244 | #endif
245 |
246 | /* System modules */
247 | #include
248 | #include
249 | #include
250 | #include
251 | #include
252 | #include
253 |
254 | /* External classes */
255 | #include "dataHandling.h"
256 | #include "output.h"
257 |
258 | // Input functions
259 | int getL (char *lineptr, int *n, FILE *stream);
260 | int getLNoComments (char *lineptr, int *n, FILE *stream);
261 | int getLback (char *lineptr, int *n, FILE *stream);
262 |
263 | // File management
264 | enum fileType whatFileTypeIs (char *filename);
265 |
266 | // RINEX Observation
267 | int readRinexObsHeader (FILE *fd, FILE *fdout, TEpoch *epoch, TOptions *options);
268 | int readRinexObsEpoch (FILE *fd, TEpoch *epoch, char *Epochstr, TOptions *options);
269 | int rewindEpochRinexObs (FILE *fd, enum Source src);
270 | int getEpochFromObsFile (FILE *fd, enum Source src, TTime *t);
271 |
272 | // RINEX Navigation message
273 | int readRinexNav (FILE *fd, char *filename, TGNSSproducts *products, double *rinexNavVersion, int newDay, TOptions *options);
274 | int readRinexNavLastEpoch (FILE *fd, TTime *lastEpoch, char *filename, TOptions *options);
275 |
276 | // SP3 files
277 | int readSP3 (FILE *fd, TGNSSproducts *products, int readOrbits, int readClocks, int readingRefFile, TOptions *options);
278 | int readSP3LastEpoch (FILE *fd, TTime *lastEpoch);
279 |
280 | // RINEX Clocks
281 | int readRinexClocks (FILE *fd, TGNSSproducts *products, TOptions *options);
282 | int readRinexClocksFile (char *filename, TGNSSproducts *products, TOptions *options);
283 |
284 | // Troposphere
285 | int readGalileoTroposphericData (TTROPOGal *TropoGal, char *filename, TOptions *options);
286 |
287 | // IONEX
288 | int readIONEX (FILE *fd, TIONEX *IONEX, double *ionexVersion, TOptions *options);
289 | int readFPPP (FILE *fd, TFPPPIONEX *FPPP, double *FPPPVersion, TOptions *options);
290 | int readFPPPFile (char *filename, TFPPPIONEX *FPPP, double *FPPPVersion, TOptions *options);
291 |
292 | // Satellite constellation
293 | int readConstellation (FILE *fd, TConstellation *constellation, TOptions *options);
294 | int readConstellationFile (char *filename, TConstellation *constellation, TOptions *options);
295 |
296 | // ANTEX
297 | int readAntex (FILE *fd, TConstellation *constellation, TAntennaList *antennaList, int type, TOptions *options);
298 | int readAntexFile (char *filename, TConstellation *constellation, TAntennaList *antennaList, int type, TOptions *options);
299 |
300 | // DCB
301 | int readDCB (FILE *fd, TTGDdata *tgdData, TOptions *options);
302 | int readDCBFile (char *filename, TTGDdata *tgdData, TOptions *options);
303 | int readSINEXBIAS (FILE *fd, enum fileType ft, TSINEXBiasData *SINEXBias, TOptions *options);
304 | int readSINEXBIASFile (char *filename, enum fileType ft, TSINEXBiasData *SINEXBias, TOptions *options);
305 |
306 | // GPS Receiver types
307 | int readRecType (FILE *fd, TReceiverList *recList);
308 | int readRecTypeFile (char *filename, TReceiverList *recList);
309 |
310 | // SINEX
311 | int readSINEX (FILE *fd, TStationList *stationList);
312 | int readSINEXFile (char *filename, TStationList *stationList);
313 |
314 | // SBAS
315 | int readSBASFile (char *filename, TSBASdatabox *SBASdatabox, double *rinexVersion, TTime *currentepoch, TOptions *options);
316 | int readRINEXB (FILE *fd, FILE **fdlist, char **filelist, TSBASdatabox *SBASdatabox, double *rinexVersion, int *prevday, TTime *currentepoch, TOptions *options);
317 | int readEMS (FILE *fd, FILE **fdlist, char **filelist, TSBASdatabox *SBASdatabox, int *prevday, TTime *currentepoch, TOptions *options);
318 | int readSBASmessagePreamble (unsigned char *preamble, TSBASblock *sbasblock);
319 | int readSBASmessage (char *binarystring, unsigned char *binarymessage, unsigned char preamble, int validpreamble, int *decodedmessagetype, TSBASblock *sbasblock, int *messageslost, TOptions *options);
320 | void updateSBASdata (TSBASdatabox *SBASdatabox, TSBASdata *SBASdata, TSBASblock *sbasblock, TOptions *options);
321 | int readsigmamultipathFile (char *filename, TSBASdata *SBASdata, TOptions *options);
322 | int readsigmamultipath (FILE *fd, char *filename, TSBASdata *SBASdata, TOptions *options);
323 |
324 | // DGNSS RTCM v2.x
325 | TdataRead *readFile (FILE *fp, TdataRead *data, int *checkControl);
326 | char decodeWords (char *out_arr, char *in_arr, int n);
327 | char *parityCheck (char *msg, char *cw, int *last2bits);
328 | int *getLast2bits (char *msg, int *last2bits);
329 | TRTCM2header *decodeHeader (TRTCM2header *head, char *header_str);
330 | TMSG1 *readMSG1 (TMSG1 *sc, int ns, char *body_str);
331 | TMSG2 *readMSG2 (TMSG2 *sc, int ns, char *body_str);
332 | TMSG3 *readMSG3 (TMSG3 *sc, char *body_str);
333 | TMSG24 *readMSG24 (TMSG24 *sc, char *body_str);
334 | int converterRTCM2 (FILE *fd, TRTCM2 *rtcm2, char *fileASCIIcorrections, char *fileASCIIantenna, TEpoch *epochDGNSS, TOptions *options);
335 |
336 | // DGNSS RTCM v3.x
337 | int bitInt (char bt, int bp);
338 | char bitChar (char bt, int bp);
339 | char *getBitStr (char *out_str,unsigned char *in_arr, int n);
340 | long long int twoComplement (unsigned long long int orig, int n);
341 | int crc24q (unsigned char *frame, int len);
342 | int getMSGtype (unsigned char *msg);
343 | TRTCM3header *getRTCMheader (TRTCM3header *head, unsigned char *msg);
344 | TlockTime *getLockT (TlockTime *lt, int indicator);
345 | TMSG1004 *readMSG1004 (TMSG1004 *sc, int ns, char *body_str);
346 | TMSG1006 *readMSG1005 (TMSG1006 *sc, unsigned char *msg);
347 | TMSG1006 *readMSG1006 (TMSG1006 *sc, unsigned char *msg);
348 | TMSG1008 *readMSG1008 (TMSG1008 *sc, unsigned char *msg);
349 | void readRTCM3header (TEpoch *epoch, TEpoch *epochDGNSS, TRTCM3 *rtcm3);
350 | int readRTCM3obs (TEpoch *epochDGNSS, TRTCM3 *rtcm3, TOptions *options);
351 | int converterRTCM3 (FILE *fd, TRTCM3 *rtcm3, char *fileRINEXpointer, TEpoch *epoch, TEpoch *epochDGNSS, TOptions *options);
352 |
353 | // User defined error
354 | void addUserError (FILE *fd, char *filename, TEpoch *epoch, TUserError *UserError, TOptions *options);
355 |
356 | // Reference position file
357 | int readReferenceFile (char *filename, TGNSSproducts *RefPosition, TOptions *options);
358 | void readPosFile (FILE *fd, char *filename, TGNSSproducts *RefPosition, TOptions *options);
359 |
360 | #endif /*INPUT_H_*/
361 |
--------------------------------------------------------------------------------
/core/preprocessing.h:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | Copyright & License:
3 | ====================
4 |
5 | Copyright 2009 - 2024 gAGE/UPC & ESA
6 |
7 | Licensed under the Apache License, Version 2.0 (the "License");
8 | you may not use this file except in compliance with the License.
9 | You may obtain a copy of the License at
10 |
11 | http://www.apache.org/licenses/LICENSE-2.0
12 |
13 | Unless required by applicable law or agreed to in writing, software
14 | distributed under the License is distributed on an "AS IS" BASIS,
15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | See the License for the specific language governing permissions and
17 | limitations under the License.
18 | ***************************************************************************/
19 |
20 | /****************************************************************************
21 | * Copyright: gAGE/UPC & ESA
22 | * Project: EDUNAV GNSS Lab Tool
23 | * Supervisor: Jaume Sanz Subirana (group of Astronomy and GEomatics - gAGE/UPC)
24 | * Author: Pere Ramos-Bosch (group of Astronomy and GEomatics - gAGE/UPC)
25 | * Curator: Adria Rovira-Garcia ( gAGE/UPC )
26 | * Developers: Deimos Ibanez Segura ( gAGE/UPC )
27 | * Jesus Romero Sanchez ( gAGE/UPC )
28 | * glab.gage @ upc.edu
29 | * File: preprocessing.h
30 | * Code Management Tool File Version: 6.0 Revision: 0
31 | * Date: 2024/11/22
32 | ***************************************************************************/
33 |
34 | /****************************************************************************
35 | * MODULE DESCRIPTION
36 | *
37 | * Name: preprocessing
38 | * Language: C
39 | *
40 | * Purpose:
41 | * The purpose of this module is to preprocess the input data
42 | *
43 | * Function:
44 | * This class is in charge of preprocessing the input data by doing several
45 | * steps:
46 | * - Cycle-slip detection
47 | * - Inconsistent pseudorange-carrierphase jump detection (for Septentrio receivers)
48 | * - Epoch decimation
49 | * - Carrier-phase prealignment
50 | * - Pseudorange smoothing
51 | *
52 | * Dependencies:
53 | * dataHandling
54 | *
55 | * Files modified:
56 | * None
57 | *
58 | * Files read:
59 | * Depending on function
60 | *
61 | * Resources usage:
62 | * See Design Document
63 | ****************************************************************************/
64 |
65 | /****************************
66 | * RELEASE_HISTORY
67 | * -------------
68 | * gLAB v1.3.1
69 | * Release: 2010/01/22
70 | * Change Log: First public version.
71 | * -------------
72 | * gLAB v1.3.2
73 | * Release: 2010/02/23
74 | * Change Log: No changes in this file.
75 | * -------------
76 | * gLAB v1.4.0
77 | * Release: 2010/06/21
78 | * Change Log: No changes in this file.
79 | * -------------
80 | * gLAB v1.4.1
81 | * Release: 2010/07/09
82 | * Change Log: No changes in this file.
83 | * -------------
84 | * gLAB v1.4.2
85 | * Release: 2010/07/31
86 | * Change Log: No changes in this file.
87 | * -------------
88 | * gLAB v1.4.3
89 | * Release: 2010/08/31
90 | * Change Log: No changes in this file.
91 | * -------------
92 | * gLAB v1.4.4
93 | * Release: 2010/09/22
94 | * Change Log: No changes in this file.
95 | * -----------
96 | * gLAB v1.4.5
97 | * Release: 2010/10/31
98 | * Change Log: No changes in this file.
99 | * -----------
100 | * gLAB v2.0.0
101 | * Release: 2012/12/31
102 | * Change Log: gLAB version released together with the Educational Book:
103 | * "GNSS Data Processing" (Vol. 1 and Vol. 2). ESA TM-23.
104 | * Authors: J. Sanz Subirana, J.M. Juan Zornoza and M. Hernandez-Pajares
105 | * ISBN: 978-92-9221-885-0 (two volumes)
106 | * ISSN: 1013-7076
107 | * December 2012.
108 | * -----------
109 | * gLAB v2.2.0
110 | * Release: 2014/09/22
111 | * Change Log: No changes in this file.
112 | * -----------
113 | * gLAB v2.2.1
114 | * Release: 2014/12/23
115 | * Change Log: No changes in this file.
116 | * -----------
117 | * gLAB v2.2.2
118 | * Release: 2015/03/02
119 | * Change Log: No changes in this file.
120 | * -----------
121 | * gLAB v2.2.3
122 | * Release: 2015/05/28
123 | * Change Log: No changes in this file.
124 | * -----------
125 | * gLAB v2.2.4
126 | * Release: 2015/07/01
127 | * Change Log: No changes in this file.
128 | * -----------
129 | * gLAB v2.2.5
130 | * Release: 2015/10/20
131 | * Change Log: No changes in this file.
132 | * -----------
133 | * gLAB v2.2.6
134 | * Release: 2015/11/25
135 | * Change Log: No changes in this file.
136 | * -----------
137 | * gLAB v2.2.7
138 | * Release: 2016/03/01
139 | * Change Log: No changes in this file.
140 | * -----------
141 | * gLAB v2.2.8
142 | * Release: 2016/04/12
143 | * Change Log: No changes in this file.
144 | * -----------
145 | * gLAB v3.0.0
146 | * Release: 2016/09/05
147 | * Change Log: Added polyfit function. It fits a polynomial and estimates the geometry-free (LI) prediction.
148 | * -----------
149 | * gLAB v3.1.0
150 | * Release: 2016/09/26
151 | * Change Log: No changes in this file.
152 | * -----------
153 | * gLAB v3.1.1
154 | * Release: 2016/10/21
155 | * Change Log: No changes in this file.
156 | * -----------
157 | * gLAB v4.0.0
158 | * Release: 2017/03/03
159 | * Change Log: Added sigmaInflation function, to inflate the sigma during the convergence of the smoother.
160 | * -----------
161 | * gLAB v4.1.0
162 | * Release: 2017/04/07
163 | * Change Log: No changes in this file.
164 | * -----------
165 | * gLAB v4.2.0
166 | * Release: 2017/05/22
167 | * Change Log: No changes in this file.
168 | * -----------
169 | * gLAB v5.0.0
170 | * Release: 2017/06/30
171 | * Change Log: No changes in this file.
172 | * -----------
173 | * gLAB v5.1.0
174 | * Release: 2017/11/24
175 | * Change Log: No changes in this file.
176 | * -----------
177 | * gLAB v5.1.1
178 | * Release: 2017/12/22
179 | * Change Log: No changes in this file.
180 | * -----------
181 | * gLAB v5.1.2
182 | * Release: 2018/01/12
183 | * Change Log: 'checkCycleSlips' function is now of type 'void' instead of 'int'.
184 | * -----------
185 | * gLAB v5.1.3
186 | * Release: 2018/01/19
187 | * Change Log: No changes in this file.
188 | * -----------
189 | * gLAB v5.2.0
190 | * Release: 2018/03/09
191 | * Change Log: No changes in this file.
192 | * -----------
193 | * gLAB v5.3.0
194 | * Release: 2018/06/08
195 | * Change Log: No changes in this file.
196 | * -----------
197 | * gLAB v5.4.0
198 | * Release: 2018/10/23
199 | * Change Log: No changes in this file.
200 | * -----------
201 | * gLAB v5.4.1
202 | * Release: 2019/02/15
203 | * Change Log: No changes in this file.
204 | * -----------
205 | * gLAB v5.4.2
206 | * Release: 2019/03/08
207 | * Change Log: No changes in this file.
208 | * -----------
209 | * gLAB v5.4.3
210 | * Release: 2019/03/20
211 | * Change Log: No changes in this file.
212 | * -----------
213 | * gLAB v5.4.4
214 | * Release: 2019/05/10
215 | * Change Log: No changes in this file.
216 | * -----------
217 | * gLAB v5.5.0
218 | * Release: 2020/11/13
219 | * Change Log: No changes in this file.
220 | * -----------
221 | * gLAB v5.5.1
222 | * Release: 2020/12/11
223 | * Change Log: No changes in this file.
224 | * -----------
225 | * gLAB v6.0.0
226 | * Release: 2024/11/22
227 | * Change Log: Added multi-constellation support (Galileo, GLONASS, GEO, BDS, QZSS and IRNSS).
228 | * Added multi-frequency support (all RINEX frequencies).
229 | * Added SBAS DFMC processing.
230 | * -----------
231 | * END_RELEASE_HISTORY
232 | *****************************/
233 |
234 | #ifndef PREPROCESSING_H_
235 | #define PREPROCESSING_H_
236 |
237 | #if defined __WIN32__
238 | //This is to allow %lld, %llu and %n format specifiers in printf with MinGW
239 | #define __USE_MINGW_ANSI_STDIO 1
240 | #endif
241 |
242 | /* System modules */
243 | #include
244 | #include
245 |
246 | /* External classes */
247 | #include "dataHandling.h"
248 | #include "output.h"
249 |
250 | /* Internal types, constants and data */
251 |
252 | // General
253 | void preprocess (TEpoch *epoch, TOptions *options, int mode);
254 |
255 | // Decimation
256 | int isEpochDecimated (TEpoch *epoch, TOptions *options);
257 |
258 | // Eclipse
259 | int isEclipsed (TTime *t, TSatellite *sat, TSatInfo *satInfo, double sunPos[3], double *tLast);
260 |
261 | // Carrier phase prealignment
262 | void prealignSat (TEpoch *epoch, int ind);
263 | void prealignEpoch (TEpoch *epoch, TOptions *options);
264 |
265 | // Data checks and cycle-slip detection
266 | double lagrangeInterpolation (int degree, TTime t, TTime *tPrev, double *yPrev);
267 | int checkPseudorangeJumps (TEpoch *epoch, TOptions *options);
268 | double polyfit (TTime *t, TTime *tSamples, double *Samples, int outlier, int numsamples, double *res);
269 | void checkCycleSlips (TEpoch *epoch, TOptions *options, int mode);
270 | void look4interval (TEpoch *epoch, TOptions *options);
271 |
272 | // Smoothing
273 | void smoothEpoch (TEpoch *epoch, TOptions *options);
274 |
275 | // Sigma inflation
276 | void sigmaInflation (TEpoch *epoch, TOptions *options);
277 |
278 | #endif /*PREPROCESSING_H_*/
279 |
--------------------------------------------------------------------------------
/gLAB_SUM.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/valgur/gLAB/5d66623c61a465aa5f5d2197610067521c026a30/gLAB_SUM.pdf
--------------------------------------------------------------------------------