Changes

711 bytes added ,  14:20, 23 February 2017
no edit summary
Line 74: Line 74:  
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| Start index of valid packages
+
| Start index of valid packets
 
|-
 
|-
 
| 0x4
 
| 0x4
 
| 0x4
 
| 0x4
| End index of valid packages
+
| End index of valid packets
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x4
 
| 0x4
| Number of valid packages
+
| Number of valid packets
 
|-
 
|-
 
| 0xC
 
| 0xC
Line 98: Line 98:  
|-
 
|-
 
| 0x0
 
| 0x0
| 0x8 * package_count (specified in Init parameter)
+
| 0x8 * packet_count (specified in Init parameter)
| PackageInfo{u32 offset_to_data_buffer, u32 data_length}
+
| PacketInfo{u32 offset_to_data_buffer, u32 data_length}
 
|-
 
|-
| 0x8 * package_count
+
| 0x8 * packet_count
| buffer_size - 0x8 * package_count
+
| buffer_size - 0x8 * packet_count
 
| Data buffer
 
| Data buffer
 
|}
 
|}
   −
The buffers are two circular buffers. A new package is added to the end of previous package in the data buffer, with package info added to PackageInfo[end_index++]. Note that if an added package exceeds the end of the buffer, the exceeding data will be wrapped around to the beginning of the data buffer.
+
The buffers are two circular buffers. A new packet is added to the end of previous packet in the data buffer, with packet info added to PacketInfo[end_index++]. Note that if an added 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