📄 usbcore.lst
字号:
USB_Interface_Event();
#endif
565 5 break;
566 5 default:
567 5 goto stall_i;
568 5 }
569 4 break;
570 4
571 4 default:
572 4 goto stall_i;
573 4
574 4 }
575 3 break;
576 3
577 3 case REQUEST_CLASS:
578 3 #if USB_CLASS
579 3 switch (SetupPacket.bmRequestType.BM.Recipient) {
580 4 case REQUEST_TO_INTERFACE:
581 4 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
switch (SetupPacket.bRequest) {
case HID_REQUEST_GET_REPORT:
if (HID_GetReport()) {
EP0Data.pData = EP0Buf;
ARM COMPILER V2.42b, usbcore 02/01/06 23:45:15 PAGE 10
USB_DataInStage();
goto class_ok;
}
break;
case HID_REQUEST_SET_REPORT:
EP0Data.pData = EP0Buf;
goto class_ok;
case HID_REQUEST_GET_IDLE:
if (HID_GetIdle()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
break;
case HID_REQUEST_SET_IDLE:
if (HID_SetIdle()) {
USB_StatusInStage();
goto class_ok;
}
break;
case HID_REQUEST_GET_PROTOCOL:
if (HID_GetProtocol()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
break;
case HID_REQUEST_SET_PROTOCOL:
if (HID_SetProtocol()) {
USB_StatusInStage();
goto class_ok;
}
break;
}
}
#endif /* USB_HID */
623 4 #if USB_MSC
624 4 if (SetupPacket.wIndex.WB.L == USB_MSC_IF_NUM) {
625 5 switch (SetupPacket.bRequest) {
626 6 case MSC_REQUEST_RESET:
627 6 if (MSC_Reset()) {
628 7 USB_StatusInStage();
629 7 goto class_ok;
630 7 }
631 6 break;
632 6 case MSC_REQUEST_GET_MAX_LUN:
633 6 if (MSC_GetMaxLUN()) {
634 7 EP0Data.pData = EP0Buf;
635 7 USB_DataInStage();
636 7 goto class_ok;
637 7 }
638 6 break;
639 6 }
640 5 }
641 4 #endif /* USB_MSC */
642 4 #if USB_AUDIO
if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
if (SetupPacket.bmRequestType.BM.Dir) {
if (ADC_IF_GetRequest()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
} else {
ARM COMPILER V2.42b, usbcore 02/01/06 23:45:15 PAGE 11
EP0Data.pData = EP0Buf;
goto class_ok;
}
}
#endif /* USB_AUDIO */
658 4 goto stall_i;
659 4 #if USB_AUDIO
case REQUEST_TO_ENDPOINT:
if (SetupPacket.bmRequestType.BM.Dir) {
if (ADC_EP_GetRequest()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
} else {
EP0Data.pData = EP0Buf;
goto class_ok;
}
goto stall_i;
#endif /* USB_AUDIO */
673 4 default:
674 4 goto stall_i;
675 4 }
676 3 class_ok: break;
677 3 #else
goto stall_i;
#endif /* USB_CLASS */
680 3
681 3 case REQUEST_VENDOR:
682 3 goto stall_i;
683 3
684 3 default:
685 3 stall_i: USB_SetStallEP(0x80);
686 3 EP0Data.Count = 0;
687 3 break;
688 3
689 3 }
690 2 break;
691 2
692 2 case USB_EVT_OUT:
693 2 if (SetupPacket.bmRequestType.BM.Dir == 0) {
694 3 if (EP0Data.Count) {
695 4 USB_DataOutStage();
696 4 if (EP0Data.Count == 0) {
697 5 switch (SetupPacket.bmRequestType.BM.Type) {
698 6 case REQUEST_STANDARD:
699 6 goto stall_i;
700 6 #if (USB_CLASS)
701 6 case REQUEST_CLASS:
702 6 switch (SetupPacket.bmRequestType.BM.Recipient) {
703 7 case REQUEST_TO_INTERFACE:
704 7 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
if (!HID_SetReport()) {
goto stall_i;
}
break;
}
#endif
712 7 #if USB_AUDIO
if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
(SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
if (!ADC_IF_SetRequest()) {
goto stall_i;
}
ARM COMPILER V2.42b, usbcore 02/01/06 23:45:15 PAGE 12
break;
}
#endif
722 7 goto stall_i;
723 7 case REQUEST_TO_ENDPOINT:
724 7 #if USB_AUDIO
if (ADC_EP_SetRequest()) break;
#endif
727 7 goto stall_i;
728 7 default:
729 7 goto stall_i;
730 7 }
731 6 break;
732 6 #endif
733 6 default:
734 6 goto stall_i;
735 6 }
736 5 USB_StatusInStage();
737 5 }
738 4 }
739 3 } else {
740 3 USB_StatusOutStage();
741 3 }
742 2 break;
743 2
744 2 case USB_EVT_IN:
745 2 if (SetupPacket.bmRequestType.BM.Dir == 1) {
746 3 USB_DataInStage();
747 3 } else {
748 3 if (USB_DeviceAddress & 0x80) {
749 4 USB_DeviceAddress &= 0x7F;
750 4 USB_SetAddress(USB_DeviceAddress);
751 4 }
752 3 }
753 2 break;
754 2
755 2 case USB_EVT_IN_STALL:
756 2 USB_ClrStallEP(0x80);
757 2 break;
758 2
759 2 case USB_EVT_OUT_STALL:
760 2 USB_ClrStallEP(0x00);
761 2 break;
762 2
763 2 }
764 1 }
ARM COMPILER V2.42b, usbcore 02/01/06 23:45:15 PAGE 13
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (USB_WakeUpCfg?T)
EXTERN CODE16 (USB_SetAddress?T)
EXTERN CODE16 (USB_Configure?T)
EXTERN CODE16 (USB_ConfigEP?T)
EXTERN CODE16 (USB_DirCtrlEP?T)
EXTERN CODE16 (USB_EnableEP?T)
EXTERN CODE16 (USB_DisableEP?T)
EXTERN CODE16 (USB_ResetEP?T)
EXTERN CODE16 (USB_SetStallEP?T)
EXTERN CODE16 (USB_ClrStallEP?T)
EXTERN CODE16 (USB_ReadEP?T)
EXTERN CODE16 (USB_WriteEP?T)
EXTERN DATA (USB_DeviceDescriptor)
EXTERN DATA (USB_ConfigDescriptor)
EXTERN DATA (USB_StringDescriptor)
EXTERN CODE16 (USB_Configure_Event?T)
EXTERN CODE16 (MSC_Reset?T)
EXTERN CODE16 (MSC_GetMaxLUN?T)
*** PUBLICS:
PUBLIC USB_ResetCore?T
PUBLIC USB_EndPoint0?T
PUBLIC USB_SetupStage?T
PUBLIC USB_DataInStage?T
PUBLIC USB_DataOutStage?T
PUBLIC USB_StatusInStage?T
PUBLIC USB_StatusOutStage?T
PUBLIC USB_DeviceStatus
PUBLIC USB_DeviceAddress
PUBLIC USB_Configuration
PUBLIC USB_EndPointMask
PUBLIC USB_EndPointHalt
PUBLIC USB_AltSetting
PUBLIC EP0Buf
PUBLIC EP0Data
PUBLIC SetupPacket
PUBLIC USB_NumInterfaces
*** DATA SEGMENT '?DT0?usbcore':
00000000 USB_EndPointMask:
00000000 DS 4
00000004 USB_EndPointHalt:
00000004 DS 4
00000008 EP0Data:
00000008 DS 8
00000010 USB_DeviceStatus:
00000010 DS 2
00000012 SetupPacket:
00000012 DS 8
0000001A USB_DeviceAddress:
0000001A DS 1
0000001B USB_Configuration:
0000001B DS 1
0000001C USB_AltSetting:
0000001C DS 4
00000020 EP0Buf:
00000020 DS 64
00000060 USB_NumInterfaces:
00000060 DS 1
*** CODE SEGMENT '?PR?USB_ResetCore?T?usbcore':
61: USB_DeviceStatus = USB_POWER;
ARM COMPILER V2.42b, usbcore 02/01/06 23:45:15 PAGE 14
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000004 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
62: USB_DeviceAddress = 0;
00000006 2100 MOV R1,#0x0
00000008 4800 LDR R0,=USB_DeviceAddress ; USB_DeviceAddress
0000000A 7001 STRB R1,[R0,#0x0] ; USB_DeviceAddress
63: USB_Configuration = 0;
0000000C 4800 LDR R0,=USB_Configuration ; USB_Configuration
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -