* On 2012 01 Jun 13:47 -0500, R. Torsten Clay wrote:
> My WK always sends the status byte at the start and finish of a cw
> message. The host does not have to poll for them:
After more testing and following along with the winkey.cpp source, I
have a better handle on things. Clearly, the bug is in the MK1.
> "Notice that unless Winkeyer2 has something for the host to read, the
> host continues to process outgoing commands and other tasks. Also note
> that speed pot and status bytes can be unsolicited, in other words
> Winkeyer2 can send these at any time a state change occurs inside
> Winkeyer2. Echo back bytes are also unsolicited as they are based on
> asynchronous Morse sending. The host has to be able to handle these as
> they occur. If host processing is slow, a serial input buffer on the
> host side is required to make sure no returned bytes are missed."
I've read that a few times in the Winkeyer manuals and still find it
lacking some detail. ;-) I suppose, "state change occurs" covers the
situation...
FYI, here is what I'm seeing to/from the MK1 when starting SO2SDR and
then pressing F1 once the FD contest is selected:
< 0x13
< 0x13
< 0x13
< 0x00
< 0x04
< 0x55 (U)
> 0x55 (U)
< 0x00
< 0x02
> 0x16
< 0x01
< 0x87
< 0x0e
< 0x00
< 0x05
< 0x0a
< 0x50 (P)
< 0x00
< 0x02
< 0x14
< 0x09
< 0x07
> 0xa1
> 0xa0
> 0xa1
> 0xa0
> 0xa1
> 0xa0
> 0xa1
> 0xa0
> 0xa1
> 0xa0
> 0xa1
< 0x02
< 0x14
< 0x09
< 0x07
< 0x43 (C)
< 0x51 (Q)
< 0x46 (F)
< 0x44 (D)
< 0x20
< 0x4e (N)
< 0x30 (0)
< 0x4e (N)
< 0x42 (B)
< 0x20
< 0x4e (N)
< 0x30 (0)
< 0x4e (N)
< 0x42 (B)
< 0x1e
> 0xc0
Now, what, exactly, those 0xa1 and 0xa0 bytes signify, I don't know.
The MK1 manual carries this statement, "Complete documentation of
emulation mode commands and status will be included in a separate
document.", except that I don't see it anywhere on the Web site!
Note that it does send the 0xc0 byte once sending is complete, but no
0xc4 as expected. I'll get ahold of N0XAS and work on this with him.
Interestingly, the MK1 manual carries this notice, "A note regarding
speed settings: Setting speeds above 63 WPM while in Winkeyer emulation
mode can cause problems with host mode software. At 64 WPM and above,
the keyer's speed update byte will appear to be a status byte. This is
the case with the MK-1 or any Winkeyer-based device. To avoid this
issue, keep the operating speed below 64 WPM when in Winkeyer emulation
mode." Indeed, with the current default speed pot range setting of 0x80
plus 0x10 minimum WPM, the top end is 144 WPM! Perhaps a range of 25
combined with a minimum of 15 would be reasonable defaults? Spinning
the speed knob did send values back to the host in the status byte range
so seeing to it that the max speed pot WPM value is 63 WPM and less is a
good idea.