LTTO notes
Introduction
I've only had the thing 24 hours, but this is what I know
so far. I'll keep this page updated as I learn more, or people send me
what they have learned. If you'd like to help or have corrections,
drop me a line, I'm krellboy [AT] gmail.com.
I'm not so interested in the shot protocol as I am in the muster and
debrief protocols. A stand-alone application to manage games
(say, running on a palm pilot) would be a cool application. A
couple years ago I reverse engineered the LC V2 ELS protocol and wrote
a similar application that runs on a PIC, but never released the code
(I always just wanted to make it a little better first).
If you are interested in working on an GPL'd, Open Source project to write
such an app (I'd think a palm pilot would be perfect) please drop me a
line.
Changelog:
- 4/20/05 original notepad version
- 4/20/05 4:50 AM cleaned up in Composer
Basic signal format
There are at least two types of signals, beacon and shot. (I haven't
investigated the muster/debrief protocols much yet). They
use the same encoding but with a different preamble and word length.
The longest signal I saw (including looking
at the muster protocol) so far has been 8 bits, so it
looks like it should be easy to stuff them into a byte.
Note: To avoid introducing silly
errors in transcribing
my data, I'm going to use a few arbitrary conventions that are mostly
just artifacts of how things look on my logic analyzer. First
is that I'm going to use active low, so a low (when on a graph)
means that IR carrier is preset. Second is that I'm going to record bit
streams in time, not bit significance order. IE, 011 means a
zero was tranmitted first, then a 1 and another 1. Third, I'm
going to call arbitrarily call "long" a 1 and a "short" and 0.
The basic signal format is a pulse width encoding. A bit time is
either 3 or 4 ticks, with a tick being 1 mS.
Here is a 0
__
_
Here is a 1
__
__
This is 101
__ __ __
__ _ __
The complete signal word is a preamble followed by a number of bit time
slots, ie...
6ms
______ __ __ __ __ __
___ ______ _ _ _ _ _
3ms 6ms
Which is a LTAG beacon signal. We'll call the complete thing a
3/6/6-00000, which is the preamble timing and data bits values.
Preambles
Here are some preambles that I have seen...
Beacon - 3/6/6
6ms
______
___ ______
3ms 6ms
2TMS shot - 3/9/3
9ms
_________
___ ___
3ms 3ms
3TMS & LTAG shot - 3/6/3
6ms
______
___ ___
3ms 3ms
Data bits
Here are some of the data bits encountered.
Beacon: The beacon is 5 bits. So far I have only seen the first two
vary.
TT??? - so far
values for TT (seen in 2TMS and 3TMS)
00 - no team/individual (LTAG)
01 - Team 1
10 - Team 2
11 - Team 3
values for ???
000 - what I've seen so far
examples
01000 Team 1 player
11000 Team 3 player
00000 LTAG shot
Shot: A shot is 7 bits.
TTPPP??
The values for the TT bits are the same as in the beacon.
values for PPP (player number - 1 as binary)
000 Player 1
001 Player 2
...
111 Player 8
values for ??
00 - only seen so far. (probably one of them is mega shot)
examples
0101000 - Team 1 Player 3
0100100 - Team 1 Player 1
1111100 - Team 3 Player 8
Timing
Data stream minimum bit times are 1 ms, everything is in units of 1ms.
Shots are no closer than 128ms together.
Beacons repeat every 500 (maybe 512) ms.
Muster beacon protocol looks like 3 code words 64 ms aparts.
What's next?
I'm going to make a "sniffer" to record the protocol
handshakes. Should be easy to make a decoder with a PIC and
record the transactions.
Please send any corrections to krellboy {at} gmail.com