मैं वर्तमान में उपयोगकर्ता भूमि से एक यूएसबी ऑडियो डिवाइस के साथ इंटरफेस करने की कोशिश कर रहा हूँ। मेरे पास वर्तमान में डिवाइस पूरी तरह से समझा गया है और मैंने इंटरफ़ेस सेट किया है और इंटरफ़ेस गैर-शून्य-बैंडविड्थ वैकल्पिक इंटरफ़ेस में वैकल्पिक इंटरफ़ेस सेट किया है।उपयोगकर्ता मोड यूएसबी isochronous स्थानांतरण डिवाइस से मेजबान
सबसे पहले मुझे कहना है कि मैं libusb जैसी किसी भी चीज़ का उपयोग नहीं कर सकता। मैंने लिनक्स की यूएसबी डिवाइस फाइल सिस्टम के माध्यम से ऐसा करने का प्रयास किया।
तो जहां तक मैं कह सकता हूं कि मैं isochronous डेटा प्राप्त करने के लिए तैयार हूं। हालांकि मुझे एक आइसोक्रोनस ट्रांसफर करने के तरीके पर बहुत कम जानकारी मिल सकती है।
जो मैं कह सकता हूं उससे मुझे एक usbdevfs_urb संरचना को पॉप्युलेट करने की आवश्यकता है, लेकिन मैं पूरी तरह से इस संरचना को भरने के बारे में अनिश्चित हूं।
इसके अलावा, मैं सही सोच में मैं निम्नलिखित कॉल करने की आवश्यकता एक बार मैं इस संरचना से जमा की है:
int retSubmit = ioctl(fd, USBDEVFS_SUBMITURB, &usbRequest);
और फिर एक बार प्रस्तुत मैं का उपयोग कर पूरा करने के लिए अनुरोध लिए प्रतीक्षा कर सकते
USBDEVFS_REAPURBNDELAY
REAPURBNDELAY के मामले में मुझे पास करने के लिए आवश्यक पैरामीटर वास्तव में क्या है?
क्या मैं भी सही पेड़ को भड़क रहा हूं?
किसी भी जानकारी की व्यापक सराहना की जाएगी।
अग्रिम धन्यवाद!
संपादित करें:
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 = 0;
urbRequest.usercontext = pData;
usbdevfs_iso_packet_desc* pIsoPacketDesc = &urbRequest.iso_frame_desc[0];
pIsoPacketDesc->length = 384;
pIsoPacketDesc->actual_length = 0;
pIsoPacketDesc->status = 0;
Unfgortunately यह मेरे -28 (ENOSPC) की एक त्रुटि देता है:
मैं इस प्रकार समकालिक स्थानांतरण करने का प्रयास।
<7>[ 3184.243163] usb 1-1: usbfs: usb_submit_urb returned -28
मुझे समझ में नहीं आ रहा है कि पर्याप्त यूएसबी बस बैंडविड्थ क्यों नहीं होगी। केवल 1 यूएसबी पोर्ट है और मेरा डिवाइस एकमात्र डिवाइस है जो इसमें प्लग है।
कोई विचार?
आप libusb का उपयोग क्यों नहीं कर सकते? –
@ जिम क्ले क्योंकि प्रश्न में विशिष्ट प्लेटफार्म एंड्रॉइड है और मेरे पास पहले से ही एक खुली फ़ाइल डिस्क्रिप्टर है और मैं अनुमतियों के कारण, libusb का उपयोग कर एक डिवाइस खोल सकता हूं ... – Goz
हाय गोज़, मैं वर्तमान में हल करने की कोशिश कर रहा हूं एक ही समस्या - libusb से परहेज, एंड्रॉइड पर isochronous हस्तांतरण की है। क्या कोई तरीका है कि आप एक वर्किंग कोड नमूना पोस्ट करेंगे? मेरा चिपकने वाला बिंदु वर्तमान में संरचना परिभाषाएं और अनुरोध मान है। आप इन्हें कहां सोर्स कर रहे हैं? अग्रिम में धन्यवाद। – Gusdor