uvcuser.c

来自「NXP LPC2378 USBUVC Demo」· C语言 代码 · 共 717 行 · 第 1/3 页

C
717
字号

    case USB_UVC_VSIF_NUM:                                 // Video Streaming Interface
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case VS_PROBE_CONTROL :
            case VS_COMMIT_CONTROL:
              memcpy((void *)EP0Buf, (const void *)&UVC_vsVideoProbe, sizeof(UVC_VIDEO_PROBE_AND_COMMIT_CONTROL));
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
      break;

    default:
      UVC_ErrorCode = UNKNOWN_ERR;
      break;
  }  // end SetupPacket.wIndex.WB.L

  if (UVC_ErrorCode == NO_ERROR_ERR)
    return (TRUE);                                         // we handled the request
  else
    return (FALSE);                                        // if not handled we stall it

} // end UVC_GetCur


/*----------------------------------------------------------------------------
  UVC GetMin Request Callback
  Called automatically on UVC GET_MIN Request
  Parameters:   None                          (global SetupPacket and EP0Buf)
  Return Value: TRUE - Success, FALSE - Error
 *---------------------------------------------------------------------------*/
BOOL UVC_GetMin (void) {

  switch (SetupPacket.wIndex.WB.L) {                       // select the Interface
    case USB_UVC_VCIF_NUM:                                 // Video Control Interface
      switch (SetupPacket.wIndex.WB.H) {                   // select the Entity
        case 1:                                            // InputTerminal (camera)    see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 2:                                            // InputTerminal (composite) see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 3:                                            // OutputTerminal            see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 4:                                            // SelectorUnit              see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case SU_INPUT_SELECT_CONTROL:
              EP0Buf[0] = UVC_suSelectedInputPin;
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 5:                                            // ProcessingUnit            see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case PU_BRIGHTNESS_CONTROL:
              *((__packed WORD *)EP0Buf) = UVC_puBrightnessMin;
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        default:
          UVC_ErrorCode = INVALID_UNIT_ERR;
          break;
      } // end SetupPacket.wIndex.WB.H
      break;

    case USB_UVC_VSIF_NUM:                                 // Video Streaming Interface
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
      break;

    default:
      UVC_ErrorCode = UNKNOWN_ERR;
      break;
  }  // end SetupPacket.wIndex.WB.L

  if (UVC_ErrorCode == NO_ERROR_ERR)
    return (TRUE);                                         // we handled the request
  else
    return (FALSE);                                        // if not handled we stall it

} // end UVC_GetMin

/*----------------------------------------------------------------------------
  UVC GetMax Request Callback
  Called automatically on UVC GET_MAX Request
  Parameters:   None                          (global SetupPacket and EP0Buf)
  Return Value: TRUE - Success, FALSE - Error
 *---------------------------------------------------------------------------*/
BOOL UVC_GetMax (void) {

  switch (SetupPacket.wIndex.WB.L) {                       // select the Interface
    case USB_UVC_VCIF_NUM:                                 // Video Control Interface
      switch (SetupPacket.wIndex.WB.H) {                   // select the Entity
        case 1:                                            // InputTerminal (camera)    see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:                            
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 2:                                            // InputTerminal (composite) see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 3:                                            // OutputTerminal            see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 4:                                            // SelectorUnit              see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case SU_INPUT_SELECT_CONTROL:
              EP0Buf[0] = UVC_suSelectedInputPin;
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 5:                                            // ProcessingUnit            see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case PU_BRIGHTNESS_CONTROL:
              *((__packed WORD *)EP0Buf) = UVC_puBrightnessMax;
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        default:
          UVC_ErrorCode = INVALID_UNIT_ERR;
          break;
      } // end SetupPacket.wIndex.WB.H
      break;

    case USB_UVC_VSIF_NUM:                                 // Video Streaming Interface
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
      break;

    default:
      UVC_ErrorCode = UNKNOWN_ERR;
      break;
  }  // end SetupPacket.wIndex.WB.L

  if (UVC_ErrorCode == NO_ERROR_ERR)
    return (TRUE);                                         // we handled the request
  else
    return (FALSE);                                        // if not handled we stall it

} // end UVC_GetMax

/*----------------------------------------------------------------------------
  UVC GetRes Request Callback
  Called automatically on UVC GET_RES Request
  Parameters:   None                          (global SetupPacket and EP0Buf)
  Return Value: TRUE - Success, FALSE - Error
 *---------------------------------------------------------------------------*/
BOOL UVC_GetRes (void) {

  switch (SetupPacket.wIndex.WB.L) {                       // select the Interface
    case USB_UVC_VCIF_NUM:                                 // Video Control Interface
      switch (SetupPacket.wIndex.WB.H) {                   // select the Entity
        case 1:                                            // InputTerminal (camera)    see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 2:                                            // InputTerminal (composite) see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 3:                                            // OutputTerminal            see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 4:                                            // SelectorUnit              see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case SU_INPUT_SELECT_CONTROL:
              EP0Buf[0] = UVC_suSelectedInputPin;
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;
          } // end SetupPacket.wValue.WB.H
          break;
        case 5:                                            // ProcessingUnit            see usbdesc.c
          switch (SetupPacket.wValue.WB.H) {               // select the  selector control
            case PU_BRIGHTNESS_CONTROL:
              *((__packed WORD *)EP0Buf) = UVC_puBrightnessRes;
              UVC_ErrorCode = NO_ERROR_ERR;
              break;
            default:
              UVC_ErrorCode = INVALID_CONTROL_ERR;
              break;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?