📄 usbcore.lst
字号:
562 6 goto stall_i;
563 6 }
564 5 USB_StatusInStage();
565 5 #if USB_INTERFACE_EVENT
USB_Interface_Event();
#endif
568 5 break;
569 5 default:
570 5 goto stall_i;
571 5 }
572 4 break;
573 4
574 4 default:
575 4 goto stall_i;
576 4
577 4 }
578 3 break;
579 3
580 3 case REQUEST_CLASS:
581 3 #if USB_CLASS
582 3 switch (SetupPacket.bmRequestType.BM.Recipient) {
583 4 case REQUEST_TO_INTERFACE:
584 4 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
switch (SetupPacket.bRequest) {
case HID_REQUEST_GET_REPORT:
ARM COMPILER V2.51a, usbcore 16/08/06 09:38:30 PAGE 10
if (HID_GetReport()) {
EP0Data.pData = EP0Buf;
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 */
626 4 #if USB_MSC
627 4 if (SetupPacket.wIndex.WB.L == USB_MSC_IF_NUM) {
628 5 switch (SetupPacket.bRequest) {
629 6 case MSC_REQUEST_RESET:
630 6 if (MSC_Reset()) {
631 7 USB_StatusInStage();
632 7 goto class_ok;
633 7 }
634 6 break;
635 6 case MSC_REQUEST_GET_MAX_LUN:
636 6 if (MSC_GetMaxLUN()) {
637 7 EP0Data.pData = EP0Buf;
638 7 USB_DataInStage();
639 7 goto class_ok;
640 7 }
641 6 break;
642 6 }
643 5 }
644 4 #endif /* USB_MSC */
645 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;
ARM COMPILER V2.51a, usbcore 16/08/06 09:38:30 PAGE 11
}
} else {
EP0Data.pData = EP0Buf;
goto class_ok;
}
}
#endif /* USB_AUDIO */
661 4 goto stall_i;
662 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 */
676 4 default:
677 4 goto stall_i;
678 4 }
679 3 class_ok: break;
680 3 #else
goto stall_i;
#endif /* USB_CLASS */
683 3
684 3 case REQUEST_VENDOR:
685 3 goto stall_i;
686 3
687 3 default:
688 3 stall_i: USB_SetStallEP(0x80);
689 3 EP0Data.Count = 0;
690 3 break;
691 3
692 3 }
693 2 break;
694 2
695 2 case USB_EVT_OUT:
696 2 if (SetupPacket.bmRequestType.BM.Dir == 0) {
697 3 if (EP0Data.Count) {
698 4 USB_DataOutStage();
699 4 if (EP0Data.Count == 0) {
700 5 switch (SetupPacket.bmRequestType.BM.Type) {
701 6 case REQUEST_STANDARD:
702 6 goto stall_i;
703 6 #if (USB_CLASS)
704 6 case REQUEST_CLASS:
705 6 switch (SetupPacket.bmRequestType.BM.Recipient) {
706 7 case REQUEST_TO_INTERFACE:
707 7 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
if (!HID_SetReport()) {
goto stall_i;
}
break;
}
#endif
715 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()) {
ARM COMPILER V2.51a, usbcore 16/08/06 09:38:30 PAGE 12
goto stall_i;
}
break;
}
#endif
725 7 goto stall_i;
726 7 case REQUEST_TO_ENDPOINT:
727 7 #if USB_AUDIO
if (ADC_EP_SetRequest()) break;
#endif
730 7 goto stall_i;
731 7 default:
732 7 goto stall_i;
733 7 }
734 6 break;
735 6 #endif
736 6 default:
737 6 goto stall_i;
738 6 }
739 5 USB_StatusInStage();
740 5 }
741 4 }
742 3 } else {
743 3 USB_StatusOutStage();
744 3 }
745 2 break;
746 2
747 2 case USB_EVT_IN:
748 2 if (SetupPacket.bmRequestType.BM.Dir == 1) {
749 3 USB_DataInStage();
750 3 } else {
751 3 if (USB_DeviceAddress & 0x80) {
752 4 USB_DeviceAddress &= 0x7F;
753 4 USB_SetAddress(USB_DeviceAddress);
754 4 }
755 3 }
756 2 break;
757 2
758 2 case USB_EVT_IN_STALL:
759 2 USB_ClrStallEP(0x80);
760 2 break;
761 2
762 2 case USB_EVT_OUT_STALL:
763 2 USB_ClrStallEP(0x00);
764 2 break;
765 2
766 2 }
767 1 }
ARM COMPILER V2.51a, usbcore 16/08/06 09:38:30 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 8
00000028 USB_NumInterfaces:
00000028 DS 1
*** CODE SEGMENT '?PR?USB_ResetCore?T?usbcore':
64: USB_DeviceStatus = USB_POWER;
ARM COMPILER V2.51a, usbcore 16/08/06 09:38:30 PAGE 14
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000004 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
65: USB_DeviceAddress = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -