├── 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 --------------------------------------------------------------------------------