Optimized E settings
This commit is contained in:
		
							parent
							
								
									f7d253e7e3
								
							
						
					
					
						commit
						0569bb0167
					
				| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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){
 | ||||
|  | ||||
| @ -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
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jordan Sherer
						Jordan Sherer