From 7c0bef98bc70fb8a092ac21c0436de8ce0489c89 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 11 Dec 2019 16:33:33 -0500 Subject: [PATCH 01/10] Update and correct some comments. No actual code changes! --- lib/77bit/packjt77.f90 | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/77bit/packjt77.f90 b/lib/77bit/packjt77.f90 index 1f9ed9a19..b55b12d26 100644 --- a/lib/77bit/packjt77.f90 +++ b/lib/77bit/packjt77.f90 @@ -806,7 +806,7 @@ subroutine pack77_01(nwords,w,i3,n3,c77) call chkcall(w(3),bcall_2,ok2) if(.not.ok2) go to 900 !3rd word must be a valid basecall -! Type 0.1: K1ABC RR73; W9XYZ -11 28 28 10 5 71 DXpedition Mode +! Type 0.1: K1ABC RR73; W9XYZ -11 28 28 10 5 71 i3=0 n3=1 call pack28(w(1),n28a) @@ -824,6 +824,9 @@ end subroutine pack77_01 subroutine pack77_02(nwords,w,i3,n3,c77) +! Pack a Type 0.2 message: EU VHF Contest mode +! Example message: PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 + character*13 w(19),c13 character*77 c77 character*6 bcall_1,grid6 @@ -877,7 +880,9 @@ end subroutine pack77_02 subroutine pack77_03(nwords,w,i3,n3,c77) + ! Check 0.3 and 0.4 (ARRL Field Day exchange) +! Example message: WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 71 parameter (NSEC=84) !Number of ARRL Sections character*13 w(19) @@ -939,8 +944,11 @@ subroutine pack77_03(nwords,w,i3,n3,c77) return end subroutine pack77_03 + subroutine pack77_1(nwords,w,i3,n3,c77) + ! Check Type 1 (Standard 77-bit message) and Type 2 (ditto, with a "/P" call) +! Example message: WA9XYZ/R KA1ABC/R R FN42 28 1 28 1 1 15 74 parameter (MAXGRID4=32400) character*13 w(19),c13 @@ -1041,10 +1049,12 @@ end subroutine pack77_1 subroutine pack77_3(nwords,w,i3,n3,c77) -! Check Type 2 (ARRL RTTY contest exchange) -!ARRL RTTY - US/Can: rpt state/prov R 579 MA -! - DX: rpt serial R 559 0013 - + +! Check Type 3 (ARRL RTTY contest exchange) +! ARRL RTTY - US/Can: rpt state/prov R 579 MA +! - DX: rpt serial R 559 0013 +! Example message: TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 + parameter (NUSCAN=65) !Number of US states and Canadian provinces/territories character*13 w(19) character*77 c77 @@ -1109,8 +1119,11 @@ subroutine pack77_3(nwords,w,i3,n3,c77) 900 return end subroutine pack77_3 + subroutine pack77_4(nwords,w,i3,n3,c77) -! Check Type 3 (One nonstandard call and one hashed call) + +! Check Type 4 (One nonstandard call and one hashed call) +! Example message: PJ4/KA1ABC RR73 12 58 1 2 1 74 integer*8 n58 logical ok1,ok2 @@ -1178,8 +1191,9 @@ subroutine pack77_4(nwords,w,i3,n3,c77) end subroutine pack77_4 subroutine pack77_5(nwords,w,i3,n3,c77) + ! Check Type 5 (WWROF contest exchange) - +!Example message: TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest character*13 w(19) character*77 c77 character*6 bcall_1,bcall_2 @@ -1222,7 +1236,7 @@ subroutine pack77_5(nwords,w,i3,n3,c77) if(trim(w(1)).eq.'TU;') itu=1 call pack28(w(1+itu),n28a) call pack28(w(2+itu),n28b) -! 5 TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest +!Example message: TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest write(c77,1010) itu,n28a,n28b,ir,irpt,nexch,i3 1010 format(b1,2b28.28,b1,b7.7,b9.9,b3.3) From 3397bf49b4ddd32776e2d6a7cfe9ea84e8c5733b Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 18 Dec 2019 10:02:00 -0500 Subject: [PATCH 02/10] Add utility program ft4code. --- CMakeLists.txt | 4 ++ lib/ft4/ft4_testmsg.f90 | 50 +++++++++++++++++++++ lib/ft4/ft4code.f90 | 99 +++++++++++++++++++++++++++++++++++++++++ lib/ft8/ft8code.f90 | 13 ++++-- 4 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 lib/ft4/ft4_testmsg.f90 create mode 100644 lib/ft4/ft4code.f90 diff --git a/CMakeLists.txt b/CMakeLists.txt index 3147d7c98..fb79c1880 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -479,6 +479,7 @@ set (wsjt_FSRCS lib/ft8/genft8.f90 lib/genmsk_128_90.f90 lib/genmsk40.f90 + lib/ft4/ft4code.f90 lib/ft4/genft4.f90 lib/ft4/gen_ft4wave.f90 lib/ft8/gen_ft8wave.f90 @@ -1305,6 +1306,9 @@ target_link_libraries (jt65 wsjt_fort wsjt_cxx) add_executable (ft8code lib/ft8/ft8code.f90 wsjtx.rc) target_link_libraries (ft8code wsjt_fort wsjt_cxx) +add_executable (ft4code lib/ft4/ft4code.f90 wsjtx.rc) +target_link_libraries (ft4code wsjt_fort wsjt_cxx) + add_executable (ft8 lib/ft8.f90 wsjtx.rc) target_link_libraries (ft8 wsjt_fort wsjt_cxx) diff --git a/lib/ft4/ft4_testmsg.f90 b/lib/ft4/ft4_testmsg.f90 new file mode 100644 index 000000000..6af239f97 --- /dev/null +++ b/lib/ft4/ft4_testmsg.f90 @@ -0,0 +1,50 @@ + parameter (MAXTEST=75,NTEST=47) + character*37 testmsg(MAXTEST) + data testmsg(1:NTEST)/ & + "CQ K1ABC FN42", & + "K1ABC W9XYZ EN37", & + "W9XYZ K1ABC -11", & + "K1ABC W9XYZ R-09", & + "W9XYZ K1ABC RRR", & + "K1ABC W9XYZ 73", & + "K1ABC W9XYZ RR73", & + "CQ KH1/KH7Z", & + "CQ FD K1ABC FN42", & + "K1ABC W9XYZ 6A WI", & + "W9XYZ K1ABC R 2B EMA", & + "CQ TEST K1ABC/R FN42", & + "K1ABC/R W9XYZ EN37", & + "W9XYZ K1ABC/R R FN42", & + "K1ABC/R W9XYZ RR73", & + "CQ TEST K1ABC FN42", & + "K1ABC W9XYZ 579 WI", & + "W9XYZ K1ABC R 589 MA", & + "K1ABC KA0DEF 559 MO", & + "TU; KA0DEF K1ABC R 569 MA", & + "KA1ABC G3AAA 529 0013", & + "TU; G3AAA K1ABC R 559 MA", & + "CQ G4ABC/P IO91", & + "G4ABC/P PA9XYZ JO22", & + "PA9XYZ 590003 IO91NP", & + "G4ABC/P R 570007 JO22DB", & + "PA9XYZ G4ABC/P RR73", & + "CQ PJ4/K1ABC", & + "PJ4/K1ABC ", & + "W9XYZ -11", & + " W9XYZ R-09", & + " PJ4/K1ABC RRR", & + "PJ4/K1ABC 73", & + "CQ W9XYZ EN37", & + " YW18FIFA", & + " W9XYZ -11", & + "W9XYZ R-09", & + "YW18FIFA RRR", & + " YW18FIFA 73", & + "TNX BOB 73 GL", & + "CQ YW18FIFA", & + " KA1ABC", & + "KA1ABC -11", & + " KA1ABC R-17", & + " YW18FIFA RR73", & + " KA1ABC 73", & + "123456789ABCDEF012"/ diff --git a/lib/ft4/ft4code.f90 b/lib/ft4/ft4code.f90 new file mode 100644 index 000000000..30bc4763c --- /dev/null +++ b/lib/ft4/ft4code.f90 @@ -0,0 +1,99 @@ +program ft4code + +! Provides examples of message packing, LDPC(174,91) encoding, bit and +! symbol ordering, and other details of the FT8 protocol. + + use packjt77 + include 'ft4_params.f90' !Set various constants + include 'ft4_testmsg.f90' + parameter (NWAVE=NN*NSPS) + + character*37 msg,msgsent + character*77 c77 + character*9 comment + character bad*1,msgtype*18 + integer itone(NN) + integer*1 msgbits(77),rvec(77),codeword(174) + data rvec/0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,1,0,1,1,0, & + 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/ + +! Get command-line argument(s) + nargs=iargc() + if(nargs.ne.1 .and. nargs.ne.3) then + print* + print*,'Program ft4code: Provides examples of message packing, ', & + 'LDPC(174,91) encoding,' + print*,'bit and symbol ordering, and other details of the FT4 protocol.' + print* + print*,'Usage: ft4code [-c grid] "message" # Results for specified message' + print*,' ft4code -t # Examples of all message types' + go to 999 + endif + + call getarg(1,msg) !Message to be transmitted + if(len(trim(msg)).eq.2 .and. msg(1:2).eq.'-t') then + nmsg=NTEST + else + call fmtmsg(msg,iz) !To upper case; collapse multiple blanks + nmsg=1 + endif + + write(*,1010) +1010 format(4x,'Message',31x,'Decoded',29x,'Err i3.n3'/100('-')) + + do imsg=1,nmsg + if(nmsg.gt.1) msg=testmsg(imsg) + +! Generate msgsent, msgbits, and itone + i3=-1 + n3=-1 + call pack77(msg,i3,n3,c77) + call genft4(msg,0,msgsent,msgbits,itone) + call encode174_91(msgbits,codeword) + msgtype="" + if(i3.eq.0) then + if(n3.eq.0) msgtype="Free text" + if(n3.eq.1) msgtype="DXpedition mode" + if(n3.eq.2) msgtype="EU VHF Contest" + if(n3.eq.3) msgtype="ARRL Field Day" + if(n3.eq.4) msgtype="ARRL Field Day" + if(n3.eq.5) msgtype="Telemetry" + if(n3.ge.6) msgtype="Undefined type" + endif + if(i3.eq.1) msgtype="Standard msg" + if(i3.eq.2) msgtype="EU VHF Contest" + if(i3.eq.3) msgtype="ARRL RTTY Roundup" + if(i3.eq.4) msgtype="Nonstandard calls" + if(i3.ge.5) msgtype="Undefined msg type" + if(i3.ge.1) n3=-1 + bad=" " + comment=' ' + if(msg.ne.msgsent) bad="*" + if(n3.ge.0) then + write(*,1020) imsg,msg,msgsent,bad,i3,n3,msgtype,comment +1020 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',i1,1x,a18,1x,a9) + else + write(*,1022) imsg,msg,msgsent,bad,i3,msgtype,comment +1022 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',1x,1x,a18,1x,a9) + endif + enddo + + if(nmsg.eq.1) then + write(*,1030) ieor(msgbits,rvec) +1030 format(/'Source-encoded message before XOR(), 77 bits: ',/77i1) + write(*,1031) msgbits +1031 format(/'Source-encoded message after XOR(), 77 bits: ',/77i1) + write(*,1032) codeword(78:91) +1032 format(/'14-bit CRC: ',/14i1) + write(*,1033) codeword(92:174) +1033 format(/'83 Parity bits: ',/83i1) + write(*,1034) 0,itone,0 +1034 format(/'Channel symbols (105 tones):'/ & + 'R Sync',13x,'Data',13x, & + ' Sync',13x,'Data',13x, & + ' Sync',13x,'Data',13x,' Sync R'/ & + i1,1x,4i1,1x,29i1,1x,4i1,1x,29i1,1x,4i1,1x,29i1,1x,4i1,i2) + endif + +999 end program ft4code diff --git a/lib/ft8/ft8code.f90 b/lib/ft8/ft8code.f90 index cbafd34be..a6fa7310a 100644 --- a/lib/ft8/ft8code.f90 +++ b/lib/ft8/ft8code.f90 @@ -12,7 +12,7 @@ program ft8code character*9 comment character bad*1,msgtype*18 integer itone(NN) - integer*1 msgbits(77) + integer*1 msgbits(77),codeword(174) ! Get command-line argument(s) nargs=iargc() @@ -45,6 +45,7 @@ program ft8code i3=-1 n3=-1 call genft8(msg,i3,n3,msgsent,msgbits,itone) + call encode174_91(msgbits,codeword) msgtype="" if(i3.eq.0) then if(n3.eq.0) msgtype="Free text" @@ -75,9 +76,15 @@ program ft8code if(nmsg.eq.1) then write(*,1030) msgbits -1030 format(/'Message bits: ',/77i1) +1030 format(/'Source-encoded message, 77 bits: ',/77i1) + write(*,1031) codeword(78:91) +1031 format(/'14-bit CRC: ',/14i1) + write(*,1032) codeword(92:174) +1032 format(/'83 Parity bits: ',/83i1) write(*,1034) itone -1034 format(/'Channel symbols (tones):'/79i1) +1034 format(/'Channel symbols (79 tones):'/ & + ' Sync ',14x,'Data',15x,'Sync',15x,'Data',15x,'Sync'/ & + 7i1,1x,29i1,1x,7i1,1x,29i1,1x,7i1) endif 999 end program ft8code From 26d1996eb847a4282560b7a17f50a6aba4123d43 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 18 Dec 2019 10:42:08 -0500 Subject: [PATCH 03/10] Tweaks to ft4code. --- lib/ft4/ft4code.f90 | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/ft4/ft4code.f90 b/lib/ft4/ft4code.f90 index 30bc4763c..a7b2ccdd2 100644 --- a/lib/ft4/ft4code.f90 +++ b/lib/ft4/ft4code.f90 @@ -81,15 +81,17 @@ program ft4code if(nmsg.eq.1) then write(*,1030) ieor(msgbits,rvec) -1030 format(/'Source-encoded message before XOR(), 77 bits: ',/77i1) - write(*,1031) msgbits -1031 format(/'Source-encoded message after XOR(), 77 bits: ',/77i1) - write(*,1032) codeword(78:91) -1032 format(/'14-bit CRC: ',/14i1) - write(*,1033) codeword(92:174) -1033 format(/'83 Parity bits: ',/83i1) - write(*,1034) 0,itone,0 -1034 format(/'Channel symbols (105 tones):'/ & +1030 format(/'Source-encoded message before scrambling, 77 bits: ',/77i1) + write(*,1032) rvec +1032 format(/'Scrambling vector, 77 bits: ',/77i1) + write(*,1034) msgbits +1034 format(/'Source-encoded message after scrambling, 77 bits:'/77i1) + write(*,1036) codeword(78:91) +1036 format(/'14-bit CRC: ',/14i1) + write(*,1038) codeword(92:174) +1038 format(/'83 Parity bits: ',/83i1) + write(*,1040) 0,itone,0 +1040 format(/'Channel symbols (105 tones):'/ & 'R Sync',13x,'Data',13x, & ' Sync',13x,'Data',13x, & ' Sync',13x,'Data',13x,' Sync R'/ & From 3cb75a49ec79b4a827b418b8a33a893de0a55a5e Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 18 Dec 2019 12:14:34 -0500 Subject: [PATCH 04/10] Reorder the FT4 test messages used in ft4code.f90. --- lib/ft4/ft4_testmsg.f90 | 96 ++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/lib/ft4/ft4_testmsg.f90 b/lib/ft4/ft4_testmsg.f90 index 6af239f97..e9b0981de 100644 --- a/lib/ft4/ft4_testmsg.f90 +++ b/lib/ft4/ft4_testmsg.f90 @@ -1,50 +1,50 @@ parameter (MAXTEST=75,NTEST=47) character*37 testmsg(MAXTEST) - data testmsg(1:NTEST)/ & - "CQ K1ABC FN42", & - "K1ABC W9XYZ EN37", & - "W9XYZ K1ABC -11", & - "K1ABC W9XYZ R-09", & - "W9XYZ K1ABC RRR", & - "K1ABC W9XYZ 73", & - "K1ABC W9XYZ RR73", & - "CQ KH1/KH7Z", & - "CQ FD K1ABC FN42", & - "K1ABC W9XYZ 6A WI", & - "W9XYZ K1ABC R 2B EMA", & - "CQ TEST K1ABC/R FN42", & - "K1ABC/R W9XYZ EN37", & - "W9XYZ K1ABC/R R FN42", & - "K1ABC/R W9XYZ RR73", & - "CQ TEST K1ABC FN42", & - "K1ABC W9XYZ 579 WI", & - "W9XYZ K1ABC R 589 MA", & - "K1ABC KA0DEF 559 MO", & - "TU; KA0DEF K1ABC R 569 MA", & - "KA1ABC G3AAA 529 0013", & - "TU; G3AAA K1ABC R 559 MA", & - "CQ G4ABC/P IO91", & - "G4ABC/P PA9XYZ JO22", & - "PA9XYZ 590003 IO91NP", & - "G4ABC/P R 570007 JO22DB", & - "PA9XYZ G4ABC/P RR73", & - "CQ PJ4/K1ABC", & - "PJ4/K1ABC ", & - "W9XYZ -11", & - " W9XYZ R-09", & - " PJ4/K1ABC RRR", & - "PJ4/K1ABC 73", & - "CQ W9XYZ EN37", & - " YW18FIFA", & - " W9XYZ -11", & - "W9XYZ R-09", & - "YW18FIFA RRR", & - " YW18FIFA 73", & - "TNX BOB 73 GL", & - "CQ YW18FIFA", & - " KA1ABC", & - "KA1ABC -11", & - " KA1ABC R-17", & - " YW18FIFA RR73", & - " KA1ABC 73", & - "123456789ABCDEF012"/ + data testmsg(1:NTEST)/ & + "TNX BOB 73 GL", & ! 0.0 + "PA9XYZ 590003 IO91NP", & ! 0.2 + "G4ABC/P R 570007 JO22DB", & ! 0.2 + "K1ABC W9XYZ 6A WI", & ! 0.3 + "W9XYZ K1ABC R 2B EMA", & ! 0.3 + "123456789ABCDEF012", & ! 0.5 + "CQ K1ABC FN42", & ! 1. + "K1ABC W9XYZ EN37", & ! 1. + "W9XYZ K1ABC -11", & ! 1. + "K1ABC W9XYZ R-09", & ! 1. + "W9XYZ K1ABC RRR", & ! 1. + "K1ABC W9XYZ 73", & ! 1. + "K1ABC W9XYZ RR73", & ! 1. + "CQ FD K1ABC FN42", & ! 1. + "CQ TEST K1ABC/R FN42", & ! 1. + "K1ABC/R W9XYZ EN37", & ! 1. + "W9XYZ K1ABC/R R FN42", & ! 1. + "K1ABC/R W9XYZ RR73", & ! 1. + "CQ TEST K1ABC FN42", & ! 1. + "W9XYZ -11", & ! 1. + " W9XYZ R-09", & ! 1. + "CQ W9XYZ EN37", & ! 1. + " W9XYZ -11", & ! 1. + "W9XYZ R-09", & ! 1. + " KA1ABC", & ! 1. + "KA1ABC -11", & ! 1. + " KA1ABC R-17", & ! 1. + " KA1ABC 73", & ! 1. + "CQ G4ABC/P IO91", & ! 2. + "G4ABC/P PA9XYZ JO22", & ! 2. + "PA9XYZ G4ABC/P RR73", & ! 2. + "K1ABC W9XYZ 579 WI", & ! 3. + "W9XYZ K1ABC R 589 MA", & ! 3. + "K1ABC KA0DEF 559 MO", & ! 3. + "TU; KA0DEF K1ABC R 569 MA", & ! 3. + "KA1ABC G3AAA 529 0013", & ! 3. + "TU; G3AAA K1ABC R 559 MA", & ! 3. + "CQ KH1/KH7Z", & ! 4. + "CQ PJ4/K1ABC", & ! 4. + "PJ4/K1ABC ", & ! 4. + " PJ4/K1ABC RRR", & ! 4. + "PJ4/K1ABC 73", & ! 4. + " YW18FIFA", & ! 4. + "YW18FIFA RRR", & ! 4. + " YW18FIFA 73", & ! 4. + "CQ YW18FIFA", & ! 4. + " YW18FIFA RR73"/ From ac032600449a7fa05eaba3626866e90acba544c2 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 29 Dec 2019 12:11:36 +0000 Subject: [PATCH 05/10] Withhold plots directory tree from source tarball Thanks to Christoph, DF7CB, who pointed out that we package a redundant version of the QCustomPlot widget sources. --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index b1e1bbf70..2712bf16d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,3 +3,4 @@ /lib/fsk4hf export-ignore /lib/fsk4hf export-ignore /robots export-ignore +/plots export-ignore From 5e3781e9e97e1d8cdc669cad6c8901012e29ef26 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 29 Dec 2019 12:25:59 +0000 Subject: [PATCH 06/10] Correct some UI text typos Thanks to Christoph, DF7CB, for providing a patch for these typos. --- Configuration.ui | 6 +++--- widgets/mainwindow.ui | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Configuration.ui b/Configuration.ui index 53091a905..e86fe984a 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -951,7 +951,7 @@ a few, particularly some Kenwood rigs, require it). - <html><head/><body><p>Use the RS-232 DTR control line to toggle your radio's PTT, requires hardware to inteface the line.</p><p>Some commercial interface units also use this method.</p><p>The DTR control line of the CAT serial port may be used for this or a DTR control line on a different serial port may be used.</p></body></html> + <html><head/><body><p>Use the RS-232 DTR control line to toggle your radio's PTT, requires hardware to interface the line.</p><p>Some commercial interface units also use this method.</p><p>The DTR control line of the CAT serial port may be used for this or a DTR control line on a different serial port may be used.</p></body></html> &DTR @@ -982,7 +982,7 @@ other hardware interface for PTT. - <html><head/><body><p>Use the RS-232 RTS control line to toggle your radio's PTT, requires hardware to inteface the line.</p><p>Some commercial interface units also use this method.</p><p>The RTS control line of the CAT serial port may be used for this or a RTS control line on a different serial port may be used. Note that this option is not available on the CAT serial port when hardware flow control is used.</p></body></html> + <html><head/><body><p>Use the RS-232 RTS control line to toggle your radio's PTT, requires hardware to interface the line.</p><p>Some commercial interface units also use this method.</p><p>The RTS control line of the CAT serial port may be used for this or a RTS control line on a different serial port may be used. Note that this option is not available on the CAT serial port when hardware flow control is used.</p></body></html> R&TS @@ -1080,7 +1080,7 @@ or bandwidth is selected). - If this is availabe then it is usually the correct mode for this program. + If this is available then it is usually the correct mode for this program. Data/P&kt diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index c37da3885..59fbd7f7d 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -1,3 +1,4 @@ + MainWindow @@ -981,7 +982,7 @@ QPushButton[state="ok"] { <html><head/><body><p>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</p></body></html> - Frequncy entry + Frequency entry Select operating band or enter frequency in MHz or enter kHz increment followed by k. @@ -2635,10 +2636,10 @@ list. The list can be maintained in Settings (F2). - <html><head/><body><p>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html> + <html><head/><body><p>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html> - 6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol. + 6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol. Prefer type 1 messages From 75c9e1d696f185627f66f92d91fb078feac03756 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 29 Dec 2019 12:34:02 +0000 Subject: [PATCH 07/10] Fix a patching error --- widgets/mainwindow.ui | 1 - 1 file changed, 1 deletion(-) diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index 59fbd7f7d..288ce9a57 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -1,5 +1,4 @@ - MainWindow From 3c4825a5e77dbd24c4601736a7344656c558b867 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 29 Dec 2019 12:40:47 +0000 Subject: [PATCH 08/10] Fix typos carried through to language files --- translations/wsjtx_en_GB.ts | 6 +++--- translations/wsjtx_pt_PT.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/wsjtx_en_GB.ts b/translations/wsjtx_en_GB.ts index 2e0570962..261d4486d 100644 --- a/translations/wsjtx_en_GB.ts +++ b/translations/wsjtx_en_GB.ts @@ -2066,7 +2066,7 @@ Yellow when too low - Frequncy entry + Frequency entry @@ -2894,12 +2894,12 @@ list. The list can be maintained in Settings (F2). - <html><head/><body><p>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html> + <html><head/><body><p>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html> - 6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol. + 6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol. diff --git a/translations/wsjtx_pt_PT.ts b/translations/wsjtx_pt_PT.ts index 6167f5d8d..3aae238db 100644 --- a/translations/wsjtx_pt_PT.ts +++ b/translations/wsjtx_pt_PT.ts @@ -2066,7 +2066,7 @@ Yellow when too low - Frequncy entry + Frequency entry @@ -2894,12 +2894,12 @@ list. The list can be maintained in Settings (F2). - <html><head/><body><p>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html> + <html><head/><body><p>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html> - 6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol. + 6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol. From a8d371641c4c2f3ff94ea08ed4be2f70123dd660 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 3 Jan 2020 13:32:20 -0500 Subject: [PATCH 09/10] Edit Support section in User Guide to reflect the new WSJTX group. --- doc/common/links.adoc | 2 +- doc/user_guide/en/support.adoc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/common/links.adoc b/doc/common/links.adoc index e77dafdaa..ae1738f63 100644 --- a/doc/common/links.adoc +++ b/doc/common/links.adoc @@ -94,7 +94,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes. :win32_openssl: https://slproweb.com/download/Win32OpenSSL_Light-1_0_2t.exe[Win32 OpenSSL Light Package] :win64_openssl: https://slproweb.com/download/Win64OpenSSL_Light-1_1_0L.exe[Win64 OpenSSL Light Package] :writelog: https://writelog.com/[Writelog] -:wsjt_yahoo_group: https://groups.yahoo.com/neo/groups/wsjtgroup/info[WSJT Group] +:wsjtx_group: https://groups.io/g/WSJTX[WSJTX Group] :wsjtx: http://physics.princeton.edu/pulsar/K1JT/wsjtx.html[WSJT-X] :wspr0_guide: http://www.physics.princeton.edu/pulsar/K1JT/WSPR0_Instructions.TXT[WSPR0 Guide] :wspr: http://physics.princeton.edu/pulsar/K1JT/wspr.html[WSPR Home Page] diff --git a/doc/user_guide/en/support.adoc b/doc/user_guide/en/support.adoc index 0a7e74b09..805ea0493 100644 --- a/doc/user_guide/en/support.adoc +++ b/doc/user_guide/en/support.adoc @@ -1,8 +1,8 @@ === Help with Setup The best source of help in setting up your station or configuring -_WSJT-X_ is the {wsjt_yahoo_group} at email address -wsjtgroup@yahoogroups.com. The chances are good that someone with +_WSJT-X_ is the {wsjtx_group} at email address +wsjtx@groups.io. The chances are good that someone with similar interests and equipment has already solved your problem and will be happy to help. To post messages here you will need to join the group. From f069477dbb1ed70f07a7cc5457422424a9edbb31 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 3 Jan 2020 13:34:56 -0500 Subject: [PATCH 10/10] Bring test28.f90, ft4_testmsg.f90, ft8_testmsg.f90, ft8code.f90 up to date. --- lib/77bit/g8 | 5 ++- lib/77bit/test28.f90 | 46 ++++++++++++++------ lib/77bit/test28.txt | 23 ++++------ lib/ft4/ft4_testmsg.f90 | 2 +- lib/ft8/ft8_testmsg.f90 | 96 ++++++++++++++++++++--------------------- lib/ft8/ft8code.f90 | 36 +++++++++++----- 6 files changed, 118 insertions(+), 90 deletions(-) diff --git a/lib/77bit/g8 b/lib/77bit/g8 index 2258817d3..33819134d 100644 --- a/lib/77bit/g8 +++ b/lib/77bit/g8 @@ -1,2 +1,3 @@ -gfortran -o test28 -fbounds-check -Wall -Wno-conversion test28.f90 pack28.f90 \ - unpack28.f90 ihashcall.f90 hash22.f90 save_hash_call.f90 +gfortran -c packjt77.f90 +gfortran -o test28 -fbounds-check -Wall -Wno-conversion test28.f90 \ + ../chkcall.f90 packjt77.o diff --git a/lib/77bit/test28.f90 b/lib/77bit/test28.f90 index 67bde4afb..30ce15445 100644 --- a/lib/77bit/test28.f90 +++ b/lib/77bit/test28.f90 @@ -1,11 +1,20 @@ program test28 + use packjt77 parameter (NTOKENS=2063592,MAX22=4194304) - character*13 call_0,call_1,bare_call_1 + character*13 arg,call_00,call_0,call_1 character*1 cerr + logical unpk28_success nargs=iargc() - open(10,file='test28.txt',status='old') + n28=-1 + if(nargs.eq.1) then + call getarg(1,arg) + read(arg,'(i13)',err=2) n28 + endif + if(n28.ge.0) go to 100 + +2 open(10,file='test28.txt',status='old') write(*,1000) 1000 format('Encoded text Recovered text n28 Err? Type'/60('-')) @@ -14,30 +23,41 @@ program test28 if(nargs.eq.0) then read(10,'(a13)',end=999) call_0 else - call getarg(1,call_0) + call_0=arg endif if(call_0.eq.' ') exit if(call_0(1:3).eq.'CQ ' .and. call_0(4:4).ne.' ') call_0(3:3)='_' call_1=' ' - call pack28(call_0,n28) - call unpack28(n28,call_1) + call_00=call_0 + call pack28(call_00,n28) + call unpack28(n28,call_1,unpk28_success) cerr=' ' if(call_0.ne.call_1) cerr='*' - if(call_1(1:1).eq.'<') then - i=index(call_1,'>') - bare_call_1=call_1(2:i-1)//' ' - endif - if(call_0.eq.bare_call_1) cerr=' ' if(call_0(1:3).eq.'CQ_') call_0(3:3)=' ' if(call_1(1:3).eq.'CQ_') call_1(3:3)=' ' if(n28.lt.NTOKENS) write(*,1010) call_0,call_1,n28,cerr 1010 format(a13,2x,a13,i10,2x,a1,2x,'Special token') - if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) write(*,1012) call_0, & - call_1,n28,cerr -1012 format(a13,2x,a13,i10,2x,a1,2x,'22-bit hash') + if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) then + call_00=call_0 + call save_hash_call(call_00,n10,n12,n22) + write(*,1012) call_0,call_1,n28,cerr,n22 +1012 format(a13,2x,a13,i10,2x,a1,2x,'22-bit hash',i15) + endif if(n28.ge.NTOKENS+MAX22) write(*,1014) call_0,call_1,n28,cerr 1014 format(a13,2x,a13,i10,2x,a1,2x,'Standard callsign') if(nargs.gt.0) exit enddo + go to 999 + +100 call unpack28(n28,call_1,unpk28_success) + cerr=' ' + if(.not.unpk28_success) cerr='*' + if(call_1(1:3).eq.'CQ_') call_1(3:3)=' ' + if(n28.lt.NTOKENS) write(*,2010) n28,call_1,cerr +2010 format(i10,2x,a13,2x,a1,2x,'Special token') + if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) write(*,2012) n28,call_1,cerr +2012 format(i10,2x,a13,2x,a1,2x,'22-bit hash') + if(n28.ge.NTOKENS+MAX22) write(*,2014) n28,call_1,cerr +2014 format(i10,2x,a13,2x,a1,2x,'Standard callsign') 999 end program test28 diff --git a/lib/77bit/test28.txt b/lib/77bit/test28.txt index 442215b61..b2801121b 100644 --- a/lib/77bit/test28.txt +++ b/lib/77bit/test28.txt @@ -12,23 +12,16 @@ CQ_AAA CQ_ZZZ CQ_AAAA CQ_ZZZZ -EI30T -YW18FIFA -KH1/KH7Z + + -ZS9YOTA -YB50ST -00A -99ZZZ -000A -009ZZZ -999ZZZ -HA70BAY -WB2000XYZ -WB2000XYZABCD -ZM90DX + + + + + -HB9GOLD + A0 A0A K1ABC diff --git a/lib/ft4/ft4_testmsg.f90 b/lib/ft4/ft4_testmsg.f90 index e9b0981de..0d700ead1 100644 --- a/lib/ft4/ft4_testmsg.f90 +++ b/lib/ft4/ft4_testmsg.f90 @@ -5,7 +5,7 @@ "PA9XYZ 590003 IO91NP", & ! 0.2 "G4ABC/P R 570007 JO22DB", & ! 0.2 "K1ABC W9XYZ 6A WI", & ! 0.3 - "W9XYZ K1ABC R 2B EMA", & ! 0.3 + "W9XYZ K1ABC R 17B EMA", & ! 0.3 "123456789ABCDEF012", & ! 0.5 "CQ K1ABC FN42", & ! 1. "K1ABC W9XYZ EN37", & ! 1. diff --git a/lib/ft8/ft8_testmsg.f90 b/lib/ft8/ft8_testmsg.f90 index 2a1bf8f9e..253641d27 100644 --- a/lib/ft8/ft8_testmsg.f90 +++ b/lib/ft8/ft8_testmsg.f90 @@ -1,51 +1,51 @@ parameter (MAXTEST=75,NTEST=48) character*37 testmsg(MAXTEST) data testmsg(1:NTEST)/ & - "CQ K1ABC FN42", & - "K1ABC W9XYZ EN37", & - "W9XYZ K1ABC -11", & - "K1ABC W9XYZ R-09", & - "W9XYZ K1ABC RRR", & - "K1ABC W9XYZ 73", & - "K1ABC W9XYZ RR73", & - "CQ KH1/KH7Z", & - "K1ABC RR73; W9XYZ -08", & - "CQ FD K1ABC FN42", & - "K1ABC W9XYZ 6A WI", & - "W9XYZ K1ABC R 2B EMA", & - "CQ TEST K1ABC/R FN42", & - "K1ABC/R W9XYZ EN37", & - "W9XYZ K1ABC/R R FN42", & - "K1ABC/R W9XYZ RR73", & - "CQ TEST K1ABC FN42", & - "K1ABC W9XYZ 579 WI", & - "W9XYZ K1ABC R 589 MA", & - "K1ABC KA0DEF 559 MO", & - "TU; KA0DEF K1ABC R 569 MA", & - "KA1ABC G3AAA 529 0013", & - "TU; G3AAA K1ABC R 559 MA", & - "CQ G4ABC/P IO91", & - "G4ABC/P PA9XYZ JO22", & - "PA9XYZ 590003 IO91NP", & - "G4ABC/P R 570007 JO22DB", & - "PA9XYZ G4ABC/P RR73", & - "CQ PJ4/K1ABC", & - "PJ4/K1ABC ", & - "W9XYZ -11", & - " W9XYZ R-09", & - " PJ4/K1ABC RRR", & - "PJ4/K1ABC 73", & - "CQ W9XYZ EN37", & - " YW18FIFA", & - " W9XYZ -11", & - "W9XYZ R-09", & - "YW18FIFA RRR", & - " YW18FIFA 73", & - "TNX BOB 73 GL", & - "CQ YW18FIFA", & - " KA1ABC", & - "KA1ABC -11", & - " KA1ABC R-17", & - " YW18FIFA RR73", & - " KA1ABC 73", & - "123456789ABCDEF012"/ + "TNX BOB 73 GL", & ! 0.0 + "K1ABC RR73; W9XYZ -08", & ! 0.1 + "PA9XYZ 590003 IO91NP", & ! 0.2 + "G4ABC/P R 570007 JO22DB", & ! 0.2 + "K1ABC W9XYZ 6A WI", & ! 0.3 + "W9XYZ K1ABC R 17B EMA", & ! 0.3 + "123456789ABCDEF012", & ! 0.5 + "CQ K1ABC FN42", & ! 1. + "K1ABC W9XYZ EN37", & ! 1. + "W9XYZ K1ABC -11", & ! 1. + "K1ABC W9XYZ R-09", & ! 1. + "W9XYZ K1ABC RRR", & ! 1. + "K1ABC W9XYZ 73", & ! 1. + "K1ABC W9XYZ RR73", & ! 1. + "CQ FD K1ABC FN42", & ! 1. + "CQ TEST K1ABC/R FN42", & ! 1. + "K1ABC/R W9XYZ EN37", & ! 1. + "W9XYZ K1ABC/R R FN42", & ! 1. + "K1ABC/R W9XYZ RR73", & ! 1. + "CQ TEST K1ABC FN42", & ! 1. + "W9XYZ -11", & ! 1. + " W9XYZ R-09", & ! 1. + "CQ W9XYZ EN37", & ! 1. + " W9XYZ -11", & ! 1. + "W9XYZ R-09", & ! 1. + " KA1ABC", & ! 1. + "KA1ABC -11", & ! 1. + " KA1ABC R-17", & ! 1. + " KA1ABC 73", & ! 1. + "CQ G4ABC/P IO91", & ! 2. + "G4ABC/P PA9XYZ JO22", & ! 2. + "PA9XYZ G4ABC/P RR73", & ! 2. + "K1ABC W9XYZ 579 WI", & ! 3. + "W9XYZ K1ABC R 589 MA", & ! 3. + "K1ABC KA0DEF 559 MO", & ! 3. + "TU; KA0DEF K1ABC R 569 MA", & ! 3. + "KA1ABC G3AAA 529 0013", & ! 3. + "TU; G3AAA K1ABC R 559 MA", & ! 3. + "CQ KH1/KH7Z", & ! 4. + "CQ PJ4/K1ABC", & ! 4. + "PJ4/K1ABC ", & ! 4. + " PJ4/K1ABC RRR", & ! 4. + "PJ4/K1ABC 73", & ! 4. + " YW18FIFA", & ! 4. + "YW18FIFA RRR", & ! 4. + " YW18FIFA 73", & ! 4. + "CQ YW18FIFA", & ! 4. + " YW18FIFA RR73"/ diff --git a/lib/ft8/ft8code.f90 b/lib/ft8/ft8code.f90 index a6fa7310a..8d5b52799 100644 --- a/lib/ft8/ft8code.f90 +++ b/lib/ft8/ft8code.f90 @@ -13,6 +13,7 @@ program ft8code character bad*1,msgtype*18 integer itone(NN) integer*1 msgbits(77),codeword(174) + logical short ! Get command-line argument(s) nargs=iargc() @@ -23,19 +24,22 @@ program ft8code print*,'bit and symbol ordering, and other details of the FT8 protocol.' print* print*,'Usage: ft8code [-c grid] "message" # Results for specified message' - print*,' ft8code -t # Examples of all message types' + print*,' ft8code -T # Examples of all message types' + print*,' ft8code -t # Short format examples' go to 999 endif call getarg(1,msg) !Message to be transmitted - if(len(trim(msg)).eq.2 .and. msg(1:2).eq.'-t') then + short=.false. + if(len(trim(msg)).eq.2 .and. (msg(1:2).eq.'-T' .or. msg(1:2).eq.'-t')) then nmsg=NTEST + short=msg(1:2).eq.'-t' else call fmtmsg(msg,iz) !To upper case; collapse multiple blanks nmsg=1 endif - write(*,1010) + if(.not.short) write(*,1010) 1010 format(4x,'Message',31x,'Decoded',29x,'Err i3.n3'/100('-')) do imsg=1,nmsg @@ -59,18 +63,28 @@ program ft8code if(i3.eq.1) msgtype="Standard msg" if(i3.eq.2) msgtype="EU VHF Contest" if(i3.eq.3) msgtype="ARRL RTTY Roundup" - if(i3.eq.4) msgtype="Nonstandard calls" - if(i3.ge.5) msgtype="Undefined msg type" + if(i3.eq.4) msgtype="Nonstandard call" + if(i3.ge.5) msgtype="Undefined type" if(i3.ge.1) n3=-1 bad=" " comment=' ' if(msg.ne.msgsent) bad="*" - if(n3.ge.0) then - write(*,1020) imsg,msg,msgsent,bad,i3,n3,msgtype,comment -1020 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',i1,1x,a18,1x,a9) + if(short) then + if(n3.ge.0) then + write(*,1020) i3,n3,msg,bad,msgtype +1020 format(i1,'.',i1,2x,a37,1x,a1,1x,a18) + else + write(*,1022) i3,msg,bad,msgtype +1022 format(i1,'.',3x,a37,1x,a1,1x,a18) + endif else - write(*,1022) imsg,msg,msgsent,bad,i3,msgtype,comment -1022 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',1x,1x,a18,1x,a9) + if(n3.ge.0) then + write(*,1024) imsg,msg,msgsent,bad,i3,n3,msgtype,comment +1024 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',i1,1x,a18,1x,a9) + else + write(*,1026) imsg,msg,msgsent,bad,i3,msgtype,comment +1026 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',1x,1x,a18,1x,a9) + endif endif enddo @@ -82,7 +96,7 @@ program ft8code write(*,1032) codeword(92:174) 1032 format(/'83 Parity bits: ',/83i1) write(*,1034) itone -1034 format(/'Channel symbols (79 tones):'/ & +1034 format(/'Channel symbols (79 tones):'/ & ' Sync ',14x,'Data',15x,'Sync',15x,'Data',15x,'Sync'/ & 7i1,1x,29i1,1x,7i1,1x,29i1,1x,7i1) endif