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