📄 usbcore.lst
字号:
561 4
562 4 case USB_REQUEST_SET_INTERFACE:
563 4 switch (SetupPacket.bmRequestType.BM.Recipient) {
564 5 case REQUEST_TO_INTERFACE:
565 5 if (!USB_SetInterface()) {
566 6 goto stall_i;
567 6 }
568 5 USB_StatusInStage();
569 5 #if USB_INTERFACE_EVENT
USB_Interface_Event();
#endif
572 5 break;
573 5 default:
574 5 goto stall_i;
575 5 }
576 4 break;
577 4
578 4 default:
579 4 goto stall_i;
580 4
581 4 }
582 3 break;
583 3
584 3 case REQUEST_CLASS:
585 3 #if USB_CLASS
586 3 switch (SetupPacket.bmRequestType.BM.Recipient) {
ARM COMPILER V2.53, usbcore 12/06/06 10:18:23 PAGE 10
587 4 case REQUEST_TO_INTERFACE:
588 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;
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 */
630 4 #if USB_MSC
631 4 if (SetupPacket.wIndex.WB.L == USB_MSC_IF_NUM) {
632 5 switch (SetupPacket.bRequest) {
633 6 case MSC_REQUEST_RESET:
634 6 if (MSC_Reset()) {
635 7 USB_StatusInStage();
636 7 goto class_ok;
637 7 }
638 6 break;
639 6 case MSC_REQUEST_GET_MAX_LUN:
640 6 if (MSC_GetMaxLUN()) {
641 7 EP0Data.pData = EP0Buf;
642 7 USB_DataInStage();
643 7 goto class_ok;
644 7 }
645 6 break;
646 6 }
647 5 }
648 4 #endif /* USB_MSC */
649 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)) {
ARM COMPILER V2.53, usbcore 12/06/06 10:18:23 PAGE 11
if (SetupPacket.bmRequestType.BM.Dir) {
if (ADC_IF_GetRequest()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
} else {
EP0Data.pData = EP0Buf;
goto class_ok;
}
}
#endif /* USB_AUDIO */
665 4 goto stall_i;
666 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 */
680 4 default:
681 4 goto stall_i;
682 4 }
683 3 class_ok: break;
684 3 #else
goto stall_i;
#endif /* USB_CLASS */
687 3
688 3 case REQUEST_VENDOR:
689 3 goto stall_i;
690 3
691 3 default:
692 3 stall_i: USB_SetStallEP(0x80);
693 3 EP0Data.Count = 0;
694 3 break;
695 3
696 3 }
697 2 break;
698 2
699 2 case USB_EVT_OUT:
700 2 if (SetupPacket.bmRequestType.BM.Dir == 0) {
701 3 if (EP0Data.Count) {
702 4 USB_DataOutStage();
703 4 if (EP0Data.Count == 0) {
704 5 switch (SetupPacket.bmRequestType.BM.Type) {
705 6 case REQUEST_STANDARD:
706 6 goto stall_i;
707 6 #if (USB_CLASS)
708 6 case REQUEST_CLASS:
709 6 switch (SetupPacket.bmRequestType.BM.Recipient) {
710 7 case REQUEST_TO_INTERFACE:
711 7 #if USB_HID
if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
if (!HID_SetReport()) {
goto stall_i;
}
break;
}
#endif
ARM COMPILER V2.53, usbcore 12/06/06 10:18:23 PAGE 12
719 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;
}
break;
}
#endif
729 7 goto stall_i;
730 7 case REQUEST_TO_ENDPOINT:
731 7 #if USB_AUDIO
if (ADC_EP_SetRequest()) break;
#endif
734 7 goto stall_i;
735 7 default:
736 7 goto stall_i;
737 7 }
738 6 break;
739 6 #endif
740 6 default:
741 6 goto stall_i;
742 6 }
743 5 USB_StatusInStage();
744 5 }
745 4 }
746 3 } else {
747 3 USB_StatusOutStage();
748 3 }
749 2 break;
750 2
751 2 case USB_EVT_IN:
752 2 if (SetupPacket.bmRequestType.BM.Dir == 1) {
753 3 USB_DataInStage();
754 3 } else {
755 3 if (USB_DeviceAddress & 0x80) {
756 4 USB_DeviceAddress &= 0x7F;
757 4 USB_SetAddress(USB_DeviceAddress);
758 4 }
759 3 }
760 2 break;
761 2
762 2 case USB_EVT_IN_STALL:
763 2 USB_ClrStallEP(0x80);
764 2 break;
765 2
766 2 case USB_EVT_OUT_STALL:
767 2 USB_ClrStallEP(0x00);
768 2 break;
769 2
770 2 }
771 1 }
ARM COMPILER V2.53, usbcore 12/06/06 10:18:23 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':
68: USB_DeviceStatus = USB_POWER;
ARM COMPILER V2.53, usbcore 12/06/06 10:18:23 PAGE 14
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -