コード例 #1
0
ファイル: usbd_cdc_msc_core.c プロジェクト: ChrelleP/autoquad
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_cdc_msc_DeInit (void  *pdev,
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev,
              CDC_IN_EP);

  /* Open EP OUT */
  DCD_EP_Close(pdev,
              CDC_OUT_EP);

  /* Open Command IN EP */
  DCD_EP_Close(pdev,
              CDC_CMD_EP);

  /* Restore default state of the Interface physical components */
  APP_FOPS.pIf_DeInit();

  /* Close MSC EPs */
  DCD_EP_Close (pdev , MSC_IN_EP);
  DCD_EP_Close (pdev , MSC_OUT_EP);

  /* Un Init the BOT layer */
  MSC_BOT_DeInit(pdev);

  return USBD_OK;
}
コード例 #2
0
uint8_t USBD_HID_DeInit (void  *pdev, uint8_t cfgidx)
{
  DCD_EP_Close (pdev , HID_IN_EP);
  DCD_EP_Close (pdev , HID_OUT_EP);
  
  return USBD_OK;
}
コード例 #3
0
ファイル: usbd_rndis_core.c プロジェクト: nandojve/lrndis
static uint8_t  usbd_rndis_deinit(void  *pdev, uint8_t cfgidx)
{
  DCD_EP_Close(pdev, RNDIS_NOTIFICATION_IN_EP);
  DCD_EP_Close(pdev, RNDIS_DATA_IN_EP);
  DCD_EP_Close(pdev, RNDIS_DATA_OUT_EP);
  return USBD_OK;
}
コード例 #4
0
ファイル: usb_midi_core.c プロジェクト: MartinBspheroid/LXR
/**
* @brief  usbd_midi_Init
*         DeInitializes the AUDIO layer.
* @param  pdev: device instance
* @param  cfgidx: Configuration index
* @retval status
*/
static uint8_t  usbd_midi_DeInit (void  *pdev,
                                   uint8_t cfgidx)
{
	UNUSED(cfgidx);
	DCD_EP_Close (pdev , MIDI_OUT_EP);
	DCD_EP_Close (pdev , MIDI_IN_EP);

	//No Hardware to de-init
	return USBD_OK;
}
コード例 #5
0
/**
  * @brief  USBD_HID_Init
  *         DeInitialize the HID layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  USBD_HID_DeInit (void  *pdev, 
                                 uint8_t cfgidx)
{
  /* Close HID EPs */
  DCD_EP_Close (pdev , HID_IN_EP);
  DCD_EP_Close (pdev , HID_OUT_EP);
  
  
  return USBD_OK;
}
コード例 #6
0
ファイル: usb.c プロジェクト: erwincoumans/crazyflie-firmware
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_cf_DeInit (void  *pdev,
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev, IN_EP);

  /* Open EP OUT */
  DCD_EP_Close(pdev, OUT_EP);

  return USBD_OK;
}
コード例 #7
0
ファイル: usbd_msc_core.c プロジェクト: 1018365842/px4flow
/**
* @brief  USBD_MSC_DeInit
*         DeInitilaize  the mass storage configuration
* @param  pdev: device instance
* @param  cfgidx: configuration index
* @retval status
*/
uint8_t  USBD_MSC_DeInit (void  *pdev, 
                              uint8_t cfgidx)
{
  /* Close MSC EPs */
  DCD_EP_Close (pdev , MSC_IN_EP);
  DCD_EP_Close (pdev , MSC_OUT_EP);
  
  /* Un Init the BOT layer */
  MSC_BOT_DeInit(pdev);   
  return USBD_OK;
}
コード例 #8
0
ファイル: usbd_dev_ds3.c プロジェクト: Poopi/UsbXlater
uint8_t USBD_Dev_DS3_ClassDeInit       (void *pcore , uint8_t cfgidx)
{
	DCD_EP_Close (pcore , 0x02);
	DCD_EP_Close (pcore , 0x81);
	#ifdef ENABLE_DS3_ADDITIONAL_FEATURES
	DCD_EP_Close (pcore , 0x83);
	#endif

	USBD_Host_Is_PS3 = 0;
	USBD_Dev_DS3_IsActive = 0;

	dbg_printf(DBGMODE_TRACE, "USBD_Dev_DS3_ClassDeInit\r\n");

	return USBD_OK;
}
コード例 #9
0
ファイル: usbd_dev_cdc.c プロジェクト: Poopi/UsbXlater
/**
 * @brief  USBD_CDC_ClassDeInit
 *         DeInitialize the CDC layer
 * @param  pdev: device instance
 * @param  cfgidx: Configuration index
 * @retval status
 */
static uint8_t  USBD_CDC_ClassDeInit (void  *pdev, uint8_t cfgidx)
{
	DCD_EP_Close(pdev, USBD_Dev_CDC_D2H_EP);
	DCD_EP_Close(pdev, USBD_Dev_CDC_H2D_EP);
	DCD_EP_Close(pdev, USBD_Dev_CDC_CMD_EP);

	free(USBD_CDC_H2D_Buff); USBD_CDC_H2D_Buff = 0;
	free(USBD_CDC_D2H_Buff); USBD_CDC_D2H_Buff = 0;
	free(USBD_CDC_CMD_Buff); USBD_CDC_CMD_Buff = 0;
	free(USBD_CDC_H2D_FIFO.start); USBD_CDC_H2D_FIFO.start = 0;
	free(USBD_CDC_D2H_FIFO.start); USBD_CDC_D2H_FIFO.start = 0;

	USBD_CDC_IsReady = 0;

	return USBD_OK;
}
コード例 #10
0
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
uint8_t  usbd_cdc_DeInit (void  *pdev, 
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev,
              CDC_IN_EP);
  
  /* Open EP OUT */
  DCD_EP_Close(pdev,
              CDC_OUT_EP);
  
  /* Open Command IN EP */
  DCD_EP_Close(pdev,
              CDC_CMD_EP);
  
  return USBD_OK;
}
コード例 #11
0
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_cdc_DeInit (void  *pdev, 	//缺省初始化设备
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev,				//关闭设备端点CDC_IN_EP
              CDC_IN_EP);
  
  /* Open EP OUT */
  DCD_EP_Close(pdev,				//关闭设备端点CDC_OUT_EP
              CDC_OUT_EP);
  
  /* Open Command IN EP */
  DCD_EP_Close(pdev,				//关闭设备端点CDC_CMD_EP
              CDC_CMD_EP);
	
  return USBD_OK;
}
コード例 #12
0
ファイル: pios_usbhook.c プロジェクト: Crash1/TauLabs
extern void PIOS_USBHOOK_DeRegisterEpOutCallback(uint8_t epnum)
{
	PIOS_Assert(epnum < NELEMENTS(usb_epout_table));

	usb_epout_table[epnum].cb = NULL;

	DCD_EP_Close(&pios_usb_otg_core_handle, epnum);
}
コード例 #13
0
static uint8_t  usbd_video_DeInit (void  *pdev, 
                                   uint8_t cfgidx)
{ 
  DCD_EP_Close (pdev , USB_ENDPOINT_IN(1));
  
  /* DeInitialize the Audio output Hardware layer */

  return USBD_OK;
}
コード例 #14
0
ファイル: usbd_cdc_core.c プロジェクト: bminerd/Plat4m_Ui
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_cdc_DeInit (void  *pdev, 
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close((USB_OTG_CORE_HANDLE*) pdev,
               CDC_IN_EP);
  
  /* Open EP OUT */
  DCD_EP_Close((USB_OTG_CORE_HANDLE*) pdev,
               CDC_OUT_EP);
  
  /* Open Command IN EP */
  DCD_EP_Close((USB_OTG_CORE_HANDLE*) pdev,
               CDC_CMD_EP);

  /* Restore default state of the Interface physical components */
  APP_FOPS.pIf_DeInit();
  
  return USBD_OK;
}
コード例 #15
0
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static cyg_uint8  usbd_cdc_DeInit (void  *pdev,
                                 cyg_uint8 cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev,
              CDC_IN_EP);
  
  /* Open EP OUT */
  DCD_EP_Close(pdev,
              CDC_OUT_EP);
  
  /* Open Command IN EP */
  DCD_EP_Close(pdev,
              CDC_CMD_EP);

  /* Restore default state of the Interface physical components */
  APP_FOPS.pIf_DeInit();
  
  return USBD_OK;
}
コード例 #16
0
ファイル: usbd_cdc_core.c プロジェクト: Ghanyy/PTM-STM32F4
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_cdc_DeInit (void  *pdev, 
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev,
              CDC_IN_EP);
  
  /* Open EP OUT */
  DCD_EP_Close(pdev,
              CDC_OUT_EP);
  
  /* Open Command IN EP */
  DCD_EP_Close(pdev,
              CDC_CMD_EP);

  /* Restore default state of the Interface physical components */
  TEMPLATE_fops.pIf_DeInit();
  
  return USBD_OK;
}
コード例 #17
0
ファイル: usbd_cdc_core.c プロジェクト: Xcping2013/firmware
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_cdc_DeInit (void  *pdev,
                                 uint8_t cfgidx)
{
  usbd_cdc_Change_Open_State(0);

  if (cdcConfigured) {
    if (USB_Tx_State) {
      DCD_EP_Flush(pdev, CDC_IN_EP);
    }

    /* Close EP IN */
    DCD_EP_Close(pdev,
                 CDC_IN_EP);

    /* Close EP OUT */
    DCD_EP_Close(pdev,
                 CDC_OUT_EP);

    /* Close Command IN EP */
    DCD_EP_Close(pdev,
                 CDC_CMD_EP);

    /* Restore default state of the Interface physical components */
    APP_FOPS.pIf_DeInit();
  }

  usbd_cdc_Change_Open_State(0);

  cdcConfigured = 0;
  USB_Tx_State = 0;
  USB_Rx_State = 0;
  USB_Rx_Buffer_head = 0;
  USB_Rx_Buffer_tail = 0;
  USB_Rx_Buffer_length = USB_RX_BUFFER_SIZE;
  USB_Tx_Buffer_tail = 0;
  USB_Tx_Buffer_head = 0;

  return USBD_OK;
}
コード例 #18
0
/**
* @brief  usbd_audio_Init
*         DeInitializes the AUDIO layer.
* @param  pdev: device instance
* @param  cfgidx: Configuration index
* @retval status
*/
static uint8_t  usbd_audio_DeInit (void  *pdev, 
                                   uint8_t cfgidx)
{ 
  DCD_EP_Close (pdev , AUDIO_OUT_EP);
  
  /* DeInitialize the Audio output Hardware layer */
  if (AUDIO_OUT_fops.DeInit(0) != USBD_OK)
  {
    return USBD_FAIL;
  }
  
  return USBD_OK;
}
コード例 #19
0
/**
  * @brief  usbd_cdc_Init
  *         DeInitialize the CDC layer
  * @param  pdev: device instance
  * @param  cfgidx: Configuration index
  * @retval status
  */
static uint8_t  usbd_composite_DeInit (void  *pdev, 
                                 uint8_t cfgidx)
{
  /* Open EP IN */
  DCD_EP_Close(pdev,
              CDC_IN_EP);
  
  /* Open EP OUT */
  DCD_EP_Close(pdev,
              CDC_OUT_EP);
  
  /* Open Command IN EP */
  DCD_EP_Close(pdev,
              CDC_CMD_EP);

  /* Restore default state of the Interface physical components */
  APP_FOPS.pIf_DeInit();

  /* Close HID EPs */
  DCD_EP_Close (pdev , HID_IN_EP);
  DCD_EP_Close (pdev , HID_OUT_EP);
  
  return USBD_OK;
}
コード例 #20
0
ファイル: usbd_msc_core.c プロジェクト: 1018365842/px4flow
/**
* @brief  USBD_MSC_Setup
*         Handle the MSC specific requests
* @param  pdev: device instance
* @param  req: USB request
* @retval status
*/
uint8_t  USBD_MSC_Setup (void  *pdev, USB_SETUP_REQ *req)
{
  
  switch (req->bmRequest & USB_REQ_TYPE_MASK)
  {

  /* Class request */
  case USB_REQ_TYPE_CLASS :
    switch (req->bRequest)
    {
    case BOT_GET_MAX_LUN :

      if((req->wValue  == 0) && 
         (req->wLength == 1) &&
         ((req->bmRequest & 0x80) == 0x80))
      {
        USBD_MSC_MaxLun = USBD_STORAGE_fops->GetMaxLun();
        if(USBD_MSC_MaxLun > 0)
        {
           USBD_CtlSendData (pdev,
                             &USBD_MSC_MaxLun,
                              1);
        }
        else
        {
          USBD_CtlError(pdev , req);
          return USBD_FAIL; 
          
        }
      }
      else
      {
         USBD_CtlError(pdev , req);
         return USBD_FAIL; 
      }
      break;
      
    case BOT_RESET :
      if((req->wValue  == 0) && 
         (req->wLength == 0) &&
        ((req->bmRequest & 0x80) != 0x80))
      {      
         MSC_BOT_Reset(pdev);
      }
      else
      {
         USBD_CtlError(pdev , req);
         return USBD_FAIL; 
      }
      break;

    default:
       USBD_CtlError(pdev , req);
       return USBD_FAIL; 
    }
    break;
  /* Interface & Endpoint request */
  case USB_REQ_TYPE_STANDARD:
    switch (req->bRequest)
    {
    case USB_REQ_GET_INTERFACE :
      USBD_CtlSendData (pdev,
                        &USBD_MSC_AltSet,
                        1);
      break;
      
    case USB_REQ_SET_INTERFACE :
      USBD_MSC_AltSet = (uint8_t)(req->wValue);
      break;
    
    case USB_REQ_CLEAR_FEATURE:  
      
      /* Flush the FIFO and Clear the stall status */    
      DCD_EP_Flush(pdev, (uint8_t)req->wIndex);
      
      /* Re-activate the EP */      
      DCD_EP_Close (pdev , (uint8_t)req->wIndex);
      if((((uint8_t)req->wIndex) & 0x80) == 0x80)
      {
        DCD_EP_Open(pdev,
                    ((uint8_t)req->wIndex),
                    MSC_EPIN_SIZE,
                    USB_OTG_EP_BULK);
      }
      else
      {
        DCD_EP_Open(pdev,
                    ((uint8_t)req->wIndex),
                    MSC_EPOUT_SIZE,
                    USB_OTG_EP_BULK);
      }
      
      /* Handle BOT error */
      MSC_BOT_CplClrFeature(pdev, (uint8_t)req->wIndex);
      break;
      
    }  
    break;
   
  default:
    break;
  }
  return USBD_OK;
}
コード例 #21
0
ファイル: usbd_cdc_msc_core.c プロジェクト: ChrelleP/autoquad
/**
  * @brief  usbd_cdc_Setup
  *         Handle the CDC specific requests
  * @param  pdev: instance
  * @param  req: usb requests
  * @retval status
  */
static uint8_t  usbd_cdc_msc_Setup (void  *pdev,
                                USB_SETUP_REQ *req)
{
  uint16_t len=USB_CDC_MSC_DESC_SIZ;
  uint8_t  *pbuf=usbd_cdc_msc_CfgDesc + 9;

  switch (req->bmRequest & USB_REQ_TYPE_MASK)
  {
    /* CDC Class Requests -------------------------------*/
  case USB_REQ_TYPE_CLASS :
    switch (req->bRequest)
    {
    case BOT_GET_MAX_LUN :

      if((req->wValue  == 0) &&
         (req->wLength == 1) &&
         ((req->bmRequest & 0x80) == 0x80))
      {
        USBD_MSC_MaxLun = USBD_STORAGE_fops->GetMaxLun();
        if(USBD_MSC_MaxLun > 0)
        {
           USBD_CtlSendData (pdev,
                             &USBD_MSC_MaxLun,
                              1);
        }
        else
        {
          USBD_CtlError(pdev , req);
          return USBD_FAIL;

        }
      }
      else
      {
         USBD_CtlError(pdev , req);
         return USBD_FAIL;
      }
      break;

    case BOT_RESET :
      if((req->wValue  == 0) &&
         (req->wLength == 0) &&
        ((req->bmRequest & 0x80) != 0x80))
      {
         MSC_BOT_Reset(pdev);
      }
      else
      {
         USBD_CtlError(pdev , req);
         return USBD_FAIL;
      }
      break;

    // CDC
    default:
      /* Check if the request is a data setup packet */
      if (req->wLength)
      {
        /* Check if the request is Device-to-Host */
        if (req->bmRequest & 0x80)
        {
          /* Get the data to be sent to Host from interface layer */
          APP_FOPS.pIf_Ctrl(req->bRequest, CmdBuff, req->wLength);

          /* Send the data to the host */
          USBD_CtlSendData (pdev,
                            CmdBuff,
                            req->wLength);
        }
        else /* Host-to-Device requeset */
        {
          /* Set the value of the current command to be processed */
          cdcCmd = req->bRequest;
          cdcLen = req->wLength;

          /* Prepare the reception of the buffer over EP0
          Next step: the received data will be managed in usbd_cdc_EP0_TxSent()
          function. */
          USBD_CtlPrepareRx (pdev,
                             CmdBuff,
                             req->wLength);
        }
      }
      else /* No Data request */
      {
        /* Transfer the command to the interface layer */
        APP_FOPS.pIf_Ctrl(req->bRequest, NULL, 0);

	// check for DTE present changes - NEZ
	if (req->bRequest == SET_CONTROL_LINE_STATE) {
	    USB_DTE_Present = req->wValue & 0x01;

	    if (!USB_DTE_Present) {
		DCD_EP_Flush (pdev, CDC_IN_EP);
		USB_Tx_State = 0;
	    }
	}
      }

      return USBD_OK;
      break;	// default
    }
    break;  // case USB_REQ_TYPE_CLASS

    /* Standard Requests -------------------------------*/
  case USB_REQ_TYPE_STANDARD:
    switch (req->bRequest)
    {
    case USB_REQ_GET_DESCRIPTOR:
      if( (req->wValue >> 8) == CDC_DESCRIPTOR_TYPE)
      {
#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
        pbuf = usbd_cdc_Desc;
#else
        pbuf = usbd_cdc_msc_CfgDesc + 9 + (9 * USBD_ITF_MAX_NUM);
#endif
        len = MIN(USB_CDC_MSC_DESC_SIZ , req->wLength);
      }

      USBD_CtlSendData (pdev,
                        pbuf,
                        len);
      break;

    case USB_REQ_GET_INTERFACE :
      if ((uint8_t)req->wValue == CDC_IN_EP || (uint8_t)req->wValue == CDC_OUT_EP) {
	  USBD_CtlSendData (pdev,
			    (uint8_t *)&usbd_cdc_AltSet,
			    1);
      }
      else {
	  USBD_CtlSendData (pdev,
			    &USBD_MSC_AltSet,
			    1);
	  break;
      }
      break;

    case USB_REQ_SET_INTERFACE :
      if ((uint8_t)req->wValue == CDC_IN_EP || (uint8_t)req->wValue == CDC_OUT_EP) {
	  if ((uint8_t)(req->wValue) < USBD_ITF_MAX_NUM)
	  {
	    usbd_cdc_AltSet = (uint8_t)(req->wValue);
	  }
	  else
	  {
	    /* Call the error management function (command will be nacked */
	    USBD_CtlError (pdev, req);
	  }
      }
      else {
	  USBD_MSC_AltSet = (uint8_t)(req->wValue);
      }
      break;

      case USB_REQ_CLEAR_FEATURE:
	  /* Flush the FIFO and Clear the stall status */
	  DCD_EP_Flush(pdev, (uint8_t)req->wIndex);

	  /* Re-activate the EP */
	  DCD_EP_Close (pdev , (uint8_t)req->wIndex);
	  if((((uint8_t)req->wIndex) & 0x80) == 0x80)
	  {
	    DCD_EP_Open(pdev,
			((uint8_t)req->wIndex),
			MSC_EPIN_SIZE,
			USB_OTG_EP_BULK);
	  }
	  else
	  {
	    DCD_EP_Open(pdev,
			((uint8_t)req->wIndex),
			MSC_EPOUT_SIZE,
			USB_OTG_EP_BULK);
	  }

	  /* Handle BOT error */
	  MSC_BOT_CplClrFeature(pdev, (uint8_t)req->wIndex);
	  break;
    }
  }
  return USBD_OK;
}