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

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

?? usb_prop.c

?? STM32F10x USB Library V1.0
?? 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一区二区三区免费野_久草精品视频
久久精品免费观看| 国产成a人亚洲精| 日本va欧美va瓶| 精品一区二区三区影院在线午夜| 成人午夜电影久久影院| 91精品国产综合久久小美女| 国产欧美日韩中文久久| 青青草国产精品97视觉盛宴 | 国产精品久久久爽爽爽麻豆色哟哟| 亚洲国产人成综合网站| 成人在线视频一区| 日韩一区二区高清| 亚洲一区二区三区四区五区中文| 国产高清视频一区| 777午夜精品免费视频| 有码一区二区三区| 成人深夜在线观看| 久久这里只有精品首页| 日精品一区二区三区| 色爱区综合激月婷婷| 中文字幕av一区二区三区高| 国产原创一区二区三区| 日韩视频免费直播| 天天做天天摸天天爽国产一区| 99久久婷婷国产综合精品电影| 精品1区2区在线观看| 热久久国产精品| 欧美三级电影网| 国产精品久久久久精k8| 成人免费毛片a| 国产精品夫妻自拍| 大桥未久av一区二区三区中文| 国产午夜精品一区二区三区视频| 国模套图日韩精品一区二区| 欧美电视剧在线看免费| 日本女优在线视频一区二区| 91精品婷婷国产综合久久竹菊| 亚洲成人av电影| www日韩大片| 免费一级欧美片在线观看| 久久精品免费观看| 欧美成人video| 国内偷窥港台综合视频在线播放| 日韩欧美国产电影| 国产精品 欧美精品| 亚洲国产精品成人综合色在线婷婷| 国产成人超碰人人澡人人澡| 中文字幕欧美激情| 色女孩综合影院| 亚洲国产综合色| 日韩免费高清av| 国产一本一道久久香蕉| 欧美精彩视频一区二区三区| 99久久精品国产麻豆演员表| 亚洲图片激情小说| 欧美日韩精品欧美日韩精品| 奇米精品一区二区三区在线观看| 久久免费的精品国产v∧| 国产成人免费网站| 亚洲四区在线观看| 欧美色精品天天在线观看视频| 天天综合色天天综合色h| 欧美v亚洲v综合ⅴ国产v| 国产99久久久久久免费看农村| 亚洲欧美日韩中文字幕一区二区三区| 91精品福利视频| 蜜桃视频一区二区三区在线观看 | 在线观看视频91| 免费看黄色91| 亚洲欧洲综合另类| 91精品国产免费久久综合| 国产福利精品一区| 亚洲国产精品久久不卡毛片| 久久久久久久久蜜桃| 在线观看视频一区二区| 国产麻豆精品在线| 夜夜嗨av一区二区三区中文字幕| 日韩一二三区不卡| 波多野结衣在线一区| 婷婷成人激情在线网| 国产精品久久久久久福利一牛影视 | 精品福利在线导航| 色综合久久久久久久久| 国内一区二区在线| 亚洲国产精品久久人人爱蜜臀| 久久久久久黄色| 欧美亚洲一区二区三区四区| 国产乱人伦偷精品视频不卡| 午夜精品免费在线| 国产精品入口麻豆原神| 日韩欧美中文字幕制服| 欧美影院一区二区| 丁香六月久久综合狠狠色| 石原莉奈一区二区三区在线观看 | 午夜不卡av免费| 国产精品久久久久久久久快鸭| 精品久久人人做人人爱| 一本大道久久a久久精品综合| 国产综合色精品一区二区三区| 婷婷综合在线观看| 亚洲免费在线播放| 中文字幕一区二区三区不卡在线| 精品剧情在线观看| 91麻豆精品国产91久久久使用方法| 色婷婷激情综合| www.综合网.com| 国产福利不卡视频| 国产盗摄精品一区二区三区在线 | 亚洲永久免费av| 亚洲女女做受ⅹxx高潮| 亚洲品质自拍视频网站| 亚洲欧洲www| 亚洲欧洲精品一区二区精品久久久 | 久久伊人蜜桃av一区二区| 日韩视频在线永久播放| 6080午夜不卡| 日韩一区二区在线观看视频| 精品视频一区二区三区免费| 欧美日韩国产免费一区二区| 欧美色男人天堂| 91麻豆精品国产自产在线| 欧美日本韩国一区二区三区视频 | 在线观看国产一区二区| 欧美中文字幕一二三区视频| 欧美性色黄大片手机版| 欧美日韩高清一区二区三区| 欧美猛男超大videosgay| 欧美群妇大交群中文字幕| 88在线观看91蜜桃国自产| 欧美一区在线视频| 精品sm捆绑视频| 国产日韩av一区二区| 亚洲欧洲日产国产综合网| 亚洲精品videosex极品| 亚洲成人黄色小说| 蜜桃av噜噜一区| 国产精品一区二区你懂的| 成人精品免费看| 日本韩国一区二区三区视频| 欧美日韩激情在线| 精品剧情在线观看| 国产精品视频第一区| 亚洲精品写真福利| 天天色天天爱天天射综合| 国产在线视频不卡二| 99这里只有久久精品视频| 欧美日韩日本视频| 久久视频一区二区| 亚洲免费成人av| 奇米精品一区二区三区在线观看一 | 久久综合九色综合欧美98 | 宅男噜噜噜66一区二区66| 欧美成人精品二区三区99精品| 久久久久国产精品免费免费搜索| 国产精品国产三级国产有无不卡| 亚洲国产精品视频| 高清不卡一区二区在线| 欧美日韩免费观看一区二区三区| 精品成人一区二区三区四区| 亚洲天堂福利av| 麻豆国产精品视频| 在线免费观看视频一区| 精品国产一区二区三区不卡 | 日韩中文字幕麻豆| 风间由美一区二区三区在线观看 | 91麻豆精东视频| 日韩欧美的一区二区| 亚洲日本乱码在线观看| 麻豆极品一区二区三区| 欧日韩精品视频| 欧美激情一区二区三区在线| 青椒成人免费视频| 91福利视频久久久久| 中文字幕av一区 二区| 日韩**一区毛片| 在线观看精品一区| 日韩美女久久久| 高清久久久久久| 欧美成人精精品一区二区频| 天天色图综合网| 91搞黄在线观看| 136国产福利精品导航| 精品影视av免费| 日韩一级片网站| 亚洲综合色噜噜狠狠| 99久久99久久综合| 久久久精品免费观看| 久久精品国产久精国产| 欧美久久一区二区| 亚洲一区中文日韩| 成人国产在线观看| 久久亚洲捆绑美女| 久久精品国产亚洲一区二区三区 | 欧美精品一区二区三区视频| 日韩精品1区2区3区| 欧美性xxxxx极品少妇| 亚洲欧美日韩国产一区二区三区| 成+人+亚洲+综合天堂| 国产精品污网站| av高清久久久|