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

📄 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 页
字号:
                  MOV _HTBL,A
                  MOV A,#Low(_Descriptor_type_22_index01_table<<1)
                  MOV _LTBL,A  
                _endasm;
                TBLL = ET_USB_HID_wDescriptorLength0;                  
                fTransmitTable();
                return;             
             }
             #endif   
          }       
          else if(_RT0X81_R0X06_Value2300 && (wValueH == descriptor_types_Physical))
          {//. Descriptor_type_23
          //. call macro _ADD_USB_HID_PHYSCIAL_SUB
          
          
          }            
       }   
       else if(_RT0X81_Request_0X0A && (TEMP_UREG == request_get_interface))
       {//. GetInterface
           if(_USB_HUB && M_ISBC1(USB_STATUS))
           {
              HEP0TXCTR = 1;
              M_NOP;
              nHwLength = 0;
              _asm
                MOV A,#0x00
                MOV _HEP0TXDAR,A
              _endasm;  

              M_NOP;
              return;           
           }
           //. GetFcInterfaceStatus
           EP0TXCTR = 1;
           M_NOP;
           nwLength = 0;
           _asm
             MOV A,#0x00
             MOV _EP0TXDAR,A
           _endasm; 
           M_NOP;
           return;                  
       }
           
    }// end of RequestType81    
    else if(_RequestType_0X82 && (TEMP_UREG == 0x82))
    {//. RequestType82
       if(_RT0X82_Request_0X00 && (IAC0 == request_get_status))
       {//. GetEndpointStatus
          if(_USB_HUB && M_ISBS1(USB_STATUS))
          {
             _asm
              MOV A,#_HEP0RXCSR
              MOV _IAP0,A
             _endasm;
                   
             if(HwIndexL!=0)
                IAP0++;   
             else if(HwIndexL!=hub_endpoint80)
                IAP0++;

             HEP0TXCTR = 2;
             nHwLength = 0;
             if(M_ISBS1(IAC0))
                HEP0TXDAR = 1;
             else
             {
                _asm
                 MOV A,#0x00
                 MOV _HEP0TXDAR,A
                _endasm; 
              //  HEP0TXDAR = 0;         
             }   
                   
             M_NOP;
             return;     
         
          }
          //. GetFcEndpointStatus
          usb_byTemp = wIndexL;
          switch(usb_byTemp)
          {
             case 0: //. check_fc_ep00
             {
                _asm
                  MOV A,#_EP0TXCSR
                _endasm;
                             
             }
             case 1: //. check_fc_ep01
             {
                if(_USB_EP1 && (_USB_EP1_DIR == _OUT_DIR))
                {
                   _asm
                     MOV A,#_EP1CSR
                   _endasm;                     
                }  
                else 
                   break; 
             }
             case 2: //. check_fc_ep02
             {
                if(_USB_EP2 && (_USB_EP2_DIR == _OUT_DIR))
                {
                   _asm
                     MOV A,#_EP2CSR
                   _endasm;                     
                }      
                else
                   break;
             }
             case 3: //. check_fc_ep03
                break;
             
             case 80: //. check_fc_ep80
             {
                _asm 
                  MOV A,#_EP0RXCSR
                _endasm;              
                                
             }
             case 81: //. check_fc_ep81
             {
                if(_USB_EP1 && (_USB_EP1_DIR == _IN_DIR))
                {
                    _asm
                     MOV A,#_EP1CSR
                   _endasm;
                     
                }      
                else 
                   break;
             }
             case 82: //. check_fc_ep82
             {
                if(_USB_EP2 && (_USB_EP2_DIR == _IN_DIR))
                {
                   _asm
                     MOV A,#_EP2CSR
                   _endasm;                     
                }      
                else 
                   break;
             }
             case 83: //. check_fc_ep83
             {
                break;
             }
             default:
             //. check_fc_end
              _asm
                MOV _IAP0,A
              _endasm;
              EP0TXCTR = 1;
              M_NOP;
              nwLength = 0;
              if(M_ISBS1(IAC0))
                 EP0TXDAR = 1;
              else
                 EP0TXDAR = 0;
              return;              
          }

       }
       //. call macro _ADD_USB_RT0X82_Request
       AddUsbRt0x82Request();
       //goto  UNKNOWN_bRequest;
    }
    
    else if(_RequestType_0X20 && (TEMP_UREG == 0x20))
    {//. RequestType20
       TEMP_UREG = IAC0;
       if(_RT0X20_Request_0X01 && (TEMP_UREG == request_clear_feature) && _USB_HUB)
       {//. ClearHubFeature
          if(HwValueL == c_hub_local_power)
          {//. ClearLocalPowerChange
             M_BC2(HSR);
          }
          else if(HwValueL == c_hub_over_current)
          {//. ClearOverCurrentChange
             M_BC3(HSR);
          }
          M_BC0(STATUS_BUF);
          M_NOP;
          return;             
       }
       else if(_RT0X20_Request_0X03 && (TEMP_UREG == request_set_feature) &&_USB_HUB )
       {//. SetHubFeature
             return;
       }  
       else if(_RT0X20_Request_0X06 && (TEMP_UREG == request_set_descriptor))
       {//. SetHubDescriptor
       
       
       }
       //. call macro _ADD_USB_RT0X20_Request
       AddUsbRt0x20Request();       

    }
    else if(_RequestType_0X21 && (TEMP_UREG == 0x21))
    {//. RequestType21
       TEMP_UREG = IAC0;
       if(_RT0X21_Request_0X09 && (TEMP_UREG == request_set_report))
       {//. SetReport
          M_BS2(FC_STATUS);
          return;       
       } 
       if(_RT0X21_Request_0X0A && (TEMP_UREG == request_set_idle))
       {//. SetIdleReport
          IDLE_TIMER = wValueH;
          EP0TXCTR = 0;
          M_NOP;
          return;       
       }     
       if(_RT0X21_Request_0X0B && (TEMP_UREG == request_set_protocol))
       {//. SetProtocolReport
          PROTOCOL = wValueL;
          EP0TXCTR = 0;
          M_NOP;
          return;       
       }         
       //. call macro  _ADD_USB_RT0X21_Request
       AddUsbRt0x21Request();
    }
    else if(_RequestType_0X23 && (TEMP_UREG == 0x23))
    {//. RequestType23
       TEMP_UREG = IAC0;
       if(_RT0X23_Request_0X01 &&(TEMP_UREG==request_clear_feature))
       {//. ClearPortFeature
          if(_USB_HUB)
          {
             unsigned char temp=HwIndexL;
             temp--;
             // check port number = 1~4 ?
             if((252 & temp))
             {
                M_BS0(USB_STATUS);
                return;          
             }
             else if(HwValueL == port_enable)
             {//. ClearPort_ENABLE
                HPCONR = HwIndexL + 152;// 0b10011000
                M_NOP;
                return;
             }
             else if(HwValueL == port_suspend)
             {//. ClearPortSuspend
                HPCONR = HwIndexL + 160;// 0b10100000
                M_NOP;
                return;
             }  
             else if(HwValueL == port_power)
             {//. ClearPortPower
                HPCONR = HwIndexL + 168;// 0b10101000
                M_NOP;
                return;
             }
             
             if(HwIndexL ==1 )
                M_BC1(STATUS_BUF);
             else if(HwIndexL ==2 )
                M_BC2(STATUS_BUF);
             else if(HwIndexL ==3 )
                M_BC3(STATUS_BUF);
             else if(HwIndexL ==4 )
                M_BC4(STATUS_BUF);   
             
             if(!(30 & STATUS_BUF))
                M_BS3(HUB_STATUS);
             
             //. ClearPortFeature_change
             if(HwValueL == c_port_connection)
             {//. ClearPortConnectionChange
              //. CALL	SEARCH_CHANGE_PORT
                SearchChangePort();
                M_BC0(IAC0);
                M_NOP;
                return;
             }
             else if(HwValueL == c_port_enable)
             {//. ClearPort_ENABLEChange
              //. CALL	SEARCH_CHANGE_PORT
                SearchChangePort();
                M_BC1(IAC0);
                M_NOP;
                return;
             }
             else if(HwValueL == c_port_suspend)
             {//. ClearPortSuspendChange
              //. CALL	SEARCH_CHANGE_PORT
                SearchChangePort();
                M_BC2(IAC0);
                M_NOP;
                return;
             }
             else if(HwValueL == c_port_over_current)
             {//. ClearPortOverCurrentChange
              //. CALL	SEARCH_CHANGE_PORT
                SearchChangePort();
                M_BC3(IAC0);
                M_NOP;
                return;
             }
             else if(HwValueL == c_port_reset)
             {//. ClearPortResetChange
              //. CALL	SEARCH_CHANGE_PORT
                SearchChangePort();
                M_BC4(IAC0);
                M_NOP;
                return;
             }
          }
       }
       else if(_RT0X23_Request_0X03 &&(TEMP_UREG==request_set_feature))
       {//. SetPortFeature
         if(_USB_HUB)
         {
            unsigned char temp=HwIndexL;
            temp--;
            // check port number = 1~4 ?
            if((252 & temp))
            {
                M_BS0(USB_STATUS);
                return;          
            }            
            if(HwValueL == port_reset)
            {//. SetPortReset
               HPCONR = HwIndexL + 136;//0b10001000
               M_NOP;
               //.//Embedded port?
               if(temp==1)
               {
                  M_BS4(GCNTR);
                  M_NOP;
                  FAR = 0;
                  M_NOP;
                  ADDRESS_BUFf = 0;
               }
               return;            
            }
            if(HwValueL == port_power)
            {//. SetPortPower
               HPCONR = HwIndexL + 144;//0b10010000
               M_NOP;
               return;            
            }
            if(HwValueL == port_suspend)
            {//. SetPortSuspend
               if(temp==1)
               {
                  M_NOP;
               }
               HPCONR = HwIndexL + 128;//0b10010000
               M_NOP;
               return;            
            }
            return;         
         }
       
       }
       //. call macro _ADD_USB_RT0X23_Request
       AddUsbRt0x23Request();
    }
    else if(_RequestType_0XA0 && (TEMP_UREG == 0xA0))
    {//. RequestTypeA0
       TEMP_UREG = IAC0;
       if(_RT0XA0_Request_0X00 &&(TEMP_UREG==request_get_status) && _USB_HUB)
       {//. GetHubStatus
             HEP0TXCTR = 4;
             nHwLength = 0;
             HEP0TXDAR = HSR + 3;
             M_NOP;
             _asm
               MOV A,#0x00
               MOV _HEP0TXDAR,A
             _endasm;  
             M_NOP;
             _asm
               MOV A,_HSR
               SHRA _HSR,2
               AND A,#0b00000011
               MOV _HEP0TXDAR,A
             _endasm;
             M_NOP;
             _asm
               MOV A,#0x00
               MOV _HEP0TXDAR,A
             _endasm;  
             M_NOP;
             
             return;            
       }
       else if(_RT0XA0_Request_0X06 &&(TEMP_UREG==request_get_descriptor) && _USB_HUB)
       {//. GetHubDescriptor 
          //   psz = &Hub_class_desc_table;
         //    HTBLL = *psz;
          //   HubTransmitTable();
             return;
       }
       //. call macro _ADD_USB_RT0XA0_Request
       AddUsbRt0xA0Request();
    }    
    else if(_RequestType_0XA1 && (TEMP_UREG == 0xA1))
    {//. RequestTypeA1
       TEMP_UREG = IAC0;
       if(_RT0XA1_Request_0X01 &&(TEMP_UREG==request_get_report))
       {//. GetReport
          M_BS5(FC_STATUS);
          //. call macro _ADD_USB_GET_REPORT_SUB
          AddUsbGetReportSub();
          return;
       }
       else if(_RT0XA1_Request_0X02 &&(TEMP_UREG==request_get_idle))
       {//. GetIdleReport
          EP0TXCTR = 1;
          M_NOP;
          EP0TXDAR = IDLE_TIMER;
          M_NOP;
          return;
       }
       else if(_RT0XA1_Request_0X03 &&(TEMP_UREG==request_get_protocol))
       {//. GetProtocolReport
          EP0TXCTR = 1;
          M_NOP;
          EP0TXDAR = PROTOCOL;
          M_NOP;
          return;
       }
       //. call macro  _ADD_USB_RT0XA1_Request
       AddUsbRt0xA1Request();
    }
    else if(_RequestType_0XA3 && (TEMP_UREG == 0xA3))
    {//. RequestTypeA3
       TEMP_UREG = IAC0;
       if(_RT0XA3_Request_0X00 &&(TEMP_UREG==request_get_status) && _USB_HUB)
       {//. GetPortStatus
             unsigned char temp=HwIndexL;
             temp--;
             if((252 & temp))
             {
                M_BS0(USB_STATUS);
                return;          
             }
             HEP0TXCTR = 4;
             M_NOP;
             nHwLength = 0;
             
             _asm
               MOV A,#_HSR
               ADD A,_HwIndexL
               MOV _IAP0,A
               NOP
               MOV A,_IAC0
               DEC _IAP0
               AND A,#0b00011111
               MOV _HEP0TXDAR,A
             _endasm;
             
             M_NOP;
             
             _asm
               RLCA	_IAC0,4
               AND	A,#0b00000011
               MOV	_HEP0TXDAR,A
             _endasm;
              
             M_NOP;
            
             _asm
               MOV	A,#_HPSR4-_HSR-1
               ADD	_IAP0,A
               NOP
               MOV	A,_IAC0
               AND	A,#0b00011111
               MOV	_HEP0TXDAR,A
             _endasm;
            
             M_NOP;
            
             _asm
               MOV	A,#0b00000000
               MOV	_HEP0TXDAR,A
             _endasm;  
            
             M_NOP;
             return;             
       }
       else if(_RT0XA3_Request_0X02 &&(TEMP_UREG==request_get_state) && _USB_HUB)
       {//. GetBusState
             unsigned char temp;
             
             HEP0TXCTR = 1;
             M_NOP;
             nHwLength = 0;
             
             temp=HwIndexL;
             temp--;
             if((252 & temp))
             {
                M_BS0(USB_STATUS);
                return;          
             }                
             if(HwIndexL == 1)
             {//. Port1State
                _asm
                  MOV	A,_HPSTAR1
                _endasm;  
             }
             else if(HwIndexL == 2)
             {//. Port2State
                _asm
                  SHRA _HPSTAR1,2
                _endasm;
             }
             else if(HwIndexL == 3)
             {//. Port3State
                _asm
                  SHRA	_HPSTAR1,4
                _endasm;             
             }  
             else if(HwIndexL == 4)
             {//. Port3State
                _asm
                  RLCA	_HPSTAR1,3
                _endasm;             
             }  
             //. put_data
             _asm
               AND A,#0b00000011
             _endasm;  
             if(M_ISBC2(STATUS))
             {
                _asm
                  XOR A,#0b00000011
                _endasm;
             }
             _asm
              MOV _HEP0TXDAR,A
             _endasm;   
            
             M_NOP;
             return;    
       }
       //. call macro _ADD_USB_RT0XA3_Request
       AddUsbRt0xA3Request();
       return;
    }
    else
    {
    //. call macro _ADD_USB_bmRequestType
       AddUsbBmRequestType();
       return;
    }
/*
UNKNOWN_bRequest:  
UNKNOWN_wValueL:
UNKNOWN_wIndex:
UNKNOWN_wLength:
UNDEFINE_COMMAND:
*/
    M_BS0(USB_STATUS);
    return;
    
}

⌨️ 快捷键说明

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