Changes

Jump to navigation Jump to search
711 bytes added ,  15:20, 23 February 2017
no edit summary
| 0x0
| 0x4
| Start index of valid packagespackets
|-
| 0x4
| 0x4
| End index of valid packagespackets
|-
| 0x8
| 0x4
| Number of valid packagespackets
|-
| 0xC
|-
| 0x0
| 0x8 * package_count packet_count (specified in Init parameter)| PackageInfoPacketInfo{u32 offset_to_data_buffer, u32 data_length}
|-
| 0x8 * package_countpacket_count| buffer_size - 0x8 * package_countpacket_count
| Data buffer
|}
The buffers are two circular buffers. A new package packet is added to the end of previous package packet in the data buffer, with package packet info added to PackageInfoPacketInfo[end_index++]. Note that if an added package packet exceeds the end of the buffer, the exceeding data will be wrapped around to the beginning of the data buffer.  ==Packet structure==A packet in the data buffer consists of a header, payload and a crc8 checksum{| class="wikitable" border="1"|-! Relative offset! Size! Description|-| 0x0| 0x1| Fixed value 0xA5?|-| 0x1| 0x1| Unknown|-| 0x2| 0x1| The highest bit is unknown. When second highest bit is clear, the rest bit[0:5] of this byte is the payload length; otherwise bit[0:5] is the higher byte of the payload length|-| 0x3| 0x1| When bit[6] of previous byte is set, this byte is the lower byte of the payload length; other wise this byte doesn't present|-| 0x3 or 0x4| payload length| payload|-| 0x3 or 0x4 +payload_length| 0x1| crc8 (x^8 + x^2 + x + 1) over data above (header + payload)|-|}
242

edits

Navigation menu