SyncStats should be output differently than DecoderDebug

This commit is contained in:
Jordan Sherer 2020-05-07 16:15:38 -04:00
parent bf8fb4aa85
commit 25d644955f
3 changed files with 67 additions and 57 deletions

View File

@ -225,7 +225,7 @@ subroutine js8dec(dd0,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lapon
endif
if(syncStats) then
write(*,*) '<DecodeDebug> candidate ', NSUBMODE, 'f1', f1, 'sync', nsync, 'xdt', xdt
write(*,*) '<DecodeSyncStat> candidate ', NSUBMODE, 'f1', f1, 'sync', nsync, 'xdt', xdt
flush(6)
endif
@ -423,7 +423,7 @@ subroutine js8dec(dd0,icos,newdat,syncStats,nQSOProgress,nfqso,nftx,ndepth,lapon
if(nbadcrc.eq.0) then
if(syncStats) then
write(*,*) '<DecodeDebug> decode ', NSUBMODE, 'f1', f1, 'sync', (sync*10), 'xdt', xdt2
write(*,*) '<DecodeSyncStat> decode ', NSUBMODE, 'f1', f1, 'sync', (sync*10), 'xdt', xdt2
flush(6)
endif

View File

@ -20,7 +20,7 @@ subroutine subtractjs8(dd,itone,f0,dt)
nstart=dt*12000+1
if(NWRITELOG.eq.0) then
if(NWRITELOG.eq.1) then
write(*,*) '<DecodeDebug> generating reference signal', nstart
flush(6)
endif
@ -33,14 +33,14 @@ subroutine subtractjs8(dd,itone,f0,dt)
if(id.ge.1.and.id.le.NMAX) camp(i)=dd(id)*conjg(cref(i))
enddo
if(NWRITELOG.eq.0) then
if(NWRITELOG.eq.1) then
write(*,*) '<DecodeDebug> filtering', NFFT
flush(6)
endif
if(first) then
! Create and normalize the filter
if(NWRITELOG.eq.0) then
if(NWRITELOG.eq.1) then
write(*,*) '<DecodeDebug> creating and normalizing filter'
flush(6)
endif
@ -94,7 +94,7 @@ subroutine subtractjs8(dd,itone,f0,dt)
endif
endif
if(NWRITELOG.eq.0) then
if(NWRITELOG.eq.1) then
write(*,*) '<DecodeDebug> generating complex amplitude'
flush(6)
endif
@ -105,7 +105,7 @@ subroutine subtractjs8(dd,itone,f0,dt)
cfilt(1:NFFT)=cfilt(1:NFFT)*cw(1:NFFT)
call four2a(cfilt,NFFT,1,1,1)
if(NWRITELOG.eq.0) then
if(NWRITELOG.eq.1) then
write(*,*) '<DecodeDebug> subtracting filtered reference', NFFT
flush(6)
endif

View File

@ -4874,71 +4874,81 @@ void MainWindow::processDecodedLine(QByteArray t){
static bool hasNewDrift = false;
static int newDrift = 0;
if(t.indexOf("<DecodeDebug>") >= 0) {
if(t.indexOf("f1") >= 0){
if(t.indexOf("<DecodeSyncStat>") >= 0) {
auto segs = QString(t.trimmed()).split(QRegExp("[\\s\\t]+"), QString::SkipEmptyParts);
if(!segs.isEmpty()){
auto m1 = QString(segs.at(2));
auto m = int(m1.toInt());
auto period = computePeriodForSubmode(m);
if(segs.isEmpty()){
return;
}
auto f1 = QString(segs.at(4));
auto f = int(f1.toFloat());
auto m1 = QString(segs.at(2));
auto m = int(m1.toInt());
auto period = computePeriodForSubmode(m);
auto s1 = QString(segs.at(6));
auto s = int(s1.toFloat());
auto f1 = QString(segs.at(4));
auto f = int(f1.toFloat());
auto xdt1 = QString(segs.at(8));
auto xdt = int(xdt1.toFloat());
auto s1 = QString(segs.at(6));
auto s = int(s1.toFloat());
if(abs(xdt) <= 2){
if(s < 10){
m_wideGraph->drawLine(QColor(Qt::darkCyan), f, f + computeBandwidthForSubmode(m));
} else if (s <= 21){
m_wideGraph->drawLine(QColor(Qt::white), f, f + computeBandwidthForSubmode(m));
}
}
auto xdt1 = QString(segs.at(8));
auto xdt = int(xdt1.toFloat());
if(t.contains("decode")){
auto now = QDateTime::currentDateTimeUtc();
float n = 0;
float nPos = period - (now.time().second() % period);
float nNeg = (now.time().second() % period) - period;
if(qAbs(nNeg) < nPos){
n = nNeg;
} else {
n = nPos;
}
n -= (float)period;
n += computeFramesNeededForDecode(m)/RX_SAMPLE_RATE;
n -= xdt/2;
int xdtmin = qMin(n*1000, (float)DriftingDateTime::drift());
int xdtmax = qMax(n*1000, (float)DriftingDateTime::drift());
m_wideGraph->drawLine(QColor(Qt::red), f, f + computeBandwidthForSubmode(m));
int oldNewDrift = newDrift;
newDrift = (xdtmin + (xdtmax-xdtmin)/2);
newDrift = qMin(oldNewDrift, newDrift) + (qMax(oldNewDrift, newDrift)-qMin(oldNewDrift, newDrift))/2;
hasNewDrift = true;
// only draw candidates
if(abs(xdt) <= 2){
if(s < 10){
m_wideGraph->drawLine(QColor(Qt::darkCyan), f, f + computeBandwidthForSubmode(m));
} else if (s <= 21){
m_wideGraph->drawLine(QColor(Qt::white), f, f + computeBandwidthForSubmode(m));
}
}
}
if(JS8_DEBUG_DECODE) qDebug() << "--> busy?" << m_decoderBusy << "lock exists?" << ( QFile{m_config.temp_dir ().absoluteFilePath (".lock")}.exists());
return;
if(!t.contains("decode")){
return;
}
// but use decodes for drift
auto now = QDateTime::currentDateTimeUtc();
float n = 0;
float nPos = period - (now.time().second() % period);
float nNeg = (now.time().second() % period) - period;
if(qAbs(nNeg) < nPos){
n = nNeg;
} else {
n = nPos;
}
n -= (float)period;
n += computeFramesNeededForDecode(m)/RX_SAMPLE_RATE;
n -= xdt;
int xdtmin = qMin(n*1000, (float)DriftingDateTime::drift());
int xdtmax = qMax(n*1000, (float)DriftingDateTime::drift());
m_wideGraph->drawLine(QColor(Qt::red), f, f + computeBandwidthForSubmode(m));
int oldNewDrift = newDrift;
newDrift = (xdtmin + (xdtmax-xdtmin)/2);
newDrift = qMin(oldNewDrift, newDrift) + (qMax(oldNewDrift, newDrift)-qMin(oldNewDrift, newDrift))/2;
hasNewDrift = true;
if(JS8_DEBUG_DECODE) qDebug() << "--> busy?" << m_decoderBusy << "lock exists?" << ( QFile{m_config.temp_dir ().absoluteFilePath (".lock")}.exists());
return;
}
if(t.indexOf("<DecodeStarted>") >= 0) {
if(JS8_DEBUG_DECODE) qDebug() << "--> busy?" << m_decoderBusy << "lock exists?" << ( QFile{m_config.temp_dir ().absoluteFilePath (".lock")}.exists());
return;
if(JS8_DEBUG_DECODE) qDebug() << "--> busy?" << m_decoderBusy << "lock exists?" << ( QFile{m_config.temp_dir ().absoluteFilePath (".lock")}.exists());
return;
}
if(t.indexOf("<DecodeDebug>") >= 0) {
return;
}
if(t.indexOf("<DecodeFinished>") >= 0) {
// TODO: decide if we should adjust here...
if(hasNewDrift){
static int driftN = 1;
newDrift = ((driftN-1)*DriftingDateTime::drift() + newDrift)/driftN;