Add code to support use of SuperFox digital signatures.

This commit is contained in:
Joe Taylor 2024-05-07 09:10:57 -04:00
parent e1be3ad4e8
commit 3812f2f9bc
4 changed files with 9 additions and 4 deletions

View File

@ -66,6 +66,7 @@ typedef struct dec_data {
char hisgrid[6]; char hisgrid[6];
bool b_even_seq; bool b_even_seq;
bool b_superfox; bool b_superfox;
int yymmdd;
} params; } params;
} dec_data_t; } dec_data_t;

View File

@ -67,7 +67,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
ntr0=params%ntr ntr0=params%ntr
rms=sqrt(dot_product(float(id2(1:180000)), & rms=sqrt(dot_product(float(id2(1:180000)), &
float(id2(1:180000)))/180000.0) float(id2(1:180000)))/180000.0)
if(rms.lt.3.0) go to 800 if(rms.lt.0.5) go to 800
!cast C character arrays to Fortran character strings !cast C character arrays to Fortran character strings
datetime=transfer(params%datetime, datetime) datetime=transfer(params%datetime, datetime)
@ -143,7 +143,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
if(params%nzhsym.lt.50) go to 800 if(params%nzhsym.lt.50) go to 800
! Call the superFox decoder ! Call the superFox decoder
open(47,file='fort.47',status='unknown',access='stream') open(47,file='fort.47',status='unknown',access='stream')
write(47) params%nutc,id2(1:20),id2(1:180000) write(47) params%yymmdd,params%nutc,id2(1:20),id2(1:180000)
close(47) close(47)
call execute_command_line('.\sfrx fort.47') call execute_command_line('.\sfrx fort.47')
else else

View File

@ -49,6 +49,7 @@
character(kind=c_char) :: hisgrid(6) character(kind=c_char) :: hisgrid(6)
logical(c_bool) :: b_even_seq logical(c_bool) :: b_even_seq
logical(c_bool) :: b_superfox logical(c_bool) :: b_superfox
integer(c_int) :: yymmdd
end type params_block end type params_block
type, bind(C) :: dec_data type, bind(C) :: dec_data

View File

@ -3132,6 +3132,7 @@ void MainWindow::read_wav_file (QString const& fname)
dec_data.params.newdat = 0; dec_data.params.newdat = 0;
} }
dec_data.params.yymmdd=basename.left(6).toInt();
if(basename.mid(0,10)=="000000_000" && m_mode == "FT8") { if(basename.mid(0,10)=="000000_000" && m_mode == "FT8") {
int isec=15*basename.mid(10,3).toInt(); int isec=15*basename.mid(10,3).toInt();
int ih=isec/3600; int ih=isec/3600;
@ -3406,8 +3407,10 @@ void MainWindow::decode() //decode()
m_dateTimeLastTX = now.addSecs(-900); m_dateTimeLastTX = now.addSecs(-900);
dec_data.params.lapcqonly=true; dec_data.params.lapcqonly=true;
} }
if( m_diskData ) { if(m_diskData) {
dec_data.params.lapcqonly=false; dec_data.params.lapcqonly=false;
} else {
dec_data.params.yymmdd=-1;
} }
if(!m_dataAvailable or m_TRperiod==0.0) return; if(!m_dataAvailable or m_TRperiod==0.0) return;
ui->DecodeButton->setChecked (true); ui->DecodeButton->setChecked (true);
@ -10940,7 +10943,7 @@ void MainWindow::sfox_tx()
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()};
QStringList args{fname}; QStringList args{fname};
args.append(m_config.FoxKey()); args.append(m_config.FoxKey());
qDebug() << "aa" << args; // qDebug() << "aa" << args;
p2.start(QDir::toNativeSeparators(m_appDir)+QDir::separator()+"sftx", args); p2.start(QDir::toNativeSeparators(m_appDir)+QDir::separator()+"sftx", args);
p2.waitForFinished(); p2.waitForFinished();
auto fname2 {QDir::toNativeSeparators(m_config.writeable_data_dir().absoluteFilePath("sfox_2.dat")).toLocal8Bit()}; auto fname2 {QDir::toNativeSeparators(m_config.writeable_data_dir().absoluteFilePath("sfox_2.dat")).toLocal8Bit()};