mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-21 11:38:34 -04:00
Several enhancements to DXpedition mode:
1. Insert dummy report when Hound is called by complex-callsign Fox. 2. Allow Fox to transmit anywhere between 300 and 900 Hz. 3. Restrict randomized Hound freq to the range 1000 - 3000 Hz. 4. Suppress Fox signals that would be duplicates. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8376 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
6ebf71e4e0
commit
d1be2506a9
@ -83,6 +83,7 @@ extern struct {
|
||||
extern struct {
|
||||
float wave[606720];
|
||||
int nslots;
|
||||
int nfreq;
|
||||
int i3bit[5];
|
||||
char cmsg[5][40];
|
||||
char mycall[12];
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine foxfilt(nslots,width,wave)
|
||||
subroutine foxfilt(nslots,nfreq,width,wave)
|
||||
|
||||
parameter (NN=79,ND=58,KK=87,NSPS=4*1920)
|
||||
parameter (NWAVE=NN*NSPS,NFFT=614400,NH=NFFT/2)
|
||||
@ -11,8 +11,8 @@ subroutine foxfilt(nslots,width,wave)
|
||||
x(NWAVE+1:)=0.
|
||||
call four2a(x,NFFT,1,-1,0) !r2c
|
||||
df=48000.0/NFFT
|
||||
fa=1800.0 - 0.5*6.25
|
||||
fb=1800.0 + 7.5*6.25 + (nslots-1)*60.0
|
||||
fa=nfreq - 0.5*6.25
|
||||
fb=nfreq + 7.5*6.25 + (nslots-1)*60.0
|
||||
ia2=nint(fa/df)
|
||||
ib1=nint(fb/df)
|
||||
ia1=nint(ia2-width/df)
|
||||
|
@ -31,7 +31,7 @@ subroutine foxgen()
|
||||
real x(NFFT)
|
||||
real*8 dt,twopi,f0,fstep,dfreq,phi,dphi
|
||||
complex cx(0:NH)
|
||||
common/foxcom/wave(NWAVE),nslots,i3bit(5),cmsg(5),mycall(12)
|
||||
common/foxcom/wave(NWAVE),nslots,nfreq,i3bit(5),cmsg(5),mycall(12)
|
||||
common/foxcom2/itone2(NN),msgbits2(KK)
|
||||
equivalence (x,cx),(y,cy)
|
||||
data icos7/2,5,6,0,4,1,3/ !Costas 7x7 tone pattern
|
||||
@ -95,8 +95,7 @@ subroutine foxgen()
|
||||
! Make copies of itone() and msgbits() for ft8sim
|
||||
itone2=itone
|
||||
msgbits2=msgbits
|
||||
|
||||
f0=1800.d0 + fstep*(n-1)
|
||||
f0=nfreq + fstep*(n-1)
|
||||
phi=0.d0
|
||||
k=0
|
||||
do j=1,NN
|
||||
@ -128,7 +127,7 @@ subroutine foxgen()
|
||||
! call plotspec(2,wave) !Plot the spectrum
|
||||
|
||||
width=50.0
|
||||
call foxfilt(nslots,width,wave)
|
||||
call foxfilt(nslots,nfreq,width,wave)
|
||||
peak3=maxval(abs(wave))
|
||||
wave=wave/peak3
|
||||
|
||||
|
@ -7,10 +7,11 @@ subroutine foxgen_wrap(msg40,msgbits,itone)
|
||||
character*12 mycall12
|
||||
integer*1 msgbits(KK),msgbits2
|
||||
integer itone(NN)
|
||||
common/foxcom/wave(NWAVE),nslots,i3bit(5),cmsg(5),mycall12
|
||||
common/foxcom/wave(NWAVE),nslots,nfreq,i3bit(5),cmsg(5),mycall12
|
||||
common/foxcom2/itone2(NN),msgbits2(KK)
|
||||
|
||||
nslots=1
|
||||
nfreq=300
|
||||
i1=index(msg40,'<')
|
||||
i2=index(msg40,'>')
|
||||
mycall12=msg40(i1+1:i2-1)//' '
|
||||
|
@ -2941,6 +2941,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
||||
}
|
||||
} else {
|
||||
QStringList w=decodedtext.string().mid(24).split(" ",QString::SkipEmptyParts);
|
||||
if(decodedtext.string().contains("/")) w.append(" +00"); //Add a dummy report
|
||||
if(w.size()==3) {
|
||||
QString foxCall=w.at(1);
|
||||
if(w.at(0)==m_config.my_callsign()) {
|
||||
@ -3243,12 +3244,12 @@ void MainWindow::guiUpdate()
|
||||
icw[0]=m_ncw;
|
||||
g_iptt = 1;
|
||||
setRig ();
|
||||
if(m_mode=="FT8" and m_config.bFox() and ui->TxFreqSpinBox->value() > 999) {
|
||||
if(m_mode=="FT8" and m_config.bFox() and ui->TxFreqSpinBox->value() > 900) {
|
||||
ui->TxFreqSpinBox->setValue(300);
|
||||
}
|
||||
if(m_mode=="FT8" and m_config.bHound() and (ui->TxFreqSpinBox->value() < 999) and
|
||||
m_ntx != 3) {
|
||||
int nf = (qrand() % 3000) + 1000;
|
||||
int nf = (qrand() % 2000) + 1000; // Hound randomized range: 1000-3000 Hz
|
||||
ui->TxFreqSpinBox->setValue(nf);
|
||||
}
|
||||
setXIT (ui->TxFreqSpinBox->value ());
|
||||
@ -3303,6 +3304,10 @@ void MainWindow::guiUpdate()
|
||||
}
|
||||
ba=msg2.toLatin1();
|
||||
} else {
|
||||
if(m_config.bHound() and m_ntx!=3) { //Hound transmits only Tx1 or Tx3
|
||||
m_ntx=1;
|
||||
ui->txrb1->setChecked(true);
|
||||
}
|
||||
if(m_ntx == 1) ba=ui->tx1->text().toLocal8Bit();
|
||||
if(m_ntx == 2) ba=ui->tx2->text().toLocal8Bit();
|
||||
if(m_ntx == 3) ba=ui->tx3->text().toLocal8Bit();
|
||||
@ -7427,9 +7432,11 @@ void MainWindow::foxTxSequencer()
|
||||
fm = hc1 + " " + m_config.my_callsign(); //Tx msg
|
||||
m_fullFoxCallTime=now;
|
||||
}
|
||||
if(islot>0 and fm==m_fm0) break; //Suppress duplicate Fox signals
|
||||
islot++;
|
||||
//Generate tx waveform
|
||||
foxGenWaveform(islot-1,fm);
|
||||
m_fm0=fm;
|
||||
if(islot >= m_Nslots) goto Transmit;
|
||||
}
|
||||
|
||||
@ -7467,6 +7474,8 @@ void MainWindow::foxTxSequencer()
|
||||
|
||||
Transmit:
|
||||
foxcom_.nslots=islot;
|
||||
foxcom_.nfreq=ui->TxFreqSpinBox->value();
|
||||
if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq + 1500; //Fox Tx freq
|
||||
QString foxCall=m_config.my_callsign() + " ";
|
||||
strncpy(&foxcom_.mycall[0], foxCall.toLatin1(),12); //Copy Fox callsign into foxcom_
|
||||
foxgen_();
|
||||
@ -7531,12 +7540,10 @@ void MainWindow::foxGenWaveform(int i,QString fm)
|
||||
QString txModeArg;
|
||||
txModeArg.sprintf("FT8fox %d",i+1);
|
||||
ui->decodedTextBrowser2->displayTransmittedText(fm.trimmed(), txModeArg,
|
||||
300+60*i,m_config.color_TxMsg(),m_bFastMode);
|
||||
|
||||
ui->TxFreqSpinBox->value()+60*i,m_config.color_TxMsg(),m_bFastMode);
|
||||
foxcom_.i3bit[i]=0;
|
||||
if(fm.indexOf("<")>0) foxcom_.i3bit[i]=1;
|
||||
strncpy(&foxcom_.cmsg[i][0],fm.toLatin1(),40); //Copy this message into cmsg[i]
|
||||
// qDebug() << "Fox Transmitting:" << i << fm.trimmed();
|
||||
writeFoxQSO(" Tx: " + fm.trimmed());
|
||||
}
|
||||
|
||||
|
@ -565,6 +565,7 @@ private:
|
||||
QString m_CQtype;
|
||||
QString m_opCall;
|
||||
QString m_houndCallers; //Sorted list of Hound callers
|
||||
QString m_fm0;
|
||||
|
||||
QSet<QString> m_pfx;
|
||||
QSet<QString> m_sfx;
|
||||
|
Loading…
Reference in New Issue
Block a user