USB Host HID Detach Error

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

USB Host HID Detach Error

479 Views
mo_tron
Contributor II

I'm using the following:

MQX 4.0

Custom board based on TWR-K60F120M

Keil uV 4.60

I am trying to talk to an XBOX Controller (not my choice) using the TWR-K60F120M as a HOST HID Device.  I took the example hid_mouse project and modified it by changing the USB_HOST_DRIVER_INFO class/subclass/protocol to 0xFF.  In the main loop under case USB_DEVICE_INUSE I added:

tx_pipe = _usb_hostdev_find_pipe_handle(hid_device.DEV_HANDLE, hid_device.INTF_HANDLE, USB_INTERRUPT_PIPE, USB_SEND);

to get a pipe handle to send data to the XBOX controller.  In the process_mouse_buffer function, I added:

tr.G.TX_BUFFER = VIBRATE_ON;

tr.G.TX_LENGTH = 0x08;                    

_usb_host_send_data(host_handle, tx_pipe, &tr);

to send data to respond to XBOX controller button inputs.

This works fine.  I can send packets that control the leds and rumble motors no problem.  The problem arises when I detach the controller from the micro.  The micro seems to get stuck.  I plug it back in and it doesn't responds.  So I rebuild the USB library with the debug output turned on and I get the following output on the serial port when I detach the controller before the crash:

usb_host_driver_info_nonzero

usb_host_driver_info_nonzero FAILURE

usb_host_driver_info_scan SUCCESSFUL

usb_hostdev_attach_detach SUCCESSFUL

usb_dev_list_close_pipe

_usb_host_close_pipe

_usb_host_close_pipe SUCCESSFUL

usb_dev_list_close_pipe SUCCESSFUL

usb_dev_list_free_memlist

usb_hostdev_validate

usb_hostdev_validate SUCCESSFUL

usb_hostdev_delete_interface

usb_dev_list_close_pipe_bundle

usb_dev_list_close_pipe

_usb_host_close_pipeGoing to idle state

It looks like with it tries to execute the function _usb_host_close_pipe in host_close.c but it never makes it out.

Does anyone have any idea what is wrong?  Are there any examples of an usb hosting a HID device like a joystick showing IN/OUT comms on two interrupt endpoints?

Any info would be greatly appreciated.

Mike

Labels (1)
Tags (2)
0 Kudos
0 Replies