Răsfoiți Sursa

list all video altsettings

sakumisu 3 ani în urmă
părinte
comite
2890c03eec
1 a modificat fișierele cu 23 adăugiri și 0 ștergeri
  1. 23 0
      class/video/usbh_video.c

+ 23 - 0
class/video/usbh_video.c

@@ -226,9 +226,32 @@ int usbh_video_close(struct usbh_video *video_class)
 
 void usbh_video_list_info(struct usbh_video *video_class)
 {
+    struct usbh_hubport *hport;
+    struct usb_endpoint_descriptor *ep_desc;
+    uint8_t mult;
+    uint16_t mps;
+
     USB_LOG_INFO("============= Video device information ===================\r\n");
     USB_LOG_INFO("bcdVDC:%04x\r\n", video_class->bcdVDC);
     USB_LOG_INFO("Num of altsettings:%02x\r\n", video_class->num_of_intf_altsettings);
+
+    hport = video_class->hport;
+
+    for (uint8_t i = 1; i < video_class->num_of_intf_altsettings; i++) {
+        ep_desc = &video_class->hport->config.intf[video_class->data_intf].altsetting[i].ep[0].ep_desc;
+
+        mult = (ep_desc->wMaxPacketSize & USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_MASK) >> USB_MAXPACKETSIZE_ADDITIONAL_TRANSCATION_SHIFT;
+        mps = ep_desc->wMaxPacketSize & USB_MAXPACKETSIZE_MASK;
+
+        USB_LOG_INFO("Altsetting:%u, Ep=%02x Attr=%02u Mps=%d Interval=%02u Mult=%02u\r\n",
+                     i,
+                     ep_desc->bEndpointAddress,
+                     ep_desc->bmAttributes,
+                     mps,
+                     ep_desc->bInterval,
+                     mult);
+    }
+
     USB_LOG_INFO("bNumFormats:%u\r\n", video_class->num_of_formats);
     for (uint8_t i = 0; i < video_class->num_of_formats; i++) {
         USB_LOG_INFO("  FormatIndex:%u\r\n", i + 1);