亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usb_prop.c

?? STM32XXXX usb從設(shè)備和住設(shè)備的應(yīng)用源代碼
?? C
字號(hào):
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* File Name          : usb_prop.c
* Author             : MCD Application Team
* Version            : V2.2.0
* Date               : 06/13/2008
* Description        : All processing related to Virtual Com Port Demo
********************************************************************************
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "usb_lib.h"
#include "usb_conf.h"
#include "usb_prop.h"
#include "usb_desc.h"
#include "usb_pwr.h"
#include "hw_config.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
u8 Request = 0;

LINE_CODING linecoding =
  {
    115200, /* baud rate*/
    0x00,   /* stop bits-1*/
    0x00,   /* parity - none*/
    0x08    /* no. of bits 8*/
  };

/* -------------------------------------------------------------------------- */
/*  Structures initializations */
/* -------------------------------------------------------------------------- */

DEVICE Device_Table =
  {
    EP_NUM,
    1
  };

DEVICE_PROP Device_Property =
  {
    Virtual_Com_Port_init,
    Virtual_Com_Port_Reset,
    Virtual_Com_Port_Status_In,
    Virtual_Com_Port_Status_Out,
    Virtual_Com_Port_Data_Setup,
    Virtual_Com_Port_NoData_Setup,
    Virtual_Com_Port_Get_Interface_Setting,
    Virtual_Com_Port_GetDeviceDescriptor,
    Virtual_Com_Port_GetConfigDescriptor,
    Virtual_Com_Port_GetStringDescriptor,
    0,
    0x40 /*MAX PACKET SIZE*/
  };

USER_STANDARD_REQUESTS User_Standard_Requests =
  {
    Virtual_Com_Port_GetConfiguration,
    Virtual_Com_Port_SetConfiguration,
    Virtual_Com_Port_GetInterface,
    Virtual_Com_Port_SetInterface,
    Virtual_Com_Port_GetStatus,
    Virtual_Com_Port_ClearFeature,
    Virtual_Com_Port_SetEndPointFeature,
    Virtual_Com_Port_SetDeviceFeature,
    Virtual_Com_Port_SetDeviceAddress
  };

ONE_DESCRIPTOR Device_Descriptor =
  {
    (u8*)Virtual_Com_Port_DeviceDescriptor,
    VIRTUAL_COM_PORT_SIZ_DEVICE_DESC
  };

ONE_DESCRIPTOR Config_Descriptor =
  {
    (u8*)Virtual_Com_Port_ConfigDescriptor,
    VIRTUAL_COM_PORT_SIZ_CONFIG_DESC
  };

ONE_DESCRIPTOR String_Descriptor[4] =
  {
    {(u8*)Virtual_Com_Port_StringLangID, VIRTUAL_COM_PORT_SIZ_STRING_LANGID},
    {(u8*)Virtual_Com_Port_StringVendor, VIRTUAL_COM_PORT_SIZ_STRING_VENDOR},
    {(u8*)Virtual_Com_Port_StringProduct, VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT},
    {(u8*)Virtual_Com_Port_StringSerial, VIRTUAL_COM_PORT_SIZ_STRING_SERIAL}
  };

/* Extern variables ----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Extern function prototypes ------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name  : Virtual_Com_Port_init.
* Description    : Virtual COM Port Mouse init routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_init(void)
{

  /* Update the serial number string descriptor with the data from the unique
  ID*/
  Get_SerialNum();

  pInformation->Current_Configuration = 0;

  /* Connect the device */
  PowerOn();
  /* USB interrupts initialization */
  /* clear pending interrupts */
  _SetISTR(0);
  wInterrupt_Mask = IMR_MSK;
  /* set interrupts mask */
  _SetCNTR(wInterrupt_Mask);

  /* configure the USART 1 to the default settings */
  USART_Config_Default();

  bDeviceState = UNCONNECTED;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_Reset
* Description    : Virtual_Com_Port Mouse reset routine
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_Reset(void)
{
  /* Set Virtual_Com_Port DEVICE as not configured */
  pInformation->Current_Configuration = 0;

  /* Current Feature initialization */
  pInformation->Current_Feature = Virtual_Com_Port_ConfigDescriptor[7];

  /* Set Virtual_Com_Port DEVICE with the default Interface*/
  pInformation->Current_Interface = 0;
  SetBTABLE(BTABLE_ADDRESS);

  /* Initialize Endpoint 0 */
  SetEPType(ENDP0, EP_CONTROL);
  SetEPTxStatus(ENDP0, EP_TX_STALL);
  SetEPRxAddr(ENDP0, ENDP0_RXADDR);
  SetEPTxAddr(ENDP0, ENDP0_TXADDR);
  Clear_Status_Out(ENDP0);
  SetEPRxCount(ENDP0, Device_Property.MaxPacketSize);
  SetEPRxValid(ENDP0);

  /* Initialize Endpoint 1 */
  SetEPType(ENDP1, EP_BULK);
  SetEPTxAddr(ENDP1, ENDP1_TXADDR);
  SetEPTxStatus(ENDP1, EP_TX_NAK);
  SetEPRxStatus(ENDP1, EP_RX_DIS);

  /* Initialize Endpoint 2 */
  SetEPType(ENDP2, EP_INTERRUPT);
  SetEPTxAddr(ENDP2, ENDP2_TXADDR);
  SetEPRxStatus(ENDP2, EP_RX_DIS);
  SetEPTxStatus(ENDP2, EP_TX_NAK);

  /* Initialize Endpoint 3 */
  SetEPType(ENDP3, EP_BULK);
  SetEPRxAddr(ENDP3, ENDP3_RXADDR);
  SetEPRxCount(ENDP3, VIRTUAL_COM_PORT_DATA_SIZE);
  SetEPRxStatus(ENDP3, EP_RX_VALID);
  SetEPTxStatus(ENDP3, EP_TX_DIS);

  /* Set this device to response on default address */
  SetDeviceAddress(0);

  bDeviceState = ATTACHED;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_SetConfiguration.
* Description    : Udpade the device state to configured.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_SetConfiguration(void)
{
  DEVICE_INFO *pInfo = &Device_Info;

  if (pInfo->Current_Configuration != 0)
  {
    /* Device configured */
    bDeviceState = CONFIGURED;
  }
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_SetConfiguration.
* Description    : Udpade the device state to addressed.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_SetDeviceAddress (void)
{
  bDeviceState = ADDRESSED;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_Status_In.
* Description    : Virtual COM Port Status In Routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_Status_In(void)
{
  if (Request == SET_LINE_CODING)
  {
    USART_Config();
    Request = 0;
  }
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_Status_Out
* Description    : Virtual COM Port Status OUT Routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_Status_Out(void)
{}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_Data_Setup
* Description    : handle the data class specific requests
* Input          : Request Nb.
* Output         : None.
* Return         : USB_UNSUPPORT or USB_SUCCESS.
*******************************************************************************/
RESULT Virtual_Com_Port_Data_Setup(u8 RequestNo)
{
  u8    *(*CopyRoutine)(u16);

  CopyRoutine = NULL;

  if (RequestNo == GET_LINE_CODING)
  {
    if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
    {
      CopyRoutine = Virtual_Com_Port_GetLineCoding;
    }
  }
  else if (RequestNo == SET_LINE_CODING)
  {
    if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
    {
      CopyRoutine = Virtual_Com_Port_SetLineCoding;
    }
    Request = SET_LINE_CODING;
  }

  if (CopyRoutine == NULL)
  {
    return USB_UNSUPPORT;
  }

  pInformation->Ctrl_Info.CopyData = CopyRoutine;
  pInformation->Ctrl_Info.Usb_wOffset = 0;
  (*CopyRoutine)(0);
  return USB_SUCCESS;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_NoData_Setup.
* Description    : handle the no data class specific requests.
* Input          : Request Nb.
* Output         : None.
* Return         : USB_UNSUPPORT or USB_SUCCESS.
*******************************************************************************/
RESULT Virtual_Com_Port_NoData_Setup(u8 RequestNo)
{

  if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
  {
    if (RequestNo == SET_COMM_FEATURE)
    {
      return USB_SUCCESS;
    }
    else if (RequestNo == SET_CONTROL_LINE_STATE)
    {
      return USB_SUCCESS;
    }
  }

  return USB_UNSUPPORT;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_GetDeviceDescriptor.
* Description    : Gets the device descriptor.
* Input          : Length.
* Output         : None.
* Return         : The address of the device descriptor.
*******************************************************************************/
u8 *Virtual_Com_Port_GetDeviceDescriptor(u16 Length)
{
  return Standard_GetDescriptorData(Length, &Device_Descriptor);
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_GetConfigDescriptor.
* Description    : get the configuration descriptor.
* Input          : Length.
* Output         : None.
* Return         : The address of the configuration descriptor.
*******************************************************************************/
u8 *Virtual_Com_Port_GetConfigDescriptor(u16 Length)
{
  return Standard_GetDescriptorData(Length, &Config_Descriptor);
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_GetStringDescriptor
* Description    : Gets the string descriptors according to the needed index
* Input          : Length.
* Output         : None.
* Return         : The address of the string descriptors.
*******************************************************************************/
u8 *Virtual_Com_Port_GetStringDescriptor(u16 Length)
{
  u8 wValue0 = pInformation->USBwValue0;
  if (wValue0 > 4)
  {
    return NULL;
  }
  else
  {
    return Standard_GetDescriptorData(Length, &String_Descriptor[wValue0]);
  }
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_Get_Interface_Setting.
* Description    : test the interface and the alternate setting according to the
*                  supported one.
* Input1         : u8: Interface : interface number.
* Input2         : u8: AlternateSetting : Alternate Setting number.
* Output         : None.
* Return         : The address of the string descriptors.
*******************************************************************************/
RESULT Virtual_Com_Port_Get_Interface_Setting(u8 Interface, u8 AlternateSetting)
{
  if (AlternateSetting > 0)
  {
    return USB_UNSUPPORT;
  }
  else if (Interface > 1)
  {
    return USB_UNSUPPORT;
  }
  return USB_SUCCESS;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_GetLineCoding.
* Description    : send the linecoding structure to the PC host.
* Input          : Length.
* Output         : None.
* Return         : Inecoding structure base address.
*******************************************************************************/
u8 *Virtual_Com_Port_GetLineCoding(u16 Length)
{
  if (Length == 0)
  {
    pInformation->Ctrl_Info.Usb_wLength = sizeof(linecoding);
    return NULL;
  }
  return(u8 *)&linecoding;
}

/*******************************************************************************
* Function Name  : Virtual_Com_Port_SetLineCoding.
* Description    : Set the linecoding structure fields.
* Input          : Length.
* Output         : None.
* Return         : Linecoding structure base address.
*******************************************************************************/
u8 *Virtual_Com_Port_SetLineCoding(u16 Length)
{
  if (Length == 0)
  {
    pInformation->Ctrl_Info.Usb_wLength = sizeof(linecoding);
    return NULL;
  }
  return(u8 *)&linecoding;
}

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费在线视频| 成人av在线资源网站| 中文字幕五月欧美| 国产亚洲欧美色| 久久久久国产免费免费 | 久久精品日产第一区二区三区高清版| 欧美日韩精品专区| 欧美日韩日日摸| 欧美裸体bbwbbwbbw| 欧美日韩国产a| 日韩一卡二卡三卡四卡| 日韩一区二区三区视频| 日韩一级大片在线| 26uuu另类欧美| 中文字幕免费不卡| 一区二区三区毛片| 亚洲va国产天堂va久久en| 亚洲福利一区二区| 狠狠网亚洲精品| 韩国av一区二区三区四区| 国产尤物一区二区| 国产成人精品1024| 色综合中文综合网| 激情文学综合插| 国产成人综合网| 97国产一区二区| 欧美乱妇23p| 久久精品男人天堂av| 国产精品对白交换视频| 亚洲国产精品一区二区久久 | 亚洲精品在线免费观看视频| 久久综合久久99| 国产精品成人网| 天堂久久一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 99riav久久精品riav| 在线观看91av| 亚洲色欲色欲www在线观看| 午夜国产精品影院在线观看| 国产一区二区日韩精品| 91黄色小视频| 国产网站一区二区| 婷婷开心激情综合| 成人免费精品视频| 91精品国产综合久久婷婷香蕉| 国产欧美一区二区三区鸳鸯浴| 亚洲一区在线观看视频| 成人综合婷婷国产精品久久 | 国内精品视频666| 色综合天天天天做夜夜夜夜做| 欧美一区二区在线看| 综合在线观看色| 国产一级精品在线| 日韩精品自拍偷拍| 亚洲国产精品影院| 色婷婷亚洲婷婷| 国产亚洲一区字幕| 日本网站在线观看一区二区三区| 99久久精品国产毛片| 久久久综合精品| 裸体健美xxxx欧美裸体表演| 欧美性色黄大片| 亚洲三级在线免费观看| 国产suv精品一区二区6| 欧美成人国产一区二区| 亚洲一区二区高清| 91蜜桃网址入口| 日韩一区日韩二区| 成人动漫精品一区二区| 久久久99免费| 国产精品一卡二卡在线观看| 精品黑人一区二区三区久久 | 精品欧美黑人一区二区三区| 青娱乐精品在线视频| 欧美色综合影院| 亚洲精品一二三| 色婷婷综合久久久中文一区二区| 国产精品麻豆一区二区| 波多野结衣91| 最新国产精品久久精品| 99re亚洲国产精品| 亚洲欧洲日韩在线| 91在线porny国产在线看| 国产精品久久久久久久久免费丝袜 | 欧美群妇大交群的观看方式| 亚洲一区影音先锋| 欧美日韩另类一区| 麻豆国产精品官网| 久久综合九色综合97_久久久| 狠狠色丁香久久婷婷综合丁香| 久久综合九色欧美综合狠狠| 高清成人免费视频| 1024成人网| 欧美日韩亚洲另类| 九色|91porny| 中文字幕一区二区在线观看| 91蜜桃视频在线| 日本人妖一区二区| 久久久久久久久久久久久女国产乱 | 在线视频观看一区| 亚洲国产精品自拍| 精品伦理精品一区| 成人综合婷婷国产精品久久蜜臀 | 亚洲一区二区精品3399| 日韩久久久久久| 懂色av中文字幕一区二区三区| 亚洲特级片在线| 日韩视频不卡中文| 99久久精品一区| 亚洲高清一区二区三区| 中文字幕不卡在线观看| 欧美日韩国产欧美日美国产精品| 韩国精品一区二区| 亚洲视频免费观看| 日韩欧美第一区| 色综合久久综合| 麻豆国产91在线播放| 亚洲激情成人在线| 欧美哺乳videos| 欧美午夜影院一区| 福利电影一区二区| 日韩精品欧美精品| 亚洲私人黄色宅男| 欧美岛国在线观看| 欧美综合久久久| 国产福利一区二区三区视频 | 久久日韩精品一区二区五区| 91免费版在线| 成人久久18免费网站麻豆 | 日本视频中文字幕一区二区三区| 国产精品理论在线观看| 日韩欧美亚洲另类制服综合在线| 日本福利一区二区| 国产suv精品一区二区6| 黄页网站大全一区二区| 婷婷一区二区三区| 亚洲激情第一区| 中文字幕制服丝袜一区二区三区| 欧美电影免费观看完整版| 欧美视频在线观看一区| 色婷婷综合中文久久一本| 国产成人精品一区二区三区四区 | 国产女主播在线一区二区| 在线播放中文一区| 欧美探花视频资源| 日本道精品一区二区三区 | 日韩中文欧美在线| 一区二区三区 在线观看视频| 中文无字幕一区二区三区| 26uuu久久综合| 欧美精品一区男女天堂| 欧美成人精品福利| 精品久久一区二区三区| 日韩视频一区二区在线观看| 91精品国产91久久综合桃花| 在线播放日韩导航| 在线播放欧美女士性生活| 欧美一区二区视频在线观看2020| 欧美精品久久一区二区三区| 欧美一a一片一级一片| 色婷婷激情综合| 欧美日韩在线三级| 日韩欧美美女一区二区三区| 精品理论电影在线观看 | 91网上在线视频| 91成人在线观看喷潮| 欧美丝袜自拍制服另类| 欧美喷潮久久久xxxxx| 日韩一区二区三区视频在线观看| 精品日韩在线观看| 久久久久久久久99精品| 国产精品妹子av| 亚洲专区一二三| 久久精品99久久久| av不卡免费在线观看| 欧美日韩aaa| 久久嫩草精品久久久精品| 日韩理论片网站| 伦理电影国产精品| 暴力调教一区二区三区| 在线观看91视频| 久久久国产一区二区三区四区小说 | 日韩欧美国产综合| 国产日韩欧美一区二区三区乱码| 亚洲激情欧美激情| 经典三级一区二区| 色婷婷av一区二区三区软件| 777奇米四色成人影色区| 国产午夜亚洲精品理论片色戒 | 久久伊99综合婷婷久久伊| 自拍偷拍国产亚洲| 精品亚洲免费视频| 色悠悠亚洲一区二区| 日韩视频国产视频| 亚洲欧洲av在线| 激情六月婷婷综合| 欧美日韩国产成人在线91| 欧美国产精品v| 久久成人18免费观看| 日本久久电影网|