⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_cls_hid.lis

📁 Cypress cy7c63318 鼠标开发板的源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0000           ;-----------------------------------------------
 0000           ; 1st Tier Dispatch--Standard Requests
 0000           ;-----------------------------------------------
 0001           USB_CB_h2d_std_dev: equ 1
 0001           USB_CB_h2d_std_ifc: equ 1
 0001           USB_CB_h2d_std_ep:  equ 1
 0000           USB_CB_h2d_std_oth: equ 0
 0001           USB_CB_d2h_std_dev: equ 1
 0001           USB_CB_d2h_std_ifc: equ 1
 0001           USB_CB_d2h_std_ep:  equ 1
 0000           USB_CB_d2h_std_oth: equ 0
 0000           
 0000           ;-----------------------------------------------
 0000           ; 1st Tier Dispatch--Class Requests
 0000           ;-----------------------------------------------
 0000           USB_CB_h2d_cls_dev: equ 0
 0001           USB_CB_h2d_cls_ifc: equ 1
 0000           USB_CB_h2d_cls_ep:  equ 0
 0000           USB_CB_h2d_cls_oth: equ 0
 0000           USB_CB_d2h_cls_dev: equ 0
 0001           USB_CB_d2h_cls_ifc: equ 1
 0000           USB_CB_d2h_cls_ep:  equ 0
 0000           USB_CB_d2h_cls_oth: equ 0
 0000           
 0000           ;-----------------------------------------------
 0000           ; 1st Tier Dispatch--Vendor Specific Requests
 0000           ;-----------------------------------------------
 0000           USB_CB_h2d_vnd_dev: equ 0
 0000           USB_CB_h2d_vnd_ifc: equ 0
 0000           USB_CB_h2d_vnd_ep:  equ 0
 0000           USB_CB_h2d_vnd_oth: equ 0
 0000           USB_CB_d2h_vnd_dev: equ 0
 0000           USB_CB_d2h_vnd_ifc: equ 0
 0000           USB_CB_d2h_vnd_ep:  equ 0
 0000           USB_CB_d2h_vnd_oth: equ 0
 0000           
 0000           ;-----------------------------------------------
 0000           ; 1st Tier Dispatch--Reserved Requests
 0000           ;-----------------------------------------------
 0000           USB_CB_h2d_rsv_dev: equ 0
 0000           USB_CB_h2d_rsv_ifc: equ 0
 0000           USB_CB_h2d_rsv_ep:  equ 0
 0000           USB_CB_h2d_rsv_oth: equ 0
 0000           USB_CB_d2h_rsv_dev: equ 0
 0000           USB_CB_d2h_rsv_ifc: equ 0
 0000           USB_CB_d2h_rsv_ep:  equ 0
 0000           USB_CB_d2h_rsv_oth: equ 0
 0000           
 0000           ;-----------------------------------------------
 0000           ; Endpoint event flags
 0000           ;-----------------------------------------------
 0002           NO_EVENT_ALLOWED:   equ               2
 0001           EVENT_PENDING:      equ               1
 0000           NO_EVENT_PENDING:   equ               0
 0000           
 0000           IN_BUFFER_FULL:     equ               NO_EVENT_PENDING
 0001           IN_BUFFER_EMPTY:    equ               EVENT_PENDING
 0001           OUT_BUFFER_FULL:    equ               EVENT_PENDING
 0000           OUT_BUFFER_EMPTY:   equ               NO_EVENT_PENDING
 0000           
 0000           ;-----------------------------------------------
 0000           ; HID Descriptor Types
 0000           ;-----------------------------------------------
 0021           DESCR_TYPE_HID_CLASS:        equ      0x21
 0009           DESCR_SIZE_HID_CLASS:        equ      9
 0022           DESCR_TYPE_HID_REPORT:       equ      0x22
 0023           DESCR_TYPE_HID_PHYSICAL:     equ      0x23
 0000           
 0000           ;-----------------------------------------------
 0000           ; Transfer Completion Notification
 0000           ;-----------------------------------------------
 0000           USB_XFER_IDLE:         equ      0x00
 0001           USB_XFER_STATUS_ACK:   equ      0x01
 0002           USB_XFER_PREMATURE:    equ      0x02
 0003           USB_XFER_ERROR:        equ      0x03
 0000           
 0000           ; This macro is used to allocate a completion status block
 0000           ; for all Requests.  The macro parameter is used
 0000           ; to prefix the two data elements.
 0000           USB_XFER_STATUS:       equ      0
 0001           USB_XFER_LENGTH:       equ      1
 0000           MACRO    USB_XFER_STATUS_BLOCK
 0000               BLK    1    ; Completion Status
 0000               BLK    2    ; Transfer Length
 0000           USB_VSR_SUPPORT: EQU 0
                IF USB_CB_h2d_vnd_dev
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_h2d_vnd_ifc
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_h2d_vnd_ep
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_h2d_vnd_oth
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_d2h_vnd_dev
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_d2h_vnd_ifc
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_d2h_vnd_ep
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                IF USB_CB_d2h_vnd_oth
                USB_VSR_SUPPORT: EQU 1
                ENDIF
                
                ; end of file USB.inc
                
                ;-----------------------------------------------
                ;  Global Symbols
                ;-----------------------------------------------
                EXPORT USB_UpdateHIDTimer
                EXPORT _USB_UpdateHIDTimer
                EXPORT USB_bGetProtocol
                EXPORT _USB_bGetProtocol
                
                AREA bss (RAM,REL)
                ;-----------------------------------------------
                ;  Constant Definitions
                ;-----------------------------------------------
                ;-----------------------------------------------
                ; Variable Allocation
                ;-----------------------------------------------
                ;----------------------------------------------------------------------------
                ; Interface Setting
                ;----------------------------------------------------------------------------
 0000            USB_IdleReload:                        BLK   1    ; Idle Timer Reload Value
 0001            USB_IdleTimer:                         BLK   1    ; Idle Timers
 0002            USB_Protocol:                          BLK   1    ; Active Protocol
 0003           
                AREA UserModules (ROM, REL)
                ;-----------------------------------------------------------------------------
                ;  FUNCTION NAME: USB_bGetProtocol
                ;
                ;  DESCRIPTION:   Returns the selected protocol value to the application
                ;
                ;-----------------------------------------------------------------------------
                ;
                ;  ARGUMENTS:    A: Interface number
                ;
                ;  RETURNS:      A: Protocol values
                ;
                ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
                ;
                ;  THEORY of OPERATION or PROCEDURE:
                ;
                ;-----------------------------------------------------------------------------
 0000           .SECTION
 0000            USB_bGetProtocol:
 0000           _USB_bGetProtocol:
 0000 5C            MOV    X, A                        ; Argument is the index
 0001 5202          MOV    A, [X + USB_Protocol] ; Return the protocol
 0003 7F            RET
 0004           .ENDSECTION
 0004           ;-----------------------------------------------------------------------------
 0004           ;  FUNCTION NAME: USB_UpdateHIDTimer
 0004           ;
 0004           ;  DESCRIPTION:    Updates the HID report timer and reloads it if it expires
 0004           ;
 0004           ;-----------------------------------------------------------------------------
 0004           ;
 0004           ;  ARGUMENTS:     A: Interface number
 0004           ;
 0004           ;  RETURNS:       A: USB_IDLE_TIMER_EXPIRED, if the timer is running and expired
 0004           ;                    USB_IDLE_TIMER_RUNNING, if the timer is running
 0004           ;                    USB_IDLE_TIMER_INDEFINITE, if the report should be made on change
 0004           ;
 0004           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0004           ;
 0004           ;  THEORY of OPERATION or PROCEDURE:
 0004           ;
 0004           ;-----------------------------------------------------------------------------
 0004           .SECTION
 0004            USB_UpdateHIDTimer:
 0004           _USB_UpdateHIDTimer:
 0004 5C            MOV    X, A                        ; Make the argument the index
 0005           ; Flow here to check if the timer is "indefinite"
 0005 3D0000        CMP    [X + USB_IdleReload], 0     ; Indefinite?
 0008 A00F          JZ     .indefinite                 ; Jump if Indefinite?
 000A           ; Flow here to check the timers
 000A 7B01          DEC    [X + USB_IdleTimer]         ; Decrement the timer
 000C C004          JC     .expired
 000E           ; Flow here if the timer has not expired
 000E 5002          MOV    A, USB_IDLE_TIMER_RUNNING   ; Return value (not expired)
 0010 7F            RET                                ; Quick exit
 0011           ; Jump here if the timer expired
 0011           .expired:
 0011 5200          MOV    A, [X + USB_IdleReload]     ; Reload the timer
 0013 5401          MOV    [X + USB_IdleTimer], A      ; 
 0015 5001          MOV    A, USB_IDLE_TIMER_EXPIRED   ; Return value (expired)
 0017 7F            RET                                ; Quick exit
 0018           ; Jump here to make return "on change/indefinite"
 0018           .indefinite:
 0018 5000          MOV    A, USB_IDLE_TIMER_INDEFINITE; Return value (change/indefinite)
 001A 7F            RET                                ; Exit
 001B           .ENDSECTION
 001B           ;-----------------------------------------------------------------------------
 001B           ;  FUNCTION NAME: USB_CB_d2h_std_ifc_06
 001B           ;
 001B           ;  DESCRIPTION:   Get Interface Descriptor
 001B           ;
 001B           ;****************************************************************
 001B           ; STANDARD INTERFACE IN REQUEST: Get_Interface_Descriptor
 001B           ;****************************************************************
 001B           ;
 001B           ; bmRequestType   : (IN | STANDARD | INTERFACE)    = 81h
 001B           ; bRequest        : GET_DESCRIPTOR                 = 06h    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -