Tôi hiện đang cố gắng kết nối với thiết bị âm thanh USB từ vùng đất của người dùng. Tôi hiện đang có thiết bị đầy đủ liệt kê và tôi đã thiết lập giao diện và thiết lập giao diện thay thế cho giao diện thay thế không phải băng thông giao diện.Chế độ người dùng USB chuyển đổi đẳng thời từ thiết bị đến máy chủ
Trước hết tôi phải nói rằng tôi không thể sử dụng bất cứ thứ gì như libusb. Tôi đã thực hiện điều này thông qua hệ thống tệp thiết bị USB của Linux.
Vì vậy, theo như tôi có thể nói tôi đã sẵn sàng để bắt đầu nhận dữ liệu đẳng thời. Tuy nhiên tôi có thể tìm thấy rất ít thông tin về cách thực hiện chuyển giao đẳng thời.
Từ những gì tôi có thể nói tôi cần điền cấu trúc usbdevfs_urb nhưng tôi hoàn toàn không chắc chắn về cách điền chính xác cấu trúc này.
Ngoài ra, một khi tôi đã điền cấu trúc này là tôi ngay trong suy nghĩ tôi cần phải gọi như sau:
int retSubmit = ioctl(fd, USBDEVFS_SUBMITURB, &usbRequest);
và sau đó một lần nộp tôi có thể chờ cho yêu cầu để hoàn thành sử dụng
USBDEVFS_REAPURBNDELAY
Trong trường hợp REAPURBNDELAY chính xác thì thông số nào tôi cần phải vượt qua?
Tôi thậm chí còn sủa cây đúng không?
Mọi thông tin sẽ được đánh giá ồ ạt.
Cảm ơn trước!
Edit:
tôi cố gắng để làm việc chuyển nhượng đẳng thời như sau:
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 này mang lại cho tôi một lỗi của -28 (ENOSPC).
<7>[ 3184.243163] usb 1-1: usbfs: usb_submit_urb returned -28
Tôi không hiểu tại sao không có đủ băng thông bus USB. Chỉ có 1 cổng USB và thiết bị của tôi là thiết bị duy nhất được cắm vào nó.
Mọi suy nghĩ?
Tại sao bạn không thể sử dụng libusb? –
@Jim Clay Vì nền tảng cụ thể được đề cập là android và tôi đã có bộ mô tả tệp mở và tôi không thể, do quyền, hãy mở một thiết bị bằng libusb ... – Goz
Xin chào, tôi hiện đang cố gắng giải quyết cùng một vấn đề - đó là chuyển isochronous trên android, tránh libusb. Có cách nào bạn sẽ đăng một mẫu mã làm việc? Điểm gắn bó của tôi hiện tại là định nghĩa cấu trúc và các giá trị yêu cầu. Bạn tìm nguồn cung ứng ở đâu? Cảm ơn trước. – Gusdor