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

📄 chap_9.lst

📁 参加今年的比赛肯定要用的。谢谢支持。祝大家好运!
💻 LST
📖 第 1 页 / 共 4 页
字号:
 775   3                              break;
 776   3                      case STR_INDEX_SERIALNUMBER:
 777   3                              Chap9_BurstTransmitEP0((PUCHAR)&ConfigDescr, sizeof(CONFIG_DESCRIPTOR_LENGTH));
 778   3                              break;
 779   3                      case STR_INDEX_CONFIGURATION:
 780   3                              Chap9_BurstTransmitEP0((PUCHAR)&strConfiguration, sizeof(USB_STRING_CONFIGURATION_DESCRIPTOR) );
 781   3                              break;
 782   3                      case STR_INDEX_INTERFACE:
 783   3                              Chap9_BurstTransmitEP0((PUCHAR)&strInterface, sizeof(USB_STRING_INTERFACE_DESCRIPTOR) );
 784   3                              break;
 785   3                      default:
 786   3                              Chap9_StallEP0InControlRead();
 787   3                              break;
 788   3                      }
 789   2              case USB_INTERFACE_DESCRIPTOR_TYPE:
 790   2              case USB_ENDPOINT_DESCRIPTOR_TYPE:
 791   2              case USB_POWER_DESCRIPTOR_TYPE:
 792   2              default:
 793   2                      Chap9_StallEP0InControlRead();
 794   2                      break;
 795   2              }
 796   1      }
 797          
 798          void Chap9_GetConfiguration(void)
 799          {
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 14  

 800   1              UCHAR   c = bD13flags.bits.configuration;
 801   1              UCHAR   j;
 802   1      
 803   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 804   1              {
 805   2                      j = 0;
 806   2                      Chap9_SingleTransmitEP0(&j, 1);
 807   2              }
 808   1      
 809   1              else
 810   1              {
 811   2                      if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0 && ControlData.Device
             -Request.wLength == 1)
 812   2                      {
 813   3      
 814   3                      Chap9_SingleTransmitEP0(&c, 1);
 815   3                      }
 816   2              }
 817   1      
 818   1      }
 819          
 820          void Chap9_SetConfiguration(void)
 821          {
 822   1        
 823   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 824   1              {
 825   2                      if(ControlData.DeviceRequest.wIndex == 0 && ControlData.DeviceRequest.wLength == 0)
 826   2                      {
 827   3                              if (ControlData.DeviceRequest.wValue == 0)
 828   3                              {
 829   4                                      /* put device in unconfigured state */
 830   4                                      bD13flags.bits.configuration = 0;
 831   4                                      bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 1;
 832   4                                      Chap9_SingleTransmitEP0(0, 0);
 833   4                              }
 834   3                              else if (ControlData.DeviceRequest.wValue == 1)
 835   3                              {
 836   4                                      /* Configure device */
 837   4                                      bD13flags.bits.configuration = 1;
 838   4                                      bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 0;
 839   4                                      bUSBCheck_Device_State.State_bits.DEVICE_CONFIGURATION_STATE = 1;
 840   4                                      Chap9_SingleTransmitEP0(0, 0);
 841   4                              }
 842   3      
 843   3                              else
 844   3                                      Chap9_StallEP0InControlWrite();
 845   3                      }
 846   2              }
 847   1      
 848   1              else
 849   1              {
 850   2                      if (ControlData.DeviceRequest.wValue == 0)
 851   2                      {
 852   3                              /* put device in unconfigured state */
 853   3                              bD13flags.bits.configuration = 0;
 854   3                              bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 1;
 855   3                              bUSBCheck_Device_State.State_bits.DEVICE_CONFIGURATION_STATE = 0;
 856   3                              Chap9_SingleTransmitEP0(0, 0);
 857   3      
 858   3                      }
 859   2      
 860   2                      else if (ControlData.DeviceRequest.wValue == 1)
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 15  

 861   2                      {
 862   3                              /* Configure device */
 863   3                              bD13flags.bits.configuration = 1;
 864   3                              bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE = 0;
 865   3                              bUSBCheck_Device_State.State_bits.DEVICE_CONFIGURATION_STATE = 1;
 866   3                              Chap9_SingleTransmitEP0(0, 0);
 867   3                      }
 868   2                      else
 869   2                              Chap9_StallEP0InControlWrite();
 870   2              }
 871   1      
 872   1      }
 873          
 874          void Chap9_GetInterface(void)
 875          {
 876   1      
 877   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 878   1                      Chap9_StallEP0InControlRead();
 879   1      
 880   1      
 881   1              else
 882   1              {
 883   2      
 884   2                      if ((ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0 && ControlData.Devic
             -eRequest.wLength == 1))
 885   2                              Chap9_SingleTransmitEP0(&ALTERNATIVE_SETTING, 1);      //txdat
 886   2                      else
 887   2                              Chap9_StallEP0InControlRead();
 888   2              }
 889   1      
 890   1      }
 891          
 892          void Chap9_SetInterface(void)
 893          {
 894   1              UCHAR   dir = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_DIR_MASK;
 895   1      
 896   1              if(dir)
 897   1                      Chap9_StallEP0InControlRead();
 898   1      
 899   1      
 900   1              if(bUSBCheck_Device_State.State_bits.DEVICE_ADDRESS_STATE)
 901   1                      Chap9_StallEP0InControlRead();
 902   1      
 903   1      
 904   1      
 905   1              else
 906   1              {
 907   2      
 908   2                      if (ControlData.DeviceRequest.wValue == 0 && ControlData.DeviceRequest.wIndex == 0)
 909   2                      {
 910   3                              ALTERNATIVE_SETTING = 0;
 911   3                              Chap9_SingleTransmitEP0(0,0);
 912   3                      }
 913   2      
 914   2                      else if (ControlData.DeviceRequest.wValue == 1 && ControlData.DeviceRequest.wIndex == 0)
 915   2                      {
 916   3                              ALTERNATIVE_SETTING = 1;
 917   3                              Chap9_SingleTransmitEP0(0,0);
 918   3                      }
 919   2                      else
 920   2                      {
 921   3                              Chap9_StallEP0InControlWrite();
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 16  

 922   3                      }
 923   2              }
 924   1      
 925   1      }
 926          
 927          // *************************************************************************
 928          // Chap9 support functions
 929          // *************************************************************************
 930          
 931          void Chap9_StallEP0(void)
 932          {
 933   1              UCHAR dir;
 934   1              dir = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_DIR_MASK;
 935   1              if(dir)
 936   1              {
 937   2                      Hal4D13_StallEP0InControlRead();
 938   2              }
 939   1              else
 940   1              {
 941   2                      Hal4D13_StallEP0InControlWrite();
 942   2              }
 943   1      
 944   1              RaiseIRQL();
 945   1              if(!ControlData.Abort)
 946   1              {
 947   2                      bD13flags.bits.DCP_state = USBFSM4DCP_STALL;
 948   2      
 949   2              }
 950   1              LowerIRQL();
 951   1      }
 952          void Chap9_StallEP0InControlWrite(void)
 953          {
 954   1              Hal4D13_StallEP0InControlWrite();
 955   1      
 956   1              RaiseIRQL();
 957   1              if(!ControlData.Abort)
 958   1              {
 959   2                      bD13flags.bits.DCP_state = USBFSM4DCP_STALL;
 960   2      
 961   2              }
 962   1              LowerIRQL();
 963   1      }
 964          
 965          void Chap9_StallEP0InControlRead(void)
 966          {
 967   1              Hal4D13_StallEP0InControlRead();
 968   1              RaiseIRQL();
 969   1              if(!ControlData.Abort)
 970   1              {
 971   2                      bD13flags.bits.DCP_state = USBFSM4DCP_STALL;
 972   2      
 973   2              }
 974   1              LowerIRQL();
 975   1      }
 976          
 977          void Chap9_SingleTransmitEP0(PUCHAR buf, USHORT len)
 978          {
 979   1      
 980   1              Hal4D13_SingleTransmitEP0(buf, len);
 981   1      
 982   1              RaiseIRQL();
 983   1              if(!ControlData.Abort)
C51 COMPILER V7.06   CHAP_9                                                                08/18/2005 15:30:26 PAGE 17  

 984   1              {
 985   2                      ControlData.wLength = ControlData.wCount = len;
 986   2                      bD13flags.bits.DCP_state = USBFSM4DCP_HANDSHAKE;
 987   2      
 988   2              }
 989   1              LowerIRQL();
 990   1      }
 991          
 992          void Chap9_BurstTransmitEP0(PUCHAR pData, USHORT len)
 993          {
 994   1              ControlData.wCount = 0;
 995   1              if(ControlData.wLength > len)
 996   1                      ControlData.wLength = len;
 997   1      
 998   1              ControlData.Addr.pData = pData;
 999   1      
1000   1                      if( ControlData.wLength >= EP0_PACKET_SIZE)
1001   1                      {
1002   2                              Hal4D13_WriteEndpoint(EPINDEX4EP0_CONTROL_IN, pData, EP0_PACKET_SIZE);
1003   2      
1004   2                              RaiseIRQL();
1005   2                              if(!ControlData.Abort)
1006   2                              {
1007   3                                      ControlData.wCount += EP0_PACKET_SIZE;
1008   3                                      bD13flags.bits.DCP_state = USBFSM4DCP_DATAIN;
1009   3      
1010   3                              }
1011   2                              LowerIRQL();
1012   2                      }
1013   1                      else
1014   1                      {
1015   2                              Hal4D13_WriteEndpoint(EPINDEX4EP0_CONTROL_IN, pData, ControlData.wLength);
1016   2      
1017   2                              RaiseIRQL();
1018   2                              if(!ControlData.Abort)
1019   2                              {
1020   3                                      ControlData.wCount += ControlData.wLength;
1021   3                                      bD13flags.bits.DCP_state = USBFSM4DCP_HANDSHAKE;
1022   3      
1023   3                              }
1024   2                              LowerIRQL();
1025   2                      }
1026   1      }
1027          
*** ERROR C249 IN LINE 1027 OF CHAP_9.C: 'DATA': SEGMENT TOO LARGE

C51 COMPILATION COMPLETE.  0 WARNING(S),  1 ERROR(S)

⌨️ 快捷键说明

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