Continuing spike of turbo decoder in normal mode. Fine test that works
This commit is contained in:
parent
0ca7b0e5ed
commit
b351b72037
@ -2455,24 +2455,32 @@ void MainWindow::setDecodedTextFont (QFont const& font)
|
|||||||
|
|
||||||
void MainWindow::fixStop()
|
void MainWindow::fixStop()
|
||||||
{
|
{
|
||||||
|
m_hsymStop = computeStop(m_nSubMode, m_TRperiod);
|
||||||
|
}
|
||||||
|
|
||||||
|
int MainWindow::computeStop(int submode, int period){
|
||||||
|
int stop = 0;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
m_hsymStop=((int(m_TRperiod/0.288))/8)*8 - 1; // 0.288 because 6912/12000/2 = 0.288
|
stop=((int(period/0.288))/8)*8 - 1; // 0.288 because 6912/12000/2 = 0.288
|
||||||
if(m_nSubMode == Varicode::JS8CallUltra){
|
if(submode == Varicode::JS8CallUltra){
|
||||||
m_hsymStop++;
|
stop++;
|
||||||
}
|
}
|
||||||
#elif 0
|
#elif 0
|
||||||
m_hsymStop = int(m_TRperiod/0.288);
|
stop = int(period/0.288);
|
||||||
#else
|
#else
|
||||||
int symbolSamples = 0;
|
int symbolSamples = 0;
|
||||||
float threshold = 1.0;
|
float threshold = 1.0;
|
||||||
switch(m_nSubMode){
|
switch(submode){
|
||||||
case Varicode::JS8CallNormal: symbolSamples = JS8A_SYMBOL_SAMPLES; break;
|
case Varicode::JS8CallNormal: symbolSamples = JS8A_SYMBOL_SAMPLES; break;
|
||||||
case Varicode::JS8CallFast: symbolSamples = JS8B_SYMBOL_SAMPLES; break;
|
case Varicode::JS8CallFast: symbolSamples = JS8B_SYMBOL_SAMPLES; break;
|
||||||
case Varicode::JS8CallTurbo: symbolSamples = JS8C_SYMBOL_SAMPLES; break;
|
case Varicode::JS8CallTurbo: symbolSamples = JS8C_SYMBOL_SAMPLES; break;
|
||||||
case Varicode::JS8CallUltra: symbolSamples = JS8D_SYMBOL_SAMPLES; break;
|
case Varicode::JS8CallUltra: symbolSamples = JS8D_SYMBOL_SAMPLES; break;
|
||||||
}
|
}
|
||||||
m_hsymStop = qFloor(float(symbolSamples*JS8_NUM_SYMBOLS + threshold*RX_SAMPLE_RATE)/(float)m_nsps*2.0);
|
stop = qFloor(float(symbolSamples*JS8_NUM_SYMBOLS + threshold*RX_SAMPLE_RATE)/(float)m_nsps*2.0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------- dataSink()
|
//-------------------------------------------------------------- dataSink()
|
||||||
@ -2556,6 +2564,9 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
#if 0
|
#if 0
|
||||||
static int lastn = 0;
|
static int lastn = 0;
|
||||||
int n = now.time().second();
|
int n = now.time().second();
|
||||||
|
// newDataReady = n != lastn;
|
||||||
|
// lastn = n;
|
||||||
|
#elif 1
|
||||||
newDataReady = false;
|
newDataReady = false;
|
||||||
|
|
||||||
if(!m_decoderBusy) // m_nSubMode == Varicode::JS8CallNormal)
|
if(!m_decoderBusy) // m_nSubMode == Varicode::JS8CallNormal)
|
||||||
@ -2584,32 +2595,41 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
m_hsymStop = m_ihsym;
|
m_hsymStop = m_ihsym;
|
||||||
}
|
}
|
||||||
lastn = n;
|
lastn = n;
|
||||||
#elif 0
|
#elif 1
|
||||||
qint32 hsymNormalStop = ((int(JS8A_TX_SECONDS/0.288))/8)*8 - 1; // 0.288 because 6912/12000/2 = 0.288
|
int n = now.time().second();
|
||||||
qint32 hsymFastStop = ((int(JS8B_TX_SECONDS/0.288))/8)*8 - 1; // 0.288 because 6912/12000/2 = 0.288
|
qint32 hsymNormalStop = computeStop(Varicode::JS8CallNormal, JS8A_TX_SECONDS);
|
||||||
qint32 hsymTurboStop = ((int(JS8C_TX_SECONDS/0.288))/8)*8 - 1; // 0.288 because 6912/12000/2 = 0.288
|
qint32 hsymFastStop = computeStop(Varicode::JS8CallFast, JS8B_TX_SECONDS);
|
||||||
|
qint32 hsymTurboStop = computeStop(Varicode::JS8CallTurbo, JS8C_TX_SECONDS);
|
||||||
|
qint32 hsymUltraStop = computeStop(Varicode::JS8CallUltra, JS8D_TX_SECONDS);
|
||||||
/// if(m_ihsym % hsymNormalStop == 0){
|
/// if(m_ihsym % hsymNormalStop == 0){
|
||||||
/// period = JS8A_TX_SECONDS;
|
/// period = JS8A_TX_SECONDS;
|
||||||
/// submode = Varicode::JS8CallNormal;
|
/// submode = Varicode::JS8CallNormal;
|
||||||
/// halfSymbolStop= hsymNormalStop;
|
/// halfSymbolStop = hsymNormalStop;
|
||||||
/// qDebug() << "could decode normal now" << n;
|
/// qDebug() << "could decode normal now" << n;
|
||||||
/// newDataReady = true;
|
/// newDataReady = true;
|
||||||
/// }
|
/// }
|
||||||
/// if(m_ihsym % hsymFastStop == 0){
|
/// if(m_ihsym % hsymFastStop == 0){
|
||||||
/// period = JS8B_TX_SECONDS;
|
/// period = JS8B_TX_SECONDS;
|
||||||
/// submode = Varicode::JS8CallFast;
|
/// submode = Varicode::JS8CallFast;
|
||||||
/// halfSymbolStop= hsymFastStop;
|
/// halfSymbolStop = hsymFastStop;
|
||||||
/// qDebug() << "could decode fast now" << n;
|
/// qDebug() << "could decode fast now" << n;
|
||||||
/// newDataReady = true;
|
/// newDataReady = true;
|
||||||
/// }
|
/// }
|
||||||
if(m_ihsym % hsymTurboStop == 0 || m_ihsym == hsymTurboStop/2-1){
|
if(m_ihsym % hsymTurboStop == 0){
|
||||||
period = JS8C_TX_SECONDS;
|
period = JS8C_TX_SECONDS;
|
||||||
submode = Varicode::JS8CallTurbo;
|
submode = Varicode::JS8CallTurbo;
|
||||||
dec_data.params.nsz = hsymTurboStop * m_nsps / 2;
|
halfSymbolStop = hsymTurboStop;
|
||||||
halfSymbolStop= hsymTurboStop;
|
|
||||||
qDebug() << "could decode turbo now" << n;
|
qDebug() << "could decode turbo now" << n;
|
||||||
newDataReady = true;
|
newDataReady = true;
|
||||||
}
|
}
|
||||||
|
/// if(m_ihsym % hsymUltraStop == 0){
|
||||||
|
/// period = JS8D_TX_SECONDS;
|
||||||
|
/// submode = Varicode::JS8CallUltra;
|
||||||
|
/// halfSymbolStop = hsymFastStop;
|
||||||
|
/// qDebug() << "could decode ultra now" << n;
|
||||||
|
/// newDataReady = true;
|
||||||
|
/// }
|
||||||
|
dec_data.params.nsz = halfSymbolStop * m_nsps / 2;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -4053,7 +4073,17 @@ void MainWindow::decode(int submode, int period)
|
|||||||
memcpy(dec_data.d1, &dec_data.d2[dec_data.params.kin-periodFrames], periodFrames * sizeof(dec_data.d2[0]));
|
memcpy(dec_data.d1, &dec_data.d2[dec_data.params.kin-periodFrames], periodFrames * sizeof(dec_data.d2[0]));
|
||||||
qDebug() << "try decode from" << (dec_data.params.kin-periodFrames) << "to" << dec_data.params.kin << "with period frames" << periodFrames;
|
qDebug() << "try decode from" << (dec_data.params.kin-periodFrames) << "to" << dec_data.params.kin << "with period frames" << periodFrames;
|
||||||
}
|
}
|
||||||
|
#elif 1
|
||||||
|
int neededFrames = dec_data.params.nsz; // m_hsymStop*m_nsps/2;
|
||||||
|
int start = qMax(0, dec_data.params.kin-neededFrames);
|
||||||
|
int stop = qMin(start + neededFrames, dec_data.params.kin);
|
||||||
|
int availableFrames = stop - start;
|
||||||
|
int missingFrames = neededFrames - availableFrames;
|
||||||
|
qDebug() << "try decode from" << start << "to" << stop << "available" << availableFrames << "missing" << missingFrames;
|
||||||
|
memset(dec_data.d1, 0, sizeof(dec_data.d1));
|
||||||
|
memcpy(dec_data.d1 + missingFrames, dec_data.d2 + start, sizeof(dec_data.d2[0]) * availableFrames);
|
||||||
#else
|
#else
|
||||||
|
qDebug() << "try decode from" << 0 << "to" << dec_data.params.kin;
|
||||||
memset(dec_data.d1, 0, sizeof(dec_data.d1));
|
memset(dec_data.d1, 0, sizeof(dec_data.d1));
|
||||||
memcpy(dec_data.d1, dec_data.d2, sizeof(dec_data.d2));
|
memcpy(dec_data.d1, dec_data.d2, sizeof(dec_data.d2));
|
||||||
#endif
|
#endif
|
||||||
@ -7037,7 +7067,7 @@ void MainWindow::on_actionJS8_triggered()
|
|||||||
ui->decodedTextLabel2->setText(" UTC dB DT Freq Message");
|
ui->decodedTextLabel2->setText(" UTC dB DT Freq Message");
|
||||||
m_wideGraph->setPeriod(m_TRperiod,m_nsps);
|
m_wideGraph->setPeriod(m_TRperiod,m_nsps);
|
||||||
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
|
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
|
||||||
m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe
|
m_detector->setTRPeriod(30); //m_TRperiod); // TODO - not thread safe
|
||||||
ui->label_7->setText("Rx Frequency");
|
ui->label_7->setText("Rx Frequency");
|
||||||
if(m_config.bFox()) {
|
if(m_config.bFox()) {
|
||||||
ui->label_6->setText("Stations calling DXpedition " + m_config.my_callsign());
|
ui->label_6->setText("Stations calling DXpedition " + m_config.my_callsign());
|
||||||
|
@ -925,6 +925,7 @@ private:
|
|||||||
void stub();
|
void stub();
|
||||||
void statusChanged();
|
void statusChanged();
|
||||||
void fixStop();
|
void fixStop();
|
||||||
|
int computeStop(int submode, int period);
|
||||||
bool shortList(QString callsign);
|
bool shortList(QString callsign);
|
||||||
void transmit (double snr = 99.);
|
void transmit (double snr = 99.);
|
||||||
void rigFailure (QString const& reason);
|
void rigFailure (QString const& reason);
|
||||||
|
Loading…
Reference in New Issue
Block a user