mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-25 16:43:28 +00:00
playing with the usb code
This commit is contained in:
parent
fb84b45bcc
commit
f57a4e829f
4
TODO.txt
4
TODO.txt
@ -76,3 +76,7 @@ NEXT:
|
|||||||
- devise concept for access to event data
|
- devise concept for access to event data
|
||||||
- auto-generate event struct getter? STRUCTURE_get_FIELD
|
- auto-generate event struct getter? STRUCTURE_get_FIELD
|
||||||
- Bluetooth low-power modes useful
|
- Bluetooth low-power modes useful
|
||||||
|
|
||||||
|
== USB Support ==
|
||||||
|
- Store array of data sources to be able to remove them on usb_close
|
||||||
|
-
|
@ -122,7 +122,7 @@ static void event_callback(struct libusb_transfer *transfer)
|
|||||||
hci_dump_packet( HCI_EVENT_PACKET, 1, transfer->buffer, transfer->actual_length);
|
hci_dump_packet( HCI_EVENT_PACKET, 1, transfer->buffer, transfer->actual_length);
|
||||||
event_packet_handler(transfer->buffer, transfer->actual_length);
|
event_packet_handler(transfer->buffer, transfer->actual_length);
|
||||||
}
|
}
|
||||||
int r = libusb_submit_transfer(interrupt_transfer);
|
int r = libusb_submit_transfer(transfer);
|
||||||
if (r) {
|
if (r) {
|
||||||
printf("Error submitting interrupt transfer %d\n", r);
|
printf("Error submitting interrupt transfer %d\n", r);
|
||||||
}
|
}
|
||||||
@ -130,7 +130,7 @@ static void event_callback(struct libusb_transfer *transfer)
|
|||||||
|
|
||||||
static void bulk_in_callback(struct libusb_transfer *transfer)
|
static void bulk_in_callback(struct libusb_transfer *transfer)
|
||||||
{
|
{
|
||||||
printf("bulk_in_callback length=%d actual_length=%d: ",
|
printf("bulk_in_callback length=%d actual_length=%d: \n",
|
||||||
transfer->length, transfer->actual_length);
|
transfer->length, transfer->actual_length);
|
||||||
if (transfer->status == LIBUSB_TRANSFER_COMPLETED) {
|
if (transfer->status == LIBUSB_TRANSFER_COMPLETED) {
|
||||||
int i;
|
int i;
|
||||||
@ -140,7 +140,7 @@ static void bulk_in_callback(struct libusb_transfer *transfer)
|
|||||||
hci_dump_packet( HCI_EVENT_PACKET, 1, transfer->buffer, transfer->actual_length);
|
hci_dump_packet( HCI_EVENT_PACKET, 1, transfer->buffer, transfer->actual_length);
|
||||||
acl_packet_handler(transfer->buffer, transfer->actual_length);
|
acl_packet_handler(transfer->buffer, transfer->actual_length);
|
||||||
}
|
}
|
||||||
int r = libusb_submit_transfer(bulk_in_transfer);
|
int r = libusb_submit_transfer(transfer);
|
||||||
if (r) {
|
if (r) {
|
||||||
printf("Error submitting bulk in transfer %d\n", r);
|
printf("Error submitting bulk in transfer %d\n", r);
|
||||||
}
|
}
|
||||||
@ -249,7 +249,7 @@ static int usb_open(void *transport_config){
|
|||||||
|
|
||||||
// bulk in (= ACL packets) handler
|
// bulk in (= ACL packets) handler
|
||||||
libusb_fill_bulk_transfer(bulk_in_transfer, handle, 0x82, hci_acl_in, 400, bulk_in_callback, NULL, 3000) ;
|
libusb_fill_bulk_transfer(bulk_in_transfer, handle, 0x82, hci_acl_in, 400, bulk_in_callback, NULL, 3000) ;
|
||||||
bulk_in_transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK;
|
// bulk_in_transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK;
|
||||||
r = libusb_submit_transfer(bulk_in_transfer);
|
r = libusb_submit_transfer(bulk_in_transfer);
|
||||||
if (r) {
|
if (r) {
|
||||||
printf("Error submitting bulk in transfer %d\n", r);
|
printf("Error submitting bulk in transfer %d\n", r);
|
||||||
@ -278,6 +278,8 @@ static int usb_close(){
|
|||||||
|
|
||||||
switch (libusb_state){
|
switch (libusb_state){
|
||||||
case LIB_USB_TRANSFERS_ALLOCATED:
|
case LIB_USB_TRANSFERS_ALLOCATED:
|
||||||
|
libusb_free_transfer(bulk_in_transfer);
|
||||||
|
libusb_free_transfer(bulk_out_transfer);
|
||||||
libusb_free_transfer(control_transfer);
|
libusb_free_transfer(control_transfer);
|
||||||
libusb_free_transfer(interrupt_transfer);
|
libusb_free_transfer(interrupt_transfer);
|
||||||
case LIB_USB_INTERFACE_CLAIMED:
|
case LIB_USB_INTERFACE_CLAIMED:
|
||||||
@ -321,7 +323,7 @@ static int usb_send_acl_packet(uint8_t *packet, int size){
|
|||||||
|
|
||||||
hci_dump_packet( HCI_ACL_DATA_PACKET, 0, packet, size);
|
hci_dump_packet( HCI_ACL_DATA_PACKET, 0, packet, size);
|
||||||
|
|
||||||
// send packet over USB
|
#if 1 // send packet over USB
|
||||||
libusb_fill_bulk_transfer(bulk_out_transfer, handle, 0x02, packet, size, bulk_out_callback, NULL, 1000);
|
libusb_fill_bulk_transfer(bulk_out_transfer, handle, 0x02, packet, size, bulk_out_callback, NULL, 1000);
|
||||||
bulk_out_transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK;
|
bulk_out_transfer->flags = LIBUSB_TRANSFER_SHORT_NOT_OK;
|
||||||
int r = libusb_submit_transfer(bulk_out_transfer);
|
int r = libusb_submit_transfer(bulk_out_transfer);
|
||||||
@ -329,6 +331,15 @@ static int usb_send_acl_packet(uint8_t *packet, int size){
|
|||||||
printf("Error submitting control transfer %d\n", r);
|
printf("Error submitting control transfer %d\n", r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int transferred;
|
||||||
|
int ret = libusb_bulk_transfer (handle, 0x02, packet, size, &transferred, 5000);
|
||||||
|
if(ret>=0){
|
||||||
|
printf("acl data transfer succeeded");
|
||||||
|
}else{
|
||||||
|
printf("acl data transfer failed");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user