| 
						
						
							
								
							
						
						
					 | 
					@ -27,6 +27,7 @@ MainWindow::MainWindow(QWidget* parent) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _vec = new StatusVec; | 
					 | 
					 | 
					    _vec = new StatusVec; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _emul = new EmulatorProperties; | 
					 | 
					 | 
					    _emul = new EmulatorProperties; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _prb = new PrbCase; | 
					 | 
					 | 
					    _prb = new PrbCase; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _headerLogFile = new QFile (_headerLogPath); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    movie = new QMovie("/home/hasis/Desktop/hardware/Develop_HardwareTest/gifs/Glass lines.gif"); | 
					 | 
					 | 
					    movie = new QMovie("/home/hasis/Desktop/hardware/Develop_HardwareTest/gifs/Glass lines.gif"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    movie->stop(); | 
					 | 
					 | 
					    movie->stop(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -112,7 +113,7 @@ MainWindow::MainWindow(QWidget* parent) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _dmaRun = false; | 
					 | 
					 | 
					    _dmaRun = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _fpsFlag = false; | 
					 | 
					 | 
					    _fpsFlag = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _dmaShow = false; | 
					 | 
					 | 
					    _dmaShow = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _getPacket = false; | 
					 | 
					 | 
					    _headerLogEn = false; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    _firstFrameEn = false; | 
					 | 
					 | 
					    _firstFrameEn = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _programFlag = true; | 
					 | 
					 | 
					    _programFlag = true; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _frameCount = 0; | 
					 | 
					 | 
					    _frameCount = 0; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -159,6 +160,8 @@ MainWindow::~MainWindow() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    delete _emul; | 
					 | 
					 | 
					    delete _emul; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    delete movie; | 
					 | 
					 | 
					    delete movie; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    delete _headerLogFile; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -780,18 +783,25 @@ void MainWindow::fpgaProgram(QString& path) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::programThreadFinish() | 
					 | 
					 | 
					void MainWindow::programThreadFinish() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    try | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					#ifdef DEVELOP_UI | 
					 | 
					 | 
					#ifdef DEVELOP_UI | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _trx.afeAdcsSync(); | 
					 | 
					 | 
					    _trx.afeAdcsSync(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					#endif | 
					 | 
					 | 
					#endif | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QString str = "done"; | 
					 | 
					 | 
					        QString str = "done"; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QColor color = Qt::green; | 
					 | 
					 | 
					        QColor color = Qt::green; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    emit labelState(ui->l_programDone, str, color); | 
					 | 
					 | 
					        emit labelState(ui->l_programDone, str, color); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    movie->stop(); | 
					 | 
					 | 
					        movie->stop(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    ui->l_programming->hide(); | 
					 | 
					 | 
					        ui->l_programming->hide(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _programFlag = true; | 
					 | 
					 | 
					        _programFlag = true; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    ui->btn_getFpgaVersion->setEnabled(true); | 
					 | 
					 | 
					        ui->btn_getFpgaVersion->setEnabled(true); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -874,6 +884,7 @@ void MainWindow::delay(quint16 ms) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //loop.exec();
 | 
					 | 
					 | 
					    //loop.exec();
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					const QString MainWindow::enum2String(ePg state) const | 
					 | 
					 | 
					const QString MainWindow::enum2String(ePg state) const | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    QString pg; | 
					 | 
					 | 
					    QString pg; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -887,28 +898,67 @@ const QString MainWindow::enum2String(ePg state) const | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::getFramePacket(QByteArray packet) | 
					 | 
					 | 
					void MainWindow::getFramePacket(QByteArray packet) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _mutex.lock(); | 
					 | 
					 | 
					    quint16 batchId = ((static_cast<quint16>(packet[128])) & 0x00FF) | | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _dmaBuffer.push_back(packet); | 
					 | 
					 | 
					                      (((static_cast<quint16>(packet[129])) << 8) & 0xFF00); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _lastBuffer = packet; | 
					 | 
					 | 
					    quint8 subBatchId = (static_cast<quint8>(packet[130])); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _mutex.unlock(); | 
					 | 
					 | 
					    quint8 frmType = (static_cast<quint8>(packet[131])); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    quint8 cri = (static_cast<quint8>(packet[132])); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    quint16 bLine = ((static_cast<quint16>(packet[136])) & 0x00FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    (((static_cast<quint16>(packet[137])) << 8) & 0xFF00); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    quint16 bPoint = ((static_cast<quint16>(packet[138])) & 0x00FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                     (((static_cast<quint16>(packet[139])) << 8) & 0xFF00); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    quint8 mLine = (static_cast<quint8>(packet[140])); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    quint16 mPoint = ((static_cast<quint16>(packet[141])) & 0x00FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                     (((static_cast<quint16>(packet[142])) << 8) & 0xFF00); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (_headerLogEn) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        QTextStream _headerLog (_headerLogFile); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << batchId    << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << subBatchId << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << bLine      << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << bPoint     << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << frmType    << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << cri        << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << mLine      << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << mPoint     << "," ; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _headerLog << endl; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    quint16 batchId = ((static_cast<quint16>(_lastBuffer[128])) & 0x00FF) | | 
					 | 
					 | 
					    _mutex.lock(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                      (((static_cast<quint16>(_lastBuffer[129])) << 8) & 0xFF00); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint8 subBatchId = (static_cast<quint8>(_lastBuffer[130])); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if(subBatchId == 0) | 
					 | 
					 | 
					    _dmaBuffer.push_back(packet); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (_lastBuffer.size() != 0) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        _frameCount++; | 
					 | 
					 | 
					        quint16 batchIdBuffer = ((static_cast<quint16>(_lastBuffer[128])) & 0x00FF) | | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        if(_getPacket) | 
					 | 
					 | 
					                                (((static_cast<quint16>(_lastBuffer[129])) << 8) & 0xFF00); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if(ui->btn_scenStart->text() == "Scenario Stop") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        { | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            if(_batchIdBuff == batchId && (batchId - _batchIdBuff) > 1) | 
					 | 
					 | 
					            if((batchId - batchIdBuffer) > 1) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					            { | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                MESSAGE_BOX("The batch id error is happened."); | 
					 | 
					 | 
					                on_btn_scenStart_clicked(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                qDebug() << "The batch id error is happened."; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                _mutex.unlock(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            } | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        _batchIdBuff = batchId; | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        _getPacket = true; | 
					 | 
					 | 
					        _frame.push_back(_lastBuffer); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if ((batchId != batchIdBuffer) && (subBatchId == 0)) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _bufferedFrame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _bufferedFrame = _frame; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _frame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _frameCount++; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _lastBuffer = packet; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _mutex.unlock(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -940,6 +990,9 @@ void MainWindow::on_btn_scenStart_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        auto str = ui->btn_scenStart->text(); | 
					 | 
					 | 
					        auto str = ui->btn_scenStart->text(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if(str == "Scenario Start") | 
					 | 
					 | 
					        if(str == "Scenario Start") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        { | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _frame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _lastBuffer.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _bufferedFrame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            QString dmaLogPath = ui->tb_frameLogPath->text(); | 
					 | 
					 | 
					            QString dmaLogPath = ui->tb_frameLogPath->text(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ui->btn_scenStart->setText("Scenario Stop"); | 
					 | 
					 | 
					            ui->btn_scenStart->setText("Scenario Stop"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ui->btn_emulator->setText("Emulator Start"); | 
					 | 
					 | 
					            ui->btn_emulator->setText("Emulator Start"); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -965,14 +1018,22 @@ void MainWindow::on_btn_scenStart_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            dmaLogLayoutVisible(false); | 
					 | 
					 | 
					            dmaLogLayoutVisible(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ui->chk_continuousShowing->hide(); | 
					 | 
					 | 
					            ui->chk_continuousShowing->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ui->btn_dmaShow->hide(); | 
					 | 
					 | 
					            ui->btn_dmaShow->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            ui->chk_headerLogEn->setChecked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            on_chk_headerLogEn_clicked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            _trx.scenPlayerStop(true); | 
					 | 
					 | 
					            _trx.scenPlayerStop(true); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    catch(SonoException& e) | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _frame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _lastBuffer.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _bufferedFrame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ui->chk_headerLogEn->setChecked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        on_chk_headerLogEn_clicked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->chk_continuousShowing->hide(); | 
					 | 
					 | 
					        ui->chk_continuousShowing->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->btn_dmaShow->hide(); | 
					 | 
					 | 
					        ui->btn_dmaShow->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->btn_scenStart->setText("Scenario Start"); | 
					 | 
					 | 
					        ui->btn_scenStart->setText("Scenario Start"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _trx.scenPlayerStop(true); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        qDebug() << e.what(); | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -980,11 +1041,15 @@ void MainWindow::on_btn_scenStart_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::on_btn_emulator_clicked() | 
					 | 
					 | 
					void MainWindow::on_btn_emulator_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _frameCount = 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    auto name = ui->btn_emulator->text(); | 
					 | 
					 | 
					    auto name = ui->btn_emulator->text(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    try | 
					 | 
					 | 
					    try | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if(name == "Emulator Start") | 
					 | 
					 | 
					        if(name == "Emulator Start") | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        { | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _frame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _lastBuffer.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _bufferedFrame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            QString dmaLogPath = ui->tb_frameLogPath->text(); | 
					 | 
					 | 
					            QString dmaLogPath = ui->tb_frameLogPath->text(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            QString emulPath = QFileDialog::getOpenFileName(this, | 
					 | 
					 | 
					            QString emulPath = QFileDialog::getOpenFileName(this, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                                                            tr("emulator"), | 
					 | 
					 | 
					                                                            tr("emulator"), | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -1028,14 +1093,22 @@ void MainWindow::on_btn_emulator_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            dmaLogLayoutVisible(false); | 
					 | 
					 | 
					            dmaLogLayoutVisible(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ui->chk_continuousShowing->hide(); | 
					 | 
					 | 
					            ui->chk_continuousShowing->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            ui->btn_dmaShow->hide(); | 
					 | 
					 | 
					            ui->btn_dmaShow->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            ui->chk_headerLogEn->setChecked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            on_chk_headerLogEn_clicked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            _trx.emulatorStop(); | 
					 | 
					 | 
					            _trx.emulatorStop(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    catch(SonoException& e) | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _frame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _lastBuffer.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _bufferedFrame.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ui->chk_headerLogEn->setChecked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        on_chk_headerLogEn_clicked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->chk_continuousShowing->hide(); | 
					 | 
					 | 
					        ui->chk_continuousShowing->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->btn_dmaShow->hide(); | 
					 | 
					 | 
					        ui->btn_dmaShow->hide(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->btn_emulator->setText("Emulator Start"); | 
					 | 
					 | 
					        ui->btn_emulator->setText("Emulator Start"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _trx.emulatorStop(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        qDebug() << e.what(); | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -1223,111 +1296,143 @@ void MainWindow::on_btn_dmaShow_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::show3d() | 
					 | 
					 | 
					void MainWindow::show3d() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _mutex.lock(); | 
					 | 
					 | 
					    try | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QByteArray temp = _lastBuffer; | 
					 | 
					 | 
					    { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _mutex.unlock(); | 
					 | 
					 | 
					        _mutex.lock(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    //---------------------------------------------------------------------
 | 
					 | 
					 | 
					        QList<QByteArray> plotFrame = _bufferedFrame; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    //3D Plot
 | 
					 | 
					 | 
					        _bufferedFrame.clear(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    //---------------------------------------------------------------------
 | 
					 | 
					 | 
					        _mutex.unlock(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->plot_2->clearGraphs(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //qDebug() << "//3D Frame Plot //////////////////";
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //ui->plot_2->setInteractions(QCP::iRangeZoom|QCP::iRangeDrag);
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->plot_2->axisRect()->setupFullAxesBox(true); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->plot_2->xAxis->setLabel("Line"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->plot_2->yAxis->setLabel("Point"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    quint16 batchId = ((static_cast<quint16>(temp[128])) & 0x00FF) | | 
					 | 
					 | 
					        QList<quint8> subBatchId, frmType, cri, mLine; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                      (((static_cast<quint16>(temp[129])) << 8) & 0xFF00); | 
					 | 
					 | 
					        QList<quint16> batchId, bLine, bPoint, mPoint; | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    quint8 subBatchId = (static_cast<quint8>(temp[130])); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint8 frmType = (static_cast<quint8>(temp[131])); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint8 cri = (static_cast<quint8>(temp[132])); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    quint16 bLine = ((static_cast<quint16>(temp[136])) & 0x00FF) | | 
					 | 
					 | 
					        quint16 line(0), point(0); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                    (((static_cast<quint16>(temp[137])) << 8) & 0xFF00); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint16 bPoint = ((static_cast<quint16>(temp[138])) & 0x00FF) | | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                     (((static_cast<quint16>(temp[139])) << 8) & 0xFF00); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint8 mLine = (static_cast<quint8>(temp[140])); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint16 mPoint = ((static_cast<quint16>(temp[141])) & 0x00FF) | | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                     (((static_cast<quint16>(temp[142])) << 8) & 0xFF00); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    if(bLine > 256 * 8) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        qDebug() << "ERROR :: (B Line)" << bLine; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        return; | 
					 | 
					 | 
					        ui->plot_2->clearGraphs(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    } | 
					 | 
					 | 
					        ui->plot_2->axisRect()->setupFullAxesBox(true); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ui->plot_2->xAxis->setLabel("Line"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ui->plot_2->yAxis->setLabel("Point"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if(bPoint > 8192) | 
					 | 
					 | 
					        if (plotFrame.size() != 0) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    { | 
					 | 
					 | 
					        { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        qDebug() << "ERROR :: (B Point)" << bPoint; | 
					 | 
					 | 
					            foreach (const QByteArray& framePacket, plotFrame) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                batchId.append(((static_cast<quint16>(framePacket[128])) & 0x00FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                              (((static_cast<quint16>(framePacket[129])) << 8) & 0xFF00)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        return; | 
					 | 
					 | 
					                bPoint.append(((static_cast<quint16>(framePacket[138])) & 0x00FF) | | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    } | 
					 | 
					 | 
					                             (((static_cast<quint16>(framePacket[139])) << 8) & 0xFF00)); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    if(frmType != 0) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        qDebug() << "ERROR :: (Invalid Frame Type)" << frmType; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        return; | 
					 | 
					 | 
					                mPoint.append(((static_cast<quint16>(framePacket[141])) & 0x00FF) | | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    } | 
					 | 
					 | 
					                             (((static_cast<quint16>(framePacket[142])) << 8) & 0xFF00)); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                bLine.append(((static_cast<quint16>(framePacket[136])) & 0x00FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                            (((static_cast<quint16>(framePacket[137])) << 8) & 0xFF00)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                subBatchId.append(static_cast<quint8>(framePacket[130])); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                frmType.append(static_cast<quint8>(framePacket[131])); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                mLine.append(static_cast<quint8>(framePacket[140])); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                cri.append(static_cast<quint8>(framePacket[132])); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        else | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            return; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    qDebug() << "batchId" << batchId; | 
					 | 
					 | 
					        foreach (auto& bL, bLine) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    qDebug() << "subBatchId" << subBatchId; | 
					 | 
					 | 
					        { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    qDebug() << "bLine" << bLine; | 
					 | 
					 | 
					            if(bL > 256 * 8) | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    qDebug() << "bPoint" << bPoint; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    qDebug() << "frmType" << frmType; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    qDebug() << "cri" << cri; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    qDebug() << "mLine" << mLine; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    qDebug() << "mPoint" << mPoint; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _colorMap->data()->clear(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _colorMap->data()->setSize(bLine, bPoint); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _colorMap->data()->setRange(QCPRange(1, bLine), QCPRange(1, bPoint)); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //double x,y,z;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //int xIndex = 0;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //int yIndex = 0;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    quint32 max = 0; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    auto indx = 0; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    for(auto line = 0; line < bLine; line += 1) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        for(auto pnt = 0; pnt < bPoint; pnt += 1) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            indx = (line * bPoint + pnt) * 4 + 160; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            auto val = ((static_cast<quint32>(temp[indx])) & 0x000000FF) | | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                       (((static_cast<quint32>(temp[indx + 1])) << 8) & 0x0000FF00) | | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                       (((static_cast<quint32>(temp[indx + 2])) << 16) & 0x00FF0000) | | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                       (((static_cast<quint32>(temp[indx + 3])) << 24) & 0xFF000000); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            //xIndex = line;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            //yIndex = pnt;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            //z = double(val);
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            //colorMap->data()->cellToCoord(xIndex,yIndex,&x,&y);
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            if(max < val) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					            { | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                max = val; | 
					 | 
					 | 
					                qDebug() << "ERROR :: (B Line)" << bLine; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            } | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            _colorMap->data()->setCell(line, pnt, double(val)); | 
					 | 
					 | 
					            line += bL; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //qDebug() << "indx" << indx;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //qDebug() << "max" << max;
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //qDebug() << ui->plot_2->plotLayout()->hasElement(0, 1);
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if(!ui->plot_2->plotLayout()->hasElement(0, 1)) | 
					 | 
					 | 
					        foreach (auto& bP, bPoint) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(bP > 8192) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                qDebug() << "ERROR :: (B Point)" << bPoint; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            point = bP; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        foreach (auto& fType, frmType) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(fType != 0) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                qDebug() << "ERROR :: (Invalid Frame Type)" << frmType; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "batchId" << batchId; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "subBatchId" << subBatchId; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "bLine" << bLine; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "bPoint" << bPoint; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "frmType" << frmType; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "cri" << cri; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "mLine" << mLine; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            qDebug() << "mPoint" << mPoint; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _colorMap->data()->clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _colorMap->data()->setSize(line, point); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _colorMap->data()->setRange(QCPRange(1, line), QCPRange(1, point)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            quint32 max = 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            auto indx = 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            auto lnSum = 0; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            foreach (const QByteArray& plotPacket, plotFrame) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                auto lnPacket = (((static_cast<quint16>(plotPacket[136])) & 0x00FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                            (((static_cast<quint16>(plotPacket[137])) << 8) & 0xFF00)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                for(auto ln = 0; ln < lnPacket; ln += 1) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    for(auto pnt = 0; pnt < point; pnt += 1) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        indx = (ln * point + pnt) * 4 + 160; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        auto val = ((static_cast<quint32>(plotPacket[indx])) & 0x000000FF) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                   (((static_cast<quint32>(plotPacket[indx + 1])) << 8) & 0x0000FF00) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                   (((static_cast<quint32>(plotPacket[indx + 2])) << 16) & 0x00FF0000) | | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                   (((static_cast<quint32>(plotPacket[indx + 3])) << 24) & 0xFF000000); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        if(max < val) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                            max = val; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        _colorMap->data()->setCell(lnSum + ln, pnt, double(val)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                lnSum = lnSum + lnPacket; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(!ui->plot_2->plotLayout()->hasElement(0, 1)) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                QCPColorScale* colorScale = new QCPColorScale(ui->plot_2); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                ui->plot_2->plotLayout()->addElement(0, 1, colorScale); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                colorScale->setType(QCPAxis::atRight); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                _colorMap->setColorScale(colorScale); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                colorScale->axis()->setLabel("Number"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                _colorMap->setGradient((QCPColorGradient::gpJet)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                QCPMarginGroup* marginGroup = new QCPMarginGroup(ui->plot_2); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                ui->plot_2->axisRect()->setMarginGroup(QCP::msBottom | QCP::msTop, marginGroup); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                colorScale->setMarginGroup(QCP::msBottom | QCP::msTop, marginGroup); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _colorMap->setGradient((QCPColorGradient::gpJet)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _colorMap->rescaleDataRange(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            ui->plot_2->rescaleAxes(true); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            ui->plot_2->replot(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    catch (...) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        QCPColorScale* colorScale = new QCPColorScale(ui->plot_2); | 
					 | 
					 | 
					        qDebug() << "Error"; | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->plot_2->plotLayout()->addElement(0, 1, colorScale); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        colorScale->setType(QCPAxis::atRight); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        _colorMap->setColorScale(colorScale); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        colorScale->axis()->setLabel("Number"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        _colorMap->setGradient((QCPColorGradient::gpJet)); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        //colorMap->rescaleDataRange();
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        QCPMarginGroup* marginGroup = new QCPMarginGroup(ui->plot_2); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        ui->plot_2->axisRect()->setMarginGroup(QCP::msBottom | QCP::msTop, marginGroup); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        colorScale->setMarginGroup(QCP::msBottom | QCP::msTop, marginGroup); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _colorMap->setGradient((QCPColorGradient::gpJet)); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _colorMap->rescaleDataRange(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->plot_2->rescaleAxes(true); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->plot_2->replot(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -1379,7 +1484,6 @@ void MainWindow::catchLogCount(quint32 counter, quint32 logRange, QProgressDialo | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _progress->setMinimumSize(300, 100); | 
					 | 
					 | 
					    _progress->setMinimumSize(300, 100); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _progress->setLabelText("Please wait..."); | 
					 | 
					 | 
					    _progress->setLabelText("Please wait..."); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    //_progress->setWindowTitle("Frame Packets Logging");
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _progress->setWindowTitle("Logging"); | 
					 | 
					 | 
					    _progress->setWindowTitle("Logging"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _progress->setRange(0, static_cast<qint32>(logRange)); | 
					 | 
					 | 
					    _progress->setRange(0, static_cast<qint32>(logRange)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _progress->setModal(true); | 
					 | 
					 | 
					    _progress->setModal(true); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -1389,7 +1493,6 @@ void MainWindow::catchLogCount(quint32 counter, quint32 logRange, QProgressDialo | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        _progress->setValue(static_cast<qint32>(counter)); | 
					 | 
					 | 
					        _progress->setValue(static_cast<qint32>(counter)); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if(_progress->wasCanceled()) | 
					 | 
					 | 
					        if(_progress->wasCanceled()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        { | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            //throw SonoException("Frame packets logging is canceled");
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            throw SonoException("The logging process is canceled"); | 
					 | 
					 | 
					            throw SonoException("The logging process is canceled"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -1399,6 +1502,46 @@ void MainWindow::catchLogCount(quint32 counter, quint32 logRange, QProgressDialo | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					void MainWindow::on_chk_headerLogEn_clicked(bool checked) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    try | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if (checked) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(_headerLogFile->fileName().isEmpty()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                throw SonoException("No file is selected"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(!_headerLogFile->open(QIODevice::WriteOnly)) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                throw SonoException("Couldn't open file for logging"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            QTextStream _headerLog (_headerLogFile); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _headerLog << "batchId, "    <<  "subBatchId, " << "bLine, " << "bPoint, "; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _headerLog << "frmType, "    <<  "cri, "        << "mLine, " << "mPoint, "; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _headerLog << endl; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _headerLogEn = true; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        else | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            _headerLogEn = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(_headerLogFile->open(QIODevice::WriteOnly)) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                _headerLogFile->flush(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                _headerLogFile->close(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					///*************************************************************************************************/
 | 
					 | 
					 | 
					///*************************************************************************************************/
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					///********************************************Power************************************************/
 | 
					 | 
					 | 
					///********************************************Power************************************************/
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					///*************************************************************************************************/
 | 
					 | 
					 | 
					///*************************************************************************************************/
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -1989,16 +2132,23 @@ void MainWindow::on_btn_setScenVerification_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::on_btn_scenBrowse_clicked() | 
					 | 
					 | 
					void MainWindow::on_btn_scenBrowse_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QString scenPath = QFileDialog::getExistingDirectory(this, | 
					 | 
					 | 
					    try | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                                                         tr("Scenario File"), | 
					 | 
					 | 
					    { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                                                         _scenarioFolder, | 
					 | 
					 | 
					        QString scenPath = QFileDialog::getExistingDirectory(this, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					                                                         QFileDialog::ShowDirsOnly); | 
					 | 
					 | 
					                                                             tr("Scenario File"), | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if (scenPath.isEmpty()) | 
					 | 
					 | 
					                                                             _scenarioFolder, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        throw SonoException("No file is selected."); | 
					 | 
					 | 
					                                                             QFileDialog::ShowDirsOnly); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if (scenPath.isEmpty()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            throw SonoException("No file is selected."); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    ui->tb_scenFilesPath->setText(scenPath); | 
					 | 
					 | 
					        ui->tb_scenFilesPath->setText(scenPath); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    _settings->setValue(SCENARIO_FILE_PATH, scenPath); | 
					 | 
					 | 
					        _settings->setValue(SCENARIO_FILE_PATH, scenPath); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    ui->tb_scenInfo->clear(); | 
					 | 
					 | 
					        ui->tb_scenInfo->clear(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -2007,20 +2157,27 @@ void MainWindow::on_btn_scenInfo_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    QString scenInfo = "/hardware/systemCheckParam.csv"; | 
					 | 
					 | 
					    QString scenInfo = "/hardware/systemCheckParam.csv"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    QString path = ui->tb_scenFilesPath->text() + scenInfo; | 
					 | 
					 | 
					    QString path = ui->tb_scenFilesPath->text() + scenInfo; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QFile sysFile(path); | 
					 | 
					 | 
					    try | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    if(sysFile.fileName().isEmpty()) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        throw SonoException("No file is selected"); | 
					 | 
					 | 
					        QFile sysFile(path); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if(sysFile.fileName().isEmpty()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            throw SonoException("No file is selected"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if(!sysFile.open(QIODevice::ReadOnly)) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            throw SonoException("Couldn't open system check param file programming"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        QTextStream checkParam(&sysFile); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        QString systemStr = checkParam.readAll(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        ui->tb_scenInfo->setPlainText(systemStr); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        sysFile.close(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if(!sysFile.open(QIODevice::ReadOnly)) | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        throw SonoException("Couldn't open system check param file programming"); | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    QTextStream checkParam(&sysFile); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    QString systemStr = checkParam.readAll(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->tb_scenInfo->setPlainText(systemStr); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    sysFile.close(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -2601,8 +2758,10 @@ void MainWindow::on_btn_biteSetScenario_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::on_btn_biteBrowse_clicked() | 
					 | 
					 | 
					void MainWindow::on_btn_biteBrowse_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QString biteIqPath = | 
					 | 
					 | 
					    QString biteIqPath = QFileDialog::getOpenFileName(this, | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        QFileDialog::getOpenFileName(this, tr("TxDAC File"), _BITeIqFolder, "*.csv"); | 
					 | 
					 | 
					                                                      tr("TxDAC File"), | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                      _BITeIqFolder, | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                                      "*.csv"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    ui->tb_biteFilesPath->setText(biteIqPath); | 
					 | 
					 | 
					    ui->tb_biteFilesPath->setText(biteIqPath); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _settings->setValue(BITE_FILE_PATH, biteIqPath); | 
					 | 
					 | 
					    _settings->setValue(BITE_FILE_PATH, biteIqPath); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -2610,43 +2769,49 @@ void MainWindow::on_btn_biteBrowse_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					void MainWindow::on_btn_biteIQ_clicked() | 
					 | 
					 | 
					void MainWindow::on_btn_biteIQ_clicked() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					{ | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    try | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        QString str = "doing"; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        QColor color = Qt::red; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        emit labelState(ui->l_biteIQFillingDone, str, color); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QString str = "doing"; | 
					 | 
					 | 
					        //BITe file reading to determine the I & Q of txDAC
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QColor color = Qt::red; | 
					 | 
					 | 
					        QString bitePath = ui->tb_biteFilesPath->text(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    emit labelState(ui->l_biteIQFillingDone, str, color); | 
					 | 
					 | 
					        QFile biteFile(bitePath); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        QTextStream biteLog(&biteFile); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if(biteFile.fileName().isEmpty()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            throw SonoException("No file is selected"); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    //BITe file reading to determine the I & Q of txDAC
 | 
					 | 
					 | 
					        if(!biteFile.open(QIODevice::ReadOnly)) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QString bitePath = ui->tb_biteFilesPath->text(); | 
					 | 
					 | 
					        { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QFile biteFile(bitePath); | 
					 | 
					 | 
					            throw SonoException("Couldn't open built-in test file for frame logging"); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QTextStream biteLog(&biteFile); | 
					 | 
					 | 
					        } | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					    if(biteFile.fileName().isEmpty()) | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        throw SonoException("No file is selected"); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    if(!biteFile.open(QIODevice::ReadOnly)) | 
					 | 
					 | 
					        QStringList txDac; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    { | 
					 | 
					 | 
					        QByteArray I; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        throw SonoException("Couldn't open built-in test file for frame logging"); | 
					 | 
					 | 
					        QByteArray Q; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    } | 
					 | 
					 | 
					        while(!biteLog.atEnd()) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            txDac.clear(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            txDac = biteLog.readLine().split(","); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            I.append(static_cast<qint8>(txDac.at(0).toInt())); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            Q.append(static_cast<qint8>(txDac.at(1).toInt())); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        biteFile.close(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        _trx.setBiteDacData(I, Q); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        delay(100); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QStringList txDac; | 
					 | 
					 | 
					        str = "done"; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QByteArray I; | 
					 | 
					 | 
					        color = Qt::green; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    QByteArray Q; | 
					 | 
					 | 
					        emit labelState(ui->l_biteIQFillingDone, str, color); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    while(!biteLog.atEnd()) | 
					 | 
					 | 
					    } | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    catch(SonoException& e) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    { | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        txDac.clear(); | 
					 | 
					 | 
					        qDebug() << e.what(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					        txDac = biteLog.readLine().split(","); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        I.append(static_cast<qint8>(txDac.at(0).toInt())); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        Q.append(static_cast<qint8>(txDac.at(1).toInt())); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    biteFile.close(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _trx.setBiteDacData(I, Q); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    delay(100); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    str = "done"; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    color = Qt::green; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    emit labelState(ui->l_biteIQFillingDone, str, color); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					} | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					/*************************************************************************************************/ | 
					 | 
					 | 
					/*************************************************************************************************/ | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -3145,6 +3310,7 @@ void MainWindow::exitApp() | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    } | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    _trx.emulatorStop(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    on_chk_pulserTstModeEn_clicked(false); | 
					 | 
					 | 
					    on_chk_pulserTstModeEn_clicked(false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _trx.setTxDacEnable(BITE_INTERVAL, false); | 
					 | 
					 | 
					    _trx.setTxDacEnable(BITE_INTERVAL, false); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _trx.setAdgCfg(adgGnd); | 
					 | 
					 | 
					    _trx.setAdgCfg(adgGnd); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |