Advertisement
Guest User

Probe/Commit

a guest
Feb 6th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. USBH_Status usbhuvcVSRequest(USB_OTG_CORE_HANDLE *pdev, uint8_t bRequest, uint8_t control, uint16_t wLength, uint8_t * data)
  2. {
  3.   if(bRequest & 0x80)
  4.   {
  5.     // IN
  6.     USB_Host.Control.setup.b.bmRequestType = USB_D2H | USB_REQ_RECIPIENT_INTERFACE | USB_REQ_TYPE_CLASS;
  7.     USB_Host.Control.setup.b.bRequest = bRequest;
  8.     USB_Host.Control.setup.b.wValue.w = (uint16_t)(control << 8);
  9.     USB_Host.Control.setup.b.wLength.w = wLength;
  10.     USB_Host.Control.setup.b.wIndex.w = UVCD.vs_interfaces[0].bInterfaceNumber;
  11.     USB_Host.Control.buff = data;
  12.   }
  13.   else
  14.   {
  15.     // OUT
  16.     USB_Host.Control.setup.b.bmRequestType = USB_H2D + USB_REQ_RECIPIENT_INTERFACE + USB_REQ_TYPE_CLASS;
  17.     USB_Host.Control.setup.b.bRequest = bRequest;
  18.     USB_Host.Control.setup.b.wValue.w = (uint16_t)(control << 8);
  19.     USB_Host.Control.setup.b.wLength.w = wLength;
  20.     USB_Host.Control.setup.b.wIndex.w = UVCD.vs_interfaces[0].bInterfaceNumber;
  21.     USB_Host.Control.buff = data;
  22.   }
  23.  
  24.   return USBH_CtlReq(pdev, &USB_Host, data, wLength);
  25. }
  26.  
  27. USBH_Status usbhuvcProbe(USB_OTG_CORE_HANDLE *pdev)
  28. {
  29.   memset(&UVCD.pc_min, 0, sizeof(UVCD.pc_min));
  30.   memset(&UVCD.pc_max, 0, sizeof(UVCD.pc_max));
  31.  
  32.   volatile USBH_Status ret = USBH_OK;
  33.  
  34.  
  35.   do
  36.   {
  37.     USBH_Process(pdev, &USB_Host);
  38.     ret = usbhuvcVSRequest(pdev, UVC_SET_CUR, UVC_CTRL_VS_PROBE_CONTROL, sizeof(UVCD.pc), (uint8_t*)&UVCD.pc);
  39.   } while (ret != USBH_OK);
  40.  
  41.   do
  42.   {
  43.     USBH_Process(pdev, &USB_Host);
  44.     ret = usbhuvcVSRequest(pdev, UVC_GET_CUR, UVC_CTRL_VS_PROBE_CONTROL, sizeof(UVCD.pc), (uint8_t*)&UVCD.pc);
  45.   } while(ret != USBH_OK);
  46.  
  47.   do
  48.   {
  49.     USBH_Process(pdev, &USB_Host);
  50.     ret = usbhuvcVSRequest(pdev, UVC_GET_MAX, UVC_CTRL_VS_PROBE_CONTROL, sizeof(UVCD.pc_max), (uint8_t*)&UVCD.pc_max);
  51.   } while(ret != USBH_OK);
  52.  
  53.   do
  54.   {
  55.     USBH_Process(pdev, &USB_Host);
  56.     ret = usbhuvcVSRequest(pdev, UVC_GET_MIN, UVC_CTRL_VS_PROBE_CONTROL, sizeof(UVCD.pc_min), (uint8_t*)&UVCD.pc_min);
  57.   } while(ret != USBH_OK);
  58.  
  59.   return ret;
  60. }
  61.  
  62. USBH_Status usbhuvcCommit(USB_OTG_CORE_HANDLE *pdev)
  63. {
  64.   USBH_Status ret = USBH_OK;
  65.  
  66.   do
  67.   {
  68.     USBH_Process(pdev, &USB_Host);
  69.     ret = usbhuvcVSRequest(pdev, UVC_SET_CUR, UVC_CTRL_VS_COMMIT_CONTROL, sizeof(UVCD.pc), (uint8_t*)&UVCD.pc);
  70.   } while(ret != USBH_OK);
  71.  
  72.   return ret;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement