Further progress, - I implement code that register libusb_get_pollfds to my event loop. - I send 6 bytes with libusb_fill_bulk_transfer/libusb_submit_transfer - I then get notify that libusb fd change - I call libusb_handle_events - But my callback is not called. The one that was registered to libusb_fill_bulk_transfer? -If I try to call the libusb_handle_events twice I get my callback called?
What am I doing wrong? See output: libusb:debug [libusb_init] libusb:debug [find_usbfs_path] found usbfs at /dev/bus/usb libusb:debug [op_init] bulk continuation flag supported libusb:debug [op_init] found usb devices in sysfs libusb:debug [usbi_add_pollfd] add fd 6 events 1 libusb:debug [usbi_io_init] using timerfd for timeouts libusb:debug [usbi_add_pollfd] add fd 8 events 1 libusb:debug [libusb_init] created default context libusb:debug [libusb_get_device_list] libusb:debug [sysfs_scan_device] scan usb1 libusb:debug [sysfs_scan_device] bus=1 dev=1 libusb:debug [enumerate_device] busnum 1 devaddr 1 session_id 257 libusb:debug [enumerate_device] allocating new device for 1/1 (session 257) libusb:debug [sysfs_scan_device] scan usb2 libusb:debug [sysfs_scan_device] bus=2 dev=1 libusb:debug [enumerate_device] busnum 2 devaddr 1 session_id 513 libusb:debug [enumerate_device] allocating new device for 2/1 (session 513) libusb:debug [sysfs_scan_device] scan 1-1 libusb:debug [sysfs_scan_device] bus=1 dev=2 libusb:debug [enumerate_device] busnum 1 devaddr 2 session_id 258 libusb:debug [enumerate_device] allocating new device for 1/2 (session 258) libusb:debug [sysfs_scan_device] scan 2-1 libusb:debug [sysfs_scan_device] bus=2 dev=2 libusb:debug [enumerate_device] busnum 2 devaddr 2 session_id 514 libusb:debug [enumerate_device] allocating new device for 2/2 (session 514) libusb:debug [sysfs_scan_device] scan 2-2 libusb:debug [sysfs_scan_device] bus=2 dev=3 libusb:debug [enumerate_device] busnum 2 devaddr 3 session_id 515 libusb:debug [enumerate_device] allocating new device for 2/3 (session 515) libusb:debug [sysfs_scan_device] scan 2-2.1 libusb:debug [sysfs_scan_device] bus=2 dev=4 libusb:debug [enumerate_device] busnum 2 devaddr 4 session_id 516 libusb:debug [enumerate_device] allocating new device for 2/4 (session 516) libusb:debug [libusb_get_device_descriptor] libusb:debug [libusb_get_device_descriptor] libusb:debug [libusb_get_device_descriptor] libusb:debug [libusb_open] open 1.2 libusb:debug [op_open] opening /dev/bus/usb/001/002 libusb:debug [usbi_add_pollfd] add fd 9 events 4 libusb:debug [libusb_claim_interface] interface 1 libusb:debug [libusb_set_interface_alt_setting] interface 1 altsetting 0 libusb:debug [libusb_submit_transfer] arm timerfd for timeout in 2000ms (first in line) libusb:debug [libusb_handle_events_timeout_completed] doing our own event handling libusb:debug [handle_events] poll() 3 fds with timeout in 60000ms libusb:debug [handle_events] poll() returned 1 libusb:debug [reap_for_handle] urb type=2 status=0 transferred=1 libusb:debug [handle_control_completion] handling completion status 0 libusb:debug [disarm_timerfd] libusb:debug [ctrl_transfer_cb] actual_length=1 libusb:debug [libusb_submit_transfer] arm timerfd for timeout in 2000ms (first in line) libusb:debug [libusb_handle_events_timeout_completed] doing our own event handling libusb:debug [handle_events] poll() 3 fds with timeout in 60000ms libusb:debug [handle_events] poll() returned 1 libusb:debug [reap_for_handle] urb type=2 status=0 transferred=0 libusb:debug [handle_control_completion] handling completion status 0 libusb:debug [disarm_timerfd] libusb:debug [ctrl_transfer_cb] actual_length=0 libusb:debug [libusb_clear_halt] endpoint 6 libusb:debug [libusb_clear_halt] endpoint 88 --> MyEventLoop Register FD: 6 --> MyEventLoop Register FD: 8 --> MyEventLoop Register FD: 9 --> MyEventLoop catch event on fd:3 --> MyEventLoop catch event on fd:12 --> MyApplicationSendData: 6 <-- SEND DATA libusb:debug [submit_bulk_transfer] need 1 urbs for new transfer with length 6 libusb:debug [libusb_submit_transfer] arm timerfd for timeout in 2000ms (first in line) --> MyEventLoop catch event on fd:12 --> MyEventLoop catch event on fd:8 <-- GET NOTIFY -> MyEventLoop call libusb_handle_events once <-- CALL LIBUSB ONCE libusb:debug [libusb_handle_events_timeout_completed] doing our own event handling libusb:debug [handle_events] poll() 3 fds with timeout in 60000ms libusb:debug [handle_events] poll() returned 1 libusb:debug [handle_events] timerfd triggered libusb:debug [disarm_timerfd] libusb:debug [libusb_cancel_transfer] -> MyEventLoop call libusb_handle_events twice <-- CALL LIBUSB TWICE (if not called it stop at previous call) libusb:debug [libusb_handle_events_timeout_completed] doing our own event handling libusb:debug [handle_events] poll() 3 fds with timeout in 60000ms libusb:debug [handle_events] poll() returned 1 libusb:debug [reap_for_handle] urb type=3 status=-2 transferred=0 libusb:debug [handle_bulk_completion] handling completion status -2 of bulk urb 1/1 libusb:debug [handle_bulk_completion] abnormal reap: urb status -2 libusb:debug [handle_bulk_completion] abnormal reap: last URB handled, reporting libusb:debug [usbi_handle_transfer_cancellation] detected timeout cancellation libusb:debug [disarm_timerfd] BulkTransferCallback: length:6, actual length:0 <-- CALLBACK IS CALLED thx -KA ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ libusbx-devel mailing list libusbx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libusbx-devel