⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap_9.lst

📁 参加今年的比赛肯定要用的。谢谢支持。祝大家好运!
💻 LST
📖 第 1 页 / 共 4 页
字号:
 514   5                                                              if( ControlData.DeviceRequest.wIndex == 0x00 )
 515   5                                                              {
 516   6                                                                      endp = 0;
 517   6                                                                      Hal4D13_SetEndpointStatus(endp, 0);
 518   6      
 519   6                                                                      Chap9_SingleTransmitEP0(0, 0);
 520   6                                                              }
 521   5                                                              else
 522   5                                                              {
 523   6                                                                      Chap9_StallEP0InControlWrite();
 524   6                                                                      break;
 525   6                                                              }
 526   5      
 527   5                                                      }
 528   4      
 529   4                                                      else
 530   4                                                              Chap9_StallEP0InControlWrite();
 531   4      
 532   4                                                      break;
 533   4      
 534   4      
 535   4                              default:
 536   4                                                      Chap9_StallEP0InControlWrite();
 537   4                                                      break;
 538   4                              }
 539   3                }
 540   2              }
 541   1      
 542   1              else
 543   1              {
 544   2      
 545   2                      if( ControlData.DeviceRequest.wLength == 0 )
 546   2                      {
 547   3                              switch(bRecipient)
 548   3                              {
 549   4                              case USB_RECIPIENT_DEVICE:
 550   4                                      if(wFeature == USB_FEATURE_REMOTE_WAKEUP)
 551   4                                      {
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 10  

 552   5                                              bD13flags.bits.remote_wakeup = 0;
 553   5                                              Chap9_SingleTransmitEP0(0, 0);
 554   5                                      }
 555   4                                      else
 556   4                                      {
 557   5                                              Chap9_StallEP0InControlWrite();
 558   5                                      }
 559   4      
 560   4                                      break;
 561   4      
 562   4                                      case USB_RECIPIENT_ENDPOINT:
 563   4      
 564   4                                      if(wFeature == USB_FEATURE_ENDPOINT_STALL)
 565   4                                      {
 566   5                                              if( ControlData.DeviceRequest.wIndex == 0x00 )
 567   5                                                              endp = -1;
 568   5                                              else
 569   5                                                      endp = (UCHAR)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 570   5      
 571   5                                              Hal4D13_SetEndpointStatus(endp+1, 0);
 572   5                                              Hal4D13_SetEndpointStatus(endp+1, 0);
 573   5      
 574   5                                              Chap9_SingleTransmitEP0(0, 0);
 575   5                                      }
 576   4                                      else
 577   4                                      {
 578   5                                              Chap9_StallEP0InControlWrite();
 579   5                                      }
 580   4                                      break;
 581   4      
 582   4                              default:
 583   4                                              Chap9_StallEP0InControlWrite();
 584   4                                              break;
 585   4                              }
 586   3                }
 587   2              }
 588   1      
 589   1      }
 590          
 591          void Chap9_SetFeature(void)
 592          {
 593   1        UCHAR   endp = 0;
 594   1              UCHAR   bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 595   1              USHORT  wFeature = ControlData.DeviceRequest.wValue;
 596   1        
 597   1      
 598   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 599   1              {
 600   2                      switch(bRecipient)
 601   2                      {
 602   3                      case USB_RECIPIENT_DEVICE:
 603   3                              if(wFeature == USB_FEATURE_REMOTE_WAKEUP)
 604   3                              {
 605   4                                      bD13flags.bits.remote_wakeup = 1;
 606   4                                      Chap9_SingleTransmitEP0(0, 0);
 607   4                              }
 608   3                              else
 609   3                              {
 610   4                                      Chap9_StallEP0InControlWrite();
 611   4                              }
 612   3                              break;
 613   3      
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 11  

 614   3                      case USB_RECIPIENT_ENDPOINT:
 615   3                              if( wFeature == USB_FEATURE_ENDPOINT_STALL)
 616   3                              {
 617   4                                      if( ControlData.DeviceRequest.wIndex == 0x00 )
 618   4                                              endp = -1;
 619   4      
 620   4                                      Hal4D13_SetEndpointStatus(endp+1, D13REG_EPSTS_STALL);
 621   4                                      Chap9_SingleTransmitEP0(0, 0);
 622   4      
 623   4                              }
 624   3                              else
 625   3                                      Chap9_StallEP0InControlWrite();
 626   3      
 627   3                              break;
 628   3                      default:
 629   3                              Chap9_StallEP0InControlWrite();
 630   3                              break;
 631   3                      }
 632   2              }
 633   1      
 634   1      
 635   1              else
 636   1              {
 637   2                      if( ControlData.DeviceRequest.wLength == 0 )
 638   2                      {
 639   3                              switch(bRecipient)
 640   3                              {
 641   4                              case USB_RECIPIENT_DEVICE:
 642   4                                      if(wFeature == USB_FEATURE_REMOTE_WAKEUP)
 643   4                                      {
 644   5                                              bD13flags.bits.remote_wakeup = 1;
 645   5                                              Chap9_SingleTransmitEP0(0, 0);
 646   5                                      }
 647   4                                      else
 648   4                                      {
 649   5                                              Chap9_StallEP0InControlWrite();
 650   5                                      }
 651   4                                      break;
 652   4                              case USB_RECIPIENT_ENDPOINT:
 653   4                                      if( wFeature == USB_FEATURE_ENDPOINT_STALL)
 654   4                                      {
 655   5                                              if( ControlData.DeviceRequest.wIndex == 0x00 )
 656   5                                                      endp = -1;
 657   5                                              else
 658   5                                                      endp = (UCHAR)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 659   5      
 660   5                                              Hal4D13_SetEndpointStatus(endp+1, D13REG_EPSTS_STALL);
 661   5      
 662   5                                              Chap9_SingleTransmitEP0(0, 0);
 663   5      
 664   5                                      }
 665   4                                      else
 666   4                                      {
 667   5                                              Hal4D13_SetEndpointStatus(endp+1, 0);
 668   5                                              Chap9_SingleTransmitEP0(0, 0);
 669   5                                      }
 670   4                                      break;
 671   4                              default:
 672   4                                      Chap9_StallEP0InControlWrite();
 673   4                                      break;
 674   4                              }
 675   3                      }
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 12  

 676   2              }
 677   1      
 678   1      
 679   1      
 680   1      }
 681          
 682          void Chap9_SetAddress(void)
 683          {
 684   1      
 685   1              UCHAR   j;
 686   1      
 687   1              {
 688   2                      RaiseIRQL();
 689   2                      disable();
 690   2                      if(!ControlData.Abort)
 691   2                      {
 692   3                              if(bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE)
 693   3                              {
 694   4                                      if((ControlData.DeviceRequest.wValue & DEVICE_ADDRESS_MASK) != 0 )
 695   4                                      {
 696   5                                              bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 0;
 697   5                                              Hal4D13_SetAddressEnable((UCHAR)(ControlData.DeviceRequest.wValue &
 698   5                                                                                              DEVICE_ADDRESS_MASK), 1);
 699   5                                              bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 1;
 700   5                                              Chap9_SingleTransmitEP0(0, 0);
 701   5      
 702   5                                      }
 703   4      
 704   4                                      else
 705   4                                              bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 1;
 706   4                              }
 707   3      
 708   3                              else if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 709   3                              {
 710   4                                      if((ControlData.DeviceRequest.wValue & DEVICE_ADDRESS_MASK) == 0 )
 711   4                                      {
 712   5                                              Hal4D13_SetAddressEnable((UCHAR)(ControlData.DeviceRequest.wValue &
 713   5                                                                                              DEVICE_ADDRESS_MASK), 1);
 714   5                                              bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 1;
 715   5                                              bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 0;
 716   5                                              Chap9_SingleTransmitEP0(0, 0);
 717   5      
 718   5                                      }
 719   4      
 720   4                                      else
 721   4                                      {
 722   5                                              bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 0;
 723   5                                              Hal4D13_SetAddressEnable((UCHAR)(ControlData.DeviceRequest.wValue &
 724   5                                                                                              DEVICE_ADDRESS_MASK), 1);
 725   5                                              bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 1;
 726   5                                              Chap9_SingleTransmitEP0(0, 0);
 727   5      
 728   5                                      }
 729   4      
 730   4                              }
 731   3      
 732   3                              else
 733   3                              {
 734   4      
 735   4                                      bUSBCheck_Device_State.State_bits.DEVICE_CONFIGURATION_STATE = 0;
 736   4                                      bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 0;
 737   4                                      bUSBCheck_Device_State.State_bits.DEVICE_DEFAULT_STATE = 1;
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 13  

 738   4                                      j = DEV_BEHAVIOUR_NOT_SPECIFIED;
 739   4                                      Chap9_SingleTransmitEP0(&j, 0);
 740   4                              }
 741   3      
 742   3                      }
 743   2                      LowerIRQL();
 744   2                      enable();
 745   2      
 746   2              }
 747   1      
 748   1      }
 749          
 750          
 751          void Chap9_GetDescriptor(void)
 752          {
 753   1              UCHAR   bDescriptor = MSB(ControlData.DeviceRequest.wValue);
 754   1              UCHAR   bDescriptorIndex = LSB(ControlData.DeviceRequest.wValue);
 755   1      
 756   1              switch(bDescriptor)
 757   1              {
 758   2              case USB_DEVICE_DESCRIPTOR_TYPE:
 759   2                      Chap9_BurstTransmitEP0((PUCHAR)&DeviceDescr, sizeof(USB_DEVICE_DESCRIPTOR));
 760   2                      break;
 761   2              case USB_CONFIGURATION_DESCRIPTOR_TYPE:
 762   2                      Chap9_BurstTransmitEP0((PUCHAR)&ConfigDescr, CONFIG_DESCRIPTOR_LENGTH);
 763   2                      break;
 764   2              case USB_STRING_DESCRIPTOR_TYPE:
 765   2                      switch(bDescriptorIndex)
 766   2                      {
 767   3                      case STR_INDEX_LANGUAGE:
 768   3                              Chap9_BurstTransmitEP0((PUCHAR)&strLanguage, sizeof(USB_STRING_LANGUAGE_DESCRIPTOR));
 769   3                              break;
 770   3                      case STR_INDEX_MANUFACTURER:
 771   3                              Chap9_BurstTransmitEP0((PUCHAR)&strManufacturer, sizeof(USB_STRING_MANUFACTURER_DESCRIPTOR));
 772   3                              break;
 773   3                      case STR_INDEX_PRODUCT:
 774   3                              Chap9_BurstTransmitEP0((PUCHAR)&strProduct, sizeof(USB_STRING_PRODUCT_DESCRIPTOR));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -