The table is missing the '+' char for CW, which is commonly used at the end of messages.
I'm no expert but is this because the reversal logic assumes that all codes are valid base-4 sequences, works for most characters, but some special symbols (like '@', '+', ':', etc.) have codes like 3054, 3003, 4074, which may contain digits outside the base-4 range (i.e., digits ≥ 4). This breaks the assumption in CwGen_ReverseCode.
const char cw_char_chars[CW_CHAR_CODES] =
{
' ',
'E',
'T',
'I',
'A',
'N',
'M',
'S',
'U',
'R',
'W',
'D',
'K',
'G',
'O',
'H',
'V',
'F',
'L',
'P',
'J',
'B',
'X',
'C',
'Y',
'Z',
'Q',
'5',
'4',
'3',
'2',
'1',
'6',
'=',
'/',
'7',
'8',
'9',
'0',
'?',
'"',
'.',
'@',
''',
'-',
',',
':'
};
The table is missing the '+' char for CW, which is commonly used at the end of messages.
I'm no expert but is this because the reversal logic assumes that all codes are valid base-4 sequences, works for most characters, but some special symbols (like '@', '+', ':', etc.) have codes like 3054, 3003, 4074, which may contain digits outside the base-4 range (i.e., digits ≥ 4). This breaks the assumption in CwGen_ReverseCode.
const char cw_char_chars[CW_CHAR_CODES] =
{
' ',
'E',
'T',
'I',
'A',
'N',
'M',
'S',
'U',
'R',
'W',
'D',
'K',
'G',
'O',
'H',
'V',
'F',
'L',
'P',
'J',
'B',
'X',
'C',
'Y',
'Z',
'Q',
'5',
'4',
'3',
'2',
'1',
'6',
'=',
'/',
'7',
'8',
'9',
'0',
'?',
'"',
'.',
'@',
''',
'-',
',',
':'
};