usb_9.h
上传用户:sourcesun
上传日期:2013-09-23
资源大小:362k
文件大小:17k
源码类别:

DNA

开发平台:

Asm

  1. /*************************************************************************
  2.  *
  3.  *    Used with ICCARM and AARM.
  4.  *
  5.  *    (c) Copyright IAR Systems 2005
  6.  *
  7.  *    File name   : usb_9.h
  8.  *    Description : Define usb chapter 9 (device framework) module
  9.  *
  10.  *    History :
  11.  *    1. Data        : August 5, 2005
  12.  *       Author      : Stanimir Bonev
  13.  *       Description : Create
  14.  *    2. Data        : December 19, 2005
  15.  *       Author      : Stanimir Bonev
  16.  *       Description : Modify
  17.  *        Add separate functions for In and Out Data transfer by EP0
  18.  *        Change prameter transfered to function form packet type to
  19.  *        pointer to UsbEp0Ctrl structure
  20.  *
  21.  *    $Revision: 1.1.2.1 $
  22. **************************************************************************/
  23. #include <includes.h>
  24. #ifndef __USB_9_H
  25. #define __USB_9_H
  26. typedef enum
  27. {
  28.   UsbPass = 0, UsbFault, UsbNotSupport,
  29. } UsbCommStatus_t;
  30. typedef enum
  31. {
  32.   UsbDevStatusUnknow = 0, UsbDevStatusAttached, UsbDevStatusPowered,
  33.   UsbDevStatusDefault, UsbDevStatusAddress, UsbDevStatusConfigured
  34. } _UsbDevState_t;
  35. typedef enum
  36. {
  37.   UsbSetupPacket = 0,UsbDataOutPacket,UsbDataInPacket,
  38.   UsbDmaPacket,
  39.   UsbEpStall,UsbEpUnstall,UsbEpPause,
  40.   UsbEpSetupDataOut,
  41.   UsbEpClassDataOut,
  42.   UsbEpVendorDataOut,
  43.   UsbEpSetupDataIn,UsbEpSetupLastIn,
  44.   UsbEpWaitStatusOut,UsbEpStatusOut,
  45.   UsbEpWaitStatusIn,UsbEpStatusIn,UsbEpStatusInSetAdd,
  46. } _UsbEpStaus_t;
  47. typedef enum
  48. {
  49.   UsbTypeStandart = 0,UsbTypeClass,UsbTypeVendor,UsbTypeReserved
  50. } UsbSetupType_t;
  51. typedef enum
  52. {
  53.   GET_STATUS = 0,CLEAR_FEATURE, Reserved0, SET_FEATURE, Reserved1,
  54.   SET_ADDRESS, GET_DESCRIPTOR, SET_DESCRIPTOR, GET_CONFIGURATION,
  55.   SET_CONFIGURATION, GET_INTERFACE, SET_INTERFACE, SYNCH_FRAME
  56. } UsbSetupStandatRecuest_t;
  57. typedef enum
  58. {
  59.   UsbRecipientDevice = 0,UsbRecipientInterface,UsbRecipientEndpoint,
  60.   UsbRecipientOther,UsbRecipientReserved
  61. } UsbSetupRecipient_t;
  62. typedef enum
  63. {
  64.   UsbEpHaltSelector= 0, UsbDeviceRemoteWakeupSelector, UsbTestModeSelector
  65. } UsbFeatureSelector_t;
  66. typedef enum
  67. {
  68.   UsbUserClass,UsbUserVendor,UsbUserGetDescriptor,UsbClassEp0OutPacket,UsbVendorEp0OutPacket,
  69.   UsbUserConfigure,UsbUserReset,UsbUserConnect,UsbUserSuspend,
  70.   UsbUserLastInd,
  71. } UsbCoreUserFuncInd_t;
  72. typedef enum
  73. {
  74.   UsbCoreReqDevState = 0, UsbCoreReqDevSusState, UsbCoreReqConfiquration,
  75.   UsbCoreReqInterface, UsbCoreReqAlternateSetting, UsbCoreReqDevOwnAddress,
  76.   UsbCoreReqWakeUpEnableStatus, UsbCoreReqSelfPoweredStatus,
  77. } UsbCoreReqType_t;
  78. typedef enum
  79. {
  80.   UsbUserNone = 0, UsbUserSendPacket, UsbUserReceivePacket, UsbUserSendAckn,
  81.   UsbUserStallCtrlEp,
  82. } UsbUserFuncResponse_t;
  83. #define UsbDevStatusNoSuspend 0
  84. #define UsbDevStatusSuspend   1
  85. typedef struct
  86. {
  87.   Int8U DS          : 3;
  88.   Int8U             : 4;
  89.   Int8U Suspend     : 1;
  90. } UsbDevState_t;
  91. typedef union
  92. {
  93.   Int8U mRequestTypeData;
  94.   struct
  95.   {
  96.     Int8U Recipient : 5;
  97.     Int8U Type      : 2;
  98.     Int8U Dir       : 1;
  99.   };
  100. }UsbRequestType_t;
  101. typedef union
  102. {
  103.   Int16U Word;
  104.   struct
  105.   {
  106.     Int8U Lo;
  107.     Int8U Hi;
  108.   };
  109. }TwoBytes_t;
  110. typedef struct
  111. {
  112.   UsbRequestType_t  mRequestType;
  113.   Int8U             bRequest;
  114.   TwoBytes_t        wValue;
  115.   TwoBytes_t        wIndex;
  116.   TwoBytes_t        wLength;
  117. } UsbSetupPacket_t;
  118. typedef union
  119. {
  120.   Int8U Data;
  121.   struct
  122.   {
  123.     Int8U SelfPowered         :1;
  124.     Int8U RemoteWakeupEnable  :1;
  125.     Int8U                     :6;
  126.   };
  127. } UsbDefFeature_t;
  128. typedef struct
  129. {
  130.   UsbDevState_t     State;
  131.   Int32U            Configuration;
  132.   Int32U            Interface;
  133.   Int32U            AlternateSetting;
  134.   Int32U            DevAdd;
  135.   UsbDefFeature_t   Feature;
  136. } UsbDevCtrl_t;
  137. typedef struct
  138. {
  139.   _UsbEpStaus_t     Status;
  140.   Boolean           NoZeroLength;
  141. } UsbEpSataus_t;
  142. typedef struct
  143. {
  144.   Int8U *pData;
  145.   Int32U Counter;
  146.   UsbEpSataus_t EpStatus;
  147. }UsbEpCtrl_t;
  148. /*************************************************************************
  149.  * Function Name: UsbCoreInit
  150.  * Parameters:  CommUserFpnt_t UserCoreConfigure
  151.  *
  152.  * Return: none
  153.  *
  154.  * Description: USB init core
  155.  *
  156.  *************************************************************************/
  157. void UsbCoreInit (CommUserFpnt_t UserCoreConfigure);
  158. /*************************************************************************
  159.  * Function Name: UsbCoreUserFuncRegistered
  160.  * Parameters: CommUserFpnt_t UserFunc, UsbCoreUserFuncInd_t UserFuncInd
  161.  *
  162.  * Return: CommUserFpnt_t
  163.  *
  164.  * Description: Registed User core callback function
  165.  *
  166.  *************************************************************************/
  167. CommUserFpnt_t UsbCoreUserFuncRegistered (CommUserFpnt_t UserCoreFunc,
  168.                                           UsbCoreUserFuncInd_t UserFuncInd);
  169. /*************************************************************************
  170.  * Function Name: UsbCoreReq
  171.  * Parameters:  UsbCoreReqType_t Type
  172.  *
  173.  * Return: Int32U
  174.  *
  175.  * Description: Return different device states
  176.  *
  177.  *************************************************************************/
  178. Int32U UsbCoreReq (UsbCoreReqType_t Type);
  179. /*************************************************************************
  180.  * Function Name: UsbWakeUp
  181.  * Parameters:  none
  182.  *
  183.  * Return: none
  184.  *
  185.  * Description: WakeUp device from suspend mode
  186.  *
  187.  *************************************************************************/
  188. void UsbWakeUp (void);
  189. /*************************************************************************
  190.  * Function Name: UsbSetDevState
  191.  * Parameters:  _UsbDevState_t DevState
  192.  *
  193.  * Return: none
  194.  *
  195.  * Description: Set device state
  196.  *
  197.  *************************************************************************/
  198. void UsbSetDevState (_UsbDevState_t DevState);
  199. /*************************************************************************
  200.  * Function Name: UsbGetDevState
  201.  * Parameters:  none
  202.  *
  203.  * Return: UsbDevState_t
  204.  *
  205.  * Description: Get device state
  206.  *
  207.  *************************************************************************/
  208. UsbDevState_t UsbGetDevState (void);
  209. /*************************************************************************
  210.  * Function Name: UsbSetDevSuspend
  211.  * Parameters:  none
  212.  *
  213.  * Return: UsbDevState_t
  214.  *
  215.  * Description: Set device suspend mode
  216.  *
  217.  *************************************************************************/
  218. void UsbSetDevSuspend (Boolean Suspend);
  219. /*************************************************************************
  220.  * Function Name: UsbFindInterface
  221.  * Parameters:  UsbStandardConfigurationDescriptor_t * pConfiguration
  222.  *              Int32U Interface,Int32U AlternativeSetting
  223.  *
  224.  * Return: UsbCommStatus_t
  225.  *
  226.  * Description: Set Interface and  Alternative setting state
  227.  *
  228.  *************************************************************************/
  229. UsbCommStatus_t UsbFindInterface (UsbStandardConfigurationDescriptor_t * pConfiguration,
  230.                                   UsbDevCtrl_t * UsbDev);
  231. /*************************************************************************
  232.  * Function Name: UsbFindConfiguration
  233.  * Parameters:  Int32U
  234.  *
  235.  * Return: UsbStandardConfigurationDescriptor_t *
  236.  *
  237.  * Description: Return pointer to current configuration
  238.  *
  239.  *************************************************************************/
  240. UsbStandardConfigurationDescriptor_t * UsbFindConfiguration(Int32U Configuration);
  241. /*************************************************************************
  242.  * Function Name: UsbDevConnectCallback
  243.  * Parameters:  void * pArg
  244.  *
  245.  * Return: none
  246.  *
  247.  * Description: USB connect callback
  248.  *
  249.  *************************************************************************/
  250. void UsbDevConnectCallback (void * pArg);
  251. /*************************************************************************
  252.  * Function Name: UsbDevSuspendCallback
  253.  * Parameters:  void * pArg
  254.  *
  255.  * Return: none
  256.  *
  257.  * Description: USB suspend callback
  258.  *
  259.  *************************************************************************/
  260. void UsbDevSuspendCallback (void * pArg);
  261. /*************************************************************************
  262.  * Function Name: UsbDevResetCallback
  263.  * Parameters:  void * pArg
  264.  *
  265.  * Return: none
  266.  *
  267.  * Description: USB reset callback
  268.  *
  269.  *************************************************************************/
  270. void UsbDevResetCallback (void * pArg);
  271. /*************************************************************************
  272.  * Function Name: UsbEp0SetupWrite
  273.  * Parameters:  none
  274.  *
  275.  * Return: none
  276.  *
  277.  * Description: USB EP Write implement (IN)
  278.  *
  279.  *************************************************************************/
  280. void UsbEp0SetupWrite (void);
  281. /*************************************************************************
  282.  * Function Name: UsbSetConfigurtonState
  283.  * Parameters:  Int32U
  284.  *
  285.  * Return: UsbCommStatus_t
  286.  *
  287.  * Description: Set configuration state
  288.  *
  289.  *************************************************************************/
  290. inline UsbCommStatus_t UsbSetConfigurtonState (Int32U Configuration);
  291. /*************************************************************************
  292.  * Function Name: UsbDevStatus
  293.  * Parameters:  Int8U * pData, Int16U Index
  294.  *
  295.  * Return: UsbCommStatus_t
  296.  *
  297.  * Description: Usb Return device status into pData
  298.  *
  299.  *************************************************************************/
  300. inline UsbCommStatus_t UsbDevStatus(Int8U * pData, Int16U Index);
  301. /*************************************************************************
  302.  * Function Name: UsbInterfaceStatus
  303.  * Parameters:  Int8U * pData, Int16U Index
  304.  *
  305.  * Return: UsbCommStatus_t
  306.  *
  307.  * Description: Usb Return interface status into pData
  308.  *
  309.  *************************************************************************/
  310. inline UsbCommStatus_t UsbInterfaceStatus(Int8U * pData, Int16U Index);
  311. /*************************************************************************
  312.  * Function Name: UsbEpStatus
  313.  * Parameters:  Int8U * pData, Int16U Index
  314.  *
  315.  * Return: UsbCommStatus_t
  316.  *
  317.  * Description: Usb Return Ep status into pData
  318.  *
  319.  *************************************************************************/
  320. inline UsbCommStatus_t UsbEpStatus(Int8U * pData, Int16U Index);
  321. /*************************************************************************
  322.  * Function Name: UsbGetStatus
  323.  * Parameters:  none
  324.  *
  325.  * Return: none
  326.  *
  327.  * Description: Usb Get status implement
  328.  *
  329.  *************************************************************************/
  330. inline void UsbGetStatus (void);
  331. /*************************************************************************
  332.  * Function Name: UsbClearFeature
  333.  * Parameters:  Int16U Feature,Int16U Index
  334.  *
  335.  * Return: UsbCommStatus_t
  336.  *
  337.  * Description: USB Clear Device feature implement
  338.  *
  339.  *************************************************************************/
  340. inline UsbCommStatus_t UsbClearDevFeature(Int16U Feature,Int16U Index);
  341. /*************************************************************************
  342.  * Function Name: UsbClearInterfaceFeature
  343.  * Parameters:  Int16U Feature,Int16U Index
  344.  *
  345.  * Return: UsbCommStatus_t
  346.  *
  347.  * Description: USB Clear Interface feature implement
  348.  *
  349.  *************************************************************************/
  350. inline UsbCommStatus_t UsbClearInterfaceFeature(Int16U Feature,Int16U Index);
  351. /*************************************************************************
  352.  * Function Name: UsbClearEpFeature
  353.  * Parameters:  Int16U Feature,Int16U Index
  354.  *
  355.  * Return: UsbCommStatus_t
  356.  *
  357.  * Description: USB Clear Ep feature implement
  358.  *
  359.  *************************************************************************/
  360. inline UsbCommStatus_t UsbClearEpFeature(Int16U Feature,Int16U Index);
  361. /*************************************************************************
  362.  * Function Name: UsbClearFeature
  363.  * Parameters:  none
  364.  *
  365.  * Return: none
  366.  *
  367.  * Description: USB Clear feature implement
  368.  *
  369.  *************************************************************************/
  370. inline void UsbClearFeature (void);
  371. /*************************************************************************
  372.  * Function Name: UsbSetFeature
  373.  * Parameters:  Int16U Feature,Int16U Index
  374.  *
  375.  * Return: UsbCommStatus_t
  376.  *
  377.  * Description: USB Set Device feature implement
  378.  *
  379.  *************************************************************************/
  380. inline UsbCommStatus_t UsbSetDevFeature(Int16U Feature,Int16U Index);
  381. /*************************************************************************
  382.  * Function Name: UsbSetInterfaceFeature
  383.  * Parameters:  Int16U Feature,Int16U Index
  384.  *
  385.  * Return: UsbCommStatus_t
  386.  *
  387.  * Description: USB Set Interface feature implement
  388.  *
  389.  *************************************************************************/
  390. inline UsbCommStatus_t UsbSetInterfaceFeature(Int16U Feature,Int16U Index);
  391. /*************************************************************************
  392.  * Function Name: UsbSetEpFeature
  393.  * Parameters:  Int16U Feature,Int16U Index
  394.  *
  395.  * Return: UsbCommStatus_t
  396.  *
  397.  * Description: USB Set Ep feature implement
  398.  *
  399.  *************************************************************************/
  400. inline UsbCommStatus_t UsbSetEpFeature(Int16U Feature,Int16U Index);
  401. /*************************************************************************
  402.  * Function Name: UsbSetFeature
  403.  * Parameters:  none
  404.  *
  405.  * Return: none
  406.  *
  407.  * Description: USB Set feature implement
  408.  *
  409.  *************************************************************************/
  410. inline void UsbSetFeature (void);
  411. /*************************************************************************
  412.  * Function Name: UsbSetAddress
  413.  * Parameters:  none
  414.  *
  415.  * Return: none
  416.  *
  417.  * Description: USB Set address request implement
  418.  *
  419.  *************************************************************************/
  420. inline void UsbSetAddress (void);
  421. /*************************************************************************
  422.  * Function Name: UsbGetDescriptorDevice
  423.  * Parameters:  Int8U Index - must be 0
  424.  *
  425.  * Return: UsbCommStatus_t
  426.  *
  427.  * Description: USB get device's descriptor request implement
  428.  *
  429.  *************************************************************************/
  430. inline UsbCommStatus_t UsbGetDescriptorDevice(Int8U Index);
  431. /*************************************************************************
  432.  * Function Name: UsbGetDescriptorConfiguration
  433.  * Parameters:  Int8U Index
  434.  *
  435.  * Return: UsbCommStatus_t
  436.  *
  437.  * Description: USB get configuration's descriptor request implement
  438.  *
  439.  *************************************************************************/
  440. inline UsbCommStatus_t UsbGetDescriptorConfiguration(Int8U Index);
  441. /*************************************************************************
  442.  * Function Name: UsbGetDescriptorString
  443.  * Parameters:  Int8U Index
  444.  *
  445.  * Return: UsbCommStatus_t
  446.  *
  447.  * Description: USB get string's descriptor request implement
  448.  *
  449.  *************************************************************************/
  450. inline UsbCommStatus_t UsbGetDescriptorString(Int8U Index);
  451. /*************************************************************************
  452.  * Function Name: UsbGetDescriptor
  453.  * Parameters:  none
  454.  *
  455.  * Return: none
  456.  *
  457.  * Description: USB get descriptor request implement
  458.  *
  459.  *************************************************************************/
  460. inline void UsbGetDescriptor (void);
  461. /*************************************************************************
  462.  * Function Name: UsbSetDescriptor
  463.  * Parameters:  none
  464.  *
  465.  * Return: none
  466.  *
  467.  * Description: USB Set descriptor
  468.  *
  469.  *************************************************************************/
  470. inline void UsbSetDescriptor(void);
  471. /*************************************************************************
  472.  * Function Name: UsbGetConfiguration
  473.  * Parameters:  none
  474.  *
  475.  * Return: none
  476.  *
  477.  * Description: USB Get configuration implement
  478.  *
  479.  *************************************************************************/
  480. inline void UsbGetConfiguration(void);
  481. /*************************************************************************
  482.  * Function Name: UsbSetConfiguration
  483.  * Parameters:  none
  484.  *
  485.  * Return: none
  486.  *
  487.  * Description: USB Set configuration implement
  488.  *
  489.  *************************************************************************/
  490. inline void UsbSetConfiguration(void);
  491. /*************************************************************************
  492.  * Function Name: UsbGetInterface
  493.  * Parameters:  none
  494.  *
  495.  * Return: none
  496.  *
  497.  * Description: Implement get interface request
  498.  *
  499.  *************************************************************************/
  500. inline void UsbGetInterface (void);
  501. /*************************************************************************
  502.  * Function Name: UsbSetInterface
  503.  * Parameters:  none
  504.  *
  505.  * Return: none
  506.  *
  507.  * Description: Implement set interface request
  508.  *
  509.  *************************************************************************/
  510. inline void UsbSetInterface (void);
  511. /*************************************************************************
  512.  * Function Name: UsbSynchFrame
  513.  * Parameters:  none
  514.  *
  515.  * Return: none
  516.  *
  517.  * Description: Implement synch frame request
  518.  *
  519.  *************************************************************************/
  520. inline void UsbSynchFrame (void);
  521. /*************************************************************************
  522.  * Function Name: UsbCtrlEpCallback
  523.  * Parameters:  void * pArg
  524.  *
  525.  * Return: none
  526.  *
  527.  * Description: USB Ctrl EP Callback
  528.  *
  529.  *************************************************************************/
  530. void UsbCtrlEpCallback (void * pArg);
  531. #endif //__USB_9_H