Line 64:
Line 64:
|}
|}
−
For example, to reset the Bluetooth HCI (and therefore break the connection with the [[Wiimote]]), send a message with the parameters (0x20,0,0,0,0x0300,0) and data 03 0C 00. (0x0300 is the length, 3, in little-endian format).
+
For example, to reset the Bluetooth HCI (and therefore break the connection with the [[Wiimote]]), send a message with the parameters (0x20,0,0,0,0x0300,0) and data 03 0C 00. (0x0300 is the length, 3, in little-endian format). The operation returns the number of bytes read or written.
+
+
=== Send Or Receive Bulk/Interrupt Message ===
+
ioctlv(fd, '''1''', 2, 1, vectors); //Bulk
+
ioctlv(fd, '''2''', 2, 1, vectors); //Interrupt
+
+
Vectors:
+
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;"
+
|- style="background-color: #ddd;"
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | '''I/IO'''
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | '''Number'''
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | '''Type'''
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Length'''
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | '''Description'''
+
|- style="background-color: #ddd;"
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | I
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 0
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | u8
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 1
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | bEndpoint
+
|- style="background-color: #ddd;"
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | I
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 1
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | u16
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | w
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | wLength
+
|- style="background-color: #ddd;"
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | IO
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ded;" | 2
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | array
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | wLength
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #edd;" | request data payload
+
|}
+
+
The same request is used for both sending and receiving data. Which operation is used depends on the endpoint number (>=0x80 are input endpoints, <0x80 are output). The operation returns the number of bytes read or written.