[Date Prev][Date Next][Thread Prev][Thread Next] - [Date Index][Thread Index][Author Index]

Re: AO40rcv and the Kenwood TS-2000

At 08:24 AM 4/6/2001 -0500, Timothy J. Salo wrote:
>If I were developing this protocol, I would use type/length/value
>tuples (TLVs).  Each message would be composed of one or more TLVs.
>Each TLV would like:
>          -------------------------
>          | Type | Length | Value |
>          -------------------------

This encoding is only good on error-protected links, and preferably ones
with inherent framing. On an unprotected byte-stream link (like a serial port)
you can get out of sync and be screwed.

Something like this would be more robust:

Flag | Type | Length | Value | CRC

where "Flag" is a unique value, and the other fields are byte-escaped to
prevent that value from appearing literally.

CRC calculations are NOT very hard, but they take up about 300 bytes of
code space (a 256-byte table and a little bit of code). If your target is really
a PIC with only 2K of program space, as somebody suggested, then you
might wish to use a checksum instead. Of course, if this is your target, the
command set is going to have to be tiny too.

Another possibility would be to take the framing and Type byte from the
KISS TNC protocol (http://people.qualcomm.com/karn/papers/kiss.html).
If you do that, and choose Type bytes that are not used by KISS, it's
possible that a single serial port could be shared between a KISS TNC
and a transceiver controller.

Another design issue for this type of thing is addressing. One of the
well-loved features of the Icom transceiver control system is that multiple
rigs can be connected on the same wire. It would be worth adding an
address field in the format to accommodate this feature.

73  -Paul

Via the amsat-bb mailing list at AMSAT.ORG courtesy of AMSAT-NA.
To unsubscribe, send "unsubscribe amsat-bb" to Majordomo@amsat.org