Optimized E settings

This commit is contained in:
Jordan Sherer 2019-11-06 20:33:37 -05:00
parent f7d253e7e3
commit 0569bb0167
4 changed files with 19 additions and 20 deletions

View File

@ -35,7 +35,7 @@
#define JS8E_TX_SECONDS 4
#define JS8E_START_DELAY_MS 100
#else
#define JS8E_SYMBOL_SAMPLES 4000
#define JS8E_SYMBOL_SAMPLES 3840
#define JS8E_TX_SECONDS 30
#define JS8E_START_DELAY_MS 500
#endif

View File

@ -17,7 +17,8 @@
! parameter (NSPS=960, NTXDUR=8, NDOWNSPS=24, NDD=100, JZ=116) ! 100 Hz 12.50 baud 32 wpm -22.0dB (1.0Eb/N0) 5.92s
! parameter (NSPS=1200, NTXDUR=10, NDOWNSPS=20, NDD=100, JZ=116) ! 80 Hz 10 baud 24 wpm -23.0dB (1.0Eb/N0) 7.90s
! parameter (NSPS=1920, NTXDUR=15, NDOWNSPS=32, NDD=100, JZ=116) ! 50 Hz 6.250 baud 16 wpm -25.0dB (1.0Eb/N0) 12.64s
parameter (NSPS=4000, NTXDUR=30, NDOWNSPS=40, NDD=90, JZ=116) ! 24 Hz 3 baud 8 wpm -28.2dB (1.0Eb/N0) 26.33s
parameter (NSPS=3840, NTXDUR=30, NDOWNSPS=32, NDD=94, JZ=116) ! 24 Hz 3.125 baud 8 wpm -28.0dB (1.0Eb/N0) 25.28s
! parameter (NSPS=4000, NTXDUR=30, NDOWNSPS=40, NDD=90, JZ=116) ! 24 Hz 3 baud 8 wpm -28.2dB (1.0Eb/N0) 26.33s
parameter (AZ=12000.0/(1.0*NSPS)*0.8d0) !Dedupe overlap in Hz
parameter (ASTART=0.5) !Start delay in seconds

View File

@ -1031,7 +1031,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
// reorder so slow is at the top
ui->menuModeJS8->removeAction(ui->actionModeJS8UltraSlow);
ui->menuModeJS8->insertAction(ui->actionModeJS8Normal, ui->actionModeJS8UltraSlow);
ui->actionModeJS8UltraSlow->setText("JS8 (&Slow, 30s, 24Hz, ~8WPM)");
ui->actionModeJS8UltraSlow->setText("JS8 (&Slow, 30s, 25Hz, ~8WPM)");
}
// prep
@ -2491,9 +2491,9 @@ void MainWindow::fixStop()
int MainWindow::computeSubmodePeriod(int submode){
switch(submode){
case Varicode::JS8CallNormal: return JS8A_TX_SECONDS;
case Varicode::JS8CallFast: return JS8B_TX_SECONDS;
case Varicode::JS8CallTurbo: return JS8C_TX_SECONDS;
case Varicode::JS8CallNormal: return JS8A_TX_SECONDS;
case Varicode::JS8CallFast: return JS8B_TX_SECONDS;
case Varicode::JS8CallTurbo: return JS8C_TX_SECONDS;
case Varicode::JS8CallUltraSlow: return JS8E_TX_SECONDS;
}
@ -4003,16 +4003,15 @@ bool MainWindow::decodeReady(int submode, int period, int *pSubmode, int *pPerio
qint32 cycleSampleStartE = computeCycleStartForDecode(cycleE, JS8E_TX_SECONDS);
qint32 framesNeededE = computeFramesNeededForDecode(Varicode::JS8CallUltraSlow, JS8E_TX_SECONDS);
bool couldDecodeE = k >= cycleSampleStartE + framesNeededE;
#if !JS8E_IS_ULTRA
static int lastE = -1;
// protect against multiple decodes for the same cycle
static int lastDecodeCycleE = -1;
if(couldDecodeE){
if(cycleE == lastE){
if(cycleE == lastDecodeCycleE){
couldDecodeE = false;
}
lastE = cycleE;
lastDecodeCycleE = cycleE;
}
#endif
#else
qint32 cycleSampleStartE = 0;
qint32 framesNeededE = 0;
@ -4504,7 +4503,7 @@ void MainWindow::readFromStdout() //readFromStdout
DecodedText decodedtext {QString::fromUtf8 (t.constData ()).remove (QRegularExpression {"\r|\n"}), "FT8" == m_mode &&
ui->cbVHFcontest->isChecked(), m_config.my_grid ()};
bool bValidFrame = decodedtext.snr() > -24;
bool bValidFrame = decodedtext.snr() > -28;
// dupe check
auto frame = decodedtext.message();
@ -7220,7 +7219,7 @@ void MainWindow::prepareHeartbeatMode(bool enabled){
ui->hbMacroButton->setChecked(false);
}
ui->actionHeartbeat->setEnabled(enabled);
ui->actionModeJS8HB->setEnabled(m_nSubMode == Varicode::JS8CallNormal);
ui->actionModeJS8HB->setEnabled(m_nSubMode == Varicode::JS8CallNormal || (!JS8E_IS_ULTRA && m_nSubMode == Varicode::JS8CallUltraSlow));
ui->actionHeartbeatAcknowledgements->setEnabled(ui->actionModeAutoreply->isChecked() && enabled);
#if 0
@ -7268,7 +7267,7 @@ void MainWindow::on_actionJS8_triggered()
}
// Only enable heartbeat for normal mode
ui->actionModeJS8HB->setEnabled(m_nSubMode == Varicode::JS8CallNormal);
ui->actionModeJS8HB->setEnabled(m_nSubMode == Varicode::JS8CallNormal || (!JS8E_IS_ULTRA && m_nSubMode == Varicode::JS8CallUltraSlow));
prepareHeartbeatMode(ui->actionModeJS8HB->isEnabled() && ui->actionModeJS8HB->isChecked());
//if(m_nSubMode != Varicode::JS8CallNormal){

View File

@ -25,11 +25,10 @@ public:
// submode types
enum SubmodeType {
JS8CallNormal = 0,
JS8CallFast = 1,
JS8CallTurbo = 2,
JS8CallSlow = 4,
JS8CallUltraSlow = 4
JS8CallNormal = 0,
JS8CallFast = 1,
JS8CallTurbo = 2,
JS8CallUltraSlow = 4
};
// frame type transmitted via itype and decoded by the ft8 decoded