📄 usbcore.lst
字号:
561 5 if (!USB_SetInterface()) {
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
585 4 if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
586 5 switch (SetupPacket.bRequest) {
ARM COMPILER V2.53, usbcore 27/04/07 16:47:00 PAGE 10
587 6 case HID_REQUEST_GET_REPORT:
588 6 if (HID_GetReport()) {
589 7 EP0Data.pData = EP0Buf;
590 7 USB_DataInStage();
591 7 goto class_ok;
592 7 }
593 6 break;
594 6 case HID_REQUEST_SET_REPORT:
595 6 EP0Data.pData = EP0Buf;
596 6 goto class_ok;
597 6 case HID_REQUEST_GET_IDLE:
598 6 if (HID_GetIdle()) {
599 7 EP0Data.pData = EP0Buf;
600 7 USB_DataInStage();
601 7 goto class_ok;
602 7 }
603 6 break;
604 6 case HID_REQUEST_SET_IDLE:
605 6 if (HID_SetIdle()) {
606 7 USB_StatusInStage();
607 7 goto class_ok;
608 7 }
609 6 break;
610 6 case HID_REQUEST_GET_PROTOCOL:
611 6 if (HID_GetProtocol()) {
612 7 EP0Data.pData = EP0Buf;
613 7 USB_DataInStage();
614 7 goto class_ok;
615 7 }
616 6 break;
617 6 case HID_REQUEST_SET_PROTOCOL:
618 6 if (HID_SetProtocol()) {
619 7 USB_StatusInStage();
620 7 goto class_ok;
621 7 }
622 6 break;
623 6 }
624 5 }
625 4 #endif /* USB_HID */
626 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 */
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();
ARM COMPILER V2.53, usbcore 27/04/07 16:47:00 PAGE 11
goto class_ok;
}
} 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
708 7 if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
709 8 if (!HID_SetReport()) {
710 9 goto stall_i;
711 9 }
712 8 break;
713 8 }
714 7 #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)) {
ARM COMPILER V2.53, usbcore 27/04/07 16:47:00 PAGE 12
if (!ADC_IF_SetRequest()) {
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.53, usbcore 27/04/07 16:47:00 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 DATA (HID_ReportDescriptor)
EXTERN DATA (HID_ReportDescSize)
EXTERN CODE16 (USB_Configure_Event?T)
EXTERN CODE16 (HID_GetReport?T)
EXTERN CODE16 (HID_SetReport?T)
EXTERN CODE16 (HID_GetIdle?T)
EXTERN CODE16 (HID_SetIdle?T)
EXTERN CODE16 (HID_GetProtocol?T)
EXTERN CODE16 (HID_SetProtocol?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:
ARM COMPILER V2.53, usbcore 27/04/07 16:47:00 PAGE 14
00000020 DS 8
00000028 USB_NumInterfaces:
00000028 DS 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -