Tuesday, 27 November 2018

How can I use SIGRTMIN + X Signals in Andorid NDK for Usb ISOCHRONOUS Transfers

I am attempting to Submit ISOCHRONOUS URB in Android NDK in C.

usbdevfs_urb&   urbRequest      = *(usbdevfs_urb*)malloc( 384 );
urbRequest.type                 = USBDEVFS_URB_TYPE_ISO;
urbRequest.endpoint             = mpEndpoint->GetEndpointAddress();//mpEndpoint->GetEndpointIndex();
urbRequest.status               = 0;
urbRequest.flags                = USBDEVFS_URB_ISO_ASAP;
urbRequest.buffer               = pData;
urbRequest.buffer_length        = 0;
urbRequest.actual_length        = 0;
urbRequest.start_frame          = 0;
urbRequest.number_of_packets    = 1;
urbRequest.error_count          = 0;
urbRequest.signr                = SIGRTMIN;
urbRequest.usercontext          = pData;

usbdevfs_iso_packet_desc* pIsoPacketDesc    = &urbRequest.iso_frame_desc[0];
pIsoPacketDesc->length          = 384;
pIsoPacketDesc->actual_length   = 0;
pIsoPacketDesc->status          = 0;



ioctl( fd, USBDEVFS_SUBMITURB, &usbRequest);

In the above code, I want to set SIGRTMIN signal for urbRequest.signr. So that i can get the SIGRTMIN signal on URB completion and i can call REAP URB after

But in Android i am not getting the SIGRTMIN signal at all. Instead my app gets killed without any exception

is there any way i can use SIGRTMIN signal for submitting URB in Android?

Note: I tried using SIGUSR1 and SIGUSR2 signals but ART is catching those signals

is there anyway to do isochronous, interrupt, bulk transfer (using non blocking asynchronous IO) in Android?



from How can I use SIGRTMIN + X Signals in Andorid NDK for Usb ISOCHRONOUS Transfers

No comments:

Post a Comment