ID 1A - Extended pulse sequence
length: [00,01,02,03]+04
Offset Value Type Description
0x00 4*N DWORD Block length (without these four bytes)
0x04 - SEQ[N] Duration and repeat count of pulses in each sequence


SEQ structure format
Offset Value Type Description
0x00 - WORD Pulse duration
0x02 - WORD Number of repetitions


This will produce N sequences of pulses, each sequence consisting of specified amount of pulses of specified duration.

Note that zero pulse duration is perfectly valid as well. It may be used to invert current pulse level at either the beginning or end of the block or to achieve pulse of duration greater than 65535 T cycles if necessary. In either of these cases the number of repetitions specified should be 1.


ID 1B - Simple Generalized Data Block
length: [00,01,02,03]+04
Offset Value Type Description
0x00 - DWORD Block length (without these four bytes)
0x04 - WORD Pause after this block (ms)
0x06 B DWORD Number of bits in the data stream.
0x0A P0 WORD Number of pulses used to encode bit 0.
0x0C P1 WORD Number of pulses used to encode bit 1.
0x0E S0 WORD[P0] Array of pulse durations representing bit 0.
0x0E+2*P0 S1 WORD[P1] Array of pulse durations representing bit 1.
0x0E+2*(P0+P1) - BYTE[ceil(B/8)] Data stream


This block is used to store data whose bits 0 and 1 are each encoded with specified pulse sequences. The bytes in the data stream are processed one bit at time, most significant bits first, and each bit is represented as one of the two available sequences of pulses according to given bit value, S0 sequence for bit 0 and S1 sequence for bit 1, respectively.

Note that zero pulse duration in pulse sequence is perfectly valid as well. It may be used to invert current pulse level at either the beginning or end of the sequence as necessary.