📄 des.asm
字号:
;====================================================================
; ROM Size , HT82A821R = 2K , last page = 0700H
; HT82A822R = 4K , last page = 0F00H
; HT82A832R = 4K , last page = 0F00H
; If use HT82A821R
; #defined HT82A821R 1
; #defined HT82A822R 0
; If use HT82A822R
; #defined HT82A821R 0
; #defined HT82A822R 1
; If use HT82A832R
; #defined HT82A821R 0
; #defined HT82A822R 1
; #define UseReportID 1
;====================================================================
; Use ReportID , Report ID 1 = Volume HID control
; Report ID 3 = Transform Other Data
;====================================================================
;#define HT82A821R 1
;#define HT82A822R 0
#define UseReportID 1
;IF HT82A821R
;Descript .Section at 0700h 'code'
;ENDIF
;IF HT82A822R
Descript .Section at 0F00h 'code'
;ENDIF
#define AUDIO_8K 1
control_read_table:
device_desc_table:
;;18 bytes
DW 00112H ;descriptor type (device descriptor) , size of descriptor (18 bytes)
DW 00110H ;USB spec release (ver 1.1)
DW 00000H ;device sub-class , device class
DW 00800H ;maximum packet size , device sub-sub-class
;; DW 03F03H ;vendor ID
;; DW 03F48H
;DW 004D9H ;vendor ID = 004D9H
;DW 02832H ;product version ID (Sample Device)
;
DW 03F93H ;vendor ID = 06993H
DW 03F69H ;vendor ID = 06993H
DW 03F01H ;productID (0B001H)
DW 03FB0H ;productID (0B001H)
DW 00000H ;product version ID
;DW 00201H ;product string index , manufacturer string index
DW 00200H ;product string index , manufacturer string index
DW 00100H ;number of configurations , serial number string index
config_desc_table:
;;9 bytes
DW 00209H ;descriptor type (config descriptor) , size of descriptor
DW 000D9H ;total length of descriptor (D9 H=217 bytes)
DW 00104H ;index of this configuration , 4 interface
DW 03F00H ;configuration string index
DW 03F80H ;configuration attributes (bus supply)
DW 03FFAH ;maxpower (500ma)
Interface_Descriptor:
Interface0_descriptor:
standard_audio_control_interface_control:
;;9 bytes
DW 00409H ;descriptor type (interface descriptor) , size of descriptor (9 bytes)
DW 00000H ;interface alternate setting , interface number (0 base)
DW 00100H ;interface class(01H for audio class) , number of endpoint (0 end point)
DW 00001H ;interface protocol , interface sub-class (audio control)
DW 03F00H ;x , interface string index
class_specific_audio_control_interface_descriptor:
;;10 bytes
DW 0240AH ;descriptor type (CS_INTERFACE) , size of descriptor (10 bytes)
DW 03F01H ;descriptor subtype (Header)
DW 00100H ;audio device class specification release number(1.00)
;modify 2006-08-09
DW 00046H ;total number of bytes for the class-specific audiocontrol interface descriptor
;---------------------
DW 00102H ;streaming interface number belongs to audio control interface , the number of streaming interface
DW 03F02H ;Streaming interface number 2 belongs to this audio control interface. In Interface
da_input_terminal:
;;12 bytes
;;(ID=1)
DW 0240CH ;descriptor type(CS_INTERFACE) , size of descriptor
DW 00102H ;ID of this terminal(ID=1) , descriptor subtype(INPUT_TERMINAL)
DW 00101H ;terminal type(USB streaming type)
DW 00200H ;number of channel(two channel) , associate with output terminal
DW 00003H ;channel config(Left/Right Front)
DW 00000H ;channelname(unused) , terminal name(unused)
lineout_terminal:
;;9 bytes
;;(ID=3)
DW 02409H ;descriptor type(CS_INTERFACE) , size of descriptor(9 bytes)
DW 00303H ;terminal ID(03) , descriptorsubtype(OUTPUT_TERMINAL)
DW 00301H ;terminal is speaker
DW 00200H ;sourceID(feature unit ID=0D) , associate terminal
DW 03F00H ;index of this descriptor
feature_unit_line_out:
;;10 bytes
;;(ID=2)
DW 0240AH ;descriptor type(CS_INTERFACE) , size of descriptor(10 bytes)
DW 00206H ;UnitID , descriptorSubtype(FEATURE_UNIT)
DW 00101H ;control size(1) , SourceID(input terminal 01)
;---------------------
;modify 2006-07-27
DW 00300H ;D1(volume)control is enable foe channel 1 , D0(mute) D1(volume) is enable for channel 0
DW 00003H ;index of this descriptor , D1(volume)control is enable for channel 2
;---------------------
analog_mic_input_terminal:
;;12 bytes
;;(ID=5)
DW 0240CH ;CS_INTERFACE , Size of this descriptor
DW 00502H ;ID of this terminal , INPUT_TERMINAL subtype
DW 00201H ;Terminal is microphone
DW 00100H ;One channel , No Associated
DW 00000H ;Mono sets no positions bit
DW 00000H ;Unused , Unused
ad_output_terminal:
;;9 bytes
;;(ID=7)
DW 02409H ;CS_INTERFACE , Size of this descriptor
DW 00703H ;ID of this terminal , OUTPUT_TERMINAL subtype
DW 00101H ;Terminal is USB streaming
DW 00600H ;From Feature Unit(ID=6) , No Associate
DW 03F00H ;Unused
feature_unit_record_volume:
;;(ID=6)
;;8 bytes
DW 02408H ;CS_INTERFACE , Size of this descriptor
DW 00606H ;ID of this feature Unit , FEATURE_UNIT
DW 00105H ;One byte Control Array , From analog_mic_input_terminal
DW 00003H ;Unused , D0(Mute)D1(Volume) supported
Interface1_descriptor:
zero_bw:
;;9 bytes
DW 00409H ;descriptor type(INTERFACE) , sizoe of descriptor
DW 00001H ;index of ths setting(alternatesetting = 0) , index of this interface
DW 00100H ;interface-class(AUDIO) , number of endpoint(0)
DW 00002H ;interface protocol(unused) , InterfaceSubClass(AUDIO_STREAMING)
DW 03F00H ;index string of this descriptor
audio_streaming:
;;9 bytes
DW 00409H ;descriptor type(INTERFACE) , size of descriptor
DW 00101H ;index of the setting(alternatesetting = 1) ,index of this interface
DW 00101H ;interface-class(AUDIO) , number of endpoint(1)
DW 00002H ;interface protocol(unused) , InterfaceSubClass(AUDIO_STREAMING)
DW 03F00H ;index string of this descriptor
class_specific_as_interface_desc:
;;7 bytes
DW 02407H ;descriptor type(CS_INTERFACE) , size of descriptor
DW 00101H ;terminalLink(Input terminal) , descriptor subtype(AS_GENERAL)
DW 03F01H ;interface delay(1)
DW 00001H ;PCM format
format_type_descriptor:
;;11 bytes
DW 0240BH ;descriptor type(CS_INTERFACE) , size of descriptor
DW 00102H ;FormatType(FORMAT_TYPE_I) , descriptorSubType(FORMAT_TYPE)
DW 00202H ;SubFrameSize(2 byte per slot) , number of channel(2 channels)
DW 00110H ;SamFreqType(support 1 type) , BitSolution(16 bits)
if AUDIO_8K
DW 03F40H ;Sample Frequency(8000 Hz)
DW 0001FH ;
else
DW 03F80H ;Sample Frequency(48000 Hz)
DW 000BBH ;
endif
end_point_descriptor:
;;9 bytes
DW 00509H ;descriptor type(END_POINT) , size of descriptor
DW 00902H ;endpoint attributes(adaptive,isochronous) , endpoint2(out direction)
if AUDIO_8K
DW 00020H ;maxPacketSize(32 bytes)
else
DW 000C0H ;maxPacketSize(192 bytes)
endif
DW 00001H ;Refresh(0) , Interval(1ms)
DW 03F00H ;index string of this descriptor
class_specific_endpoint_descriptor:
;;7 bytes
DW 02507H ;descriptor type(CS_ENDPOINT) , size of descriptor
DW 00001H ;Attributes(no sampling frequency , no pitch , no maxpackets control) , descriptorType(EP_GENERAL)
DW 03F00H ;LockedDelayUnit(unused)
DW 00000H ;LockDelay(unused)
Inetrface2_descriptor:
ad_zero_bw:
;;9 bytes
DW 00409H ;INTERFACE descriptor , Size of this descriptor
DW 00002H ;Index of this setting , Index of this interface
DW 00100H ;AUDIO , 0 Endpoint
DW 00002H ;Unused , AUDIO_STREAMING
DW 03F00H ;null string
ad_audio_streaming_data:
;;9 bytes
DW 00409H ;INTERFACE , Size of this descriptor
DW 00102H ;index of this setting , index of this interface
DW 00101H ;AUDIO , 1 endpoint
DW 00002H ;Unused , AUDIO_STREAMING
DW 03F00H ;null string
ad_class_specific_audio_streaming_interface_descriptor:
;;7 bytes
DW 02407H ;CS_INTERFACE , Size of this descriptor
DW 00701H ;Unit ID of terminal(Output terminal ID) , AS_GENERAL
DW 03F01H ;Interface delay
DW 00001H ;PCM format
ad_typeI_format_type:
;;11 bytes
DW 0240BH ;CS_INTERFACE , Size of this descriptor
DW 00102H ;FORMAT_TYPE_I , FORMAT_TYPE
DW 00201H ;two bytes per slot , one channel
DW 00110H ;1 frequency , 16 bits
DW 03F40H ;8000hZ
DW 0001FH ;
ad_standard_endpoint_descriptor:
;;9 bytes
DW 00509H ;ENFPOINT descriptor , Size of this descriptor
DW 00183H ;(bmAttributes) Isochronous , asynchronous,not share , IN endpoint 3
DW 00010H ;2bytes*8sample*1ch=16 byte/frame
DW 00001H ;Unused , 1 packet every frame(must be set to 1)
DW 03F00H ;Unused
ad_class_specific_isochronous_audio_data_endpoint_descriptor:
;;7 bytes
DW 02507H ;CS_ENDPOINT , Size of this descriptor
DW 00001H ;no Sampling frequency control , no pitch control , no packet padding,EP_GENERAL
DW 03F00H ;Unused
DW 00000H ;Unused
Interface3_descriptor:
HID_class:
DW 00409H ;INTERFACE descriptor , Size of this descriptor
DW 00003H ;Index of this string , index of this interface
DW 00301H ;HID , 1 endpoint
DW 00000H ;Unused , Non-Boot Device
DW 03F00H ;null string
HID_Desc:
DW 02109H ;HID , Size of this descriptor
DW 00110H ;HID spec rev #1.10
DW 00100H ;bNumDescriptor , bCountryCode
DW 03F22H ;Report Descriptor
;====================================================================
; Use ReportID , Report ID 1 = Volume HID control
; Report ID 3 = Transform Other Data
;====================================================================
IF UseReportID
DW 00043H ;67 bytes
ELSE
DW 0001FH ;31 bytes
ENDIF
HID_end_point_descriptor:
DW 00507H ;Endpoint descriptor , Length of this descriptor
DW 00381H ;Interrupt , Endpoint 1 In direction
DW 00010H ;wMaxPacketSize = 16 Bytes
DW 03F30H ;48ms Interval
end_config_desc_table:
hid_report_desc_table:
DW 00C05H ;//Usage Page(Consumer)
DW 00109H ;//Usage Page(Consumer Control)
DW 001A1H ;//Collection(Application)
IF UseReportID
DW 00185H ;//Report_ID(01)
ENDIF
DW 00015H ;//Logic Minimum(0)
DW 00125H ;//Logic Maximum(1)
DW 03F09H ;//Usage(Volume Increment)
DW 03FE9H
DW 03F09H ;//Usage(Volume Decrement)
DW 03FEAH
DW 00175H ;//Report Size(1) : DataLength(1)bit
DW 00295H ;//Report Count(2): Number of Data(INC,DEC)
DW 02A81H ;//Input(Data,Variable,Absolute,No_Wrap,No_Preferred)
DW 03F09H ;//Usage(Mute)
DW 03FE2H
DW 00195H ;//Report Count(1)
DW 02E81H ;//Input(Data,Variable,Relative,No_Wrap,No_preferred)
DW 00595H ;//Report Count(5)
;;Add By Ansonku . (add call playmedia)
;;DW
DW 00181H ;//Input(Constant)
DW 03FC0H ;//End Collection
;====================================================================
; Use ReportID , Report ID 1 = Volume HID control
; Report ID 3 = Transform Other Data
;====================================================================
IF UseReportID
;;vender defined
DW 03F06H ;//Usage Page(Global)
DW 03F00H
DW 03FFFH ;//Usage Page
DW 03F09H ;//Usage(Local 1 bytes)
DW 03FA5H
DW 001A1H ;//collection(Main)
DW 00385H ;//Report_ID(03)
;input report
DW 03F19H
DW 03FA6H
DW 03F29H ;//Usage(Local)
DW 03FACH
DW 03F15H ;//Global Logical Minimum
DW 03F80H
DW 03F25H ;//Global Logical Maximum
DW 03F7FH
DW 00875H ;//Global Report Size 8 bits
DW 00795H ;//Global Report Count 7 (field)
DW 00281H ;//Main Input (Data,Variable,Absolute)
;output
DW 03F19H
DW 03FB0H
DW 03F29H
DW 03FB6H
DW 00875H ;//Report size (8 bits)
DW 00795H ;//Report Count(7)
DW 00291H ;//Main Output (Data,Variable,Absolute)
DW 03FC0H ;End Collection
ENDIF
end_hid_report_desc_table:
string_descriptor:
USBStringLanguageDescription:
DW 00304h ; Length , Type (3=string)
DW 00409h ; Language: English , Sub-language: US
imanufacturer_string: ;Vendor Name
USBStringDescription1:
DW 00310h, 00048h, 0004fh, 0004ch, 00054h, 00045h, 0004bh, 00020h ;HOLTEK
iproduct_string: ;Product Name
;原描述符
;USBStringDescription2:
; ;DW 00314h, 00048h, 00054h, 00038h, 00032h, 00041h, 00038h, 00033h, 00032h, 00052h ;HT82A832R
; DW 00322h, 00048h, 0004fh, 0004ch, 00054h, 00045h, 0004bh, 00020h ;HOLTEK
; DW 00055h, 00053h, 00042h, 00020h ;USB
; DW 00050h, 00048h, 0004Fh, 0004Eh, 00045h ;PHONE
USBStringDescription2:
;DW 00334h, 00056h, 0004fh, 00049h, 00050h, 00020h, 00055h, 00053h ;VOIP USB Phone
;DW 0006fh, 0006eh, 00065h, 00020h, 00020h ;PHONE
DW 0334h, 0056h, 004fh, 0049h, 0050h, 0020h, 0055h, 0053h
DW 0042h, 0020h, 0050h, 0068h, 006fh, 006eh, 0065h, 0020h
DW 0020h, 0020h, 0020h, 0020h, 0020h, 0020h, 0020h, 0020h
DW 0020h, 0020h
isnumber_string: ;Serial Number
USBStringDescription3:
DW 0030Ah, 00038h, 00033h, 00032h, 00052h ;832R
config_desc_length:
DW 000D9H
report_desc_length:
IF UseReportID
DW 00043H
ELSE
DW 0001FH
ENDIF
hid_desc_length:
DW 00009H
LogTable:
Public control_read_table
Public device_desc_table
Public config_desc_table
Public end_config_desc_table
Public USBStringLanguageDescription
Public USBStringDescription1
Public USBStringDescription2
Public USBStringDescription3
Public HID_Desc
Public hid_report_desc_table
Public end_hid_report_desc_table
Public config_desc_length
Public hid_desc_length
Public report_desc_length
Public LogTable
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -