📄 descp_kb.h
字号:
//*****************************************************************************************
// Cypress Semiconductor - Customer Design Center
//*****************************************************************************************
// Project : (SL811S + Audio Control + Internet Control) Demo Code
// File : descp.h (USB Descriptors ROM code)
// DCE/FAE : Shawn Ng (cxn)
// Last Update : 03/01/02
//
//*****************************************************************************************
// Constant specific to USB Slave Descriptors
//*****************************************************************************************
#define DEV_LEN 0x12 // Device Descriptor Length
#define HID_LEN 0x09 // HID-Class Descriptor Length
#define CFG_LEN 0x22 // Configuration Descriptor Length
#define REP_LEN 0x3F // HID Report Descriptor Length
#define EP0_LEN 0x10
#include "std_defs.h"
#define code
//---------------------------------------------------------------------------------------------------------------------
// DEVICE DESCRIPTOR
//---------------------------------------------------------------------------------------------------------------------
code BYTE Dev_Descp[] = { DEV_LEN, // bLength: Size of descriptor
0x01, // bDescriptorType: Device
0x10,0x01, // bcdUSB: USB 1.1
0x00, // bDeviceClass: none
0x00, // bDeviceSubClass: none
0x00, // bDeviceProtocol: none
EP0_LEN, // bMaxPacketSize0: 8/64 bytes
0xB4,0x04, // idVendor: 0x04B4 - Cypress
0x13,0x08, // idProduct: 0x1111 - SL811S
0x00,0x01, // bcdDevice: version 1.0
0x01, // iManufacturer: Cypress
0x02, // iProduct: Cypress SL811S - HID Consumer Control
0x00, // iSerialNumber: none
0x01}; // bNumConfigurations: 1
//---------------------------------------------------------------------------------------------------------------------
// CONFIGURATION DESCRIPTOR
//---------------------------------------------------------------------------------------------------------------------
code BYTE Cfg_Descp[] = { 0x09, // bLength: Size of descriptor
0x02, // bDescriptorType: Configuration
CFG_LEN,0x00, // wTotalLength: Cfg+Ifc+Class+Ep = 34 bytes
0x01, // bNumInterfaces: 1 interface
0x01, // bConfigurationValue: 1
0x00, // iConfiguration: none
0xA0, // bmAttributes: bus-powered, remote-wakeup
0x32, // MaxPower: 100mA
//---------------------------------------------------------------------------------------------------------------------
// INTERFACE DESCRIPTOR
//---------------------------------------------------------------------------------------------------------------------
0x09, // bLength: Size of descriptor
0x04, // bDescriptorType: Interface
0x00, // bInterfaceNumber: #0
0x00, // bAlternateSetting: #0
0x01, // bNumEndpoints: 1
0x03, // bInterfaceClass: HID-class
0x01, // bInterfaceSubClass
0x01, // bInterfaceProtocol: Keyboard
0x00, // iInterface: none
//---------------------------------------------------------------------------------------------------------------------
// HID-CLASS DESCRIPTOR
//---------------------------------------------------------------------------------------------------------------------
0x09, // bLength: Size of descriptor
0x21, // bDescriptorType: HID Class
0x01,0x01, // bcdHID: HID Class version 1.1
0x00, // bCountryCode: none
0x01, // bNumDescriptors: 1 report descp
0x22, // bDescriptorType: report descriptor type
REP_LEN,0x00, // wDescriptorLength: 31 bytes
//---------------------------------------------------------------------------------------------------------------------
// ENDPOINT DESCRIPTOR
//---------------------------------------------------------------------------------------------------------------------
0x07, // bLength: Size of descriptor
0x05, // bDescriptorType: Endpoint
0x81, // bEndpointAddress: IN, EP1
0x03, // bmAttributes: Interrupt
0x10,0x00, // wMaxPacketSize: EP1_LEN -> 0x10
0x0A}; // bInterval: 10ms
//---------------------------------------------------------------------------------------------------------------------
// REPORT DESCRIPTOR
code BYTE Rep_Descp[] = { 0x05, 0x01, // Usage Page (Generic Desktop),
0x09, 0x06, // Usage (Keyboard),
0xA1, 0x01, // Collection (Application),
0x05, 0x07, // Usage Page (Key Codes);
0x19, 0xE0, // Usage Minimum (224),
0x29, 0xE7, // Usage Maximum (231),
0x15, 0x00, // Logical Minimum (0),
0x25, 0x01, // Logical Maximum (1),
0x75, 0x01, // Report Size (1),
0x95, 0x08, // Report Count (8),
0x81, 0x02, // Input (Data, Variable, Absolute), ;Modifier byte
0x95, 0x01, // Report Count (1),
0x75, 0x08, // Report Size (8),
0x81, 0x01, // Input (Constant), ;Reserved byte
0x95, 0x05, // Report Count (5),
0x75, 0x01, // Report Size (1),
0x05, 0x08, // Usage Page (Page# for LEDs),
0x19, 0x01, // Usage Minimum (1),
0x29, 0x05, // Usage Maximum (5),
0x91, 0x02, // Output (Data, Variable, Absolute), ;LED report
0x95, 0x01, // Report Count (1),
0x75, 0x03, // Report Size (3),
0x91, 0x01, // Output (Constant), ;LED report padding
0x95, 0x06, // Report Count (6),
0x75, 0x08, // Report Size (8),
0x15, 0x00, // Logical Minimum (0),
0x25, 0x65, // Logical Maximum(101),
0x05, 0x07, // Usage Page (Key Codes),
0x19, 0x00, // Usage Minimum (0),
0x29, 0x65, // Usage Maximum (101),
0x81, 0x00, // Input (Data, Array), ;Key arrays (6 bytes)
0xC0}; // End Collection
//---------------------------------------------------------------------------------------------------------------------
// STRING DESCRIPTOR
//---------------------------------------------------------------------------------------------------------------------
code BYTE LangString[] = {4,3,9,4};
code BYTE MfgString[] = {16,3,'C',0,'y',0,'p',0,'r',0,'e',0,'s',0,'s',0};
code BYTE ProdString[] = {76,3,'C',0,'y',0,'p',0,'r',0,'e',0,'s',0,'s',0,' ',
0,'S',0,'L',0,'8',0,'1',0,'1',0,'S',0,' ',0,'-',0,
' ',0,'H',0,'I',0,'D',0,' ',0,'C',0,'o',0,'n',0,
's',0,'u',0,'m',0,'e',0,'r',0,' ',0,'C',0,'o',0,
'n',0,'t',0,'r',0,'o',0,'l',0};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -