⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uvcuser.c

📁 NXP LPC2378 USBUVC Demo
💻 C
📖 第 1 页 / 共 3 页
字号:

    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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -