1 | #include "polarxmainwindow.hpp"
|
---|
2 |
|
---|
3 | using namespace std ;
|
---|
4 |
|
---|
5 | PolarxMainWindow::PolarxMainWindow() : QWidget()
|
---|
6 | {
|
---|
7 |
|
---|
8 | this->setFixedSize(800,600);
|
---|
9 |
|
---|
10 | QTabWidget *tab = new QTabWidget( this );
|
---|
11 | tab->resize( this->size() );
|
---|
12 |
|
---|
13 | QWidget *recPage = new QWidget ;
|
---|
14 | initStatusBlock( recPage );
|
---|
15 | tab->addTab( recPage , "Receiver Status" ) ;
|
---|
16 |
|
---|
17 | QWidget *sbfPage = new QWidget ;
|
---|
18 | initSbfBlock(sbfPage);
|
---|
19 | tab->addTab( sbfPage , "SBF Block" ) ;
|
---|
20 |
|
---|
21 | QWidget *setupPage = new QWidget ;
|
---|
22 | initSetupBlock(setupPage);
|
---|
23 | tab->addTab( setupPage , "Setup" ) ;
|
---|
24 |
|
---|
25 | show() ;
|
---|
26 |
|
---|
27 | connect( upFrame , SIGNAL( clicked() ) , this , SLOT( sendNewFrame() ) );
|
---|
28 | connect( upSetup , SIGNAL( clicked() ) , this , SLOT( sendNewSetup() ) ) ;
|
---|
29 | ipID = 0 ;
|
---|
30 | elevMask_set = 100 ;
|
---|
31 | }
|
---|
32 |
|
---|
33 | void PolarxMainWindow::setData( unsigned char * data , int buf_size )
|
---|
34 | {
|
---|
35 |
|
---|
36 | // $PolaRx:
|
---|
37 | if ( data[0] == '$' & data[1] == 'P' )
|
---|
38 | {
|
---|
39 | QString cmd ;
|
---|
40 | for ( int i = 0 ; i < buf_size ; i++ )
|
---|
41 | cmd.append( data[i] );
|
---|
42 | commandManager(cmd.split( "#EoL" ));
|
---|
43 | }
|
---|
44 |
|
---|
45 | }
|
---|
46 |
|
---|
47 | void PolarxMainWindow::pvtError( QString err )
|
---|
48 | {
|
---|
49 | PVT_lat->setText( err );
|
---|
50 | PVT_lon->setText( QString::null );
|
---|
51 | PVT_elv->setText( QString::null );
|
---|
52 | }
|
---|
53 |
|
---|
54 | void PolarxMainWindow::setSocket( SeptentrioSocket * socket )
|
---|
55 | {
|
---|
56 | socketIf_ = socket ;
|
---|
57 | socketIf_->sendToServer("GetSBFOutput curr" ) ;
|
---|
58 | socketIf_->sendToServer("GetPVTInterval" ) ;
|
---|
59 | socketIf_->sendToServer("GetPVTMode" ) ;
|
---|
60 | socketIf_->sendToServer("GetElevationMask" ) ;
|
---|
61 | socketIf_->sendToServer("GetMeasInterval" );
|
---|
62 | socketIf_->sendToServer("GetTrackingMode" );
|
---|
63 | }
|
---|
64 |
|
---|
65 | void PolarxMainWindow::getAvailableFrame( QString cmd )
|
---|
66 | {
|
---|
67 | // $PolaRx: SetSBFOutput IP10, PVTgeo #EoL
|
---|
68 | cmd.remove( 0 , 27 ) ;
|
---|
69 | avFrame = cmd.simplified().split("+");
|
---|
70 |
|
---|
71 | for ( QMap< QString , QCheckBox* >::iterator I = sbfBlock_disp.begin() ; I != sbfBlock_disp.end() ; I++ )
|
---|
72 | {
|
---|
73 | if ( avFrame.contains( I.key() ) ) I.value()->setChecked( true ) ;
|
---|
74 | else I.value()->setChecked( false );
|
---|
75 | }
|
---|
76 |
|
---|
77 | if ( !avFrame.contains("Status") | !avFrame.contains("PVTgeo") )
|
---|
78 | {
|
---|
79 | avFrame << "Status" << "PVTgeo" ;
|
---|
80 | requestFrame();
|
---|
81 | }
|
---|
82 |
|
---|
83 | }
|
---|
84 |
|
---|
85 | void PolarxMainWindow::requestFrame()
|
---|
86 | {
|
---|
87 | QString cmd = QString("SetSBFOutput IP%1 %2").arg(ipID).arg(avFrame.join("+") ) ;
|
---|
88 | socketIf_->sendToServer( cmd );
|
---|
89 | }
|
---|
90 |
|
---|
91 | void PolarxMainWindow::initSbfBlock(QWidget * parent)
|
---|
92 | {
|
---|
93 | QMap<QString,QStringList> bname ;
|
---|
94 |
|
---|
95 | bname["Raw Data"] << "Meas" << "ShortMeas" << "GenMeas" << "Nav" << "Alm" << "IonUtc" << "MeoRaw"<< "Rinex" ;
|
---|
96 | bname["PVT"] << "PVTcar" << "PVTgeo" << "CovCar" << "CovGeo" << "DOP" << "PVTRes" << "RAIM" ;
|
---|
97 | bname["SBAS"] << "GEOcorr" << "GEOInfo" ;
|
---|
98 | bname["Attitude"] << "AttEuler" << "CovEuler" << "AttQuat" << "CovQuat" << "AuxPos" ;
|
---|
99 | bname["Monitoring"] << "PPS" << "Commands" << "Off" << "RxInfo" << "Status" << "EndOfEpoch" << "DiffCorr" << "BaseInfo" << "BaseLine" << "ExtEvent" ;
|
---|
100 |
|
---|
101 | QVBoxLayout * layout_ = new QVBoxLayout ;
|
---|
102 | for ( QMap<QString,QStringList>::iterator Il = bname.begin() ; Il != bname.end() ; Il++ )
|
---|
103 | {
|
---|
104 | QGroupBox * box = new QGroupBox( Il.key() , parent );
|
---|
105 | QGridLayout * layout = new QGridLayout ;
|
---|
106 | box->setLayout( layout );
|
---|
107 | int l = 0 ;
|
---|
108 | int c = 0 ;
|
---|
109 | for ( QStringList::iterator Iv = Il.value().begin() ; Iv != Il.value().end() ; Iv++ )
|
---|
110 | {
|
---|
111 | sbfBlock_disp[*Iv] = new QCheckBox(*Iv,box);
|
---|
112 | layout->addWidget(sbfBlock_disp[*Iv],l,c);
|
---|
113 | if (c++ == 4 )
|
---|
114 | {
|
---|
115 | c = 0 ;
|
---|
116 | l++ ;
|
---|
117 | } ;
|
---|
118 | }
|
---|
119 | layout_->addWidget( box );
|
---|
120 | }
|
---|
121 |
|
---|
122 | upFrame = new QPushButton("Send",parent);
|
---|
123 | layout_->addWidget( upFrame );
|
---|
124 | parent->setLayout( layout_ );
|
---|
125 |
|
---|
126 | }
|
---|
127 |
|
---|
128 | void PolarxMainWindow::sendNewFrame()
|
---|
129 | {
|
---|
130 | avFrame.clear() ;
|
---|
131 | for ( QMap< QString , QCheckBox* >::iterator I = sbfBlock_disp.begin() ; I != sbfBlock_disp.end() ; I++ )
|
---|
132 | if ( I.value()->isChecked() )
|
---|
133 | avFrame << I.key() ;
|
---|
134 | requestFrame() ;
|
---|
135 | }
|
---|
136 |
|
---|
137 | void PolarxMainWindow::initStatusBlock( QWidget * parent )
|
---|
138 | {
|
---|
139 | //! Receiver status page
|
---|
140 | TOW = new QLabel( parent );
|
---|
141 | WNC = new QLabel( parent );
|
---|
142 | RXLOAD = new QLabel( parent );
|
---|
143 | UPTIME = new QLabel( parent );
|
---|
144 | CHAN_USED = new QLabel( parent );
|
---|
145 | TRACKINGSTATUS = new QStandardItemModel( 1 , 1 );
|
---|
146 | PVT_lat = new QLabel( parent );
|
---|
147 | PVT_lon = new QLabel( parent );
|
---|
148 | PVT_elv = new QLabel( parent );
|
---|
149 | SYSTEM = new QLabel( parent );
|
---|
150 | SYSTEM2 = new QLabel( parent );
|
---|
151 | SYSTEM3 = new QLabel( parent );
|
---|
152 | MODE = new QLabel( parent );
|
---|
153 | PVT_USED = new QLabel( parent );
|
---|
154 |
|
---|
155 | QVBoxLayout * rmain_layout = new QVBoxLayout ;
|
---|
156 | QGroupBox * gpstime = new QGroupBox( "GPS Time" , parent );
|
---|
157 | QGroupBox * tracking = new QGroupBox( "Tracking" , parent );
|
---|
158 | QGroupBox * status = new QGroupBox( "Status" , parent );
|
---|
159 | rmain_layout->addWidget( gpstime );
|
---|
160 | rmain_layout->addWidget( status );
|
---|
161 | rmain_layout->addWidget( tracking );
|
---|
162 |
|
---|
163 | QGridLayout * ssub_layout = new QGridLayout ;
|
---|
164 | ssub_layout->addWidget( new QLabel("Mode : ") ,0,0 );
|
---|
165 | ssub_layout->addWidget( MODE ,0,1 );
|
---|
166 | ssub_layout->addWidget( CHAN_USED ,0,2 );
|
---|
167 | ssub_layout->addWidget( PVT_USED ,0,3 );
|
---|
168 | ssub_layout->addWidget( new QLabel("System : ") ,2,0 );
|
---|
169 | ssub_layout->addWidget( SYSTEM ,2,1 );
|
---|
170 | ssub_layout->addWidget( SYSTEM2 ,2,2 );
|
---|
171 | ssub_layout->addWidget( SYSTEM3 ,2,3 );
|
---|
172 | ssub_layout->addWidget( new QLabel("PVT : ") ,3,0 );
|
---|
173 | ssub_layout->addWidget( PVT_lat ,3,1 );
|
---|
174 | ssub_layout->addWidget( PVT_lon ,3,2 );
|
---|
175 | ssub_layout->addWidget( PVT_elv ,3,3 );
|
---|
176 | status->setLayout( ssub_layout );
|
---|
177 |
|
---|
178 |
|
---|
179 | QHBoxLayout * gp_layout = new QHBoxLayout;
|
---|
180 | gp_layout->addWidget(WNC);
|
---|
181 | gp_layout->addWidget(TOW);
|
---|
182 | gp_layout->addWidget( UPTIME );
|
---|
183 | gp_layout->addWidget( RXLOAD );
|
---|
184 | gpstime->setLayout( gp_layout ) ;
|
---|
185 |
|
---|
186 | QTableView * trackingView = new QTableView ;
|
---|
187 |
|
---|
188 | trackingView->setModel( TRACKINGSTATUS );
|
---|
189 | QHBoxLayout * t_layout = new QHBoxLayout ;
|
---|
190 | tracking->setLayout( t_layout );
|
---|
191 | t_layout->addWidget( trackingView );
|
---|
192 |
|
---|
193 | parent->setLayout(rmain_layout);
|
---|
194 | }
|
---|
195 |
|
---|
196 | void PolarxMainWindow::initSetupBlock( QWidget * parent )
|
---|
197 | {
|
---|
198 | QVBoxLayout * layout = new QVBoxLayout() ;
|
---|
199 | QGridLayout * blayout = new QGridLayout();
|
---|
200 | upSetup = new QPushButton("Send",parent);
|
---|
201 | layout->addLayout(blayout);
|
---|
202 | layout->addWidget(upSetup);
|
---|
203 | parent->setLayout(layout);
|
---|
204 |
|
---|
205 | QGroupBox * pvt_ = new QGroupBox("PVT",parent);
|
---|
206 | blayout->addWidget( pvt_ , 0 , 0 );
|
---|
207 | QGroupBox * tracking_ = new QGroupBox("Tracking",parent);
|
---|
208 | blayout->addWidget( tracking_ , 1 , 0 );
|
---|
209 | QGroupBox * meas_ = new QGroupBox("Measurements",parent);
|
---|
210 | blayout->addWidget( meas_ , 0,1,2,1);
|
---|
211 |
|
---|
212 | // PVT
|
---|
213 | QGridLayout * pvtLayout = new QGridLayout ;
|
---|
214 | pvt_->setLayout( pvtLayout );
|
---|
215 | pvtLayout->addWidget( new QLabel("Mode :") , 0 , 0 );
|
---|
216 | pvtLayout->addWidget( new QLabel("PVT Frequency :") , 3 , 0 );
|
---|
217 | pvtLayout->addWidget( new QLabel("ClockSync Thres. :") , 4 , 0 );
|
---|
218 | pvtLayout->addWidget( new QLabel("PPS Rate :") , 5 , 0 );
|
---|
219 |
|
---|
220 | QStringList temp_ = QStringList() << "standalone" << "SBAS" << "DGPS" << "RTKfloat" << "RTK" ;
|
---|
221 | int n = 0 ;
|
---|
222 | for ( QStringList::iterator I = temp_.begin() ; I !=temp_.end() ; I++ )
|
---|
223 | {
|
---|
224 | pvtMode[*I] = new QCheckBox( *I , parent );
|
---|
225 | pvtLayout->addWidget( pvtMode[*I] , n++ , 1 );
|
---|
226 | }
|
---|
227 |
|
---|
228 | pvtInterval = new QComboBox() ;
|
---|
229 | pvtInterval->addItems( QStringList() << "0.10" << "0.20" << "0.50" << "1.00" ) ;
|
---|
230 | pvtLayout->addWidget( pvtInterval , 3 , 1 ) ;
|
---|
231 |
|
---|
232 | // Meas
|
---|
233 | QGridLayout * measLayout = new QGridLayout ;
|
---|
234 | meas_->setLayout( measLayout );
|
---|
235 | measLayout->addWidget( new QLabel("Meas. Interval :") , 0 , 0 );
|
---|
236 | measLayout->addWidget( new QLabel("Multipath Mitigation :") , 1 , 0 );
|
---|
237 | measLayout->addWidget( new QLabel("Meas. Smoothing :") , 2 , 0 );
|
---|
238 | measLayout->addWidget( new QLabel("Meas. Fit :") , 3 , 0 );
|
---|
239 |
|
---|
240 | measInterval = new QComboBox() ;
|
---|
241 | measInterval->addItems( QStringList() << "0.10" << "0.20" << "0.50" << "1.00" ) ;
|
---|
242 | measLayout->addWidget( measInterval , 0 , 1 ) ;
|
---|
243 |
|
---|
244 | // Tracking
|
---|
245 | QGridLayout * trkLayout = new QGridLayout ;
|
---|
246 | tracking_->setLayout( trkLayout );
|
---|
247 | trkLayout->addWidget( new QLabel("Tracking Mode :") , 0 , 0 );
|
---|
248 | trkLayout->addWidget( new QLabel("Channel Alloc :") , 1 , 0 );
|
---|
249 | trkLayout->addWidget( new QLabel("Elevation Mask :") , 2 , 0 );
|
---|
250 | trkLayout->addWidget( new QLabel("Tracking Sens. :") , 3 , 0 );
|
---|
251 |
|
---|
252 | trkMode = new QComboBox() ;
|
---|
253 | trkMode->addItems( QStringList() << "dynamic" << "static" << "timing" );
|
---|
254 | trkLayout->addWidget( trkMode , 0 , 1 );
|
---|
255 |
|
---|
256 | elevMask = new QSpinBox() ;
|
---|
257 | elevMask->setRange(-90,90);
|
---|
258 | elevMask->setSingleStep(1) ;
|
---|
259 | trkLayout->addWidget(elevMask,2,1);
|
---|
260 |
|
---|
261 | }
|
---|
262 |
|
---|
263 | void PolarxMainWindow::sendNewSetup()
|
---|
264 | {
|
---|
265 | QStringList tosend ;
|
---|
266 | for ( QMap< QString , QCheckBox * >::iterator I = pvtMode.begin() ; I != pvtMode.end() ; I++ )
|
---|
267 | {
|
---|
268 | if ( I.value()->isChecked() )
|
---|
269 | {
|
---|
270 | tosend << I.key();
|
---|
271 | socketIf_->sendToServer( QString("SetPVTMode %1").arg(tosend.join("+")) );
|
---|
272 | }
|
---|
273 | }
|
---|
274 |
|
---|
275 | if ( pvtInterval->currentText() != pvtInt_set )
|
---|
276 | socketIf_->sendToServer( "SetPVTInterval " + pvtInterval->currentText() );
|
---|
277 |
|
---|
278 | if ( elevMask->value() != elevMask_set )
|
---|
279 | socketIf_->sendToServer( QString("SetElevationMask %1").arg(elevMask->value()) );
|
---|
280 |
|
---|
281 | if ( measInterval->currentText() != measInt_set )
|
---|
282 | socketIf_->sendToServer( "SetMeasInterval " + measInterval->currentText() );
|
---|
283 |
|
---|
284 | if ( trkMode->currentText() != trkMode_set )
|
---|
285 | socketIf_->sendToServer( "SetTRackingmode " + trkMode->currentText() );
|
---|
286 |
|
---|
287 | }
|
---|
288 |
|
---|
289 | void PolarxMainWindow::extractIpID( QString cmd )
|
---|
290 | {
|
---|
291 | QString ip_ ;
|
---|
292 | ip_.append( cmd.at(24) );
|
---|
293 | ip_.append( cmd.at(25) );
|
---|
294 | ipID = ip_.toInt() ;
|
---|
295 | }
|
---|
296 |
|
---|
297 | void PolarxMainWindow::getPvtInterval( QString cmd )
|
---|
298 | {
|
---|
299 | cmd.remove(0,23);
|
---|
300 | int idx = pvtInterval->findText( cmd.simplified() ) ;
|
---|
301 | pvtInterval->setCurrentIndex( idx );
|
---|
302 | pvtInt_set = cmd.simplified() ;
|
---|
303 | }
|
---|
304 |
|
---|
305 | void PolarxMainWindow::getPvtMode( QString cmd )
|
---|
306 | {
|
---|
307 | if ( cmd.at(6) == 'x' )
|
---|
308 | {
|
---|
309 | cmd.remove(0,20);
|
---|
310 | cmd.truncate( cmd.indexOf( "$" ) );
|
---|
311 | QStringList avMod = cmd.simplified().split("+");
|
---|
312 | for ( QMap< QString , QCheckBox * >::iterator I = pvtMode.begin() ; I != pvtMode.end() ; I++ )
|
---|
313 | if ( avMod.contains( I.key() ) )
|
---|
314 | I.value()->setChecked( true );
|
---|
315 | }
|
---|
316 | }
|
---|
317 |
|
---|
318 | void PolarxMainWindow::getElevationMask( QString cmd )
|
---|
319 | {
|
---|
320 | // $PolaRx: SetElevationMask -10 #EoL
|
---|
321 | QString tmp_ ;
|
---|
322 | for (int k = 26 ; k < cmd.size() ; k++ )
|
---|
323 | tmp_.append(cmd.at(k)) ;
|
---|
324 | // tmp_.append(cmd.at(26)) ;
|
---|
325 | // tmp_.append(cmd.at(27)) ;
|
---|
326 | // if ( tmp_.at(1) == '-' ) tmp_.append(cmd.at(28)) ;
|
---|
327 | elevMask->setValue( tmp_.toInt() );
|
---|
328 | elevMask_set = tmp_.toInt() ;
|
---|
329 | }
|
---|
330 |
|
---|
331 | void PolarxMainWindow::getMeasInterval( QString cmd )
|
---|
332 | {
|
---|
333 | cmd.remove(0,24);
|
---|
334 | int idx = measInterval->findText( cmd.simplified() ) ;
|
---|
335 | measInterval->setCurrentIndex( idx );
|
---|
336 | measInt_set = cmd.simplified() ;
|
---|
337 | }
|
---|
338 |
|
---|
339 | void PolarxMainWindow::getTrackingMode(QString cmd)
|
---|
340 | {
|
---|
341 | // $PolaRx: SetTRackingmode dynamic
|
---|
342 | cmd.remove(0,24);
|
---|
343 | int idx = trkMode->findText( cmd.simplified() ) ;
|
---|
344 | trkMode->setCurrentIndex( idx );
|
---|
345 | trkMode_set = cmd.simplified() ;
|
---|
346 | }
|
---|
347 |
|
---|
348 | void PolarxMainWindow::commandManager( QStringList cmdList )
|
---|
349 | {
|
---|
350 | for ( QStringList::iterator cmd = cmdList.begin() ; cmd != cmdList.end() ; cmd++ )
|
---|
351 | {
|
---|
352 | QString cmd_ = (*cmd).simplified() ;
|
---|
353 | qDebug() << cmd_ ;
|
---|
354 | bool toto = cmd_.contains( "SetSBFOutput") ;
|
---|
355 | if ( (ipID == 0) & toto ) extractIpID( cmd_ );
|
---|
356 | if ( cmd_.contains( QString("SetSBFOutput IP%1").arg(ipID) ) ) getAvailableFrame( cmd_ ) ;
|
---|
357 | if ( cmd_.contains( "SetPVTInterval" )) getPvtInterval( cmd_ ) ;
|
---|
358 | if ( cmd_.contains( "SetPVTMode" ) ) getPvtMode( cmd_ );
|
---|
359 | if ( cmd_.contains( "SetElevationMask" ) ) getElevationMask( cmd_ );
|
---|
360 | if ( cmd_.contains( "SetMeasInterval" ) ) getMeasInterval( cmd_ );
|
---|
361 | if ( cmd_.contains( "SetTRackingmode" ) ) getTrackingMode( cmd_ );
|
---|
362 | }
|
---|
363 | }
|
---|
364 |
|
---|
365 | void PolarxMainWindow::setReceiverStatus( SbfDataReceiverStatus * msg )
|
---|
366 | {
|
---|
367 | RXLOAD->setText( QString("Load: %1%").arg( msg->CPULoad ) ) ;
|
---|
368 | UPTIME->setText( QString("Uptime: %1s").arg( msg->UpTime )) ;
|
---|
369 |
|
---|
370 | bool CPU_OVERLOAD = ( msg->RxState >> 7 )&1 ;
|
---|
371 | // bool CPU_OVERLOAD = ( msg->RxState&64 ) == 64 ;
|
---|
372 | if (CPU_OVERLOAD)
|
---|
373 | RXLOAD->setStyleSheet("background-color:red");
|
---|
374 | else
|
---|
375 | RXLOAD->setStyleSheet("");
|
---|
376 | }
|
---|
377 |
|
---|
378 | void PolarxMainWindow::setTrackingStatus( SbfDataTrackingStatus * msg )
|
---|
379 | {
|
---|
380 | CHAN_USED->setText( QString("Tracking: %1").arg(msg->N) ) ;
|
---|
381 | for ( int k = 0 ; k < msg->N ; k++ )
|
---|
382 | {
|
---|
383 | TRACKINGSTATUS->setItem( k , 0 , new QStandardItem( QString("%1").arg( msg->ChannelData[k].RxChannel ) ) );
|
---|
384 | TRACKINGSTATUS->setItem( k , 1 , new QStandardItem( QString("%1").arg( msg->ChannelData[k].SVID ) ) ) ;
|
---|
385 |
|
---|
386 | unsigned char AntFlag = msg->ChannelData[k].main_tracking ;
|
---|
387 | if ( AntFlag == 0 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "-" ) );
|
---|
388 | else if ( AntFlag == 1 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "Searching" ));
|
---|
389 | else if ( AntFlag == 2 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "Sync." ));
|
---|
390 | else if ( AntFlag == 3 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "C/A" ));
|
---|
391 | else if ( AntFlag == 4 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "C/A+P(y)" ));
|
---|
392 | else if ( AntFlag == 5 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "C/A+L2C" ));
|
---|
393 | else if ( AntFlag == 6 ) TRACKINGSTATUS->setItem( k , 3 , new QStandardItem( "C/A+P(y)+L2C" ));
|
---|
394 |
|
---|
395 | unsigned char PVTFlag = msg->ChannelData[k].PVT_usage ;
|
---|
396 | if ( PVTFlag == 0 ) TRACKINGSTATUS->setItem( k,5 , new QStandardItem( "Not Used" ));
|
---|
397 | else if ( PVTFlag == 1 ) TRACKINGSTATUS->setItem( k,5 , new QStandardItem( "Used" ));
|
---|
398 | else if ( PVTFlag == 2 ) TRACKINGSTATUS->setItem( k,5 , new QStandardItem( "Rejected" ));
|
---|
399 |
|
---|
400 | TRACKINGSTATUS->setItem( k,2 , new QStandardItem( QString("%1 / %2").arg( (int)msg->ChannelData[k].Elevation ).arg( (int)msg->ChannelData[k].Azimuth ) )) ;
|
---|
401 |
|
---|
402 | int Health = (int)msg->ChannelData[k].Health;
|
---|
403 | if ( Health == 0 ) TRACKINGSTATUS->setItem( k,4 , new QStandardItem( "Healty" )) ;
|
---|
404 | else if ( Health == 1) TRACKINGSTATUS->setItem( k,4 , new QStandardItem( "Unhealty" )) ;
|
---|
405 | else if ( Health == 2) TRACKINGSTATUS->setItem( k,4 , new QStandardItem( "-" )) ;
|
---|
406 | }
|
---|
407 | if ( TRACKINGSTATUS->rowCount() > msg->N )
|
---|
408 | TRACKINGSTATUS->removeRows( TRACKINGSTATUS->rowCount() , TRACKINGSTATUS->rowCount()-msg->N ) ;
|
---|
409 | }
|
---|
410 |
|
---|
411 | void PolarxMainWindow::setPVTGeodetic( SbfDataPVTGeodetic * msg )
|
---|
412 | {
|
---|
413 | TOW->setText( QString("Tow : %1s").arg(msg->TOW) );
|
---|
414 | WNC->setText( QString("Week : %1").arg(msg->WNc) );
|
---|
415 |
|
---|
416 | PVT_USED->setText( QString("PVT: %1").arg( msg->nrSV ) );
|
---|
417 | if ( msg->error == 0 )
|
---|
418 | {
|
---|
419 | PVT_lat->setText( QString("%1").arg(msg->lat) );
|
---|
420 | PVT_lon->setText( QString("%1").arg(msg->lon) );
|
---|
421 | PVT_elv->setText( QString("%1").arg(msg->h ) );
|
---|
422 | }
|
---|
423 | else if ( msg->error == 1 ) pvtError( "Not Enough Meas" );
|
---|
424 | else if ( msg->error == 2 ) pvtError( "Not Enough Eph" );
|
---|
425 | else if ( msg->error == 3 ) pvtError( "DOP too large" );
|
---|
426 | else if ( msg->error == 4 ) pvtError( "SSR too large" );
|
---|
427 | else if ( msg->error == 5 ) pvtError( "No convergence" );
|
---|
428 | else if ( msg->error == 6 ) pvtError( "Not Enough Meas after outlier rejection" );
|
---|
429 | else if ( msg->error == 7 ) pvtError( "Unvalid Data" );
|
---|
430 | else if ( msg->error == 8 ) pvtError( "Not Enough Diff Corr" );
|
---|
431 | else if ( msg->error == 9 ) pvtError( "Base station coor unavailable" );
|
---|
432 |
|
---|
433 | if ( msg->mode == 0 ) MODE->setText( "No PVT" );
|
---|
434 | else if ( msg->mode == 1 ) MODE->setText( "Standalone PVT" );
|
---|
435 | else if ( msg->mode == 2 ) MODE->setText( "Differential PVT" );
|
---|
436 | else if ( msg->mode == 3 ) MODE->setText( "Fixed Base" );
|
---|
437 | else if ( msg->mode == 4 ) MODE->setText( "RTK fixed" );
|
---|
438 | else if ( msg->mode == 5 ) MODE->setText( "RTK float" );
|
---|
439 | else if ( msg->mode == 9 ) MODE->setText( "RTK fixed (FKP)" );
|
---|
440 | else if ( msg->mode == 10 ) MODE->setText( "RTK float (FKP)" );
|
---|
441 | else MODE->setText( "-" );
|
---|
442 |
|
---|
443 | QString sys ;
|
---|
444 | if ( msg->gpsUsed & !msg->glonassUsed )
|
---|
445 | sys += "GPS";
|
---|
446 | else if ( !msg->gpsUsed & msg->glonassUsed )
|
---|
447 | sys += "GLONASS" ;
|
---|
448 | else if ( msg->gpsUsed & msg->glonassUsed )
|
---|
449 | sys += "GPS+GLONASS" ;
|
---|
450 |
|
---|
451 | if ( !msg->PVTFix3D )
|
---|
452 | sys += " (2D PVT)";
|
---|
453 | else if ( msg->L1SignalUsed & !msg->L2SignalUsed )
|
---|
454 | sys += " (L1)" ;
|
---|
455 | else if ( !msg->L1SignalUsed & msg->L2SignalUsed )
|
---|
456 | sys += " (L2)" ;
|
---|
457 | else if ( msg->L1SignalUsed & msg->L2SignalUsed )
|
---|
458 | sys += " (L1/L2)" ;
|
---|
459 | SYSTEM->setText( sys );
|
---|
460 |
|
---|
461 | sys.clear() ;
|
---|
462 | if ( msg->sbas == 0 ) sys += "No SBAS" ;
|
---|
463 | else if ( msg->sbas == 1 ) sys += "EGNOS" ;
|
---|
464 | else if ( msg->sbas == 2 ) sys += "WAAS" ;
|
---|
465 | else if ( msg->sbas == 3 ) sys += "MSAS" ;
|
---|
466 | else if ( msg->sbas == 15 ) sys += "Other" ;
|
---|
467 |
|
---|
468 | if ( msg->sbas )
|
---|
469 | {
|
---|
470 | sys += " (" ;
|
---|
471 | if ( msg->sbasLTC ) sys += "LTC" ;
|
---|
472 | if ( msg->sbasFC ) sys += "+FC" ;
|
---|
473 | if ( msg->sbasIono ) sys += "+Iono" ;
|
---|
474 | sys += ")";
|
---|
475 | if ( msg->sbasPA ) sys += " - PA active" ;
|
---|
476 | SYSTEM2->setText( sys );
|
---|
477 |
|
---|
478 | SYSTEM3->setText( QString("PRN : %1").arg(msg->sbasPrn) );
|
---|
479 | }
|
---|
480 | }
|
---|