native apps with libSamy[GP]Orting.so

Ideas and dreaming will go this forum

User avatar
arris69
Official SamyGO Developer
Posts: 1700
Joined: Fri Oct 02, 2009 8:52 am
Location: Austria/Vienna (no Kangaroos here)
Contact:

native apps with libSamy[GP]Orting.so

Post by arris69 » Fri Feb 18, 2011 4:57 pm

hi,

i'm 'working' on a helper library to get native (gui) apps running on tv.
somebody found a way how to get the signals/events from remote control. (without inject stuff into exeDSP :!: ) :?:

it's no problem if we need to use lib's (libAdi.so or others) but i don't like to hook into exeDSP.

thnx
arris

User avatar
juusso
SamyGO Moderator
Posts: 10100
Joined: Sun Mar 07, 2010 6:20 pm

Re: native apps with libSamy[GP]Orting.so

Post by juusso » Sat Feb 19, 2011 7:29 pm

Code: Select all

====================================
      [ TOP Debug Menu]
------------------------------------
  1  : SubSystem Print On/Off
Then

Code: Select all

====================================
      [ Print Debug Menu]   
------------------------------------
   5  : SS KeyInput Printf ON/OFF

Input Level Mask << : 5
Input On[1]/Off[0] << : 1
SubSystem Print Control Level 0x00000011
Got key press debug info on ExLink. Might this info helps you... :oops:

Code: Select all

~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x6b 0x1 0xc 0x0 0x0
~~[SSKI] [KeyCommon.cpp] t_OkayToSend, false!! #1 key : 0x6b
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, TDcMicomInterface::KEY_TYPE_RC : 0 107 1 12 0 0
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [AutoClockMonitor.cpp] t_Monitor, [MICOM 12/02/19      18:28:28]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x0 0xe2 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(97) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0061]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x1 0xd 0x0 0x0
~~[SSKI] [KeyCommon.cpp] t_OkayToSend, false!! #2 repeat : 0x1
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, TDcMicomInterface::KEY_TYPE_RC : 0 97 1 13 0 0
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x2 0x44 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(97) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0061]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x1 0xc 0x0 0x0
~~[SSKI] [KeyCommon.cpp] t_OkayToSend, false!! #2 repeat : 0x1
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, TDcMicomInterface::KEY_TYPE_RC : 0 97 1 12 0 0
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x2 0x3b 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(97) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0061]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x2 0x9e 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(97) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0061]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x1 0xd 0x0 0x0
~~[SSKI] [KeyCommon.cpp] t_OkayToSend, false!! #2 repeat : 0x1
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, TDcMicomInterface::KEY_TYPE_RC : 0 97 1 13 0 0
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x61 0x2 0x4d 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(97) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0061]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x60 0x0 0x78 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(96) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0060]
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x3 0x42 0x1 0x0 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyReleaseInput, SendKeyReleaseInput() type(-4)
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, ########## TDcMicomInterface::KEY_TYPE_RELEASE #############
~~[SSKI] [KeyInputBase.cpp] t_Main, 0x0 0x68 0x0 0x40 0x0 0x0
~~[SSKI] [KeyCommon.cpp] SendKeyPressInput, Code(104) type(-3), bKeyContinue 0
~~[SSKI] [KeyInputBase.cpp] t_ProcessKeyValue, RC Key Code [0x0068]
LE40B653T5W,UE40D6750,UE65Q8C
Have questions? Read SamyGO Wiki, Search on forum first!
FFB (v0.8), FFB for CI+ . Get root on: C series, D series, E series, F series, H series. rooting K series, exeDSP/exeTV patches[C/D/E/F/H]

DO NOT EVER INSTALL FIRMWARE UPGRADE

User avatar
arris69
Official SamyGO Developer
Posts: 1700
Joined: Fri Oct 02, 2009 8:52 am
Location: Austria/Vienna (no Kangaroos here)
Contact:

Re: native apps with libSamy[GP]Orting.so

Post by arris69 » Sun Feb 20, 2011 11:06 am

juuso wrote:...
yes, seems it's full implemented over exeDSP. but think i saw somewhere the ioctl list......

thnx
arris

sbav1
Official SamyGO Developer
Posts: 374
Joined: Fri Jan 15, 2010 10:20 am

Re: native apps with libSamy[GP]Orting.so

Post by sbav1 » Sun Feb 20, 2011 4:21 pm

arris69 wrote: yes, seems it's full implemented over exeDSP. but think i saw somewhere the ioctl list......
Interesting :). So, ordinarily, exeDSP is getting IR keycodes from [sub]micom (over UART, /dev/ttyS0). But it looks like there is an additional, independent interface for IR hardware in SDP83: three U32 registers for IR receiver (0x30090300-0x30090308) and five U32 registers for IR transmitter (0x30090700-0x30090710), with dedicated hardware interrupt (IRB_IRR, IRQ18).
In fact there is an implementation for this 2nd receiver in samdrv.ko & exeDSP (I can't find and code related to IR blaster registers).
Sadly, this 2nd "receiver" is apparently not receiving anything.. no matter what, interrupt count (18, IRHandler) stays at 0. Perhaps it's not connected to anything on hardware level -or maybe it requires some special kind of remote control (factory remote, cloning remote, hospitality TV remote - ???).

User avatar
arris69
Official SamyGO Developer
Posts: 1700
Joined: Fri Oct 02, 2009 8:52 am
Location: Austria/Vienna (no Kangaroos here)
Contact:

Re: native apps with libSamy[GP]Orting.so

Post by arris69 » Mon Feb 21, 2011 9:43 pm

sbav1 wrote:
arris69 wrote: yes, seems it's full implemented over exeDSP. but think i saw somewhere the ioctl list......
Interesting :). So, ordinarily, exeDSP is getting IR keycodes from [sub]micom (over UART, /dev/ttyS0). But it looks like there is an additional, independent interface for IR hardware in SDP83: three U32 registers for IR receiver (0x30090300-0x30090308) and five U32 registers for IR transmitter (0x30090700-0x30090710), with dedicated hardware interrupt (IRB_IRR, IRQ18).
In fact there is an implementation for this 2nd receiver in samdrv.ko & exeDSP (I can't find and code related to IR blaster registers).
Sadly, this 2nd "receiver" is apparently not receiving anything.. no matter what, interrupt count (18, IRHandler) stays at 0. Perhaps it's not connected to anything on hardware level -or maybe it requires some special kind of remote control (factory remote, cloning remote, hospitality TV remote - ???).
for kernel 2.6.18 and running exeDSP.
yes, remote control data can be read from /dev/ttyS0 its also "announced" with SIGIO but the micom/watchdog data is also here and when you read the data (without some filtering???) strange things happen. (maybe parts from code here http://www.faqs.org/docs/Linux-HOWTO/Se ... HOWTO.html can help).
maybe whole stuff is handlet by the serial driver? (i'll check it with 2.6.24 kernel too, if we have a bit luck it will work out of the box?)

arris

sbav1
Official SamyGO Developer
Posts: 374
Joined: Fri Jan 15, 2010 10:20 am

Re: native apps with libSamy[GP]Orting.so

Post by sbav1 » Mon Feb 21, 2011 10:46 pm

arris69 wrote: yes, remote control data can be read from /dev/ttyS0 its also "announced" with SIGIO but the micom/watchdog data is also here and when you read the data (without some filtering???) strange things happen.
exeDSP and micom are chatting constantly over /dev/ttyS0 ("are you alive?/I'm alive", HDMI CEC send/receive, RTC & timers set/get, RC input data, and what the heck not). Quite complex communication protocol; ACKs for received/transmitted packets involved; protocol details unknown :(.
AFAIK it's even possible to flash micom firmware over this interface; also to store/retrieve (non-volatile, semi-permanent ?) settings of some kind; I suspect there is an independent EEPROM/NVRAM built in (or connected to) micom for that purpose (?).
(maybe parts from code here http://www.faqs.org/docs/Linux-HOWTO/Se ... HOWTO.html can help).
maybe whole stuff is handlet by the serial driver? (i'll check it with 2.6.24 kernel too, if we have a bit luck it will work out of the box?)
From what I see, /dev/ttyS0 is operating on standard 9600, 8, N, 1 settings (probably with TTL or 2.5V/3.3V signaling on hardware level, but that shouldn't be a problem). Samsung kernel drivers for SDP83 UART hardware looking good - nothing out of the ordinary; I wouldn't expect any real problems on this level.

User avatar
arris69
Official SamyGO Developer
Posts: 1700
Joined: Fri Oct 02, 2009 8:52 am
Location: Austria/Vienna (no Kangaroos here)
Contact:

Re: native apps with libSamy[GP]Orting.so

Post by arris69 » Mon Feb 21, 2011 11:43 pm

sbav1 wrote:....
From what I see, /dev/ttyS0 is operating on standard 9600, 8, N, 1 settings (probably with TTL or 2.5V/3.3V signaling on hardware level, but that shouldn't be a problem). Samsung kernel drivers for SDP83 UART hardware looking good - nothing out of the ordinary; I wouldn't expect any real problems on this level.
tested kernel 2.6.24, there are some data on /dev/ttyS0 on remote press!!! looks very different as on 2.6.18 but better than nothing :) (just looked with

Code: Select all

while head  /dev/ttyS0
do
 :
done
so have no hex data to compare)

make it sense to try do the filter of remote signals at kernel level or is this too much?

arris

sbav1
Official SamyGO Developer
Posts: 374
Joined: Fri Jan 15, 2010 10:20 am

Re: native apps with libSamy[GP]Orting.so

Post by sbav1 » Tue Feb 22, 2011 7:56 pm

arris69 wrote: make it sense to try do the filter of remote signals at kernel level or is this too much?
I think such functionality (on kernel level and/or shell level) will become quite useful sooner or later. Eg., we will be able to control TV start up process with the remote control (before exeDSP gets loaded in startup scripts) etc.

Here is a preliminary research regarding data packets received from micom.
We have 3 kinds of packets: "normal", "cec", and "clone". "Normal" packet size is 9 bytes. CEC packets are variable in length (8,9, 10, .. bytes ?). Clone packets are . Remote control & panel keys events are of "normal" kind; there are 3 (perhaps more) different message types for RC/front panel keys events.

Packet structure (for "normal" type packet, ie: 9 bytes: 0..1 - header, 2 - message type, 3..7 - payload, 8 - checksum):
a) bytes 0,1: header (0xff 0xff: "normal" packet, 0xff 0xfe: "hdmi cec" packet, 0xff 0xfd: "clone buffer" packet)
b) byte 2: message type (0x10: KEY_TYPE_RC - remote key event, 0x11: KEY_TYPE_FP - front panel key event, 0x1E: KEY_TYPE_RELEASE event)
c) byte 3: actual keycode (for KEY_TYPE_RC & KEY_TYPE_FP events), or 0x42 for KEY_TYPE_RELEASE event,
d) byte 4: key repetition flag (0|1|2)
- 0: means "new, different key" (1st key in new sequence, or if previous key in the same sequence was a different one)
- 1: means "repeated key", i.e: previous key in current sequence was the same,
- 2: first key in new sequence - if the last key in previous sequence was the same one.
e) byte 5: not sure what it is (0xE2-0x0C,0x00; time elapsed from previous keypress ?),
f) byte 6,7: no idea (0x00 0x00 for key type events ?)
g) byte 8: checksum sans header: (b2+b3+b4+b5+b6+b7) && 0xFF

Also, there is an additional micom key type event supported in firmware, KEY_TYPE_AR ("auto remocon" ???); I wonder what it is for..

Key sequence (one single key, possibly self-repeating 1..N times, OR a bunch o different keys pressed very shortly one after another):
- one KEY_RC or KEY_FP event (with repetition flag == 0 or 2),
- 0..N KEY_RC or KEY_FP events (with repetition flag == 1 or 0),
- one KEY_RELASE event.

KEY_RELEASE message is identical for both KEY_RC and KEY_FP event sequences (0xFF 0xFF 0x1E 0x42 0x01 0x00 0x00 0x00 0x61).

On micom level, all remote keys are self-repeating (8-9 times per second). Front panel keys are also self-repeating, except POWER key (this one is special, it will send one KEY_FP event when pressed and one KEY_RELEASE event on actual release).

Sequence examples:
- MENU key, one very short keypress:

Code: Select all

0xFF 0xFF 0x10 0x1A 0x00 0xE2 0x00 0x00 0x0E
0xFF 0xFF 0x1E 0x42 0x01 0x00 0x00 0x00 0x61
- menu key pressed again (little longer keypress, ~0.5sec):

Code: Select all

0xFF 0xFF 0x10 0x1A 0x02 0xE2 0x00 0x00 0x0C
0xFF 0xFF 0x10 0x1A 0x01 0x0C 0x00 0x00 0x37
0xFF 0xFF 0x10 0x1A 0x01 0x0C 0x00 0x00 0x37
0xFF 0xFF 0x10 0x1A 0x01 0x0C 0x00 0x00 0x37
0xFF 0xFF 0x1E 0x42 0x01 0x00 0x00 0x00 0x61
- vol up / vol down keys pressed shortly one after another:

Code: Select all

0xFF 0xFF 0x10 0x0B 0x00 0xE2 0x00 0x00 0xFD
0xFF 0xFF 0x10 0x07 0x00 0x17 0x00 0x00 0x2E
0xFF 0xFF 0x1E 0x42 0x01 0x00 0x00 0x00 0x61

User avatar
arris69
Official SamyGO Developer
Posts: 1700
Joined: Fri Oct 02, 2009 8:52 am
Location: Austria/Vienna (no Kangaroos here)
Contact:

Re: native apps with libSamy[GP]Orting.so

Post by arris69 » Tue Feb 22, 2011 9:06 pm

sbav1 wrote:...
nice, bookmarked this site ;-)

i think i need here some mutex/locking stuff

Code: Select all

./sertest3
:0 chars in serial buffer
:0 chars remain in serial buffer
received SIGIO signal. (0x001d)
:69 chars in serial buffer
:69 chars in serial buffer
received SIGIO signal. (0x001d)
:18 chars read to buf
:00:00:29:ff:ff:10:0b:01:0c:00:00:28:ff:ff:10:0b:01:0a:0 chars remain in serial buffer
thnx
arris

User avatar
arris69
Official SamyGO Developer
Posts: 1700
Joined: Fri Oct 02, 2009 8:52 am
Location: Austria/Vienna (no Kangaroos here)
Contact:

Re: native apps with libSamy[GP]Orting.so

Post by arris69 » Sat Jul 09, 2011 1:04 pm

sbav1 wrote:
arris69 wrote: make it sense to try do the filter of remote signals at kernel level or is this too much?
I think such functionality (on kernel level and/or shell level) will become quite useful sooner or later. Eg., we will be able to control TV start up process with the remote control (before exeDSP gets loaded in startup scripts) etc.

Here is a preliminary research regarding data packets received from micom.
We have 3 kinds of packets: "normal", "cec", and "clone". "Normal" packet size is 9 bytes. CEC packets are variable in length (8,9, 10, .. bytes ?). Clone packets are . Remote control & panel keys events are of "normal" kind; there are 3 (perhaps more) different message types for RC/front panel keys events.

Packet structure (for "normal" type packet, ie: 9 bytes: 0..1 - header, 2 - message type, 3..7 - payload, 8 - checksum):
a) bytes 0,1: header (0xff 0xff: "normal" packet, 0xff 0xfe: "hdmi cec" packet, 0xff 0xfd: "clone buffer" packet)
b) byte 2: message type (0x10: KEY_TYPE_RC - remote key event, 0x11: KEY_TYPE_FP - front panel key event, 0x1E: KEY_TYPE_RELEASE event)
c) byte 3: actual keycode (for KEY_TYPE_RC & KEY_TYPE_FP events), or 0x42 for KEY_TYPE_RELEASE event,
d) byte 4: key repetition flag (0|1|2)
- 0: means "new, different key" (1st key in new sequence, or if previous key in the same sequence was a different one)
- 1: means "repeated key", i.e: previous key in current sequence was the same,
- 2: first key in new sequence - if the last key in previous sequence was the same one.
e) byte 5: not sure what it is (0xE2-0x0C,0x00; time elapsed from previous keypress ?),
f) byte 6,7: no idea (0x00 0x00 for key type events ?)
g) byte 8: checksum sans header: (b2+b3+b4+b5+b6+b7) && 0xFF

Also, there is an additional micom key type event supported in firmware, KEY_TYPE_AR ("auto remocon" ???); I wonder what it is for..
...


as reference, some data from the serial line (no user actions, so this are maybe watchdog, finetuning or whatever signals)

Code: Select all

struct micom_event{
        __u8 header;    /* 0xff */
        __u8 type;      /* 0xff: "normal" packet, 0xfe: "hdmi cec" packet, 0xfd: "clone buffer" packet */
        __u8 event;     /* MICO_KEY_EVENT */
        __u8 code;      /* keycode or 0x42 for KEY_TYPE_RELEASE event */
        __u8 flag;      /* key repetition flag (0|1|2) */
        __u8 unk1;     /* not sure what it is (0xE2-0x0C,0x00; time elapsed from previous keypress ?) */
        __u8 unk2;    /* no idea (0x00 0x00 for key type events ?) */
        __u8 unk3;    /* no idea (0x00 0x00 for key type events ?) */
        __u8 crc;       /* checksum sans header: (b2+b3+b4+b5+b6+b7) && 0xFF */
}__attribute__((packed));

Code: Select all

header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x99 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x49 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x2306 crc: 0xb5 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x2406 crc: 0xb6 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x2406 crc: 0xb6 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x2506 crc: 0xb7 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x2506 crc: 0xb7 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xed flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8e 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x99 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x49 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xed flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8e 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0x29 code: 0x00 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x29 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x99 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x49 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x1707 crc: 0xaa 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x1807 crc: 0xab 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x1807 crc: 0xab 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x1907 crc: 0xac 
header: 0xff type: 0xff event: 0x50 code: 0x14 flag: 0x21 u1: 0x07 u2: 0x1907 crc: 0xac 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xb0 code: 0x98 flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x48 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xeb flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8c 
header: 0xff type: 0xff event: 0xa1 code: 0xec flag: 0x00 u1: 0x00 u2: 0x0000 crc: 0x8d 
Last edited by arris69 on Sat Jul 09, 2011 2:20 pm, edited 1 time in total.
Reason: added unk3 due endianmadness

Post Reply

Return to “[B] Brainstorm”