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:

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