mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-03-21 19:48:54 -04:00
Merge branch 'sfox4' of bitbucket.org:k1jt/wsjtx into sfox4
This commit is contained in:
commit
e439a005f1
@ -587,6 +587,7 @@ set (wsjt_FSRCS
|
||||
lib/fst4/fst4_baseline.f90
|
||||
lib/77bit/hash22calc.f90
|
||||
lib/superfox/sfox_wave.f90
|
||||
lib/superfox/sfox_wave_gfsk.f90
|
||||
)
|
||||
|
||||
# temporary workaround for a gfortran v7.3 ICE on Fedora 27 64-bit
|
||||
|
@ -70,9 +70,10 @@ void Modulator::start (QString mode, unsigned symbolsLength, double framesPerSym
|
||||
m_bFastMode=fastMode;
|
||||
m_TRperiod=TRperiod;
|
||||
unsigned delay_ms=1000;
|
||||
if(mode=="FT8" or (mode=="FST4" and m_nsps==720)) delay_ms=500; //FT8, FST4-15
|
||||
if(mode=="Q65" and m_nsps<=3600) delay_ms=500; //Q65-15 and Q65-30
|
||||
if(mode=="FT4") delay_ms=300; //FT4
|
||||
if((mode=="FT8" and m_nsps==1920) or (mode=="FST4" and m_nsps==720)) delay_ms=500; //FT8, FST4-15
|
||||
if((mode=="FT8" and m_nsps==1024)) delay_ms=400; //SuperFox Qary Polar Code transmission
|
||||
if(mode=="Q65" and m_nsps<=3600) delay_ms=500; //Q65-15 and Q65-30
|
||||
if(mode=="FT4") delay_ms=300; //FT4
|
||||
|
||||
// noise generator parameters
|
||||
if (m_addNoise) {
|
||||
|
@ -11,6 +11,70 @@
|
||||
|
||||
Copyright 2001 - 2024 by Joe Taylor, K1JT, and the WSJT Development Team
|
||||
|
||||
Release: WSJT-X 2.7.0-rc5
|
||||
July 1, 2024
|
||||
-------------------------
|
||||
|
||||
WSJT-X 2.7.0 Release Candidate 5 primarily introduces a new "SuperFox
|
||||
and SuperHound" mode, a powerful new tool that helps DXpeditions to make
|
||||
digital QSOs at very high rates. Furthermore, it brings some fixes and
|
||||
other improvements.
|
||||
|
||||
SuperFox and SuperHound mode:
|
||||
|
||||
- The SuperFox mode behaves operationally like the present Fox and Hounds
|
||||
but uses a constant envelope waveform for Fox’s transmissions rather
|
||||
than sending concurrent streams of up to five normal FT8 signals. This
|
||||
has the advantage that up to 9 messages can be transmitted without
|
||||
getting a signal-strength penalty, resulting in a system gain of approx.
|
||||
+10 dB compared to the conventional Fox/Hound operation with 5 slots!
|
||||
|
||||
- Hounds chasing the DX station transmit normal FT8 signals, as in the
|
||||
already familiar Fox and Hound mode.
|
||||
|
||||
- Important: Hounds must use at least WSJT-X 2.7.0-rc5 to be able to
|
||||
receive SuperFox messages.
|
||||
|
||||
- When in SuperFox mode, Hound stations can call now also below 1000 Hz.
|
||||
|
||||
- SuperFox Operation requires the Fox operator to use a valid key. Such
|
||||
messages then contain a digital signature. Authorized keys will be
|
||||
issued in advance for legitimate DXpeditions by the Northern California
|
||||
DX Foundation.
|
||||
|
||||
- Hounds will see the "Super Hound" label turn to green when a verified
|
||||
SuperFox message arrives, as well as a "CALLSIGN verified" message.
|
||||
|
||||
- Hound Operation should begin by selecting Special operating activity,
|
||||
SuperFox, and Hound on the Settings / Advanced page. Alternatively,
|
||||
right-clicking on the FT8 buttons toggles SuperFox mode on/off.
|
||||
It works both when in Hound or in Fox mode. This allows quick switching
|
||||
between SuperFox and the normal Fox and Hound operation.
|
||||
|
||||
- SuperFox stations can send free text messages of up to 26 characters.
|
||||
|
||||
Other enhancements:
|
||||
|
||||
- Fixed a flaw that caused "Log automatically" to not work for the ARRL
|
||||
Digi Contest mode.
|
||||
|
||||
- Control elements for special operating activities are now disabled
|
||||
if the respective function is not applicable.
|
||||
|
||||
- Fixed a long-standing error that caused "Start new period decodes at
|
||||
top" to stop working properly after some time.
|
||||
|
||||
- Right-click mouse press events are now less error-prone.
|
||||
|
||||
- Improved the readability of the first line when "Start new period
|
||||
decodes at top" is checked.
|
||||
|
||||
- 4-digit grids are now logged for certain contest modes to ensure that
|
||||
the log complies with the contest rules.
|
||||
|
||||
- The Fox Tx frequency is now saved and restored separately.
|
||||
|
||||
|
||||
Release: WSJT-X 2.7.0-rc4
|
||||
March 11, 2024
|
||||
-------------------------
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
78
lib/superfox/sfox_wave_gfsk.f90
Normal file
78
lib/superfox/sfox_wave_gfsk.f90
Normal file
@ -0,0 +1,78 @@
|
||||
subroutine sfox_wave_gfsk(fname)
|
||||
|
||||
! Called by WSJT-X when it's time for SuperFox to transmit. Reads array
|
||||
! itone(1:151) from disk file 'sfox_2.dat' in the writable data directory.
|
||||
! Generates a GFSK waveform with short ramp-up and ramp-down symbols of
|
||||
! duration NSPS/BT at the beginning and end of the waveform.
|
||||
|
||||
parameter (NWAVE=(160+2)*134400*4) !Max WSJT-X waveform (FST4-1800 at 48kHz)
|
||||
parameter (NSYM=151,NSPS=1024*4)
|
||||
parameter (NPTS=(NSYM+2)*NSPS)
|
||||
parameter (BT=8)
|
||||
character*(*) fname
|
||||
integer itone(151)
|
||||
real*8 dt,twopi,f0,baud,phi,dphi_peak
|
||||
real*8 dphi(0:NPTS-1)
|
||||
real*8 pulse(3*NSPS)
|
||||
logical first/.true./
|
||||
|
||||
common/foxcom/wave(NWAVE)
|
||||
save first,twopi,dt,hmod,dphi_peak,pulse
|
||||
|
||||
if(first) then
|
||||
fsample=48000.0
|
||||
twopi=8.d0*atan(1.d0)
|
||||
dt=1.d0/fsample
|
||||
hmod=1.0
|
||||
dphi_peak=twopi*hmod/real(NSPS)
|
||||
do i=1,3*NSPS
|
||||
tt=(i-1.5*NSPS)/real(NSPS)
|
||||
pulse(i)=gfsk_pulse(BT,tt)
|
||||
enddo
|
||||
first=.false.
|
||||
endif
|
||||
|
||||
open(25,file=trim(fname),status='unknown',err=999)
|
||||
read(25,'(20i4)',err=999,end=999) itone
|
||||
close(25)
|
||||
if(itone(1).lt.0 .or. itone(1).gt.128) go to 999
|
||||
|
||||
! Generate the SuperFox waveform.
|
||||
|
||||
dphi=0.d0
|
||||
do j=1,NSYM
|
||||
ib=(j-1)*NSPS
|
||||
ie=ib+3*NSPS-1
|
||||
dphi(ib:ie)=dphi(ib:ie)+dphi_peak*pulse(1:3*NSPS)*itone(j)
|
||||
enddo
|
||||
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
|
||||
k=0
|
||||
do j=1,NSPS*(NSYM+2)-1
|
||||
k=k+1
|
||||
wave(k)=sin(phi)
|
||||
phi=phi+dphi(j)
|
||||
enddo
|
||||
|
||||
! Add raised cosine ramps at the beginning and end of the waveform.
|
||||
! Since the modulator expects an integral number of symbols, dummy
|
||||
! symbols are added to the beginning and end of the waveform to
|
||||
! hold the ramps. All but nramp of the samples in each dummy
|
||||
! symbol will be zero.
|
||||
|
||||
nramp=NSPS/BT
|
||||
wave(1:NSPS-nramp)=0.0
|
||||
wave(NSPS-nramp+1:NSPS)=wave(NSPS-nramp+1:NSPS) * &
|
||||
(1.0-cos(twopi*(/(i,i=0,nramp-1)/)/(2.0*nramp)))/2.0
|
||||
k1=(NSYM+1)*NSPS+1
|
||||
wave(k1:k1+nramp-1)=wave(k1:k1+nramp-1) * &
|
||||
(1.0+cos(twopi*(/(i,i=0,nramp-1)/)/(2.0*nramp)))/2.0
|
||||
wave(k1+nramp:NPTS)=0.0
|
||||
|
||||
999 return
|
||||
end subroutine sfox_wave_gfsk
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -178,7 +178,7 @@ extern "C" {
|
||||
|
||||
void foxgen_(bool* bSuperFox, char const * fname, FCL len);
|
||||
|
||||
void sfox_wave_(char const * fname, FCL len);
|
||||
void sfox_wave_gfsk_(char const * fname, FCL len);
|
||||
|
||||
void plotsave_(float swide[], int* m_w , int* m_h1, int* irow);
|
||||
|
||||
@ -4172,7 +4172,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
||||
verified = true;
|
||||
ui->labDXped->setStyleSheet("QLabel {background-color: #00ff00; color: black;}");
|
||||
} else {
|
||||
verified = false;
|
||||
if (decodedtext0.mid(5,2).contains("00") or decodedtext0.mid(5,2).contains("30")) verified = false;
|
||||
}
|
||||
if ((!verified && ui->labDXped->isVisible()) or ui->labDXped->text()!="Super Hound")
|
||||
ui->labDXped->setStyleSheet("QLabel {background-color: red; color: white;}");
|
||||
@ -11021,5 +11021,5 @@ void MainWindow::sfox_tx()
|
||||
p2.start(QDir::toNativeSeparators(m_appDir)+QDir::separator()+"sftx", args);
|
||||
p2.waitForFinished();
|
||||
auto fname2 {QDir::toNativeSeparators(m_config.writeable_data_dir().absoluteFilePath("sfox_2.dat")).toLocal8Bit()};
|
||||
sfox_wave_(fname2.constData(), (FCL)fname2.size());
|
||||
sfox_wave_gfsk_(fname2.constData(), (FCL)fname2.size());
|
||||
}
|
||||
|
@ -50,7 +50,7 @@
|
||||
#define NUM_MSK144_SYMBOLS 144 //s8 + d48 + s8 + d80
|
||||
#define NUM_Q65_SYMBOLS 85 //63 data + 22 sync
|
||||
#define NUM_FT8_SYMBOLS 79
|
||||
#define NUM_SUPERFOX_SYMBOLS 151
|
||||
#define NUM_SUPERFOX_SYMBOLS 153 //24 sync + 127 data + 2 ramp up/down
|
||||
#define NUM_FT4_SYMBOLS 105
|
||||
#define NUM_FST4_SYMBOLS 160 //240/2 data + 5*8 sync
|
||||
#define NUM_CW_SYMBOLS 250
|
||||
|
Loading…
Reference in New Issue
Block a user