📄 hid_desc.c
字号:
/*********************************************************************
*
* Copyright:
* MOTOROLA, INC. All Rights Reserved.
* You are hereby granted a copyright license to use, modify, and
* distribute the SOFTWARE so long as this entire notice is
* retained without alteration in any modified and/or redistributed
* versions, and that such modified versions are clearly identified
* as such. No licenses are granted by implication, estoppel or
* otherwise under any patents or trademarks of Motorola, Inc. This
* software is provided on an "AS IS" basis and without warranty.
*
* To the maximum extent permitted by applicable law, MOTOROLA
* DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
* PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
* SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
* ACCOMPANYING WRITTEN MATERIALS.
*
* To the maximum extent permitted by applicable law, IN NO EVENT
* SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
* WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
* INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
* LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
*
* Motorola assumes no responsibility for the maintenance and support
* of this software
********************************************************************/
/*
* File: hid_desc.c
* Purpose: Descriptors for HID Mouse Test
*/
#include "mcf5272.h"
#include "init.h"
#include "hid.h"
/********************************************************************/
/* Structure for Mouse HID Interface Type */
typedef struct {
USB_DEVICE_DESC device_desc;
USB_CONFIG_DESC config_desc;
USB_INTERFACE_DESC interface_desc;
USB_HID_DESC hid_desc;
USB_ENDPOINT_DESC endpoint_desc;
} DESCRIPTOR_STRUCT;
/********************************************************************/
/* Initialize Report Descriptor */
uint8 report[] =
{
USAGE_PAGE1(GENERIC_DESKTOP) >> 8,
USAGE_PAGE1(GENERIC_DESKTOP) & 0xFF,
USAGE1(MOUSE) >> 8,
USAGE1(MOUSE) & 0xFF,
COLLECTION1(APPLICATION) >> 8,
COLLECTION1(APPLICATION) & 0xFF,
USAGE1(POINTER) >> 8,
USAGE1(POINTER) & 0xFF,
COLLECTION1(PHYSICAL) >> 8,
COLLECTION1(PHYSICAL) & 0xFF,
USAGE_PAGE1(BUTTON) >> 8,
USAGE_PAGE1(BUTTON) & 0xFF,
USAGE_MINIMUM1(1) >> 8,
USAGE_MINIMUM1(1) & 0xFF,
USAGE_MAXIMUM1(3) >> 8,
USAGE_MAXIMUM1(3) & 0xFF,
LOGICAL_MINIMUM1(0) >> 8,
LOGICAL_MINIMUM1(0) & 0xFF,
LOGICAL_MAXIMUM1(1) >> 8,
LOGICAL_MAXIMUM1(1) & 0xFF,
REPORT_COUNT1(3) >> 8,
REPORT_COUNT1(3) & 0xFF,
REPORT_SIZE1(1) >> 8,
REPORT_SIZE1(1) & 0xFF,
INPUT3(DATA, VARIABLE, ABSOLUTE) >> 8,
INPUT3(DATA, VARIABLE, ABSOLUTE) & 0xFF,
REPORT_COUNT1(1) >> 8,
REPORT_COUNT1(1) & 0xFF,
REPORT_SIZE1(5) >> 8,
REPORT_SIZE1(5) & 0xFF,
INPUT1(CONSTANT) >> 8,
INPUT1(CONSTANT) & 0xFF,
USAGE_PAGE1(GENERIC_DESKTOP) >> 8,
USAGE_PAGE1(GENERIC_DESKTOP) & 0xFF,
USAGE1(X) >> 8,
USAGE1(X) & 0xFF,
USAGE1(Y) >> 8,
USAGE1(Y) & 0xFF,
LOGICAL_MINIMUM1(-127) >> 8,
LOGICAL_MINIMUM1(-127) & 0xFF,
LOGICAL_MAXIMUM1(127) >> 8,
LOGICAL_MAXIMUM1(127) & 0xFF,
REPORT_SIZE1(8) >> 8,
REPORT_SIZE1(8) & 0xFF,
REPORT_COUNT1(2) >> 8,
REPORT_COUNT1(2) & 0xFF,
INPUT3(DATA, VARIABLE, RELATIVE) >> 8,
INPUT3(DATA, VARIABLE, RELATIVE) & 0xFF,
END_COLLECTION,
END_COLLECTION
};
/********************************************************************/
/* Initialize the Mouse descriptors */
DESCRIPTOR_STRUCT Descriptors =
{
/* Device Descriptor */
{
/* bLength */ sizeof(USB_DEVICE_DESC),
/* bDescriptorType */ DEVICE,
/* bcdUSBL */ 0,
/* bcdUSBH */ 1, /* USB 1.00 */
/* bDeviceClass */ 0,
/* bDeviceSubClass */ 0,
/* bDeviceProtocol */ 0,
/* bMaxPacketSize0 */ 8,
/* idVendorL */ 0xCD,
/* idVendorH */ 0xAB, /* arbitrary */
/* idProductL */ 0x34,
/* idProductH */ 0x12, /* arbitrary */
/* bcdDeviceL */ 0,
/* bcdDeviceH */ 1, /* arbitrary */
/* iManufacturern */ 0,
/* iProduct */ 0,
/* iSerialNumber */ 0,
/* bNumConfigurations */ 1,
},
/* Configuration Descriptor */
{
/* bLength */ sizeof(USB_CONFIG_DESC),
/* bDescriptorType */ CONFIGURATION,
/* wTotalLengthL */ (sizeof(DESCRIPTOR_STRUCT) -
sizeof(USB_DEVICE_DESC)) & 0x00FF,
/* wTotalLengthH */ (sizeof(DESCRIPTOR_STRUCT) -
sizeof(USB_DEVICE_DESC)) >> 8,
/* bNumInterfaces */ 1,
/* bConfigurationValue */ 1, /* This is configuration #1 */
/* iConfiguration */ 0,
/* bmAttributes */ (SELF_POWERED | REMOTE_WAKEUP),
/* maxPower */ 0,
},
/* Interface Descriptor */
{
/* bLength */ sizeof(USB_INTERFACE_DESC),
/* bDescriptorType */ INTERFACE,
/* bInterfaceNumber */ 0, /* This is interface #0 */
/* bAlternateSetting */ 0,
/* bNumEndpoints */ 1,
/* bInterfaceClass */ HID_INTERFACE,
/* bInterfaceSubClass */ BOOT_INTERFACE,
/* bInterfaceProtocol */ MOUSE_INTERFACE,
/* iInterface */ 0,
},
/* HID Descriptor */
{
/* bLength */ sizeof(USB_HID_DESC),
/* bHidDescriptorType */ HID_DESC,
/* bcdHIDL */ 0x10,
/* bcdHIDH */ 0x01, /* HID spec 1.1 */
/* bCountryCode */ 0, /* not supported */
/* bNumDescriptors */ 1,
/* bClassDescriptorType */ REPORT_DESC,
/* wDescriptorLengthL */ sizeof(report) & 0x00FF,
/* wDescriptorLengthH */ sizeof(report) >> 8,
},
/* Endpoint Descriptor */
{
/* bLength */ sizeof(USB_ENDPOINT_DESC),
/* bDescriptorType */ ENDPOINT,
/* bEndpointAddress */ (1 | IN), /* This is endpoint #1 */
/* bmAttributes */ INTERRUPT,
/* wMaxPacketSizeL */ 0x08,
/* wMaxPacketSizeH */ 0x00,
/* bInterval */ 10, /* 10 ms */
}
};
/********************************************************************/
uint16
usb_get_desc_size(void)
{
return (sizeof(DESCRIPTOR_STRUCT));
}
/********************************************************************/
uint8*
hid_get_report_desc(void)
{
return (report);
}
/********************************************************************/
uint16
hid_get_report_desc_size(void)
{
return (sizeof(report));
}
/********************************************************************/
uint8*
hid_get_hid_desc(void)
{
return ((uint8*)&Descriptors.hid_desc);
}
/********************************************************************/
uint16
hid_get_hid_desc_size(void)
{
return (sizeof(USB_HID_DESC));
}
/********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -