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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb_prop.c

?? stm32單片機的usb程序包
?? C
字號:
/******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
* File Name          : usb_prop.c
* Author             : MCD Application Team
* Version            : V1.0
* Date               : 10/08/2007
* Description        : All processings related to Joystick Mouse Demo
********************************************************************************
* THE PRESENT SOFTWARE 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 SOFTWARE 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 ---------------------------------------------------------*/
u32 ProtocolValue;

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

DEVICE Device_Table =
  {
    EP_NUM,
    1
  };

DEVICE_PROP Device_Property =
  {
    Joystick_init,
    Joystick_Reset,
    Joystick_Status_In,
    Joystick_Status_Out,
    Joystick_Data_Setup,
    Joystick_NoData_Setup,
    Joystick_Get_Interface_Setting,
    Joystick_GetDeviceDescriptor,
    Joystick_GetConfigDescriptor,
    Joystick_GetStringDescriptor,
    0,
    0x40 /*MAX PACKET SIZE*/
  };
USER_STANDARD_REQUESTS User_Standard_Requests =
  {
    Joystick_GetConfiguration,
    Joystick_SetConfiguration,
    Joystick_GetInterface,
    Joystick_SetInterface,
    Joystick_GetStatus,
    Joystick_ClearFeature,
    Joystick_SetEndPointFeature,
    Joystick_SetDeviceFeature,
    Joystick_SetDeviceAddress
  };

ONE_DESCRIPTOR Device_Descriptor =
  {
    (u8*)Joystick_DeviceDescriptor,
    JOYSTICK_SIZ_DEVICE_DESC
  };

ONE_DESCRIPTOR Config_Descriptor =
  {
    (u8*)Joystick_ConfigDescriptor,
    JOYSTICK_SIZ_CONFIG_DESC
  };

ONE_DESCRIPTOR Joystick_Report_Descriptor =
  {
    (u8 *)Joystick_ReportDescriptor,
    JOYSTICK_SIZ_REPORT_DESC
  };

ONE_DESCRIPTOR Mouse_Hid_Descriptor =
  {
    (u8*)Joystick_ConfigDescriptor + JOYSTICK_OFF_HID_DESC,
    JOYSTICK_SIZ_HID_DESC
  };

ONE_DESCRIPTOR String_Descriptor[4] =
  {
    {(u8*)Joystick_StringLangID, JOYSTICK_SIZ_STRING_LANGID},
    {(u8*)Joystick_StringVendor, JOYSTICK_SIZ_STRING_VENDOR},
    {(u8*)Joystick_StringProduct, JOYSTICK_SIZ_STRING_PRODUCT},
    {(u8*)Joystick_StringSerial, JOYSTICK_SIZ_STRING_SERIAL}
  };

/* Extern variables ----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Extern function prototypes ------------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : Joystick_init.
* Description    : Joystick Mouse init routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Joystick_init(void)
{
  pInformation->Current_Configuration = 0;
  /* Connect the device */
  PowerOn();
  /* USB interrupts initialization */
  _SetISTR(0);               /* clear pending interrupts */
  wInterrupt_Mask = IMR_MSK;
  _SetCNTR(wInterrupt_Mask); /* set interrupts mask */
  pInformation->Current_Feature = Joystick_ConfigDescriptor[7];
  /* Wait until device is configured */
  while (pInformation->Current_Configuration == 0)
  {
    NOP_Process();
  }

  bDeviceState = CONFIGURED;
}

/*******************************************************************************
* Function Name  : Joystick_Reset.
* Description    : Joystick Mouse reset routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Joystick_Reset(void)
{
  /* Set Joystick_DEVICE as not configured */
  pInformation->Current_Configuration = 0;
  pInformation->Current_Interface = 0;/*the default Interface*/
  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_INTERRUPT);
  SetEPTxAddr(ENDP1, ENDP1_TXADDR);
  SetEPTxCount(ENDP1, 4);
  SetEPRxStatus(ENDP1, EP_RX_DIS);
  SetEPTxStatus(ENDP1, EP_TX_NAK);

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

/*******************************************************************************
* Function Name  : Joystick_Status_In.
* Description    : Joystick status IN routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Joystick_Status_In(void)
{
}

/*******************************************************************************
* Function Name  : Joystick_Status_Out
* Description    : Joystick status OUT routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Joystick_Status_Out (void)
{
}

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

  CopyRoutine = NULL;

  if ((RequestNo == GET_DESCRIPTOR)
      && (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))
      && (pInformation->USBwIndex0 == 0))
  {

    if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)
    {
      CopyRoutine = Joystick_GetReportDescriptor;
    }
    else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)
    {
      CopyRoutine = Joystick_GetHIDDescriptor;
    }

  } /* End of GET_DESCRIPTOR */

  /*** GET_PROTOCOL ***/
  else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
           && RequestNo == GET_PROTOCOL)
  {
    CopyRoutine = Joystick_GetProtocolValue;
  }

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

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

/*******************************************************************************
* Function Name  : Joystick_NoData_Setup
* Description    : handle the no data class specific requests
* Input          : Request Nb.
* Output         : None.
* Return         : USB_UNSUPPORT or USB_SUCCESS.
*******************************************************************************/
RESULT Joystick_NoData_Setup(u8 RequestNo)
{
  if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
      && (RequestNo == SET_PROTOCOL))
  {
    return Joystick_SetProtocol();
  }

  else
  {
    return USB_UNSUPPORT;
  }
}

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

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

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

/*******************************************************************************
* Function Name  : Joystick_GetReportDescriptor.
* Description    : Gets the HID report descriptor.
* Input          : Length
* Output         : None.
* Return         : The address of the configuration descriptor.
*******************************************************************************/
u8 *Joystick_GetReportDescriptor(u16 Length)
{
  return Standard_GetDescriptorData(Length, &Joystick_Report_Descriptor);
}

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

/*******************************************************************************
* Function Name  : Joystick_Get_Interface_Setting.
* Description    : tests the interface and the alternate setting according to the
*                  supported one.
* Input          : - Interface : interface number.
*                  - AlternateSetting : Alternate Setting number.
* Output         : None.
* Return         : USB_SUCCESS or USB_UNSUPPORT.
*******************************************************************************/
RESULT Joystick_Get_Interface_Setting(u8 Interface, u8 AlternateSetting)
{
  if (AlternateSetting > 0)
  {
    return USB_UNSUPPORT;
  }
  else if (Interface > 0)
  {
    return USB_UNSUPPORT;
  }
  return USB_SUCCESS;
}

/*******************************************************************************
* Function Name  : Joystick_SetProtocol
* Description    : Joystick Set Protocol request routine.
* Input          : None.
* Output         : None.
* Return         : USB SUCCESS.
*******************************************************************************/
RESULT Joystick_SetProtocol(void)
{
  u8 wValue0 = pInformation->USBwValue0;
  ProtocolValue = wValue0;
  return USB_SUCCESS;
}

/*******************************************************************************
* Function Name  : Joystick_GetProtocolValue
* Description    : get the protocol value
* Input          : Length.
* Output         : None.
* Return         : address of the protcol value.
*******************************************************************************/
u8 *Joystick_GetProtocolValue(u16 Length)
{
  if (Length == 0)
  {
    pInformation->Ctrl_Info.Usb_wLength = 1;
    return NULL;
  }
  else
  {
    return (u8 *)(&ProtocolValue);
  }
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久三级丝袜| 床上的激情91.| 亚洲男人电影天堂| 亚洲欧美另类图片小说| 一色桃子久久精品亚洲| 国产欧美日韩综合| 一区二区三区高清不卡| 中文乱码免费一区二区| 欧美国产精品v| 亚洲色图丝袜美腿| 亚洲男人的天堂在线aⅴ视频| 国产精品国产精品国产专区不片| 国产欧美一区二区精品性色| 日韩美女视频一区二区| 自拍偷在线精品自拍偷无码专区| 亚洲精品日韩一| 亚洲成人在线免费| 麻豆视频一区二区| 国产成人午夜精品影院观看视频| 成人国产精品免费观看动漫 | 538prom精品视频线放| 91精品国产一区二区三区香蕉| 欧美一区二区视频网站| 久久免费国产精品| 亚洲欧美日韩国产成人精品影院| 亚洲最新视频在线观看| 裸体一区二区三区| jiyouzz国产精品久久| 欧美性生交片4| 26uuu国产日韩综合| 亚洲三级理论片| 日韩va欧美va亚洲va久久| 精品无码三级在线观看视频| 91美女在线看| 欧美大胆人体bbbb| 综合激情网...| 奇米四色…亚洲| av在线播放一区二区三区| 欧美日韩国产a| 国产精品嫩草影院av蜜臀| 亚洲国产精品综合小说图片区| 国产在线播放一区二区三区| 欧美在线视频不卡| 国产无人区一区二区三区| 亚洲成人精品影院| 成人小视频免费观看| 欧美一级日韩一级| 亚洲欧美一区二区视频| 精品制服美女丁香| 欧美军同video69gay| 国产精品毛片大码女人| 久久精品国产亚洲5555| 欧美日韩国产三级| 另类综合日韩欧美亚洲| 色噜噜狠狠色综合中国| 国产欧美日韩中文久久| 美女免费视频一区| 欧美丝袜第三区| 亚洲欧美偷拍三级| 97久久精品人人做人人爽| 久久精品水蜜桃av综合天堂| 看国产成人h片视频| 91精品国产综合久久久蜜臀粉嫩| 亚洲免费在线视频一区 二区| 国产成人午夜高潮毛片| 国产午夜精品理论片a级大结局| 老司机免费视频一区二区三区| 91麻豆精品国产综合久久久久久| 亚洲图片欧美色图| 欧美在线你懂得| 一区二区三区在线视频免费观看| av亚洲精华国产精华精华 | 精品一区二区三区久久| 91精品国产综合久久精品麻豆 | 精品国产亚洲在线| 美国毛片一区二区| 日韩女优制服丝袜电影| 蜜臂av日日欢夜夜爽一区| 91麻豆精品国产91久久久资源速度 | 日韩午夜电影在线观看| 高清beeg欧美| 精品美女被调教视频大全网站| 久久国产日韩欧美精品| 日韩精品一区二区三区swag| 极品少妇一区二区三区精品视频| 精品日韩一区二区| 国产一区不卡在线| 国产精品久久久久久久午夜片| av网站一区二区三区| 亚洲精品欧美综合四区| 欧美影片第一页| 奇米一区二区三区av| 久久久综合视频| 99久久99久久精品国产片果冻| 国产精品久久二区二区| 色婷婷综合中文久久一本| 亚洲大片免费看| 日韩欧美中文字幕一区| 成人一区二区三区视频在线观看| 国产精品久久久一本精品| 欧美亚洲综合一区| 久久激情综合网| 国产精品久久久久久户外露出| 欧美综合一区二区三区| 九色porny丨国产精品| 中文字幕中文字幕一区二区| 欧美在线高清视频| 久久99精品久久久久婷婷| 国产亚洲精品免费| 欧美午夜精品电影| 国产精品中文字幕日韩精品| 亚洲丝袜另类动漫二区| 日韩午夜在线播放| 91性感美女视频| 久久精品二区亚洲w码| 亚洲婷婷在线视频| 欧美成人精品福利| 色先锋资源久久综合| 精品在线播放午夜| 亚洲国产日韩精品| 中文字幕免费不卡在线| 欧美精品vⅰdeose4hd| 99精品视频在线免费观看| 蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区在线视频免费 | 精品国产一区二区三区四区四| 成人av动漫在线| 久久99精品视频| 日本成人在线网站| 一区二区三区四区亚洲| 欧美国产丝袜视频| 精品国产一区二区精华| 欧美撒尿777hd撒尿| 91美女在线观看| 成人中文字幕合集| 国产在线一区观看| 免费的成人av| 午夜在线电影亚洲一区| 亚洲精品中文在线影院| 亚洲国产精品99久久久久久久久| 欧美mv日韩mv亚洲| 欧美一级在线免费| 欧美一区二区三区影视| 国产日韩av一区| 欧美成人乱码一区二区三区| 欧美日韩不卡在线| 欧美亚洲图片小说| 色呦呦日韩精品| 色噜噜狠狠色综合欧洲selulu| 99精品一区二区三区| av亚洲精华国产精华精| 91小视频在线| 色拍拍在线精品视频8848| 99v久久综合狠狠综合久久| 豆国产96在线|亚洲| 成人性生交大片免费| 成人免费看的视频| bt7086福利一区国产| www.99精品| 一本大道久久a久久精品综合| 97se亚洲国产综合自在线| 99视频一区二区三区| 一本久道久久综合中文字幕| 欧美在线三级电影| 欧美一级搡bbbb搡bbbb| 精品国产一二三| 中文字幕一区二区三区不卡| 中文字幕一区免费在线观看 | 六月丁香婷婷色狠狠久久| 久久69国产一区二区蜜臀| 国内精品久久久久影院一蜜桃| 粉嫩aⅴ一区二区三区四区| 99久久精品久久久久久清纯| 欧美视频中文字幕| 欧美大度的电影原声| 国产精品乱码人人做人人爱 | 日韩国产欧美视频| 精品午夜久久福利影院| 成人丝袜视频网| 欧美午夜精品理论片a级按摩| 欧美sm美女调教| 亚洲欧美日韩精品久久久久| 日韩在线一区二区| 成人一区二区三区| 欧美综合在线视频| 久久美女高清视频| 洋洋成人永久网站入口| 国产一区在线观看视频| 91官网在线观看| 久久综合九色欧美综合狠狠| 亚洲欧美欧美一区二区三区| 青青草精品视频| 色婷婷综合久久久久中文| 欧美一区二区三区白人| 中文字幕一区二区三区在线不卡| 裸体健美xxxx欧美裸体表演| 色先锋久久av资源部| 国产欧美日韩在线看| 日本成人在线一区| 欧美亚洲一区二区在线|