On 02/15/04 22:39, mikage said...
I think this format to look like the one of
ProntoNeo.
The document concerning the format of ProntoNeo
was in the following places.
The format used internally by the NG models is very similar to the Neo format. But there are significant differences vs. that document. I think some differences are because that document only covers a subset of the format. But maybe there are also real differences between the NG and Neo formats.
I figured out most of the details of NG format at one point, but never wrote much about it and have since forgotten most of it.
I'll assume you're correct about where the number of durations, the carrier value, and the lead out are encoded. Somewhere in there it also tells you the number of bits used to index the table of durations. We can see that 4 bits are being used, but I forget where that is encoded. Often the NG uses 2 bits instead of 4, and I think other numbers are possible.
16 Variation 00
15 Variation 01
40 Variation 10
ab Variation 11 (?)
55 Variation 100 (?)
Since 4 bits are used for each index, those are 0000, 0001, 0010, 0011 and 0100.
3f [0011.1111]
Within each byte, the bit fields are taken in reverse sequence. So that is an F followed by a 3. The code of 'F' means something special follows. That is where things get most confusing, interpreting how many bit fields following an F are part of one longer element and what that element is. It's even more confusing when they use just 2 bits per field (making 3 the special value, rather than F).
7f [0111.1111] Preamble End. 11 1111
0111 1111
f0 [1111.0000] Repeat Cue
0b [0000.1011]
31 IR Sequence? (0016 00ab?)
10 10 10 20 20 10 10 10 IR Sequence
We know the 3 there represents the AB in the raw format. Since the fields are reversed in each byte, the 3 is in a section of the sequence best viewed as:
... F B 0 1 3 0 1 0 1 0 1 0 2 ...
The 0 1 0 1 0 1 0 2 following the 3 clearly encode the 16 15 16 15 16 15 16 40 of the raw data.
Somehow the items before the 3 encode the 157 of the raw data. They have a strange format for anything larger than 00FF. They don't include it in the table of durations. Instead they have an F, followed by some bits that indicate this is a large value (rather than some other special item) followed by the duration of the large item (I think in units other than the cycles used for ordinary durations). I forget how the B 0 1 encodes all that, but it must.
bf [1011.1111] Burst Pair? However,
the format is not understood.
49 [0100.1001]
f0 [1111.0000]
Again the sequence is really F B 9 4 0 F
The F says something special follows. The B 9 4 0 somehow encodes a really long gap. The next F introduces the next special.
0a [0000.1010]
The A is the repeat marker (introduced by the F before it). The 0 has me confused.
bf [1011.1111]
10 [0001.0000]
04 [0000.0004]
That is F B 0 1 4 0, where (as above) the F introduces the B 0 1 to encode 157. Then 4 0 is 55 16.
f0 [1111.0000]
0d [0000.1101] Sequence End?
0 F D 0
0 encodes the 16 (the on part of the last burst).
F introduces special.
D (as a special) marks the end.
The last 0 is just padding.
The Off part of the final burst is never included.
I know all the above will be giberish to most people reading this, but you seem to half understand it already. Feel free to ask about any details that I didn't communicate well enough.