Editing DS4-BT
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 45: | Line 45: | ||
In comparison, USB has 250x (4ms) | In comparison, USB has 250x (4ms) | ||
=== Overlapping channels BT/ | === Overlapping channels BT/WiFi === | ||
* [[Bluetooth#Overlapping_channels_BT.2FWiFi|Overlapping channels BT/WiFi]] | |||
=== Bluetooth Adressing === | |||
=== Bluetooth | |||
Each Bluetooth unit has a unique 48-bit address (BD_ADDR). | Each Bluetooth unit has a unique 48-bit address (BD_ADDR). | ||
Line 211: | Line 210: | ||
**0x0100: L2CAP | **0x0100: L2CAP | ||
*0x0800: Maximum Attribute Byte count (2048)? | *0x0800: Maximum Attribute Byte count (2048)? | ||
*0x0A: Data element (type:1, Size index: 2 (4 bytes) | |||
**0x0000FFFF: Attribute ID list | **0x0000FFFF: Attribute ID list | ||
*0x00: Continuation State | *0x00: Continuation State | ||
Line 764: | Line 762: | ||
|- | |- | ||
|[16 - 17] | |[16 - 17] | ||
|colspan="8"| | |colspan="8"|Acceleration X | ||
|- | |- | ||
|[18 - 19] | |[18 - 19] | ||
|colspan="8"| | |colspan="8"|Acceleration Y | ||
|- | |- | ||
|[20 - 21] | |[20 - 21] | ||
|colspan="8"| | |colspan="8"|Acceleration Z | ||
|- | |- | ||
|[22 - 23] | |[22 - 23] | ||
|colspan="8"| | |colspan="8"|Gyroscope Roll? | ||
|- | |- | ||
|[24 - 25] | |[24 - 25] | ||
|colspan="8"| | |colspan="8"|Gyroscope Yaw? | ||
|- | |- | ||
|[26 - 27] | |[26 - 27] | ||
|colspan="8"| | |colspan="8"|Gyroscope Pitch? | ||
|- | |- | ||
|[28 - 32] | |[28 - 32] | ||
Line 814: | Line 812: | ||
|colspan="8"|finger 2 coordinates | |colspan="8"|finger 2 coordinates | ||
|- | |- | ||
|[ | |[36] | ||
|colspan="8"|packet counter | |colspan="8"|packet counter | ||
|- | |- | ||
Line 899: | Line 897: | ||
The protocol code is 0x11. | The protocol code is 0x11. | ||
Byte at index 4 changes from 0xf0 to 0xf3 in the first reports. Making it always 0xf0 does not seem to change something. | |||
Report example: | Report example: | ||
Line 914: | Line 912: | ||
This formula seems to work for all packets (0x11..0x18). | This formula seems to work for all packets (0x11..0x18). | ||
Packet 0x19 looks like clamped by max packet size. | Packet 0x19 looks like clamped by max packet size. | ||
Additional Info: | |||
1. The CRC32 polynomial is (uint32_t)0xEDB88320 and not (uint32_t)0x4C11DB7 as shown above. | |||
2. Send fist report as above report example (with Byte[4] set to 0xf0 (as shown)). Increment Byte[5]. | |||
3. Make changes to the control bytes as needed -> Rumble,Leds,etc. Send next report with (with Byte[4] set to 0xf3. Increment Byte[5]. | |||
4. Make changes to the control bytes as needed -> Rumble,Leds,etc. Increment Byte[5]. | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 936: | Line 940: | ||
|colspan="8"|'''0x11''' | |colspan="8"|'''0x11''' | ||
|- | |- | ||
|[2 | |[2 - 3] | ||
|colspan="8"|Unknown | |colspan="8"|Unknown | ||
|- | |- | ||
|[4] | |[4] | ||
|colspan=" | |colspan="8"|0xf0 disables the rumble motors, 0xf3 enables them | ||
|- | |- | ||
|[5 - 6] | |[5 - 6] | ||
Line 1,595: | Line 1,591: | ||
|} | |} | ||
The | The packets with report counter from 0x00 to 0x09 carry 528 bytes of data.<br /> | ||
Packet 0x09 contains 24 bytes of data and is padded with zeros.<br /> | |||
The packets with report counter from 0x0a to 0x0c are padded with zeros.<br /> | |||
Packet 0x0d is padded with zeros, except bytes 58 and 60 (both are 0x01).<br /> | |||
The packets with report counter from 0x0e to 0x12 carry 256 bytes of data.<br /> | |||
Packet 0x12 contains 32 bytes of data and is padded with zeros.<br /> | |||
</ | |||
====== 0xF2 ====== | ====== 0xF2 ====== |