Tweaking decoder, ensuring negative values are omitted
This commit is contained in:
		
							parent
							
								
									eada85c04d
								
							
						
					
					
						commit
						d0d7aaa286
					
				| @ -88,12 +88,12 @@ subroutine multimode_decoder(ss,id2,params,nfsample) | ||||
|      trydecode=.true. | ||||
| 
 | ||||
|      ! copy the relevant frames for decoding | ||||
|      pos = params%kposE | ||||
|      sz = params%kszE | ||||
|      pos = max(0,params%kposE) | ||||
|      sz = max(0,params%kszE) | ||||
|      id0=0 | ||||
|      id0(1:sz+1)=id2(pos+1:pos+sz+1) | ||||
|       | ||||
|      call my_js8e%decode(js8e_decoded,id0,params%nQSOProgress,params%nfqso,    & | ||||
|      call my_js8e%decode(js8e_decoded,id0,params%nQSOProgress,params%nfqso,  & | ||||
|           params%nftx,newdat,params%nutc,params%nfa,params%nfb,              & | ||||
|           params%nexp_decode,params%ndepth,logical(params%nagain),           & | ||||
|           logical(params%lft8apon),logical(params%lapcqonly),params%napwid,  & | ||||
| @ -108,12 +108,12 @@ subroutine multimode_decoder(ss,id2,params,nfsample) | ||||
|      trydecode=.true. | ||||
| 
 | ||||
|      ! copy the relevant frames for decoding | ||||
|      pos = params%kposC | ||||
|      sz = params%kszC | ||||
|      pos = max(0,params%kposC) | ||||
|      sz = max(0,params%kszC) | ||||
|      id0=0 | ||||
|      id0(1:sz+1)=id2(pos+1:pos+sz+1) | ||||
|       | ||||
|      call my_js8c%decode(js8c_decoded,id0,params%nQSOProgress,params%nfqso,    & | ||||
|      call my_js8c%decode(js8c_decoded,id0,params%nQSOProgress,params%nfqso,  & | ||||
|           params%nftx,newdat,params%nutc,params%nfa,params%nfb,              & | ||||
|           params%nexp_decode,params%ndepth,logical(params%nagain),           & | ||||
|           logical(params%lft8apon),logical(params%lapcqonly),params%napwid,  & | ||||
| @ -128,12 +128,12 @@ subroutine multimode_decoder(ss,id2,params,nfsample) | ||||
|      trydecode=.true. | ||||
| 
 | ||||
|      ! copy the relevant frames for decoding | ||||
|      pos = params%kposB | ||||
|      sz = params%kszB | ||||
|      pos = max(0,params%kposB) | ||||
|      sz = max(0,params%kszB) | ||||
|      id0=0 | ||||
|      id0(1:sz+1)=id2(pos+1:pos+sz+1) | ||||
|       | ||||
|      call my_js8b%decode(js8b_decoded,id0,params%nQSOProgress,params%nfqso,    & | ||||
|      call my_js8b%decode(js8b_decoded,id0,params%nQSOProgress,params%nfqso,  & | ||||
|           params%nftx,newdat,params%nutc,params%nfa,params%nfb,              & | ||||
|           params%nexp_decode,params%ndepth,logical(params%nagain),           & | ||||
|           logical(params%lft8apon),logical(params%lapcqonly),params%napwid,  & | ||||
| @ -148,12 +148,12 @@ subroutine multimode_decoder(ss,id2,params,nfsample) | ||||
|      trydecode=.true. | ||||
| 
 | ||||
|      ! copy the relevant frames for decoding | ||||
|      pos = params%kposA | ||||
|      sz = params%kszA | ||||
|      pos = max(0,params%kposA) | ||||
|      sz = max(0,params%kszA) | ||||
|      id0=0 | ||||
|      id0(1:sz+1)=id2(pos+1:pos+sz+1) | ||||
|       | ||||
|      call my_js8a%decode(js8a_decoded,id0,params%nQSOProgress,params%nfqso,    & | ||||
|      call my_js8a%decode(js8a_decoded,id0,params%nQSOProgress,params%nfqso,  & | ||||
|           params%nftx,newdat,params%nutc,params%nfa,params%nfb,              & | ||||
|           params%nexp_decode,params%ndepth,logical(params%nagain),           & | ||||
|           logical(params%lft8apon),logical(params%lapcqonly),params%napwid,  & | ||||
|  | ||||
| @ -954,7 +954,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, | ||||
|     palette.setColor(QPalette::Base,Qt::yellow); | ||||
|     ui->sbTxPercent->setPalette(palette); | ||||
|   } | ||||
|   fixStop(); | ||||
|   VHF_features_enabled(m_config.enable_VHF_features()); | ||||
|   m_wideGraph->setVHF(m_config.enable_VHF_features()); | ||||
| 
 | ||||
| @ -2483,11 +2482,6 @@ void MainWindow::setDecodedTextFont (QFont const& font) | ||||
|   updateGeometry (); | ||||
| } | ||||
| 
 | ||||
| void MainWindow::fixStop() | ||||
| { | ||||
|     m_hsymStop = computeStop(m_nSubMode, m_TRperiod); | ||||
| } | ||||
| 
 | ||||
| int MainWindow::computePeriodForSubmode(int submode){ | ||||
|     switch(submode){ | ||||
|         case Varicode::JS8CallNormal:     return JS8A_TX_SECONDS; | ||||
| @ -2589,18 +2583,12 @@ void MainWindow::dataSink(qint64 frames) | ||||
|         k0 = k; | ||||
|     } | ||||
| 
 | ||||
| #if JS8_USE_REFSPEC | ||||
|     QString fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("refspec.dat"))}; | ||||
|     QByteArray bafname = fname.toLatin1(); | ||||
|     const char *c_fname = bafname.data(); | ||||
|     int len=fname.length(); | ||||
| 
 | ||||
|     if(m_diskData) { | ||||
|       dec_data.params.ndiskdat=1; | ||||
|     } else { | ||||
|       dec_data.params.ndiskdat=0; | ||||
|     } | ||||
| 
 | ||||
| #if JS8_USE_REFSPEC | ||||
|     m_bUseRef=m_wideGraph->useRef(); | ||||
|     refspectrum_(&dec_data.d2[k-m_nsps/2],&m_bClearRefSpec,&m_bRefSpec, | ||||
|         &m_bUseRef,c_fname,len); | ||||
| @ -2609,11 +2597,6 @@ void MainWindow::dataSink(qint64 frames) | ||||
| 
 | ||||
|     // Get power, spectrum, and ihsym
 | ||||
|     int trmin=m_TRperiod/60; | ||||
| 
 | ||||
|     //  int k (frames - 1);
 | ||||
|     dec_data.params.nfa=m_wideGraph->nStartFreq(); | ||||
|     dec_data.params.nfb=m_wideGraph->Fmax(); | ||||
| 
 | ||||
|     int nsps=m_nsps; | ||||
|     int nsmo=m_wideGraph->smoothYellow()-1; | ||||
| 
 | ||||
| @ -2673,19 +2656,13 @@ void MainWindow::dataSink(qint64 frames) | ||||
|     if(m_ihsym <= 0) return; | ||||
| 
 | ||||
|     if(ui) ui->signal_meter_widget->setValue(m_px,m_pxmax); // Update thermometer
 | ||||
| 
 | ||||
|     if(m_monitoring || m_diskData) { | ||||
|       m_wideGraph->dataSink2(s, m_df3, m_ihsym, m_diskData); | ||||
|     } | ||||
| 
 | ||||
|     fixStop(); | ||||
| 
 | ||||
|     m_dateTime = DriftingDateTime::currentDateTimeUtc().toString ("yyyy-MMM-dd hh:mm"); | ||||
| 
 | ||||
|     dec_data.params.npts8=(m_ihsym*m_nsps)/16; | ||||
|     dec_data.params.newdat=1; | ||||
|     dec_data.params.nagain=0; | ||||
|     dec_data.params.nzhsym=m_ihsym; | ||||
| 
 | ||||
|     decode(); | ||||
| } | ||||
| 
 | ||||
| @ -3886,6 +3863,7 @@ void MainWindow::diskDat()                                   //diskDat() | ||||
|     int k; | ||||
|     int kstep=m_FFTSize; | ||||
|     m_diskData=true; | ||||
|     m_hsymStop=computeStop(m_nSubMode, m_TRperiod); | ||||
|     float db=m_config.degrade(); | ||||
|     float bw=m_config.RxBandwidth(); | ||||
|     if(db > 0.0) degrade_snr_(dec_data.d2,&dec_data.params.kin,&db,&bw); | ||||
| @ -3944,20 +3922,6 @@ void MainWindow::on_actionSpecial_mouse_commands_triggered() | ||||
| { | ||||
| } | ||||
| 
 | ||||
| void MainWindow::on_DecodeButton_clicked (bool /* checked */) //Decode request
 | ||||
| { | ||||
|   if(m_mode=="MSK144") { | ||||
|     ui->DecodeButton->setChecked(false); | ||||
|   } else { | ||||
|     if(!m_mode.startsWith ("WSPR") && !m_decoderBusy) { | ||||
|       dec_data.params.newdat=0; | ||||
|       dec_data.params.nagain=1; | ||||
|       m_blankLine=false; // don't insert the separator again
 | ||||
|       decode(); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void MainWindow::on_ClrAvgButton_clicked() | ||||
| { | ||||
|   m_nclearave=1; | ||||
| @ -4206,6 +4170,20 @@ bool MainWindow::decodeProcessQueue(qint32 *pSubmode){ | ||||
| 
 | ||||
|     int period = computePeriodForSubmode(submode); | ||||
| 
 | ||||
|     if(m_diskData) { | ||||
|       dec_data.params.ndiskdat=1; | ||||
|     } else { | ||||
|       dec_data.params.ndiskdat=0; | ||||
|     } | ||||
| 
 | ||||
|     dec_data.params.npts8=(m_ihsym*m_nsps)/16; | ||||
|     dec_data.params.newdat=1; | ||||
|     dec_data.params.nagain=0; | ||||
|     dec_data.params.nzhsym=m_ihsym; | ||||
| 
 | ||||
|     dec_data.params.nfa=m_wideGraph->nStartFreq(); | ||||
|     dec_data.params.nfb=m_wideGraph->Fmax(); | ||||
| 
 | ||||
|     ui->DecodeButton->setChecked(true); | ||||
|     m_msec0 = DriftingDateTime::currentMSecsSinceEpoch(); | ||||
| 
 | ||||
| @ -7356,7 +7334,6 @@ void MainWindow::on_actionJS8_triggered() | ||||
|   m_nsps=6912; | ||||
|   m_FFTSize = m_nsps / 2; | ||||
|   Q_EMIT FFTSize (m_FFTSize); | ||||
|   fixStop(); | ||||
|   setup_status_bar (bVHF); | ||||
|   m_toneSpacing=0.0;                   //???
 | ||||
|   ui->actionFT8->setChecked(true);     //???
 | ||||
|  | ||||
| @ -228,7 +228,6 @@ private slots: | ||||
|   void on_actionSpecial_mouse_commands_triggered(); | ||||
|   void on_actionSolve_FreqCal_triggered(); | ||||
|   void on_actionCopyright_Notice_triggered(); | ||||
|   void on_DecodeButton_clicked (bool); | ||||
|   void decode(); | ||||
|   bool isDecodeReady(int submode, qint32 k, qint32 k0, qint32 *pCurrentDecodeStart, qint32 *pNextDecodeStart, qint32 *pStart, qint32 *pSz, qint32 *pCycle); | ||||
|   bool decodeEnqueueReady(qint32 k, qint32 k0); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jordan Sherer
						Jordan Sherer