📄 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.50a, usbcore 27/03/06 17:22:53 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
if (SetupPacket.wIndex.WB.L == USB_MSC_IF_NUM) {
switch (SetupPacket.bRequest) {
case MSC_REQUEST_RESET:
if (MSC_Reset()) {
USB_StatusInStage();
goto class_ok;
}
break;
case MSC_REQUEST_GET_MAX_LUN:
if (MSC_GetMaxLUN()) {
EP0Data.pData = EP0Buf;
USB_DataInStage();
goto class_ok;
}
break;
}
}
#endif /* USB_MSC */
649 4 #if USB_AUDIO
650 4 if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM) ||
651 4 (SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
652 4 (SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 11
653 5 if (SetupPacket.bmRequestType.BM.Dir) {
654 6 if (ADC_IF_GetRequest()) {
655 7 EP0Data.pData = EP0Buf;
656 7 USB_DataInStage();
657 7 goto class_ok;
658 7 }
659 6 } else {
660 6 EP0Data.pData = EP0Buf;
661 6 goto class_ok;
662 6 }
663 5 }
664 4 #endif /* USB_AUDIO */
665 4 goto stall_i;
666 4 #if USB_AUDIO
667 4 case REQUEST_TO_ENDPOINT:
668 4 if (SetupPacket.bmRequestType.BM.Dir) {
669 5 if (ADC_EP_GetRequest()) {
670 6 EP0Data.pData = EP0Buf;
671 6 USB_DataInStage();
672 6 goto class_ok;
673 6 }
674 5 } else {
675 5 EP0Data.pData = EP0Buf;
676 5 goto class_ok;
677 5 }
678 4 goto stall_i;
679 4 #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.50a, usbcore 27/03/06 17:22:53 PAGE 12
719 7 #if USB_AUDIO
720 7 if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM) ||
721 7 (SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
722 7 (SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
723 8 if (!ADC_IF_SetRequest()) {
724 9 goto stall_i;
725 9 }
726 8 break;
727 8 }
728 7 #endif
729 7 goto stall_i;
730 7 case REQUEST_TO_ENDPOINT:
731 7 #if USB_AUDIO
732 7 if (ADC_EP_SetRequest()) break;
733 7 #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.50a, usbcore 27/03/06 17:22:53 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 (ADC_IF_GetRequest?T)
EXTERN CODE16 (ADC_IF_SetRequest?T)
EXTERN CODE16 (ADC_EP_GetRequest?T)
EXTERN CODE16 (ADC_EP_SetRequest?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':
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 14
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -