mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-21 19:55:20 -05:00
Add WW_DIGI to the special activities section. Make necessary changes to
the decoders. Also, an experimental change to the FT4 decoder to base AP decoding passes on 4-symbol block detection instead of single symbol detection. This provides about 1 dB improvement on the AWGN channel. Sensitivity changes on other channels are TBD.
This commit is contained in:
parent
9aaffb9252
commit
70b84478f0
@ -1084,6 +1084,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network
|
|||||||
ui_->special_op_activity_button_group->setId (ui_->rbEU_VHF_Contest, static_cast<int> (SpecialOperatingActivity::EU_VHF));
|
ui_->special_op_activity_button_group->setId (ui_->rbEU_VHF_Contest, static_cast<int> (SpecialOperatingActivity::EU_VHF));
|
||||||
ui_->special_op_activity_button_group->setId (ui_->rbField_Day, static_cast<int> (SpecialOperatingActivity::FIELD_DAY));
|
ui_->special_op_activity_button_group->setId (ui_->rbField_Day, static_cast<int> (SpecialOperatingActivity::FIELD_DAY));
|
||||||
ui_->special_op_activity_button_group->setId (ui_->rbRTTY_Roundup, static_cast<int> (SpecialOperatingActivity::RTTY));
|
ui_->special_op_activity_button_group->setId (ui_->rbRTTY_Roundup, static_cast<int> (SpecialOperatingActivity::RTTY));
|
||||||
|
ui_->special_op_activity_button_group->setId (ui_->rbWW_DIGI, static_cast<int> (SpecialOperatingActivity::WW_DIGI));
|
||||||
ui_->special_op_activity_button_group->setId (ui_->rbFox, static_cast<int> (SpecialOperatingActivity::FOX));
|
ui_->special_op_activity_button_group->setId (ui_->rbFox, static_cast<int> (SpecialOperatingActivity::FOX));
|
||||||
ui_->special_op_activity_button_group->setId (ui_->rbHound, static_cast<int> (SpecialOperatingActivity::HOUND));
|
ui_->special_op_activity_button_group->setId (ui_->rbHound, static_cast<int> (SpecialOperatingActivity::HOUND));
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ public:
|
|||||||
bool highlight_only_fields () const;
|
bool highlight_only_fields () const;
|
||||||
bool include_WAE_entities () const;
|
bool include_WAE_entities () const;
|
||||||
|
|
||||||
enum class SpecialOperatingActivity {NONE, NA_VHF, EU_VHF, FIELD_DAY, RTTY, FOX, HOUND};
|
enum class SpecialOperatingActivity {NONE, NA_VHF, EU_VHF, FIELD_DAY, RTTY, WW_DIGI, FOX, HOUND};
|
||||||
SpecialOperatingActivity special_op_id () const;
|
SpecialOperatingActivity special_op_id () const;
|
||||||
|
|
||||||
struct CalibrationParams
|
struct CalibrationParams
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>554</width>
|
<width>670</width>
|
||||||
<height>563</height>
|
<height>617</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -559,7 +559,7 @@ quiet period when decoding is done.</string>
|
|||||||
<property name="editable">
|
<property name="editable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentText">
|
<property name="currentText" stdset="0">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="insertPolicy">
|
<property name="insertPolicy">
|
||||||
@ -1021,7 +1021,7 @@ other hardware interface for PTT.</string>
|
|||||||
<property name="editable">
|
<property name="editable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentText">
|
<property name="currentText" stdset="0">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
@ -2261,9 +2261,6 @@ Right click for insert and delete options.</string>
|
|||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Enable or disable using the check boxes and right-click an item to change or unset the foreground color, background color, or reset the item to default values. Drag and drop the items to change their priority, higher in the list is higher in priority.</p><p>Note that each foreground or background color may be either set or unset, unset means that it is not allocated for that item's type and lower priority items may apply.</p></body></html></string>
|
<string><html><head/><body><p>Enable or disable using the check boxes and right-click an item to change or unset the foreground color, background color, or reset the item to default values. Drag and drop the items to change their priority, higher in the list is higher in priority.</p><p>Note that each foreground or background color may be either set or unset, unset means that it is not allocated for that item's type and lower priority items may apply.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizeAdjustPolicy">
|
|
||||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
|
||||||
</property>
|
|
||||||
<property name="editTriggers">
|
<property name="editTriggers">
|
||||||
<set>QAbstractItemView::NoEditTriggers</set>
|
<set>QAbstractItemView::NoEditTriggers</set>
|
||||||
</property>
|
</property>
|
||||||
@ -2572,6 +2569,19 @@ Right click for insert and delete options.</string>
|
|||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1" rowspan="3">
|
||||||
|
<spacer name="horizontalSpacer_11">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
<item row="2" column="3">
|
<item row="2" column="3">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_18" stretch="2,1,1">
|
<layout class="QHBoxLayout" name="horizontalLayout_18" stretch="2,1,1">
|
||||||
<item>
|
<item>
|
||||||
@ -2635,19 +2645,6 @@ Right click for insert and delete options.</string>
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1" rowspan="3">
|
|
||||||
<spacer name="horizontalSpacer_11">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="3">
|
<item row="1" column="3">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_17" stretch="2,1,1">
|
<layout class="QHBoxLayout" name="horizontalLayout_17" stretch="2,1,1">
|
||||||
<item>
|
<item>
|
||||||
@ -2711,6 +2708,25 @@ Right click for insert and delete options.</string>
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QRadioButton" name="rbWW_DIGI">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>World-Wide Digi-mode contest</p><p><br/></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>WW Digi Contest</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">special_op_activity_button_group</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -3093,12 +3109,12 @@ Right click for insert and delete options.</string>
|
|||||||
</connections>
|
</connections>
|
||||||
<buttongroups>
|
<buttongroups>
|
||||||
<buttongroup name="split_mode_button_group"/>
|
<buttongroup name="split_mode_button_group"/>
|
||||||
<buttongroup name="CAT_data_bits_button_group"/>
|
<buttongroup name="TX_audio_source_button_group"/>
|
||||||
|
<buttongroup name="TX_mode_button_group"/>
|
||||||
|
<buttongroup name="PTT_method_button_group"/>
|
||||||
<buttongroup name="special_op_activity_button_group"/>
|
<buttongroup name="special_op_activity_button_group"/>
|
||||||
<buttongroup name="CAT_handshake_button_group"/>
|
<buttongroup name="CAT_handshake_button_group"/>
|
||||||
<buttongroup name="PTT_method_button_group"/>
|
<buttongroup name="CAT_data_bits_button_group"/>
|
||||||
<buttongroup name="CAT_stop_bits_button_group"/>
|
<buttongroup name="CAT_stop_bits_button_group"/>
|
||||||
<buttongroup name="TX_mode_button_group"/>
|
|
||||||
<buttongroup name="TX_audio_source_button_group"/>
|
|
||||||
</buttongroups>
|
</buttongroups>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -65,7 +65,6 @@ extern struct dec_data {
|
|||||||
char mygrid[6];
|
char mygrid[6];
|
||||||
char hiscall[12];
|
char hiscall[12];
|
||||||
char hisgrid[6];
|
char hisgrid[6];
|
||||||
char cqstr[4];
|
|
||||||
} params;
|
} params;
|
||||||
} dec_data;
|
} dec_data;
|
||||||
|
|
||||||
|
@ -40,7 +40,6 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
character(len=20) :: datetime
|
character(len=20) :: datetime
|
||||||
character(len=12) :: mycall, hiscall
|
character(len=12) :: mycall, hiscall
|
||||||
character(len=6) :: mygrid, hisgrid
|
character(len=6) :: mygrid, hisgrid
|
||||||
character(len=4) :: cqstr
|
|
||||||
save
|
save
|
||||||
type(counting_jt4_decoder) :: my_jt4
|
type(counting_jt4_decoder) :: my_jt4
|
||||||
type(counting_jt65_decoder) :: my_jt65
|
type(counting_jt65_decoder) :: my_jt65
|
||||||
@ -54,7 +53,6 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
hiscall=transfer(params%hiscall,hiscall)
|
hiscall=transfer(params%hiscall,hiscall)
|
||||||
mygrid=transfer(params%mygrid,mygrid)
|
mygrid=transfer(params%mygrid,mygrid)
|
||||||
hisgrid=transfer(params%hisgrid,hisgrid)
|
hisgrid=transfer(params%hisgrid,hisgrid)
|
||||||
cqstr=transfer(params%cqstr,cqstr)
|
|
||||||
|
|
||||||
! initialize decode counts
|
! initialize decode counts
|
||||||
my_jt4%decoded = 0
|
my_jt4%decoded = 0
|
||||||
@ -88,7 +86,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
if(params%nmode.eq.8) then
|
if(params%nmode.eq.8) then
|
||||||
! We're in FT8 mode
|
! We're in FT8 mode
|
||||||
|
|
||||||
if(ncontest.eq.5) then
|
if(ncontest.eq.6) then
|
||||||
! Fox mode: initialize and open houndcallers.txt
|
! Fox mode: initialize and open houndcallers.txt
|
||||||
inquire(file=trim(temp_dir)//'/houndcallers.txt',exist=ex)
|
inquire(file=trim(temp_dir)//'/houndcallers.txt',exist=ex)
|
||||||
if(.not.ex) then
|
if(.not.ex) then
|
||||||
@ -117,7 +115,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
endif
|
endif
|
||||||
j=0
|
j=0
|
||||||
|
|
||||||
if(ncontest.eq.5) then
|
if(ncontest.eq.6) then
|
||||||
! Fox mode: save decoded Hound calls for possible selection by FoxOp
|
! Fox mode: save decoded Hound calls for possible selection by FoxOp
|
||||||
rewind 19
|
rewind 19
|
||||||
if(nfox.eq.0) then
|
if(nfox.eq.0) then
|
||||||
@ -155,7 +153,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
call timer('decft4 ',0)
|
call timer('decft4 ',0)
|
||||||
call my_ft4%decode(ft4_decoded,id2,params%nQSOProgress,params%nfqso, &
|
call my_ft4%decode(ft4_decoded,id2,params%nQSOProgress,params%nfqso, &
|
||||||
params%nutc,params%nfa,params%nfb,params%ndepth, &
|
params%nutc,params%nfa,params%nfb,params%ndepth, &
|
||||||
logical(params%lapcqonly),ncontest,cqstr,mycall,hiscall)
|
logical(params%lapcqonly),ncontest,mycall,hiscall)
|
||||||
call timer('decft4 ',1)
|
call timer('decft4 ',1)
|
||||||
go to 800
|
go to 800
|
||||||
endif
|
endif
|
||||||
@ -282,7 +280,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample)
|
|||||||
1010 format('<DecodeFinished>',2i4)
|
1010 format('<DecodeFinished>',2i4)
|
||||||
call flush(6)
|
call flush(6)
|
||||||
close(13)
|
close(13)
|
||||||
if(ncontest.eq.5) close(19)
|
if(ncontest.eq.6) close(19)
|
||||||
if(params%nmode.eq.4 .or. params%nmode.eq.65) close(14)
|
if(params%nmode.eq.4 .or. params%nmode.eq.65) close(14)
|
||||||
|
|
||||||
return
|
return
|
||||||
@ -536,7 +534,7 @@ contains
|
|||||||
write(13,1002) params%nutc,nint(sync),snr,dt,freq,0,decoded0
|
write(13,1002) params%nutc,nint(sync),snr,dt,freq,0,decoded0
|
||||||
1002 format(i6.6,i4,i5,f6.1,f8.0,i4,3x,a37,' FT8')
|
1002 format(i6.6,i4,i5,f6.1,f8.0,i4,3x,a37,' FT8')
|
||||||
|
|
||||||
if(ncontest.eq.5) then
|
if(ncontest.eq.6) then
|
||||||
i1=index(decoded0,' ')
|
i1=index(decoded0,' ')
|
||||||
i2=i1 + index(decoded0(i1+1:),' ')
|
i2=i1 + index(decoded0(i1+1:),' ')
|
||||||
i3=i2 + index(decoded0(i2+1:),' ')
|
i3=i2 + index(decoded0(i2+1:),' ')
|
||||||
|
@ -24,7 +24,7 @@ module ft4_decode
|
|||||||
contains
|
contains
|
||||||
|
|
||||||
subroutine decode(this,callback,iwave,nQSOProgress,nfqso, &
|
subroutine decode(this,callback,iwave,nQSOProgress,nfqso, &
|
||||||
nutc,nfa,nfb,ndepth,lapcqonly,ncontest,cqstr,mycall,hiscall)
|
nutc,nfa,nfb,ndepth,lapcqonly,ncontest,mycall,hiscall)
|
||||||
use timer_module, only: timer
|
use timer_module, only: timer
|
||||||
use packjt77
|
use packjt77
|
||||||
include 'ft4/ft4_params.f90'
|
include 'ft4/ft4_params.f90'
|
||||||
@ -39,7 +39,6 @@ contains
|
|||||||
character*12 mycall,hiscall
|
character*12 mycall,hiscall
|
||||||
character*12 mycall0,hiscall0
|
character*12 mycall0,hiscall0
|
||||||
character*6 hhmmss
|
character*6 hhmmss
|
||||||
character*4 cqstr,cqstr0
|
|
||||||
|
|
||||||
complex cd2(0:NDMAX-1) !Complex waveform
|
complex cd2(0:NDMAX-1) !Complex waveform
|
||||||
complex cb(0:NDMAX-1)
|
complex cb(0:NDMAX-1)
|
||||||
@ -61,7 +60,7 @@ contains
|
|||||||
integer i4tone(103)
|
integer i4tone(103)
|
||||||
integer nappasses(0:5) ! # of decoding passes for QSO States 0-5
|
integer nappasses(0:5) ! # of decoding passes for QSO States 0-5
|
||||||
integer naptypes(0:5,4) ! nQSOProgress, decoding pass
|
integer naptypes(0:5,4) ! nQSOProgress, decoding pass
|
||||||
integer mcq(29),mcqru(29),mcqfd(29),mcqtest(29),mcqscc(29)
|
integer mcq(29),mcqru(29),mcqfd(29),mcqtest(29),mcqww(29)
|
||||||
integer mrrr(19),m73(19),mrr73(19)
|
integer mrrr(19),m73(19),mrr73(19)
|
||||||
|
|
||||||
logical nohiscall,unpk77_success
|
logical nohiscall,unpk77_success
|
||||||
@ -75,7 +74,7 @@ contains
|
|||||||
data mcqru/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0/
|
data mcqru/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0/
|
||||||
data mcqfd/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0/
|
data mcqfd/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0/
|
||||||
data mcqtest/0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0/
|
data mcqtest/0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0/
|
||||||
data mcqscc/0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,1,0,1,1,0,1,0,0/
|
data mcqww/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0/
|
||||||
data mrrr/0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1/
|
data mrrr/0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1/
|
||||||
data m73/0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1/
|
data m73/0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1/
|
||||||
data mrr73/0,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0,1/
|
data mrr73/0,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0,1/
|
||||||
@ -83,7 +82,7 @@ contains
|
|||||||
1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,1, &
|
1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,1, &
|
||||||
0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,0,1,0,1/
|
0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,0,1,0,1/
|
||||||
save fs,dt,tt,txt,twopi,h,first,apbits,nappasses,naptypes, &
|
save fs,dt,tt,txt,twopi,h,first,apbits,nappasses,naptypes, &
|
||||||
mycall0,hiscall0,cqstr0,ctwk2
|
mycall0,hiscall0,ctwk2
|
||||||
|
|
||||||
this%callback => callback
|
this%callback => callback
|
||||||
hhmmss=cdatetime0(8:13)
|
hhmmss=cdatetime0(8:13)
|
||||||
@ -107,7 +106,7 @@ contains
|
|||||||
mcqru=2*mod(mcqru+rvec(1:29),2)-1
|
mcqru=2*mod(mcqru+rvec(1:29),2)-1
|
||||||
mcqfd=2*mod(mcqfd+rvec(1:29),2)-1
|
mcqfd=2*mod(mcqfd+rvec(1:29),2)-1
|
||||||
mcqtest=2*mod(mcqtest+rvec(1:29),2)-1
|
mcqtest=2*mod(mcqtest+rvec(1:29),2)-1
|
||||||
mcqscc=2*mod(mcqscc+rvec(1:29),2)-1
|
mcqww=2*mod(mcqww+rvec(1:29),2)-1
|
||||||
mrrr=2*mod(mrrr+rvec(59:77),2)-1
|
mrrr=2*mod(mrrr+rvec(59:77),2)-1
|
||||||
m73=2*mod(m73+rvec(59:77),2)-1
|
m73=2*mod(m73+rvec(59:77),2)-1
|
||||||
mrr73=2*mod(mrr73+rvec(59:77),2)-1
|
mrr73=2*mod(mrr73+rvec(59:77),2)-1
|
||||||
@ -136,7 +135,6 @@ contains
|
|||||||
|
|
||||||
mycall0=''
|
mycall0=''
|
||||||
hiscall0=''
|
hiscall0=''
|
||||||
cqstr0=''
|
|
||||||
first=.false.
|
first=.false.
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -320,7 +318,7 @@ contains
|
|||||||
npasses=3+nappasses(nQSOProgress)
|
npasses=3+nappasses(nQSOProgress)
|
||||||
if(lapcqonly) npasses=4
|
if(lapcqonly) npasses=4
|
||||||
if(ndepth.eq.1) npasses=3
|
if(ndepth.eq.1) npasses=3
|
||||||
if(ncontest.ge.5) npasses=3 ! Don't support Fox and Hound
|
if(ncontest.ge.6) npasses=3 ! Don't support Fox and Hound
|
||||||
do ipass=1,npasses
|
do ipass=1,npasses
|
||||||
if(ipass.eq.1) llr=llra
|
if(ipass.eq.1) llr=llra
|
||||||
if(ipass.eq.2) llr=llrb
|
if(ipass.eq.2) llr=llrb
|
||||||
@ -331,7 +329,7 @@ contains
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if(ipass .gt. 3) then
|
if(ipass .gt. 3) then
|
||||||
llrd=llra
|
llrd=llrc
|
||||||
iaptype=naptypes(nQSOProgress,ipass-3)
|
iaptype=naptypes(nQSOProgress,ipass-3)
|
||||||
if(lapcqonly) iaptype=1
|
if(lapcqonly) iaptype=1
|
||||||
|
|
||||||
@ -340,29 +338,30 @@ contains
|
|||||||
! 2 : EU_VHF
|
! 2 : EU_VHF
|
||||||
! 3 : FIELD DAY
|
! 3 : FIELD DAY
|
||||||
! 4 : RTTY
|
! 4 : RTTY
|
||||||
! 5 : FOX
|
! 5 : WW_DIGI
|
||||||
! 6 : HOUND
|
! 6 : FOX
|
||||||
|
! 7 : HOUND
|
||||||
!
|
!
|
||||||
! Conditions that cause us to bail out of AP decoding
|
! Conditions that cause us to bail out of AP decoding
|
||||||
napwid=80
|
napwid=80
|
||||||
if(ncontest.le.4 .and. iaptype.ge.3 .and. (abs(f1-nfqso).gt.napwid) ) cycle
|
if(ncontest.le.5 .and. iaptype.ge.3 .and. (abs(f1-nfqso).gt.napwid) ) cycle
|
||||||
if(iaptype.ge.2 .and. apbits(1).gt.1) cycle ! No, or nonstandard, mycall
|
if(iaptype.ge.2 .and. apbits(1).gt.1) cycle ! No, or nonstandard, mycall
|
||||||
if(iaptype.ge.3 .and. apbits(30).gt.1) cycle ! No, or nonstandard, dxcall
|
if(iaptype.ge.3 .and. apbits(30).gt.1) cycle ! No, or nonstandard, dxcall
|
||||||
|
|
||||||
if(iaptype.eq.1) then ! CQ or CQ TEST or CQ FD or CQ RU or CQ SCC
|
if(iaptype.eq.1) then ! CQ or CQ TEST or CQ FD or CQ RU or CQ WW
|
||||||
apmask=0
|
apmask=0
|
||||||
apmask(1:29)=1
|
apmask(1:29)=1
|
||||||
if( ncontest.eq.0 ) llrd(1:29)=apmag*mcq(1:29)
|
if( ncontest.eq.0 ) llrd(1:29)=apmag*mcq(1:29)
|
||||||
if( ncontest.eq.1 ) llrd(1:29)=apmag*mcqtest(1:29)
|
if( ncontest.eq.1 ) llrd(1:29)=apmag*mcqtest(1:29)
|
||||||
if( ncontest.eq.2 ) llrd(1:29)=apmag*mcqtest(1:29)
|
if( ncontest.eq.2 ) llrd(1:29)=apmag*mcqtest(1:29)
|
||||||
if( ncontest.eq.3 ) llrd(1:29)=apmag*mcqfd(1:29)
|
if( ncontest.eq.3 ) llrd(1:29)=apmag*mcqfd(1:29)
|
||||||
if( ncontest.eq.4 .and. cqstr(1:2)=='RU') llrd(1:29)=apmag*mcqru(1:29)
|
if( ncontest.eq.4 ) llrd(1:29)=apmag*mcqru(1:29)
|
||||||
if( ncontest.eq.4 .and. cqstr(1:3)=='SCC') llrd(1:29)=apmag*mcqscc(1:29)
|
if( ncontest.eq.5 ) llrd(1:29)=apmag*mcqww(1:29)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if(iaptype.eq.2) then ! MyCall,???,???
|
if(iaptype.eq.2) then ! MyCall,???,???
|
||||||
apmask=0
|
apmask=0
|
||||||
if(ncontest.eq.0.or.ncontest.eq.1) then
|
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.5) then
|
||||||
apmask(1:29)=1
|
apmask(1:29)=1
|
||||||
llrd(1:29)=apmag*apbits(1:29)
|
llrd(1:29)=apmag*apbits(1:29)
|
||||||
else if(ncontest.eq.2) then
|
else if(ncontest.eq.2) then
|
||||||
@ -379,14 +378,14 @@ contains
|
|||||||
|
|
||||||
if(iaptype.eq.3) then ! MyCall,DxCall,???
|
if(iaptype.eq.3) then ! MyCall,DxCall,???
|
||||||
apmask=0
|
apmask=0
|
||||||
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.2) then
|
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.2.or.ncontest.eq.5) then
|
||||||
apmask(1:58)=1
|
apmask(1:58)=1
|
||||||
llrd(1:58)=apmag*apbits(1:58)
|
llrd(1:58)=apmag*apbits(1:58)
|
||||||
else if(ncontest.eq.3) then ! Field Day
|
else if(ncontest.eq.3) then ! Field Day
|
||||||
apmask(1:56)=1
|
apmask(1:56)=1
|
||||||
llrd(1:28)=apmag*apbits(1:28)
|
llrd(1:28)=apmag*apbits(1:28)
|
||||||
llrd(29:56)=apmag*aphis_fd(1:28)
|
llrd(29:56)=apmag*aphis_fd(1:28)
|
||||||
else if(ncontest.eq.4) then ! RTTY RU
|
else if(ncontest.eq.4) then
|
||||||
apmask(2:57)=1
|
apmask(2:57)=1
|
||||||
llrd(2:29)=apmag*apmy_ru(1:28)
|
llrd(2:29)=apmag*apmy_ru(1:28)
|
||||||
llrd(30:57)=apmag*apbits(30:57)
|
llrd(30:57)=apmag*apbits(30:57)
|
||||||
@ -395,7 +394,7 @@ contains
|
|||||||
|
|
||||||
if(iaptype.eq.4 .or. iaptype.eq.5 .or. iaptype.eq.6) then
|
if(iaptype.eq.4 .or. iaptype.eq.5 .or. iaptype.eq.6) then
|
||||||
apmask=0
|
apmask=0
|
||||||
if(ncontest.le.4) then
|
if(ncontest.le.5) then
|
||||||
apmask(1:77)=1 ! mycall, hiscall, RRR|73|RR73
|
apmask(1:77)=1 ! mycall, hiscall, RRR|73|RR73
|
||||||
if(iaptype.eq.6) llrd(1:77)=apmag*apbits(1:77)
|
if(iaptype.eq.6) llrd(1:77)=apmag*apbits(1:77)
|
||||||
endif
|
endif
|
||||||
@ -452,11 +451,11 @@ contains
|
|||||||
call this%callback(smax,nsnr,xdt,f1,message,iaptype,qual)
|
call this%callback(smax,nsnr,xdt,f1,message,iaptype,qual)
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
enddo !Sequence estimation
|
enddo !Sequence estimation
|
||||||
if(nharderror.ge.0) exit
|
if(nharderror.ge.0) exit
|
||||||
enddo !3 DT segments
|
enddo !3 DT segments
|
||||||
enddo !Candidate list
|
enddo !Candidate list
|
||||||
enddo !Subtraction loop
|
enddo !Subtraction loop
|
||||||
return
|
return
|
||||||
end subroutine decode
|
end subroutine decode
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
real dd0(15*12000)
|
real dd0(15*12000)
|
||||||
integer*1 message77(77),apmask(174),cw(174)
|
integer*1 message77(77),apmask(174),cw(174)
|
||||||
integer apsym(58)
|
integer apsym(58)
|
||||||
integer mcq(29),mcqru(29),mcqfd(29),mcqtest(29)
|
integer mcq(29),mcqru(29),mcqfd(29),mcqtest(29),mcqww(29)
|
||||||
integer mrrr(19),m73(19),mrr73(19)
|
integer mrrr(19),m73(19),mrr73(19)
|
||||||
integer itone(NN)
|
integer itone(NN)
|
||||||
integer icos7(0:6),ip(1)
|
integer icos7(0:6),ip(1)
|
||||||
@ -37,6 +37,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
data mcqru/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0/
|
data mcqru/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0/
|
||||||
data mcqfd/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0/
|
data mcqfd/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0/
|
||||||
data mcqtest/0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0/
|
data mcqtest/0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0/
|
||||||
|
data mcqww/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0/
|
||||||
data mrrr/0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1/
|
data mrrr/0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1/
|
||||||
data m73/0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1/
|
data m73/0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1/
|
||||||
data mrr73/0,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0,1/
|
data mrr73/0,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0,1/
|
||||||
@ -50,6 +51,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
mcqfd=2*mcqfd-1
|
mcqfd=2*mcqfd-1
|
||||||
mcqru=2*mcqru-1
|
mcqru=2*mcqru-1
|
||||||
mcqtest=2*mcqtest-1
|
mcqtest=2*mcqtest-1
|
||||||
|
mcqww=2*mcqww-1
|
||||||
mrrr=2*mrrr-1
|
mrrr=2*mrrr-1
|
||||||
m73=2*m73-1
|
m73=2*m73-1
|
||||||
mrr73=2*mrr73-1
|
mrr73=2*mrr73-1
|
||||||
@ -226,7 +228,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
! 6 ap pass 3
|
! 6 ap pass 3
|
||||||
! 7 ap pass 4
|
! 7 ap pass 4
|
||||||
|
|
||||||
if(lapon.or.ncontest.eq.6) then !Hounds always use AP
|
if(lapon.or.ncontest.eq.7) then !Hounds always use AP
|
||||||
if(.not.lapcqonly) then
|
if(.not.lapcqonly) then
|
||||||
npasses=3+nappasses(nQSOProgress)
|
npasses=3+nappasses(nQSOProgress)
|
||||||
else
|
else
|
||||||
@ -258,13 +260,14 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
! 2 : EU_VHF
|
! 2 : EU_VHF
|
||||||
! 3 : FIELD DAY
|
! 3 : FIELD DAY
|
||||||
! 4 : RTTY
|
! 4 : RTTY
|
||||||
! 5 : FOX
|
! 5 : WW_DIGI
|
||||||
! 6 : HOUND
|
! 6 : FOX
|
||||||
|
! 7 : HOUND
|
||||||
!
|
!
|
||||||
! Conditions that cause us to bail out of AP decoding
|
! Conditions that cause us to bail out of AP decoding
|
||||||
if(ncontest.le.4 .and. iaptype.ge.3 .and. (abs(f1-nfqso).gt.napwid .and. abs(f1-nftx).gt.napwid) ) cycle
|
if(ncontest.le.5 .and. iaptype.ge.3 .and. (abs(f1-nfqso).gt.napwid .and. abs(f1-nftx).gt.napwid) ) cycle
|
||||||
if(ncontest.eq.5) cycle ! No AP for Foxes
|
if(ncontest.eq.6) cycle ! No AP for Foxes
|
||||||
if(ncontest.eq.6.and.f1.gt.950.0) cycle ! Hounds use AP only for signals below 950 Hz
|
if(ncontest.eq.7.and.f1.gt.950.0) cycle ! Hounds use AP only for signals below 950 Hz
|
||||||
if(iaptype.ge.2 .and. apsym(1).gt.1) cycle ! No, or nonstandard, mycall
|
if(iaptype.ge.2 .and. apsym(1).gt.1) cycle ! No, or nonstandard, mycall
|
||||||
if(iaptype.ge.3 .and. apsym(30).gt.1) cycle ! No, or nonstandard, dxcall
|
if(iaptype.ge.3 .and. apsym(30).gt.1) cycle ! No, or nonstandard, dxcall
|
||||||
|
|
||||||
@ -276,7 +279,8 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
if(ncontest.eq.2) llrd(1:29)=apmag*mcqtest(1:29)
|
if(ncontest.eq.2) llrd(1:29)=apmag*mcqtest(1:29)
|
||||||
if(ncontest.eq.3) llrd(1:29)=apmag*mcqfd(1:29)
|
if(ncontest.eq.3) llrd(1:29)=apmag*mcqfd(1:29)
|
||||||
if(ncontest.eq.4) llrd(1:29)=apmag*mcqru(1:29)
|
if(ncontest.eq.4) llrd(1:29)=apmag*mcqru(1:29)
|
||||||
if(ncontest.eq.6) llrd(1:29)=apmag*mcq(1:29)
|
if(ncontest.eq.5) llrd(1:29)=apmag*mcqww(1:29)
|
||||||
|
if(ncontest.eq.7) llrd(1:29)=apmag*mcq(1:29)
|
||||||
apmask(75:77)=1
|
apmask(75:77)=1
|
||||||
llrd(75:76)=apmag*(-1)
|
llrd(75:76)=apmag*(-1)
|
||||||
llrd(77)=apmag*(+1)
|
llrd(77)=apmag*(+1)
|
||||||
@ -284,7 +288,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
|
|
||||||
if(iaptype.eq.2) then ! MyCall,???,???
|
if(iaptype.eq.2) then ! MyCall,???,???
|
||||||
apmask=0
|
apmask=0
|
||||||
if(ncontest.eq.0.or.ncontest.eq.1) then
|
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.5) then
|
||||||
apmask(1:29)=1
|
apmask(1:29)=1
|
||||||
llrd(1:29)=apmag*apsym(1:29)
|
llrd(1:29)=apmag*apsym(1:29)
|
||||||
apmask(75:77)=1
|
apmask(75:77)=1
|
||||||
@ -322,7 +326,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
|
|
||||||
if(iaptype.eq.3) then ! MyCall,DxCall,???
|
if(iaptype.eq.3) then ! MyCall,DxCall,???
|
||||||
apmask=0
|
apmask=0
|
||||||
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.2.or.ncontest.eq.6) then
|
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.2.or.ncontest.eq.5.or.ncontest.eq.7) then
|
||||||
apmask(1:58)=1
|
apmask(1:58)=1
|
||||||
llrd(1:58)=apmag*apsym
|
llrd(1:58)=apmag*apsym
|
||||||
apmask(75:77)=1
|
apmask(75:77)=1
|
||||||
@ -335,7 +339,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
apmask(72:74)=1
|
apmask(72:74)=1
|
||||||
apmask(75:77)=1
|
apmask(75:77)=1
|
||||||
llrd(75:77)=apmag*(-1)
|
llrd(75:77)=apmag*(-1)
|
||||||
else if(ncontest.eq.4) then ! RTTY RU
|
else if(ncontest.eq.4) then
|
||||||
apmask(2:57)=1
|
apmask(2:57)=1
|
||||||
llrd(2:29)=apmag*apsym(1:28)
|
llrd(2:29)=apmag*apsym(1:28)
|
||||||
llrd(30:57)=apmag*apsym(30:57)
|
llrd(30:57)=apmag*apsym(30:57)
|
||||||
@ -345,16 +349,16 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, &
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if(iaptype.eq.5.and.ncontest.eq.6) cycle !Hound
|
if(iaptype.eq.5.and.ncontest.eq.7) cycle !Hound
|
||||||
if(iaptype.eq.4 .or. iaptype.eq.5 .or. iaptype.eq.6) then
|
if(iaptype.eq.4 .or. iaptype.eq.5 .or. iaptype.eq.6) then
|
||||||
apmask=0
|
apmask=0
|
||||||
if(ncontest.le.4 .or. (ncontest.eq.6.and.iaptype.eq.6)) then
|
if(ncontest.le.5 .or. (ncontest.eq.7.and.iaptype.eq.6)) then
|
||||||
apmask(1:77)=1 ! mycall, hiscall, RRR|73|RR73
|
apmask(1:77)=1 ! mycall, hiscall, RRR|73|RR73
|
||||||
llrd(1:58)=apmag*apsym
|
llrd(1:58)=apmag*apsym
|
||||||
if(iaptype.eq.4) llrd(59:77)=apmag*mrrr
|
if(iaptype.eq.4) llrd(59:77)=apmag*mrrr
|
||||||
if(iaptype.eq.5) llrd(59:77)=apmag*m73
|
if(iaptype.eq.5) llrd(59:77)=apmag*m73
|
||||||
if(iaptype.eq.6) llrd(59:77)=apmag*mrr73
|
if(iaptype.eq.6) llrd(59:77)=apmag*mrr73
|
||||||
else if(ncontest.eq.6.and.iaptype.eq.4) then ! Hound listens for MyCall RR73;...
|
else if(ncontest.eq.7.and.iaptype.eq.4) then ! Hound listens for MyCall RR73;...
|
||||||
apmask(1:28)=1
|
apmask(1:28)=1
|
||||||
llrd(1:28)=apmag*apsym(1:28)
|
llrd(1:28)=apmag*apsym(1:28)
|
||||||
apmask(72:77)=1
|
apmask(72:77)=1
|
||||||
|
@ -8,7 +8,7 @@ subroutine hspec(id2,k,nutc0,ntrpdepth,nrxfreq,ntol,ncontest,bmsk144, &
|
|||||||
! ntrpdepth TR period and 1000*ndepth
|
! ntrpdepth TR period and 1000*ndepth
|
||||||
! nrxfreq Rx audio center frequency
|
! nrxfreq Rx audio center frequency
|
||||||
! ntol Decoding range is +/- ntol
|
! ntol Decoding range is +/- ntol
|
||||||
! ncontest Contest type (0=NONE 1=NA_VHF 2=EU_VHF 3=FIELD_DAY 4=RTTY)
|
! ncontest Contest type (0=NONE 1=NA_VHF 2=EU_VHF 3=FIELD_DAY 4=RTTY 5=WW_DIGI)
|
||||||
! bmsk144 Boolean, true if in MSK144 mode
|
! bmsk144 Boolean, true if in MSK144 mode
|
||||||
! btrain Boolean, turns on training in MSK144 mode
|
! btrain Boolean, turns on training in MSK144 mode
|
||||||
! ingain Relative gain for spectra
|
! ingain Relative gain for spectra
|
||||||
|
@ -46,7 +46,6 @@
|
|||||||
character(kind=c_char) :: mygrid(6)
|
character(kind=c_char) :: mygrid(6)
|
||||||
character(kind=c_char) :: hiscall(12)
|
character(kind=c_char) :: hiscall(12)
|
||||||
character(kind=c_char) :: hisgrid(6)
|
character(kind=c_char) :: hisgrid(6)
|
||||||
character(kind=c_char) :: cqstr(4)
|
|
||||||
end type params_block
|
end type params_block
|
||||||
|
|
||||||
type, bind(C) :: dec_data
|
type, bind(C) :: dec_data
|
||||||
|
@ -137,7 +137,7 @@ void LogQSO::accept()
|
|||||||
using SpOp = Configuration::SpecialOperatingActivity;
|
using SpOp = Configuration::SpecialOperatingActivity;
|
||||||
auto special_op = m_config->special_op_id ();
|
auto special_op = m_config->special_op_id ();
|
||||||
|
|
||||||
if (special_op == SpOp::NA_VHF) {
|
if (special_op == SpOp::NA_VHF or special_op == SpOp::WW_DIGI) {
|
||||||
if(xrcvd!="" and hisGrid!=xrcvd) hisGrid=xrcvd;
|
if(xrcvd!="" and hisGrid!=xrcvd) hisGrid=xrcvd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1247,7 +1247,7 @@ void MainWindow::checkMSK144ContestType()
|
|||||||
if(m_mode=="MSK144" && SpecOp::EU_VHF < m_config.special_op_id())
|
if(m_mode=="MSK144" && SpecOp::EU_VHF < m_config.special_op_id())
|
||||||
{
|
{
|
||||||
MessageBox::warning_message (this, tr ("Improper mode"),
|
MessageBox::warning_message (this, tr ("Improper mode"),
|
||||||
"Mode will be changed to FT8. MSK144 not available if Fox, Hound, Field Day, or RTTY contest is selected.");
|
"Mode will be changed to FT8. MSK144 not available if Field Day, WW Digi, RTTY or Fox/Hound is selected.");
|
||||||
on_actionFT8_triggered();
|
on_actionFT8_triggered();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2933,7 +2933,6 @@ void MainWindow::decode() //decode()
|
|||||||
QString hisGrid {ui->dxGridEntry->text ()};
|
QString hisGrid {ui->dxGridEntry->text ()};
|
||||||
memcpy(dec_data.params.hiscall,(hisCall + " ").toLatin1 ().constData (), sizeof dec_data.params.hiscall);
|
memcpy(dec_data.params.hiscall,(hisCall + " ").toLatin1 ().constData (), sizeof dec_data.params.hiscall);
|
||||||
memcpy(dec_data.params.hisgrid,(hisGrid + " ").toLatin1 ().constData (), sizeof dec_data.params.hisgrid);
|
memcpy(dec_data.params.hisgrid,(hisGrid + " ").toLatin1 ().constData (), sizeof dec_data.params.hisgrid);
|
||||||
memcpy(dec_data.params.cqstr,(m_cqStr + " ").toLatin1 ().constData (), sizeof dec_data.params.cqstr);
|
|
||||||
|
|
||||||
//newdat=1 ==> this is new data, must do the big FFT
|
//newdat=1 ==> this is new data, must do the big FFT
|
||||||
//nagain=1 ==> decode only at fQSO +/- Tol
|
//nagain=1 ==> decode only at fQSO +/- Tol
|
||||||
@ -3961,7 +3960,8 @@ void MainWindow::guiUpdate()
|
|||||||
if(ui->txrb1->isEnabled() and
|
if(ui->txrb1->isEnabled() and
|
||||||
(SpecOp::NA_VHF==m_config.special_op_id() or
|
(SpecOp::NA_VHF==m_config.special_op_id() or
|
||||||
SpecOp::FIELD_DAY==m_config.special_op_id() or
|
SpecOp::FIELD_DAY==m_config.special_op_id() or
|
||||||
SpecOp::RTTY==m_config.special_op_id()) ) {
|
SpecOp::RTTY==m_config.special_op_id() or
|
||||||
|
SpecOp::WW_DIGI==m_config.special_op_id()) ) {
|
||||||
//We're in a contest-like mode other than EU_VHF: start QSO with Tx2.
|
//We're in a contest-like mode other than EU_VHF: start QSO with Tx2.
|
||||||
ui->tx1->setEnabled(false);
|
ui->tx1->setEnabled(false);
|
||||||
ui->txb1->setEnabled(false);
|
ui->txb1->setEnabled(false);
|
||||||
@ -4576,7 +4576,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
or bEU_VHF_w2 or (m_QSOProgress==CALLING))) {
|
or bEU_VHF_w2 or (m_QSOProgress==CALLING))) {
|
||||||
|
|
||||||
if(message_words.at(3).contains(grid_regexp) and SpecOp::EU_VHF!=m_config.special_op_id()) {
|
if(message_words.at(3).contains(grid_regexp) and SpecOp::EU_VHF!=m_config.special_op_id()) {
|
||||||
if(SpecOp::NA_VHF==m_config.special_op_id()){
|
if(SpecOp::NA_VHF==m_config.special_op_id() or SpecOp::WW_DIGI==m_config.special_op_id()){
|
||||||
gen_msg=setTxMsg(3);
|
gen_msg=setTxMsg(3);
|
||||||
m_QSOProgress=ROGER_REPORT;
|
m_QSOProgress=ROGER_REPORT;
|
||||||
} else {
|
} else {
|
||||||
@ -4940,10 +4940,8 @@ void MainWindow::genCQMsg ()
|
|||||||
if(SpecOp::NA_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
if(SpecOp::NA_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
||||||
if(SpecOp::EU_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
if(SpecOp::EU_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
||||||
if(SpecOp::FIELD_DAY == m_config.special_op_id()) m_cqStr="FD";
|
if(SpecOp::FIELD_DAY == m_config.special_op_id()) m_cqStr="FD";
|
||||||
if(SpecOp::RTTY == m_config.special_op_id()) {
|
if(SpecOp::RTTY == m_config.special_op_id()) m_cqStr="RU";
|
||||||
if(m_config.RTTY_Exchange()!="SCC") m_cqStr="RU";
|
if(SpecOp::WW_DIGI == m_config.special_op_id()) m_cqStr="WW";
|
||||||
if(m_config.RTTY_Exchange()=="SCC") m_cqStr="SCC";
|
|
||||||
}
|
|
||||||
if( tlist.at(1)==m_config.my_callsign() ) {
|
if( tlist.at(1)==m_config.my_callsign() ) {
|
||||||
t="CQ " + m_cqStr + " " + tlist.at(1) + " " + tlist.at(2);
|
t="CQ " + m_cqStr + " " + tlist.at(1) + " " + tlist.at(2);
|
||||||
} else {
|
} else {
|
||||||
@ -5044,6 +5042,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
msgtype(t0a + my_grid, ui->tx1);
|
msgtype(t0a + my_grid, ui->tx1);
|
||||||
}
|
}
|
||||||
if(SpecOp::NA_VHF==m_config.special_op_id()) sent=my_grid;
|
if(SpecOp::NA_VHF==m_config.special_op_id()) sent=my_grid;
|
||||||
|
if(SpecOp::WW_DIGI==m_config.special_op_id()) sent=my_grid;
|
||||||
if(SpecOp::FIELD_DAY==m_config.special_op_id()) sent=m_config.Field_Day_Exchange();
|
if(SpecOp::FIELD_DAY==m_config.special_op_id()) sent=m_config.Field_Day_Exchange();
|
||||||
if(SpecOp::RTTY==m_config.special_op_id()) {
|
if(SpecOp::RTTY==m_config.special_op_id()) {
|
||||||
sent=rst + m_config.RTTY_Exchange();
|
sent=rst + m_config.RTTY_Exchange();
|
||||||
@ -5547,6 +5546,10 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button
|
|||||||
m_rptSent=m_xSent.split(" ").at(0);
|
m_rptSent=m_xSent.split(" ").at(0);
|
||||||
m_rptRcvd=m_xRcvd.split(" ").at(0);
|
m_rptRcvd=m_xRcvd.split(" ").at(0);
|
||||||
break;
|
break;
|
||||||
|
case SpecOp::WW_DIGI:
|
||||||
|
m_xSent=m_config.my_grid().left(4);
|
||||||
|
m_xRcvd=m_hisGrid;
|
||||||
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5593,8 +5596,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call,
|
|||||||
if(m_config.clear_DX () and SpecOp::HOUND != m_config.special_op_id()) clearDX ();
|
if(m_config.clear_DX () and SpecOp::HOUND != m_config.special_op_id()) clearDX ();
|
||||||
m_dateTimeQSOOn = QDateTime {};
|
m_dateTimeQSOOn = QDateTime {};
|
||||||
auto special_op = m_config.special_op_id ();
|
auto special_op = m_config.special_op_id ();
|
||||||
if (SpecOp::NONE < special_op && special_op < SpecOp::FOX &&
|
if (SpecOp::NONE < special_op && special_op < SpecOp::FOX) {
|
||||||
m_config.RTTY_Exchange()!="SCC") {
|
|
||||||
ui->sbSerialNumber->setValue(ui->sbSerialNumber->value() + 1);
|
ui->sbSerialNumber->setValue(ui->sbSerialNumber->value() + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5667,9 +5669,9 @@ void MainWindow::displayWidgets(qint64 n)
|
|||||||
ui->pbBestSP->setVisible(m_mode=="FT4");
|
ui->pbBestSP->setVisible(m_mode=="FT4");
|
||||||
b=false;
|
b=false;
|
||||||
if(m_mode=="FT4" or m_mode=="FT8") {
|
if(m_mode=="FT4" or m_mode=="FT8") {
|
||||||
b=SpecOp::EU_VHF==m_config.special_op_id() or (SpecOp::RTTY==m_config.special_op_id() and
|
b=SpecOp::EU_VHF==m_config.special_op_id() or
|
||||||
(m_config.RTTY_Exchange()=="DX" or m_config.RTTY_Exchange()=="#" or
|
( SpecOp::RTTY==m_config.special_op_id() and
|
||||||
m_config.RTTY_Exchange()=="SCC"));
|
(m_config.RTTY_Exchange()=="DX" or m_config.RTTY_Exchange()=="#") );
|
||||||
}
|
}
|
||||||
if(m_mode=="MSK144") b=SpecOp::EU_VHF==m_config.special_op_id();
|
if(m_mode=="MSK144") b=SpecOp::EU_VHF==m_config.special_op_id();
|
||||||
ui->sbSerialNumber->setVisible(b);
|
ui->sbSerialNumber->setVisible(b);
|
||||||
@ -5804,6 +5806,7 @@ void MainWindow::on_actionFT8_triggered()
|
|||||||
if(SpecOp::EU_VHF==m_config.special_op_id()) t0+="EU VHF";
|
if(SpecOp::EU_VHF==m_config.special_op_id()) t0+="EU VHF";
|
||||||
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0+="Field Day";
|
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0+="Field Day";
|
||||||
if(SpecOp::RTTY==m_config.special_op_id()) t0+="RTTY";
|
if(SpecOp::RTTY==m_config.special_op_id()) t0+="RTTY";
|
||||||
|
if(SpecOp::WW_DIGI==m_config.special_op_id()) t0+="WW_DIGI";
|
||||||
if(t0=="") {
|
if(t0=="") {
|
||||||
ui->labDXped->setVisible(false);
|
ui->labDXped->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
@ -8780,6 +8783,7 @@ void MainWindow::chkFT4()
|
|||||||
if(SpecOp::EU_VHF==m_config.special_op_id()) t0+="EU VHF";
|
if(SpecOp::EU_VHF==m_config.special_op_id()) t0+="EU VHF";
|
||||||
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0+="Field Day";
|
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0+="Field Day";
|
||||||
if(SpecOp::RTTY==m_config.special_op_id()) t0+="RTTY";
|
if(SpecOp::RTTY==m_config.special_op_id()) t0+="RTTY";
|
||||||
|
if(SpecOp::WW_DIGI==m_config.special_op_id()) t0+="WW_DIGI";
|
||||||
if(t0=="") {
|
if(t0=="") {
|
||||||
ui->labDXped->setVisible(false);
|
ui->labDXped->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user