; This module declares the descriptors

;

; This example has one Device Descriptor with:

;	One Configuration - single IN port and single OUT port

;	One Interface - there is only one method of accessing the ports

;	One HID Descriptor - to make PC host software simpler

;	No Endpoint Descriptors - HID Output Reports use EP0

;	One Report Descriptor - three bytes OUT

;	Multiple Sting Descriptors - to aid the user

;

	CSEG

DeviceDescriptor:

	DB	18, 1		; Length, Type

	DW	101H		; USB Rev 1.1

	DB	0, 0, 0		; Class, Subclass and Protocol

	DB	64 		; EP0 size

	DW	4242H, 1, 1	; Vendor ID, Product ID and Version

	DB	1, 2, 0		; Manufacturer, Product & Serial# Names

	DB	1		; #Configs

ConfigurationDescriptor:

	DB	9, 2		; Length, Type

	DB	LOW(ConfigLength), HIGH(ConfigLength)

	DB	1, 1, 0		; #Interfaces, Configuration#, Config. Name

	DB	10000000b	; Attributes = Bus Powered

	DB	50		; Max. Power is 50x2 = 100mA

InterfaceDescriptor:

	DB	9, 4		; Length, Type

	DB	0, 0, 0		; No alternate setting, HID OUTPUT uses EP0

	DB	3		; Class = Human Interface Device

	DB	0, 0		; Subclass and Protocol

	DB	0		; Interface Name

HIDDescriptor:

	DB	9, 21H		; Length, Type

	DB	0, 1		; HID Class Specification compliance

	DB	0		; Country localization (=none)

	DB	1		; Number of descriptors to follow

	DB	22H		; And it's a Report descriptor

	DB	LOW(ReportLength), HIGH(ReportLength)

ConfigLength	EQU $ - ConfigurationDescriptor



ReportDescriptor:		; Generated with HID Tool, copied to here

	DB	6, 0, 0FFH	; Usage_Page (Vendor Defined)

	DB	9, 1		; Usage (I/O Device)

	DB	0A1H, 1		; Collection (Application)

	DB	19H, 1		;   Usage_Minimum

	DB	29H, 2		;   Usage_Maximum

	DB	15H, 0		;   Logical_Minimum (0)

	DB	26H, 255, 0	;   Logical_Maximum (255)

	DB	75H, 8		;   Report_Size (8)

	DB	95H, 3		;   Report_Count (3) = Motor Control

	DB	91H, 2		;   Output (Data,Var,Abs)

	DB	0C0H		; End_Collection

ReportLength	EQU $-ReportDescriptor

	 

String0:			; Declare the UNICODE strings

	DB	4, 3, 9, 4	; Only English language strings supported

String1:			; Manufacturer

	DB	(String2-String1),3 ; Length, Type 

	DB	"U",0,"S",0,"B",0," ",0,"D",0,"e",0,"s",0,"i",0,"g",0,"n",0," ", 0

	DB	"B",0,"y",0," ",0,"E",0,"x",0,"a",0,"m",0,"p",0,"l",0,"e",0

String2:			; Product Name

	DB	(EndOfDescriptors-String2),3

	DB	"S",0,"t",0,"e",0,"p",0,"p",0,"e",0,"r",0," ",0

	DB	"M",0,"o",0,"t",0,"o",0,"r",0

EndOfDescriptors:

	DW	0		; Backstop for String Descriptors