mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-12-23 19:25:37 -05:00
Further progress toward defining the 77-bit message types.
This commit is contained in:
parent
96f3fa5810
commit
2edcebef40
2
.gitignore
vendored
2
.gitignore
vendored
@ -5,3 +5,5 @@ tags
|
||||
junk*
|
||||
jnq*
|
||||
*.exe
|
||||
*.o
|
||||
*.mod
|
||||
|
@ -1,40 +1,52 @@
|
||||
Proposed new message types have 77-bit payload: 74 information bits
|
||||
and 3 bits for "message type". Note that Type 0 (as defined by i3)
|
||||
uses only 71 information bits, so it allows another 3 bits (here
|
||||
called n3) to be used for 8 sub-types.
|
||||
Proposed new message types have a 77-bit payload: 74 information bits
|
||||
and 3 bits for "message type" i3. Type 0 uses only 71 information
|
||||
bits, releasing another 3 bits (call them n3) to define 8 sub-types.
|
||||
|
||||
----------------------------------------------------------------------------------
|
||||
i3 Example message Bits n3 Total Purpose
|
||||
i3.n3 Example message Bits Total Purpose
|
||||
----------------------------------------------------------------------------------
|
||||
0 FREE TEXT MSG 71 0 71
|
||||
0 K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 1 71 DXpedition Mode
|
||||
0 PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 2 70 EU VHF contest
|
||||
0 WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 3 71 ARRL Field Day
|
||||
0 WA9XYZ KA1ABC R 32A EMA 28 28 1 4 3 7 4 71 ARRL Field Day
|
||||
0.0 FREE TEXT MSG 71 71 Free text
|
||||
0.1 K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71 DXpedition Mode
|
||||
0.2 PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 70 EU VHF contest
|
||||
0.3 WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 71 ARRL Field Day
|
||||
0.4 WA9XYZ KA1ABC R 32A EMA 28 28 1 4 3 7 71 ARRL Field Day
|
||||
0.5 71-bit telemetry 71 71 TBD
|
||||
|
||||
1 WA9XYZ/R KA1ABC/R R FN42 28 1 28 1 1 15 74 Standard msg
|
||||
2 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY contest
|
||||
3 PA3XYZ/P GM4ABC/P R JO22 28 1 28 1 1 15 74 EU VHF contest
|
||||
4 <WA9XYZ> PJ4/KA1ABC R-11 13 53 1 1 6 74 Nonstandard calls
|
||||
5 ...
|
||||
1 WA9XYZ/R KA1ABC/R R FN42 28 1 28 1 1 15 74 Standard msg
|
||||
2 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY contest
|
||||
3 PA3XYZ/P GM4ABC/P R JO22 28 1 28 1 1 15 74 EU VHF contest
|
||||
4 <WA9XYZ> PJ4/KA1ABC R-11 13 53 1 1 6 74 Nonstandard calls
|
||||
5 ...
|
||||
6
|
||||
7
|
||||
----------------------------------------------------------------------------------
|
||||
Notes:
|
||||
NB: three 74-bit message types and two 71-bit message subtypes are still TBD.
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
0. Free text message.
|
||||
Further details:
|
||||
|
||||
1. 74-bit standard message: two 28-bit callsigns, each with an extra
|
||||
bit to indicate "/R" Rover status; one bit for "R" preceding the grid
|
||||
or report; 15 bits for grid or report.
|
||||
0.0 Free text, up to 13 characters.
|
||||
|
||||
2. Type 2 is for the annual ARRL RTTY Roundup. Optional "TU;" uses
|
||||
1 bit; then two 28-bit callsigns, optional "R" (1 bit), a 3-bit
|
||||
report, and finally 13 bits for US state, Canadian province, or DX
|
||||
serial number.
|
||||
0.1 DXpedition mode as developed for KH1/KH7Z.
|
||||
|
||||
3. For European VHF+ contests. Like Type 1, but /P instead of /R.
|
||||
0.2 Report, QSO serial number, 6-digit grid, and Roger for EU VHF contests.
|
||||
|
||||
0.3 ARRL Field Day exchange for up to 16 transmitters.
|
||||
|
||||
0.4 ARRL Field Day exchange for up to 17-32 transmitters.
|
||||
|
||||
1. Two standard callsigns, Roger, and grid or report. Each callsign
|
||||
may have an appended "/R" to indicate Rover status for NA VHF
|
||||
contests.
|
||||
|
||||
2. Standard message for ARRL RTTY Roundup. Optional "TU;" at
|
||||
beginning to finish a previous QSO; then two standard callsigns,
|
||||
optional "R", a 3-bit report (529 to 599), and 13 bits to indicate
|
||||
US state, Canadian province/territory, or DX serial number.
|
||||
|
||||
3. Same as Type 1, but uses /P instead of /R. For European VHF contests.
|
||||
|
||||
4. One nonstandard call with up to 10 characters, one hashed call, Roger,
|
||||
and signal report.
|
||||
|
||||
4. For European VHF+ contests. Transfers serial QSO number (12 bits)
|
||||
and 6-digit grid locator (25 bits).
|
||||
|
||||
|
@ -9,15 +9,3 @@ i3 n3
|
||||
2 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY contest
|
||||
3 <WA9XYZ> PJ4/KA1ABC R-11 13 53 1 1 6 74 Nonstandard calls
|
||||
4 PA3XYZ/P GM4ABC/P R IO91 28 1 28 1 1 15 74 EU VHF contest
|
||||
|
||||
0 0 HELLO WORLD 1
|
||||
0 0 hello world 2
|
||||
|
||||
0 1 K1ABC RR73; W9XYZ <VP2E/KA1ABC> -11
|
||||
0 2 PA3XYZ 590003 IO91NP
|
||||
0 3 WA9XYZ KA1ABC 16A EMA
|
||||
0 4 WA9XYZ KA1ABC 32A EMA
|
||||
1 WA9XYZ/R KA1ABC/R R FN42
|
||||
2 W9XYZ K1ABC 579 MA
|
||||
3 PJ4/KA1ABC <WA9XYZ> -11
|
||||
4 PA3XYZ/P GM4ABC/P R IO91
|
||||
|
@ -2,10 +2,22 @@ i3 n3
|
||||
--------------------------------------------------------------------------------------
|
||||
0 0 FREE TEXT MSG 71 0 71
|
||||
0 1 K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 1 71 DXpedition Mode
|
||||
0 2 PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 2 70 EU VHF contest
|
||||
0 2 PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25 2 70 EU VHF contest (2)
|
||||
0 3 WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 3 71 ARRL Field Day
|
||||
0 4 WA9XYZ KA1ABC R 32A EMA 28 28 1 4 3 7 4 71 ARRL Field Day
|
||||
1 WA9XYZ/R KA1ABC/R R FN42 28 1 28 1 1 15 74 Standard msg
|
||||
2 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY contest
|
||||
3 <WA9XYZ> PJ4/KA1ABC R-11 13 53 1 1 6 74 Nonstandard calls
|
||||
4 PA3XYZ/P GM4ABC/P R IO91 28 1 28 1 1 15 74 EU VHF contest
|
||||
|
||||
0 0 HELLO WORLD 1
|
||||
0 0 hello world 2
|
||||
|
||||
0 1 K1ABC RR73; W9XYZ <VP2E/KA1ABC> -11
|
||||
0 2 PA3XYZ 590003 IO91NP
|
||||
0 3 WA9XYZ KA1ABC 16A EMA
|
||||
0 4 WA9XYZ KA1ABC 32A EMA
|
||||
1 WA9XYZ/R KA1ABC/R R FN42
|
||||
2 W9XYZ K1ABC 579 MA
|
||||
3 PJ4/KA1ABC <WA9XYZ> -11
|
||||
4 PA3XYZ/P GM4ABC/P R IO91
|
||||
|
1037
lib/77bit/packjt.f90
1037
lib/77bit/packjt.f90
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,19 @@
|
||||
subroutine parse77(msg,i3,n3)
|
||||
|
||||
use packjt
|
||||
parameter (NSEC=83) !Number of ARRL Sections
|
||||
parameter (NUSCAN=65) !Number of US states and Canadian provinces/territories
|
||||
character msg*37
|
||||
character*37 msg
|
||||
character*22 msg22
|
||||
character*13 w(19),c13
|
||||
character*13 call_1,call_2
|
||||
character*6 bcall_1,bcall_2,grid6
|
||||
character*4 grid4
|
||||
character crpt*3,crrpt*4
|
||||
character*77 c77bit
|
||||
character*1 c,c0
|
||||
character*3 csec(NSEC),cmult(NUSCAN),section,mult
|
||||
logical ok1,ok2
|
||||
logical ok1,ok2,text1,text2
|
||||
logical is_grid4,is_grid6
|
||||
|
||||
data csec/ &
|
||||
@ -33,18 +36,18 @@ subroutine parse77(msg,i3,n3)
|
||||
"NB ","NS ","QC ","ON ","MB ","SK ","AB ","BC ","NWT","NF ", &
|
||||
"LB ","NU ","VT ","PEI","DC "/
|
||||
|
||||
is_grid4(grid4)=len(trim(grid4)).eq.4 .and. &
|
||||
grid4(1:1).ge.'A' .and. grid4(1:1).le.'R' .and. &
|
||||
grid4(2:2).ge.'A' .and. grid4(2:2).le.'R' .and. &
|
||||
grid4(3:3).ge.'0' .and. grid4(3:3).le.'9' .and. &
|
||||
is_grid4(grid4)=len(trim(grid4)).eq.4 .and. &
|
||||
grid4(1:1).ge.'A' .and. grid4(1:1).le.'R' .and. &
|
||||
grid4(2:2).ge.'A' .and. grid4(2:2).le.'R' .and. &
|
||||
grid4(3:3).ge.'0' .and. grid4(3:3).le.'9' .and. &
|
||||
grid4(4:4).ge.'0' .and. grid4(4:4).le.'9'
|
||||
|
||||
is_grid6(grid6)=len(trim(grid6)).eq.6 .and. &
|
||||
grid6(1:1).ge.'A' .and. grid6(1:1).le.'R' .and. &
|
||||
grid6(2:2).ge.'A' .and. grid6(2:2).le.'R' .and. &
|
||||
grid6(3:3).ge.'0' .and. grid6(3:3).le.'9' .and. &
|
||||
grid6(4:4).ge.'0' .and. grid6(4:4).le.'9' .and. &
|
||||
grid6(5:5).ge.'A' .and. grid6(5:5).le.'X' .and. &
|
||||
is_grid6(grid6)=len(trim(grid6)).eq.6 .and. &
|
||||
grid6(1:1).ge.'A' .and. grid6(1:1).le.'R' .and. &
|
||||
grid6(2:2).ge.'A' .and. grid6(2:2).le.'R' .and. &
|
||||
grid6(3:3).ge.'0' .and. grid6(3:3).le.'9' .and. &
|
||||
grid6(4:4).ge.'0' .and. grid6(4:4).le.'9' .and. &
|
||||
grid6(5:5).ge.'A' .and. grid6(5:5).le.'X' .and. &
|
||||
grid6(6:6).ge.'A' .and. grid6(6:6).le.'X'
|
||||
|
||||
iz=len(trim(msg))
|
||||
@ -78,6 +81,7 @@ subroutine parse77(msg,i3,n3)
|
||||
i0=index(msg," RR73; ")
|
||||
call chkcall(w(1)(1:12),bcall_1,ok1)
|
||||
call chkcall(w(3)(1:12),bcall_2,ok2)
|
||||
|
||||
if(i0.ge.4 .and. i0.le.7 .and. nw.eq.5 .and. ok1 .and. ok2) then
|
||||
i0=0
|
||||
n3=1 !Type 0.1: DXpedition mode
|
||||
@ -171,8 +175,23 @@ subroutine parse77(msg,i3,n3)
|
||||
i3=0
|
||||
n3=0
|
||||
msg(iz+1:)=' '
|
||||
call packtext(msg(1:22),nc1,nc2,ng)
|
||||
write(c77bit,1100) nc1,nc2,ng,i3,n3 !c77bit is the 77-bit message
|
||||
1100 format(2b28.28,b15.15,b3.3,b3.3)
|
||||
print*,c77bit
|
||||
read(c77bit,1102) nc1,nc2,ng,i3,n3
|
||||
1102 format(2b28,b15,2b3)
|
||||
call unpacktext(nc1,nc2,ng,msg22)
|
||||
write(*,3002) nc1,nc2,ng,i3,n3,msg22(1:13)
|
||||
3002 format(2i12,i8,2i3,2x,a13)
|
||||
|
||||
900 continue
|
||||
|
||||
call packcall(bcall_1,nc1,text1)
|
||||
call packcall(bcall_2,nc2,text2)
|
||||
if(.not.text1) write(*,3001) bcall_1,nc1
|
||||
if(.not.text2) write(*,3001) bcall_2,nc2
|
||||
3001 format(50x,a6,i12)
|
||||
|
||||
return
|
||||
end subroutine parse77
|
||||
|
@ -714,13 +714,15 @@ subroutine packbits(dbits,nsymd,m0,sym)
|
||||
return
|
||||
end subroutine packtext
|
||||
|
||||
subroutine unpacktext(nc1,nc2,nc3,msg)
|
||||
subroutine unpacktext(nc1a,nc2a,nc3a,msg)
|
||||
|
||||
character*22 msg
|
||||
character*44 c
|
||||
data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-./?'/
|
||||
|
||||
nc3=iand(nc3,32767) !Remove the "plain text" bit
|
||||
nc1=nc1a
|
||||
nc2=nc2a
|
||||
nc3=iand(nc3a,32767) !Remove the "plain text" bit
|
||||
if(iand(nc1,1).ne.0) nc3=nc3+32768
|
||||
nc1=nc1/2
|
||||
if(iand(nc2,1).ne.0) nc3=nc3+65536
|
||||
|
Loading…
Reference in New Issue
Block a user