// Status: edited

=== AP Decoding

The _WSJT-X_ decoders for FST4, FT4, FT8, JT65, and Q65 include
procedures that use naturally accumulating information during a
minimal QSO.  This _a priori_ (AP) information increases sensitivity
of the decoder by up to 4 dB, at the cost of a slightly higher rate of
false decodes.  AP is optional in FT8 and JT65, but is always enabled
for Q65 and for FT4 and FST4 when decode depth is Normal or Deep.

For example: when you decide to answer a CQ, you already know your own
callsign and that of your potential QSO partner.  The software
therefore "`knows`" what might be expected for at least 57 message
bits (28 for each of two callsigns, one or more for message type) in the
next received message.  The decoder's task is thus reduced to
determining the remaining 15 bits of the message and ensuring that the
resulting solution is reliable.

AP decoding starts by setting AP bits to the hypothesized values, as
if they had been received correctly.  We then determine whether the
remaining message and parity bits are consistent with the hypothesized
AP bits, with a specified level of confidence.  Successful AP decodes
are labeled with an end-of-line indicator of the form `aP`, where `P`
is one of the single-digit AP decoding types listed in Table 1.  For
example, `a2` indicates that the successful decode used MyCall as
hypothetically known information.  Type `a7`, used only in FT8 mode,
uses information from the previous Rx sequence.

[[FT8_AP_INFO_TABLE]]
.FST4, FT4, and FT8 AP information types
[width="35%",cols="1h,<10m",frame=topbot,options="header"]
|===
|aP|Message components
|a1|CQ   &#160; &#160;   ?   &#160; &#160;   ? 
|a2|MyCall &#160; &#160; ?   &#160; &#160;   ? 
|a3|MyCall DxCall &#160; &#160;  ? 
|a4|MyCall DxCall RRR
|a5|MyCall DxCall 73
|a6|MyCall DxCall RR73
|a7|(Call_1 or CQ) Call_2 &#160; &#160;   ?
|===

If a codeword is found that is judged to have high (but not
overwhelmingly high) probability of being correct, a `?` character is
appended when the decoded message is displayed.  To avoid misleading
spots of occasional false decodes, messages so marked are not
forwarded to {pskreporter}.

Table 2 lists the six possible QSO states that are tracked by the
_WSJT-X_ auto-sequencer, along with the type of AP decoding that would
be attempted in each state in FT4 or FT8. The FST4 table (not shown) 
is the same except that it omits the decoding attempts for AP types 
4 and 5 to save time.

[[FT8_AP_DECODING_TYPES_TABLE]]
.FT4 and FT8 AP decoding types for each QSO state
[width="35%",cols="10h,<20m",frame=topbot,options="header"]
|===
|State        |AP type
|CALLING STN  |   2, 3
|REPORT       |   2, 3
|ROGER_REPORT |   3, 4, 5, 6
|ROGERS       |   3, 4, 5, 6
|SIGNOFF      |   3, 1, 2
|CALLING CQ   |   1, 2
|===

Decoding with _a priori_ information behaves slightly differently
in JT65.  Some details are provided in Tables 3 and 4.

[[JT65_AP_INFO_TABLE]]
.JT65 AP information types
[width="35%",cols="1h,<10m",frame=topbot,options="header"]
|===
|aP | Message components
|a1 | CQ   &#160; &#160;   ?   &#160; &#160;   ? 
|a2 | MyCall &#160; &#160; ?   &#160; &#160;   ? 
|a3 | MyCall DxCall &#160; &#160;  ? 
|a4 | MyCall DxCall RRR
|a5 | MyCall DxCall 73
|a6 | MyCall DxCall DxGrid
|a7 | CQ     DxCall DxGrid
|===

[[JT65_AP_DECODING_TYPES_TABLE]]
.JT65 AP decoding types for each QSO state
[width="35%",cols="10h,<20m",frame=topbot,options="header"]
|===
|State        |AP type
|CALLING STN  |2, 3, 6, 7
|REPORT       |2, 3
|ROGER_REPORT |3, 4, 5
|ROGERS       |3, 4, 5
|SIGNOFF      |2, 3, 4, 5
|CALLING CQ   |1, 2, 6
|===


=== Decoded Lines

Displayed information accompanying decoded messages generally includes UTC,
signal-to-noise ratio in dB, time offset DT in seconds, and
audio frequency in Hz.  Some modes include additional information such
as frequency offset from nominal (DF), frequency drift (Drift or F1),
or distance (km or mi).

There may also be some cryptic characters with special meanings
summarized in the following Table:

[[DECODED_LINES_TABLE]]
.Notations used on decoded text lines
[width="50%",cols="h,3*^",frame=topbot,options="header"]
|===
|Mode    |Mode character|Sync character|End of line information
|FST4    | `            |              | ? &#160; aP
|FT4     | +            |              | ? &#160; aP
|FT8     | ~            |              | ? &#160; aP
|JT4     | $            | *, #         | f, fN, dCN
|JT9     | @            |              |
|JT65    | #            |              |
|JT65 VHF| #            | *, #         | f, fN, dCN
|Q65     | :            |              | qP
|MSK144  | &            |              |
|===
Sync character::
 `*` - Normal sync +
 `#` - Alternate sync

End of line information::
 `?` - Decoded with lower confidence +
 `a` - Decoded with aid of some _a priori_ (AP) information +
 `C` - Confidence indicator [Deep Search; (0-9,*)] +
 `d` - Deep Search algorithm +
 `f` - Franke-Taylor or Fano algorithm +
 `N` - Number of Rx intervals or frames averaged +
 `P` - Number indicating type of AP information (Table 1 or Table 6) +

[[Q65_AP_INFO_TABLE]]
.Q65 end-of-line codes
[width="50%",cols="1h,<10m",frame=topbot,options="header"]
|===
|qP|Message components
|q0|?    &#160; &#160;   ?   &#160; &#160;   ?
|q1|CQ   &#160; &#160;   ?   &#160; &#160;   ? 
|q2|MyCall   &#160; &#160;   ?   &#160; &#160;   ? 
|q3|MyCall DxCall &#160; &#160;   ?
|q4|MyCall DxCall &#160; &#160; [<blank> \| RRR \| RR73 \| 73]
|q5|MyCall DxCall &#160; &#160;   ? &#160; &#160; &#160; &#160; (*Max Drift* = 50)
|===
