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

📄 et_easy_usb_bulk_usb_lib.c

📁 ET44 Bulk transfer is a simple USB(bulk mode)device tester package. There are firmware, software and
💻 C
📖 第 1 页 / 共 4 页
字号:
                          if(_USB_EP1_DIR == _IN_DIR)
                          {          
                             M_BC1(EP1CSR);
                             M_NOP;
                             return;
                         }
                       }
                       break;
                    case 82: //. ClearFEndpointStall82
                      if(_USB_EP2 )
                      {
                         if(_USB_EP2_DIR == _IN_DIR)
                         {          
                            M_BC1(EP2CSR);
                            M_NOP;
                            return;
                         }
                      }
                      break;
                    case 83: //. ClearFEndpointStall83
                      if(_USB_EP3 )
                      {
                         if(_USB_EP3_DIR == _IN_DIR)
                         {          
                            M_BC1(EP3CSR);
                            M_NOP;
                            return;
                         }
                      }
                      break; 
                   }
                } 
             }             
          }
       }
       if(_RT0X02_Request_0X03 &&(TEMP_UREG ==request_set_feature))   
       {//. SetEndpointStall
          if(_RT0X02_R0X03_Value0000 && (IAC0 = endpoint_stalled))
          {
             IAP0++;
             if(_USB_HUB && M_ISBC1(USB_STATUS))
             {
                if(IAC0==0)
                {//. SetHEndpointStall00
                   M_BS1(HEP0RXCSR);
                   M_NOP;
                   return;
                }
                else if(IAC0 == hub_endpoint80)
                {//. SetHEndpointStall80
                   M_BS1(HEP0TXCSR);
                   M_NOP;
                   return;             
                }
                else if(IAC0 == hub_endpoint81)
                {//. SetHEndpointStall81
                   M_BC1(HEP1TXCSR);
                   M_NOP;
                   return;                      
                }
             }  
             else
             {
               usb_byTemp = IAC0;
               IAP0--;
          
               switch(usb_byTemp)
               {
                  case 0: //. SetFEndpointStall00
                    M_BS1(EP0RXCSR);
                    M_NOP;
                    return;
                  case 1: //. SetFEndpointStall01
                    if(_USB_EP1)
                    {
                       if(_USB_EP1_DIR != _IN_DIR)
                       {
                          M_BS1(EP1CSR);                   
                          M_NOP;
                          return;
                       }   
                    }
                    break;
                  case 2: //. SetFEndpointStall02
                     if(_USB_EP2)
                     {
                        if(_USB_EP2_DIR != _IN_DIR)
                        {
                           M_BS1(EP2CSR);                   
                           M_NOP;
                           return;
                        }   
                     }
                     break;
                  case 3: //. SetFEndpointStall03    
                     if(_USB_EP3)
                     {
                        if(_USB_EP3_DIR != _IN_DIR)
                        {
                           M_BS1(EP3CSR);                   
                           M_NOP;
                           return;
                        }   
                     }
                     break;
                  case 80: //. SetFEndpointStall80
                     M_BS1(EP0TXCSR);
                     M_NOP;
                     return;
                  case 81: //. SetFEndpointStall81
                     if(_USB_EP1 )
                     {
                        if(_USB_EP1_DIR == _IN_DIR)
                        {          
                           M_BS1(EP1CSR);
                           M_NOP;
                           return;
                        }
                     }
                     break;
                  case 82: //. SetFEndpointStall82
                     if(_USB_EP2 )
                     {
                       if(_USB_EP2_DIR == _IN_DIR)
                        {          
                           M_BS1(EP2CSR);
                           M_NOP;
                           return;
                        }
                     }
                     break;
                  case 83: //. ClearFEndpointStall83
                     if(_USB_EP3 )
                     {
                        if(_USB_EP3_DIR == _IN_DIR)
                        {          
                           M_BS1(EP3CSR);
                           M_NOP;
                           return;
                        }
                     }
                     break; 
                }
             }   
          }
       }
       //. call _ADD_USB_RT0X02_Request
       AddUsbRt0x02Request();       
    }
    //. RequestType80
    else if(_RequestType_0X80 && (TEMP_UREG==0x80))
    {//. Get Status
       TEMP_UREG = IAC0;
       
       if(_RT0X80_Request_0X00 && (TEMP_UREG == request_get_status))
       {//. GetDeviceStatus
          if(_USB_HUB && M_ISBC1(USB_STATUS))
          {
             HEP0TXCTR = 2;
             M_NOP;
             
             nHwLength = 0;
             /*
             HwLengthL = 0;
             HwLengthH = 0; 
             */
             _asm
              SHRA  _HGSR,3
              AND   A,#0b00000011
              MOV	_HEP0TXDAR,A
              NOP
              NOP
              NOP
              MOV   A,#0b00000000
              MOV   _HEP0TXDAR,A
              NOP
              NOP
              NOP
             _endasm;
             return; 
          }
          else
          {
             EP0TXCTR = 2;
             M_NOP;
             
             nwLength = 0;
             //wLengthL = 0;
             //wLengthH = 0;
             EP0TXDAR = 0;
             M_NOP;
             EP0TXDAR = 0;
             M_NOP;
             return;                       
          }
       }
       // Get Descriptor
       else if(_RT0X80_Request_0X06 && (TEMP_UREG == request_get_descriptor))
       {//. GetDescriptor
          IAP0++;
          M_NOP;
          TEMP_UREG = IAC0;
          if(_RT0X80_R0X06_Value0100 && (TEMP_UREG == descriptor_types_device))       
          {//. GetDeviceDescriptor
                       
             if(_USB_HUB && M_ISBS1(USB_STATUS))
             {//. HGetConfigDesc_1
             /*
                psz = &Hub_device_desc_table;
                HTBLL = *psz;
               */
                _asm
                  MOV A,#High(_Hub_device_desc_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_Hub_device_desc_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _HTBLL
                _endasm;                    
                
                //. call hTransmitTable
                HubTransmitTable();
                return;
             }
             else
             {//. FcConfigDescriptor
                //psz = &Fc_device_desc_table;
                //. JMP		FGetConfigDesc_1
                //TBLL = *psz;
                //. CALL fTransmitTable  
                _asm
                  MOV A,#High(_Fc_device_desc_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_Fc_device_desc_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;              
                
                fTransmitTable();
                return;
             } 
          }
          else if(_RT0X80_R0X06_Value0200 && (TEMP_UREG == descriptor_types_configuration))       
          {//. GetConfigDescriptor
          #if(_USB_HUB)
             if( M_ISBC1(USB_STATUS))
             {
                psz = &Hub_config_desc_table;
                HTBLL = *(psz+2);
                LTBL -=2;                          
                HubTransmitTable();
                return;             
             }
          #else
             
             {//. FcConfigDescriptor
                /*
                psz = &Fc_config_desc_table;
                TBLL = *(psz+2);
                LTBL -=2;
                */
                _asm
                  MOV A,#High(_Fc_config_desc_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_Fc_config_desc_table<<1)
                  MOV _LTBL,A
                  MOV A,#0x02
                  ADD _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                  SUB _LTBL,A
                _endasm;              
                
                fTransmitTable();
                return;
             }
          #endif            
          }
          else if(_RT0X80_R0X06_Value0300 && (TEMP_UREG == descriptor_types_string))       
          { //. STRING_COMMAND
             if(wValueL==0)
             {//. String_langid
                /*
                psz = &String_langid_table;
                TBLL = *psz;
                */
                _asm
                  MOV A,#High(_String_langid_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_String_langid_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;              
                
                fTransmitTable();
                return;
             }
             
             if(ET_USB_HD_iManufacture && (wValueL ==ET_USB_HD_iManufacture))
             {//. String_index_HManufacture
              //. call macro _ADD_USB_STRING_INDEX_HM
                /*
                psz = &String_index_HManufacture_table;
                TBLL = *psz;
                */
                _asm
                  MOV A,#High(_String_index_HManufacture_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_String_index_HManufacture_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;              
                
                fTransmitTable();
                return;
             }                 
             if(ET_USB_HD_iProduct && (wValueL == ET_USB_HD_iProduct))
             {//. String_index_HProduct
              //. call macro _ADD_USB_STRING_INDEX_HP
                /*
                psz = &String_index_HProduct_table;
                TBLL = *psz;
                */
                _asm
                  MOV A,#High(_String_index_HManufacture_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_String_index_HManufacture_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;              
                
                fTransmitTable();
                return;
             }  
             if(ET_USB_HD_iSerialNumber && (wValueL == ET_USB_HD_iSerialNumber))
             {//. String_index_HSerialNumber
              //. call macro _ADD_USB_STRING_INDEX_HS
              // null function
             }
             if(ET_USB_HC_iConfiguration && (wValueL == ET_USB_HC_iConfiguration))
             {//. String_index_HConfiguration
              //. call macro _ADD_USB_STRING_INDEX_HC
              // null function
             }
             if(ET_USB_HI_iInterface && (wValueL == ET_USB_HI_iInterface))
             {//. String_index_HInterface
              //. call macro _ADD_USB_STRING_INDEX_HI
              // null function
             }  
             if(ET_USB_DD_iManufacture && (wValueL == ET_USB_DD_iManufacture))
             {//. String_index_DManufacture
              //. call macro _ADD_USB_STRING_INDEX_HM
              // null function
              /*
                psz = &String_index_HManufacture_table;
                TBLL = *psz;
              */
              
                _asm
                  MOV A,#High(_String_index_DManufacture_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_String_index_DManufacture_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;              
                
                fTransmitTable();
                return;
             }              
             if(ET_USB_DD_iProduct && (wValueL == ET_USB_DD_iProduct))
             {//. String_index_DProduct
              //. call macro _ADD_USB_STRING_INDEX_HP
              // null function
              /*
                psz = &String_index_HProduct_table;
                TBLL = *psz;
              */
                _asm
                  MOV A,#High(_String_index_DProduct_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_String_index_DProduct_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;                    
                
                fTransmitTable();
                return;
             }  
             if(ET_USB_DD_iSerialNumber && (wValueL == ET_USB_DD_iSerialNumber))
             {//. String_index_DSerialNumber
              //. call macro _ADD_USB_STRING_INDEX_HS
                _asm
                  MOV A,#High(_String_index_DSerial_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_String_index_DSerial_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;                    
                
                fTransmitTable();
                return;              
              
              // null function
             }
             if(ET_USB_CD_iConfiguration && (wValueL == ET_USB_CD_iConfiguration))
             {//. String_index_DConfiguration
              //. call macro _ADD_USB_STRING_INDEX_HC
              // null function
             }                            
                        
          }         
       }  
       // Get Configuration 
       else if(_RT0X80_Request_0X08 && (TEMP_UREG ==request_get_configuration))
       {//. GetConfiguration
          if(_USB_HUB && M_ISBC1(USB_STATUS))
          {//. GetFcConfig
             HEP0TXCTR = 1;
             M_NOP;
             nHwLength = 0;
             if(M_ISBS5(HGSR))
             {
                HEP0TXDAR = 1;
             }
             else
             {
                HEP0TXDAR = 0;
             }
             M_NOP;
             return;  
          }
          else
          {

             EP0TXCTR = 1;
             M_NOP;
             nwLength = 0;
             if(M_ISBS4(FC_STATUS))
             {
                EP0TXDAR = 1;
             }
             else
             {
                EP0TXDAR = 0;
             }
             M_NOP;
             return;                      
                        
          }
       }
       //. call macro _ADD_USB_RT0X80_Request         
       AddUsbRt0x80Request();
    }// end of RequestType80
    
    //. RequestType81
    else if(_RequestType_0X81 && (TEMP_UREG == 0x81))
    {//. RequestType81
       TEMP_UREG = IAC0;
       if(_RT0X81_Request_0X00 && (TEMP_UREG ==request_get_status))
       {//. GetInterfaceStatus
           if(_USB_HUB && M_ISBC1(USB_STATUS))
           {
              HEP0TXCTR = 1;
              M_NOP;
              nHwLength = 0;
              HEP0TXDAR = 0;
              M_NOP;
              return;           
           }
           EP0TXCTR = 1;
           M_NOP;
           nwLength = 0;
           EP0TXDAR = 0;
           M_NOP;
           return;
       } 
       else if(_RT0X81_Request_0X06 && (TEMP_UREG == request_get_descriptor))
       {//. HID_report_descriptor
          if(_RT0X81_R0X06_Value2100 && (wValueH == descriptor_types_HID))
          {//. Descriptor_type_21
             if((wIndexL==0) && (_USB_HID))
             {// call macro _ADD_USB_HID_DESCRIPTION_SUB
             /*
                psz = &Descriptor_type_21_index00_table;
                TBLL = *psz;
              */
                _asm
                  MOV A,#High(_Descriptor_type_21_index00_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_Descriptor_type_21_index00_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;                    
                
              
               
                fTransmitTable();
                return;
             }
             // use #if to reduce code
             #if(ET_USB_CD_bNumInterface==2)
             if(wIndexL==1)
             {//. call macro _ADD_USB_HID_DESCRIPTION_SUB1

                _asm
                  MOV A,#High(_Descriptor_type_21_index01_table<<1)
                  MOV _HTBL,A
                  MOV A,#LOW(_Descriptor_type_21_index01_table<<1)
                  MOV _LTBL,A
                  NOP
                  NOP
                  TBRD _TBLL
                _endasm;                    
                  
                fTransmitTable();
                return;             
             }
             #endif
          
          }  
          if(_RT0X81_R0X06_Value2200 && (wValueH == descriptor_types_Report))
          {//. Descriptor_type_22
             #if(_USB_HID)          
             if((wIndexL==0))
             {//. call macro _ADD_USB_HID_REPORT_SUB1
                //psz = &Descriptor_type_22_index00_table;
                _asm
                  MOV A,#High(_Descriptor_type_22_index00_table<<1)
                  MOV _HTBL,A
                  MOV A,#Low(_Descriptor_type_22_index00_table<<1)
                  MOV _LTBL,A  
                _endasm;


                TBLL = ET_USB_HID_wDescriptorLength0;
                fTransmitTable();
                return;                 
             }
             #endif
             #if(ET_USB_CD_bNumInterface==2)
             if(wIndexL ==1)
             {//. call macro _ADD_USB_HID_REPORT_SUB2
             /*
                psz = &Descriptor_type_22_index01_table;
                TBLL = ET_USB_HID_wDescriptorLength1;
                */
                _asm
                  MOV A,#High(_Descriptor_type_22_index01_table<<1)

⌨️ 快捷键说明

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