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