mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-04-17 08:48:29 -04:00
Merge branch 'sfox4' of bitbucket.org:k1jt/wsjtx into sfox4
This commit is contained in:
commit
86891c0b00
@ -1704,7 +1704,14 @@ if (APPLE)
|
||||
)
|
||||
endif (APPLE)
|
||||
|
||||
if (NOT (WIN32 OR UNIX OR APPLE))
|
||||
execute_process(COMMAND
|
||||
dpkg-architecture
|
||||
-qDEB_HOST_ARCH
|
||||
OUTPUT_VARIABLE
|
||||
CMAKE_DEB_HOST_ARCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if(${CMAKE_DEB_HOST_ARCH} MATCHES "arm64")
|
||||
install (FILES
|
||||
lib/superfox/arm/sfrx
|
||||
lib/superfox/arm/sftx
|
||||
@ -1717,6 +1724,19 @@ if (NOT (WIN32 OR UNIX OR APPLE))
|
||||
)
|
||||
endif()
|
||||
|
||||
if(${CMAKE_DEB_HOST_ARCH} MATCHES "armhf")
|
||||
install (FILES
|
||||
lib/superfox/arm32/sfrx
|
||||
lib/superfox/arm32/sftx
|
||||
lib/superfox/arm32/foxchk
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS GROUP_READ GROUP_EXECUTE
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
PERMISSIONS WORLD_READ WORLD_EXECUTE
|
||||
#COMPONENT runtime
|
||||
)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Mac installer files
|
||||
#
|
||||
|
@ -169,14 +169,17 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
||||
params%ndiskdat)
|
||||
call timer('decft8 ',1)
|
||||
endif
|
||||
if(nfox.gt.0) then
|
||||
n30min=minval(n30fox(1:nfox))
|
||||
n30max=maxval(n30fox(1:nfox))
|
||||
endif
|
||||
j=0
|
||||
|
||||
if(ncontest.eq.6) then
|
||||
! Fox mode: save decoded Hound calls for possible selection by FoxOp
|
||||
|
||||
n=params%nutc
|
||||
n30=(3600*(n/10000) + 60*mod((n/100),100) + mod(n,100))/30
|
||||
if(n30.lt.n30z) nwrap=nwrap+2880 !New UTC day, handle the wrap
|
||||
n30z=n30
|
||||
n30=n30+nwrap
|
||||
|
||||
rewind 19
|
||||
if(nfox.eq.0) then
|
||||
endfile 19
|
||||
@ -184,21 +187,21 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
||||
else
|
||||
do i=1,nfox
|
||||
n=n30fox(i)
|
||||
if(n30max-n30fox(i).le.4) then
|
||||
if(n30-n30fox(i).le.4) then
|
||||
j=j+1
|
||||
c2fox(j)=c2fox(i)
|
||||
g2fox(j)=g2fox(i)
|
||||
nsnrfox(j)=nsnrfox(i)
|
||||
nfreqfox(j)=nfreqfox(i)
|
||||
n30fox(j)=n
|
||||
m=n30max-n
|
||||
nage=n30-n
|
||||
if(len(trim(g2fox(j))).eq.4) then
|
||||
call azdist(mygrid,g2fox(j)//' ',0.d0,nAz,nEl,nDmiles, &
|
||||
nDkm,nHotAz,nHotABetter)
|
||||
else
|
||||
nDkm=9999
|
||||
endif
|
||||
write(19,1004) c2fox(j),g2fox(j),nsnrfox(j),nfreqfox(j),nDkm,m
|
||||
write(19,1004) c2fox(j),g2fox(j),nsnrfox(j),nfreqfox(j),nDkm,nage
|
||||
1004 format(a12,1x,a4,i5,i6,i7,i3)
|
||||
endif
|
||||
enddo
|
||||
@ -680,7 +683,7 @@ contains
|
||||
if(b0 .and. (b1.or.b2) .and. (nint(freq).ge.1000 .or. params%b_superfox)) then
|
||||
n=params%nutc
|
||||
n30=(3600*(n/10000) + 60*mod((n/100),100) + mod(n,100))/30
|
||||
if(n30.lt.n30z) nwrap=nwrap+5760 !New UTC day, handle the wrap
|
||||
if(n30.lt.n30z) nwrap=nwrap+2880 !New UTC day, handle the wrap
|
||||
n30z=n30
|
||||
n30=n30+nwrap
|
||||
if(nfox.lt.MAXFOX) nfox=nfox+1
|
||||
|
@ -31,6 +31,7 @@ subroutine sfox_wave_gfsk(fname)
|
||||
enddo
|
||||
first=.false.
|
||||
endif
|
||||
wave=0.
|
||||
|
||||
open(25,file=trim(fname),status='unknown',err=999)
|
||||
read(25,'(20i4)',err=999,end=999) itone
|
||||
@ -48,7 +49,6 @@ subroutine sfox_wave_gfsk(fname)
|
||||
dphi(0:2*NSPS-1)=dphi(0:2*NSPS-1)+dphi_peak*itone(1)*pulse(NSPS+1:3*NSPS)
|
||||
dphi(NSYM*NSPS:(NSYM+2)*NSPS-1)=dphi(NSYM*NSPS:(NSYM+2)*NSPS-1)+dphi_peak*itone(NSYM)*pulse(1:2*NSPS)
|
||||
|
||||
wave=0.
|
||||
phi=0.d0
|
||||
f0=750.0d0
|
||||
dphi=dphi+twopi*f0*dt
|
||||
|
@ -1232,6 +1232,7 @@ void MainWindow::writeSettings()
|
||||
m_settings->setValue("FoxMaxDB_v2",ui->sbMax_dB->value()); // original key abandoned
|
||||
m_settings->setValue ("SerialNumber",ui->sbSerialNumber->value ());
|
||||
m_settings->setValue("FoxTextMsg", m_freeTextMsg0);
|
||||
m_settings->setValue("WorkDupes", ui->cbWorkDupes->isChecked());
|
||||
m_settings->endGroup();
|
||||
|
||||
// do this in the General group because we save the parameters from various places
|
||||
@ -1347,6 +1348,7 @@ void MainWindow::readSettings()
|
||||
ui->sbSerialNumber->setValue (m_settings->value ("SerialNumber", 1).toInt ());
|
||||
m_freeTextMsg0=m_settings->value("FoxTextMsg","").toString();
|
||||
m_freeTextMsg=m_freeTextMsg0;
|
||||
ui->cbWorkDupes->setChecked(m_settings->value("WorkDupes",false).toBool());
|
||||
m_settings->endGroup();
|
||||
|
||||
m_settings->beginGroup("Common");
|
||||
@ -2254,18 +2256,18 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
|
||||
}
|
||||
QMainWindow::keyPressEvent (e);
|
||||
}
|
||||
|
||||
if(SpecOp::HOUND == m_specOp) {
|
||||
switch (e->key()) {
|
||||
case Qt::Key_Return:
|
||||
auto_tx_mode(true);
|
||||
return;
|
||||
case Qt::Key_Enter:
|
||||
auto_tx_mode(true);
|
||||
return;
|
||||
}
|
||||
QMainWindow::keyPressEvent (e);
|
||||
}
|
||||
// Why shall RETURN switch Tx on when in Hound mode? Makes little sense and confuses many OMs!
|
||||
// if(SpecOp::HOUND == m_specOp) {
|
||||
// switch (e->key()) {
|
||||
// case Qt::Key_Return:
|
||||
// auto_tx_mode(true);
|
||||
// return;
|
||||
// case Qt::Key_Enter:
|
||||
// auto_tx_mode(true);
|
||||
// return;
|
||||
// }
|
||||
// QMainWindow::keyPressEvent (e);
|
||||
// }
|
||||
|
||||
int n;
|
||||
bool bAltF1F6=m_config.alternate_bindings();
|
||||
@ -3714,7 +3716,10 @@ void MainWindow::decodeDone ()
|
||||
ui->DecodeButton->setChecked (false);
|
||||
decodeBusy(false);
|
||||
m_RxLog=0;
|
||||
if(SpecOp::FOX == m_specOp) houndCallers();
|
||||
if(SpecOp::FOX == m_specOp) {
|
||||
houndCallers();
|
||||
if(ui->cbWorkDupes->isChecked()) QTimer::singleShot (5000, [=] {band_activity_cleared();});
|
||||
}
|
||||
to_jt9(m_ihsym,-1,1); //Tell jt9 we know it has finished
|
||||
|
||||
m_startAnother=m_loopall;
|
||||
@ -8087,8 +8092,8 @@ void MainWindow::on_bandComboBox_activated (int index)
|
||||
m_bandEdited = true;
|
||||
band_changed (frequency);
|
||||
m_wideGraph->setRxBand (m_config.bands ()->find (frequency));
|
||||
m_specOp=m_config.special_op_id();
|
||||
if (m_specOp==SpecOp::HOUND) auto_tx_mode(false);
|
||||
// m_specOp=m_config.special_op_id();
|
||||
// if (m_specOp==SpecOp::HOUND) auto_tx_mode(false);
|
||||
}
|
||||
|
||||
void MainWindow::band_changed (Frequency f)
|
||||
@ -10147,6 +10152,18 @@ void MainWindow::houndCallers()
|
||||
return; // don't use these decodes
|
||||
}
|
||||
|
||||
// Read decodes of the current period
|
||||
QFile d(m_config.temp_dir().absoluteFilePath("decoded.txt"));
|
||||
QTextStream ds(&d);
|
||||
QString decoded="";
|
||||
if(d.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
while (!ds.atEnd()) {
|
||||
decoded = ds.readAll();
|
||||
}
|
||||
ds.flush();
|
||||
d.close();
|
||||
}
|
||||
|
||||
QFile f(m_config.temp_dir().absoluteFilePath("houndcallers.txt"));
|
||||
if(f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QTextStream s(&f);
|
||||
@ -10164,13 +10181,17 @@ void MainWindow::houndCallers()
|
||||
paddedHoundCall=houndCall + " ";
|
||||
//Don't list a hound already in the queue
|
||||
if(!ui->houndQueueTextBrowser->toPlainText().contains(paddedHoundCall)) {
|
||||
if(m_loggedByFox[houndCall].contains(m_lastBand) and
|
||||
!ui->cbWorkDupes->isChecked()) continue; //already logged on this band
|
||||
if(m_foxQSO.contains(houndCall)) continue; //still in the QSO map
|
||||
if(ui->cbWorkDupes->isChecked()) {
|
||||
if(m_loggedByFox[houndCall].contains(m_lastBand)
|
||||
and !decoded.contains(paddedHoundCall)) continue; // don't display old messages again of stations already logged
|
||||
} else {
|
||||
if(m_loggedByFox[houndCall].contains(m_lastBand)) continue; // already logged on this band
|
||||
}
|
||||
if(m_foxQSO.contains(houndCall)) continue; // still in the QSO map
|
||||
auto const& entity = m_logBook.countries ()->lookup (houndCall);
|
||||
auto const& continent = AD1CCty::continent (entity.continent);
|
||||
|
||||
//If we are using a directed CQ, ignore Hound calls that do not comply.
|
||||
// If we are using a directed CQ, ignore Hound calls that do not comply.
|
||||
QString CQtext=ui->comboBoxCQ->currentText();
|
||||
if(CQtext.length()==5 and (continent!=CQtext.mid(3,2))) continue;
|
||||
int nCallArea=-1;
|
||||
@ -10182,7 +10203,7 @@ void MainWindow::houndCallers()
|
||||
}
|
||||
if(nCallArea!=CQtext.mid(3,1).toInt()) continue;
|
||||
}
|
||||
//This houndCall passes all tests, add it to the list.
|
||||
// This houndCall passes all tests, add it to the list.
|
||||
t = t + line + " " + continent + "\n";
|
||||
m_nHoundsCalling++; // Number of accepted Hounds to be sorted
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user