mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-28 15:09:02 -04:00
merge
This commit is contained in:
commit
e26d2cb02c
@ -180,14 +180,15 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
else
|
else
|
||||||
do i=1,nfox
|
do i=1,nfox
|
||||||
n=n30fox(i)
|
n=n30fox(i)
|
||||||
if(n30-n30fox(i).le.4) then
|
nage=min(99,mod(n30-n+288000,2880))
|
||||||
|
if(nage.le.4) then
|
||||||
j=j+1
|
j=j+1
|
||||||
c2fox(j)=c2fox(i)
|
c2fox(j)=c2fox(i)
|
||||||
g2fox(j)=g2fox(i)
|
g2fox(j)=g2fox(i)
|
||||||
nsnrfox(j)=nsnrfox(i)
|
nsnrfox(j)=nsnrfox(i)
|
||||||
nfreqfox(j)=nfreqfox(i)
|
nfreqfox(j)=nfreqfox(i)
|
||||||
n30fox(j)=n
|
n30fox(j)=n
|
||||||
nage=min(99,mod(n30-n+288000,2880))
|
! nage=min(99,mod(n30-n+288000,2880))
|
||||||
if(len(trim(g2fox(j))).eq.4) then
|
if(len(trim(g2fox(j))).eq.4) then
|
||||||
call azdist(mygrid,g2fox(j)//' ',0.d0,nAz,nEl,nDmiles, &
|
call azdist(mygrid,g2fox(j)//' ',0.d0,nAz,nEl,nDmiles, &
|
||||||
nDkm,nHotAz,nHotABetter)
|
nDkm,nHotAz,nHotABetter)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module ft8_a7
|
module ft8_a7
|
||||||
|
|
||||||
parameter(MAXDEC=100)
|
parameter(MAXDEC=200)
|
||||||
|
|
||||||
! For the following three arrays
|
! For the following three arrays
|
||||||
! First index i=decode number in this sequence
|
! First index i=decode number in this sequence
|
||||||
@ -43,7 +43,7 @@ subroutine ft8_a7_save(nutc,dt,f,msg)
|
|||||||
! Add this decode to current table for this sequence
|
! Add this decode to current table for this sequence
|
||||||
ndec(j,1)=ndec(j,1)+1 !Number of decodes in this sequence
|
ndec(j,1)=ndec(j,1)+1 !Number of decodes in this sequence
|
||||||
i=ndec(j,1) !i is index of a new table entry
|
i=ndec(j,1) !i is index of a new table entry
|
||||||
if(i.ge.MAXDEC-1) return !Prevent table overflow
|
if(i.gt.MAXDEC) return !Prevent table overflow (indexes start at 1)
|
||||||
|
|
||||||
dt0(i,j,1)=dt !Save dt in table
|
dt0(i,j,1)=dt !Save dt in table
|
||||||
f0(i,j,1)=f !Save f in table
|
f0(i,j,1)=f !Save f in table
|
||||||
|
@ -44,7 +44,7 @@ contains
|
|||||||
|
|
||||||
class(ft8_decoder), intent(inout) :: this
|
class(ft8_decoder), intent(inout) :: this
|
||||||
procedure(ft8_decode_callback) :: callback
|
procedure(ft8_decode_callback) :: callback
|
||||||
parameter (MAXCAND=600,MAX_EARLY=100)
|
parameter (MAXCAND=600,MAX_EARLY=200)
|
||||||
real*8 tsec,tseq
|
real*8 tsec,tseq
|
||||||
real sbase(NH1)
|
real sbase(NH1)
|
||||||
real candidate(3,MAXCAND)
|
real candidate(3,MAXCAND)
|
||||||
@ -58,9 +58,9 @@ contains
|
|||||||
integer*2 iwave(15*12000)
|
integer*2 iwave(15*12000)
|
||||||
integer apsym2(58),aph10(10)
|
integer apsym2(58),aph10(10)
|
||||||
character datetime*13,msg37*37
|
character datetime*13,msg37*37
|
||||||
character*37 allmessages(200)
|
character*37 allmessages(MAX_EARLY)
|
||||||
character*12 ctime
|
character*12 ctime
|
||||||
integer allsnrs(200)
|
integer allsnrs(MAX_EARLY)
|
||||||
integer itone(NN)
|
integer itone(NN)
|
||||||
integer itone_save(NN,MAX_EARLY)
|
integer itone_save(NN,MAX_EARLY)
|
||||||
real f1_save(MAX_EARLY)
|
real f1_save(MAX_EARLY)
|
||||||
@ -215,6 +215,9 @@ contains
|
|||||||
if(msg37.eq.allmessages(id)) ldupe=.true.
|
if(msg37.eq.allmessages(id)) ldupe=.true.
|
||||||
enddo
|
enddo
|
||||||
if(.not.ldupe) then
|
if(.not.ldupe) then
|
||||||
|
if(ndecodes.ge.MAX_EARLY) then
|
||||||
|
cycle
|
||||||
|
endif
|
||||||
ndecodes=ndecodes+1
|
ndecodes=ndecodes+1
|
||||||
allmessages(ndecodes)=msg37
|
allmessages(ndecodes)=msg37
|
||||||
allsnrs(ndecodes)=nsnr
|
allsnrs(ndecodes)=nsnr
|
||||||
|
@ -561,8 +561,8 @@ void DisplayText::displayHoundToBeCalled(QString t, bool bAtTop, QColor bg, QCol
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DisplayText::setHighlightedHoundText(QString t) {
|
void DisplayText::setHighlightedHoundText(QString t) {
|
||||||
QColor bg;
|
QColor bg=QColor{255,255,255};
|
||||||
QColor fg;
|
QColor fg=QColor{0,0,0};
|
||||||
highlight_types types{Highlight::Call};
|
highlight_types types{Highlight::Call};
|
||||||
set_colours(m_config, &bg, &fg, types);
|
set_colours(m_config, &bg, &fg, types);
|
||||||
// t is multiple lines of text, each line is a hound calling
|
// t is multiple lines of text, each line is a hound calling
|
||||||
|
@ -4519,6 +4519,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
m_nFoxFreq=decodedtext.string().mid(16,4).toInt();
|
m_nFoxFreq=decodedtext.string().mid(16,4).toInt();
|
||||||
hound_reply ();
|
hound_reply ();
|
||||||
} else {
|
} else {
|
||||||
|
if (SpecOp::HOUND==m_specOp && (text.mid(4,2).contains("15") or text.mid(4,2).contains("45"))) return; // ignore stations calling in the wrong time slot
|
||||||
if (text.contains(" " + m_config.my_callsign() + " " + m_hisCall) && !text.contains("73 ")) processMessage(decodedtext0); // needed for MSHV multistream messages
|
if (text.contains(" " + m_config.my_callsign() + " " + m_hisCall) && !text.contains("73 ")) processMessage(decodedtext0); // needed for MSHV multistream messages
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5033,7 +5034,10 @@ void MainWindow::guiUpdate()
|
|||||||
foxcom_.bSendMsg=ui->cbSendMsg->isChecked();
|
foxcom_.bSendMsg=ui->cbSendMsg->isChecked();
|
||||||
memcpy(foxcom_.textMsg, m_freeTextMsg.leftJustified(26,' ').toLatin1(),26);
|
memcpy(foxcom_.textMsg, m_freeTextMsg.leftJustified(26,' ').toLatin1(),26);
|
||||||
foxgen_(&bSuperFox, fname.constData(), (FCL)fname.size());
|
foxgen_(&bSuperFox, fname.constData(), (FCL)fname.size());
|
||||||
if(bSuperFox) sfox_tx();
|
if(bSuperFox) {
|
||||||
|
writeFoxTxMsgs();
|
||||||
|
sfox_tx();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5331,6 +5335,14 @@ void MainWindow::guiUpdate()
|
|||||||
// n64=n64/30;
|
// n64=n64/30;
|
||||||
// n64=n64*30;
|
// n64=n64*30;
|
||||||
// qDebug() << "bb" << m_config.FoxKey() << nsec%60 << dec_data.params.nutc << n64 << n64%60;
|
// qDebug() << "bb" << m_config.FoxKey() << nsec%60 << dec_data.params.nutc << n64 << n64%60;
|
||||||
|
|
||||||
|
// prevent tuning on top of a SuperFox message
|
||||||
|
if (SpecOp::HOUND==m_specOp && m_config.superFox() && m_tune) {
|
||||||
|
QDateTime now = QDateTime::currentDateTimeUtc();
|
||||||
|
int s = now.time().toString("ss").toInt();
|
||||||
|
if ((s >= 0 && s < 15) || (s >= 30 && s < 45)) ui->tuneButton->click ();
|
||||||
|
}
|
||||||
|
|
||||||
if(m_mode=="FST4") chk_FST4_freq_range();
|
if(m_mode=="FST4") chk_FST4_freq_range();
|
||||||
m_currentBand=m_config.bands()->find(m_freqNominal);
|
m_currentBand=m_config.bands()->find(m_freqNominal);
|
||||||
if( SpecOp::HOUND == m_specOp ) {
|
if( SpecOp::HOUND == m_specOp ) {
|
||||||
@ -10642,7 +10654,10 @@ Transmit:
|
|||||||
::memcpy(foxcom_.textMsg, m_freeTextMsg0.leftJustified(26,' ').toLatin1(),26);
|
::memcpy(foxcom_.textMsg, m_freeTextMsg0.leftJustified(26,' ').toLatin1(),26);
|
||||||
auto fname {QDir::toNativeSeparators(m_config.writeable_data_dir().absoluteFilePath("sfox_1.dat")).toLocal8Bit()};
|
auto fname {QDir::toNativeSeparators(m_config.writeable_data_dir().absoluteFilePath("sfox_1.dat")).toLocal8Bit()};
|
||||||
foxgen_(&bSuperFox, fname.constData(), (FCL)fname.size());
|
foxgen_(&bSuperFox, fname.constData(), (FCL)fname.size());
|
||||||
if(bSuperFox) sfox_tx();
|
if(bSuperFox) {
|
||||||
|
writeFoxTxMsgs();
|
||||||
|
sfox_tx();
|
||||||
|
}
|
||||||
m_tFoxTxSinceCQ++;
|
m_tFoxTxSinceCQ++;
|
||||||
|
|
||||||
for(QString hc: m_foxQSO.keys()) { //Check for strikeout or timeout
|
for(QString hc: m_foxQSO.keys()) { //Check for strikeout or timeout
|
||||||
@ -10775,7 +10790,24 @@ void MainWindow::foxGenWaveform(int i,QString fm)
|
|||||||
writeFoxQSO(t + fm.trimmed());
|
writeFoxQSO(t + fm.trimmed());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::writeFoxQSO(QString const& msg)
|
void MainWindow::writeFoxTxMsgs() {
|
||||||
|
// references extern struct foxcom_
|
||||||
|
QString t;
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
t = QString::fromLatin1(foxcom_.cmsg[i]).left(40);
|
||||||
|
if (t.length() > 0) {
|
||||||
|
write_all("Tx", t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
t = QString::fromLatin1(foxcom_.textMsg).left(38);
|
||||||
|
if (foxcom_.bSendMsg) {
|
||||||
|
write_all("Tx", "-Free Text- "+t);
|
||||||
|
}
|
||||||
|
if (foxcom_.bMoreCQs) {
|
||||||
|
write_all("Tx", "-MoreCQs- ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void MainWindow::writeFoxQSO(QString const& msg)
|
||||||
{
|
{
|
||||||
QString t;
|
QString t;
|
||||||
t = t.asprintf("%3d%3d%3d",m_houndQueue.count(),m_foxQSOinProgress.count(),m_foxQSO.count());
|
t = t.asprintf("%3d%3d%3d",m_houndQueue.count(),m_foxQSOinProgress.count(),m_foxQSO.count());
|
||||||
|
@ -894,6 +894,7 @@ private:
|
|||||||
void refreshPileupList();
|
void refreshPileupList();
|
||||||
QString userAgent();
|
QString userAgent();
|
||||||
void handleVerifyMsg(int status, QDateTime ts, QString callsign, QString code, QString const &response);
|
void handleVerifyMsg(int status, QDateTime ts, QString callsign, QString code, QString const &response);
|
||||||
|
void writeFoxTxMsgs();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int killbyname(const char* progName);
|
extern int killbyname(const char* progName);
|
||||||
|
Loading…
Reference in New Issue
Block a user