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

📄 host20_ap.c

📁 FIC8120方案的 StartCell_Driver
💻 C
📖 第 1 页 / 共 5 页
字号:
              { if (*(sOTGH_PT_BLK->pbDataPage_In[0]+i+wOffset)!=*(sOTGH_PT_BLK->pbDataPage_Out[0]+i+wOffset))
                   {
                   	printf(">>> Error:BULK-IN/Out Fail (Expected data:%d/Received Data:%d (i=%d)\n",*(sOTGH_PT_BLK->pbDataPage_Out[0]+i+wOffset),*(sOTGH_PT_BLK->pbDataPage_In[0]+i+wOffset),i);	
	                printf(">>> Expected Address:0x%x  /Received Address:0x%x / Counter=%d\n",(UINT32)(sOTGH_PT_BLK->pbDataPage_Out[0]+i+wOffset),(UINT32)(sOTGH_PT_BLK->pbDataPage_In[0]+i+wOffset),wCounter);
	                OTGH_Error_Handle();
                   	}
              }
    //<8>.Print message
	      wCounter++;    
	      wTotalSize_Byte+=(wRandomSize*2)+88;
          if (wTotalSize_Byte>1000000)
             {wTotalSize_MB++;
              wTotalSize_Byte=wTotalSize_Byte-1000000;
             } 
	      
         if ((wCounter%wPrintCounter)==0)
   	    {if (psDevice_AP->bSpeed==HOST20_Attach_Device_Speed_Full)      
                printf(">>> Full Speed Bulk-IN/Out Test:PASS=(%d) (Address=0x%x) (Size=%d) (TotalSize=%dMB + %dBytes)...\n"
               ,wCounter,(UINT32)(sOTGH_PT_BLK->pbDataPage_Out[0]+wOffset),wRandomSize,wTotalSize_MB,wTotalSize_Byte);
             else 
                printf(">>> High Speed Bulk-IN/Out Test:PASS=(%d) (Address=0x%x) (Size=%d) (TotalSize=%dMB + %dBytes)...\n"
               ,wCounter,(UINT32)(sOTGH_PT_BLK->pbDataPage_Out[0]+wOffset),wRandomSize,wTotalSize_MB,wTotalSize_Byte);
            }


     
     if (wRandomSize>wSizeInterval)
        wRandomSize=wRandomSize-wSizeInterval;
     else
        wRandomSize=wRandomSizeMax;
        
     wOffset++;
     if (wOffset>wOffsetMax)
         wOffset=0;         
    };

  printf(">>> Finish Bulk In/Out Test PASS (%d)... \n",wInputCounter);
	
  OTGH_PT_Bulk_Close();
	
	   printf(">>> Again(1/2->y/n):");  
       scanf("%d",&bTemp);    	
	   printf("\n");
  }while(bTemp==1);	
	
 free(pbData);
 
 
}

//====================================================================ok
// * Function Name: OTGH_PT_ISO_IN                          
// * Description: The ISO-In path test function call
//   <1>.Input the Test counter
//   <2>.Issue the ISO-IN command
//   <3>.Compare data the receiving data
// * Input: none
// * OutPut: none
//====================================================================
UINT32 wDebug;
void OTGH_PT_ISO_IN(void)
{
	UINT32 wInputCounter,wCounter,j,wMaxPacketSize,wSize,wOffset,i,wOffsetTemp,wTotalSize_Byte,wTotalSize_MByte;
    UINT8 *pbData;
    UINT32 wOffsetIncrement,wOffsetMax,wSizeIncrement,wSizeMax,wPrintCounter;
    UINT8 bMult,bTemp;

  flib_Host20_Asynchronous_Setting(HOST20_Disable);


	
   //<1>.Input the Test counter
   if (OTGH_PT_ADVANCE_TEST==0)
      {
      printf(">>> Free Run 1000 times:\n");
      wInputCounter=1000;	//10000000
      wPrintCounter=1;
      }else
	   {
	   printf(">>> Please Input the ISO-IN (1020 Bytes) counter:");  
       scanf("%d",&wInputCounter);   
       printf("\n");     
       
	   printf(">>> Please Input the 'Print Message'  counter:");  
       scanf("%d",&wPrintCounter);         
       printf("\n");       
       }



   //<2>.Allocate buffer for In Data => Support 24K*100=2400K=2.4M
         for(i=0;i<OTGH_PT_ISO_DATABUFFER_NUM;i++)
	         sOTGH_PT_ISO.aDataBufferArray[i]=flib_Host20_GetStructure(Host20_MEM_TYPE_4K_BUFFER);          
    
    


    
   flib_Host20_ISO_Init();


   wMaxPacketSize=psDevice_AP->saCD[0].sInterface[0].sED[0].bED_wMaxPacketSizeHighByte;
   wMaxPacketSize=((wMaxPacketSize<<8)+psDevice_AP->saCD[0].sInterface[0].sED[0].bED_wMaxPacketSizeLowByte);
   bTemp=wMaxPacketSize>>11;
   switch(bTemp)
         {
         case 0:
               bMult=1;
         break;
         case 1:
               bMult=2;
         break;
         case 2:
               bMult=3;         
         break;
         default:
               printf("??? MaxPacketSize Parse Error...\n");
               while(1);
         break;	
         	
         	
         }
   

   wMaxPacketSize=wMaxPacketSize&0x7FF;

   wCounter=0;



   if (psDevice_AP->bSpeed==0)
            {
             //wSizeIncrement=wMaxPacketSize*3;//*8; //(3=Mult / 8uframes )	
             //wSizeMax=500*wMaxPacketSize;//For Full Speed
             wSizeIncrement=wMaxPacketSize*8;//*8; //(3=Mult / 8uframes )	
             wSizeMax=8*wMaxPacketSize;//For Full Speed
             
            }                   //(Max=500 iTD / 1iTD Min=64bytes => 500*64 = 32K)
         else                    
         	{
         	//wSizeIncrement=wMaxPacketSize*bMult*100;//*8; //(3=Mult / 8uframes )
         	wSizeIncrement=wMaxPacketSize*8;	
         	//wSizeMax=256*1024;//For High Speed
         	                  //(Total iTD=1024 => use 500 iTD => 1 iTD = 64*1*8=512 bytes)=>500*512 = 250K
            wSizeMax=wMaxPacketSize*8;//For High Speed

         	}                  
   wSize=wSizeIncrement;

   
   wOffset=0; 
   wOffsetIncrement=101;
   wOffsetMax=4096-1;
   wTotalSize_Byte=0;
   wTotalSize_MByte=0;
  while(wCounter<wInputCounter)
    {
      wCounter++;
      
	//<3>.Issue the ISO-IN command
	
	     if ((psDevice_AP->bDeviceOnHub==1)
	         &(sAttachDevice.bSpeed==HOST20_Attach_Device_Speed_High)
	         &(psDevice_AP->bSpeed==HOST20_Attach_Device_Speed_Full))//Full-Device + High-Hub	
	         flib_Host20_Issue_ISO_siTD (1,1,wMaxPacketSize,wSize
	                          ,&(sOTGH_PT_ISO.aDataBufferArray[0]),wOffset,OTGH_Dir_IN,bMult);
         else	
	         flib_Host20_Issue_ISO (1,1,wMaxPacketSize,wSize
	                          ,&(sOTGH_PT_ISO.aDataBufferArray[0]),wOffset,OTGH_Dir_IN,bMult);
	
	                             
	//<4>.Compare data the receiving data
          pbData=sOTGH_PT_ISO.aDataBufferArray[0]+wOffset;	
          wOffsetTemp=wOffset;
	      for (j=0;j<wSize;j++)
	          {
	          if (sOTGH_PT_ISO.bDataCounter!=*(pbData+j))
	             {printf(">>> Error:ISO-IN Fail (Expected data:0x%x/Received Data:0x%x\n"
	                    ,(UINT32)(sOTGH_PT_ISO.bDataCounter),(UINT32)*(pbData+j));
	              printf("    Received Data Address:0x%x / Size = 0x%d\n"
	                    ,(UINT32)(pbData+j),(UINT32)wSize);
	                    	
	              OTGH_Error_Handle();
	             }
	          sOTGH_PT_ISO.bDataCounter++;	
	          if (sOTGH_PT_ISO.bDataCounter>=sOTGH_PT_ISO.bDataMax)
	             sOTGH_PT_ISO.bDataCounter=0;
	             
	             
	          }
  
  //printf(">>> Current sOTGH_PT_ISO.bDataCounter=0x%x\n",(UINT32)sOTGH_PT_ISO.bDataCounter);
  
  wTotalSize_Byte=wTotalSize_Byte+wSize;
  if (wTotalSize_Byte>(1024*1024))
     {
     wTotalSize_MByte++;
     wTotalSize_Byte=wTotalSize_Byte-(1024*1024);
     }
 
  
  
  
  if ((wCounter%wPrintCounter)==0)
     {
       if (psDevice_AP->bSpeed==HOST20_Attach_Device_Speed_Full)
          printf(">>> Full Speed ISO IN Test:(Current Size=%d / Current Offset = %d) Total Size=%dMB + %dBytes PASS...=====> Counter=%d \n"
              ,wSize,wOffset,wTotalSize_MByte,wTotalSize_Byte,wCounter);
       else
          printf(">>> High Speed ISO IN Test:(Current Size=%d / Current Offset = %d) Total Size=%dMB + %dBytes PASS...=====> Counter=%d \n"
              ,wSize,wOffset,wTotalSize_MByte,wTotalSize_Byte,wCounter);
       
     
     }



  wOffset=wOffset + wOffsetIncrement;
  if (wOffset>=wOffsetMax)
     wOffset=0;


  
  wSize=wSize+wSizeIncrement;
  if (wSize>wSizeMax)
        wSize=wSizeIncrement;


  //if (wSize>wSizeIncrement)
  //    wSize=wSize-wSizeIncrement;
  //else wSize=wSizeMax;
  

  
    };

  printf(">>> ISO IN Test:PASS (%d) \n",wInputCounter);
	
  //<5>.Free the allocated Buffer
        for(i=0;i<OTGH_PT_ISO_DATABUFFER_NUM;i++)
             flib_Host20_ReleaseStructure(Host20_MEM_TYPE_4K_BUFFER,sOTGH_PT_ISO.aDataBufferArray[i]);

        flib_Host20_Periodic_Setting(HOST20_Disable);

	
 flib_Host20_Asynchronous_Setting(HOST20_Enable);	
	
	
}
//====================================================================ok
// * Function Name: OTGH_PT_ISO_Out                          
// * Description: The ISO-Out path test function call
//   <1>.Input the Test counter
//   <2>.Prepare sending data
//   <3>.Issue the ISO-Out command
// * Input: none
// * OutPut: none
//====================================================================
void OTGH_PT_ISO_Out(void)
{
    UINT32 wInputCounter,wCounter,j,wMaxPacketSize,wSize,wOffset,i,wOffsetIncrement,wOffsetMax;
    UINT8 *pbData;
    UINT8 bDataCounter;
    UINT32 wSizeMax,wSizeIncrement,wPrintCounter,wTotalSize_Byte,wTotalSize_MByte;
    UINT8 bMult,bTemp;
    
	//<1>.Input the Test counter
   if (OTGH_PT_ADVANCE_TEST==0)
      {
      printf(">>> Free Run 1000 times:\n");
      wInputCounter=1000;	//10000000
      wPrintCounter=1;
      }else
	   {
	     printf(">>> Please Input the ISO_Out counter:");  
         scanf("%d",&wInputCounter);  
         printf("\n");

	   printf(">>> Please Input the 'Print Message'  counter:");  
       scanf("%d",&wPrintCounter);         
       printf("\n");       
      } 
   
   //<2>.Allocate buffer for In Data => Support 24K*100=2400K=2.4M
         for(i=0;i<OTGH_PT_ISO_DATABUFFER_NUM;i++)
	         sOTGH_PT_ISO.aDataBufferArray[i]=flib_Host20_GetStructure(Host20_MEM_TYPE_4K_BUFFER);          
   
  
   
   flib_Host20_ISO_Init();

   wMaxPacketSize=psDevice_AP->saCD[0].sInterface[0].sED[0].bED_wMaxPacketSizeHighByte;
   wMaxPacketSize=((wMaxPacketSize<<8)+psDevice_AP->saCD[0].sInterface[0].sED[0].bED_wMaxPacketSizeLowByte);
   bTemp=wMaxPacketSize>>11;
   switch(bTemp)
         {
         case 0:
               bMult=1;
         break;
         case 1:
               bMult=2;
         break;
         case 2:
               bMult=3;         
         break;
         default:
               printf("??? MaxPacketSize Parse Error...\n");
               while(1);
         break;	
         	
         	
         }
    wMaxPacketSize=wMaxPacketSize&0x7FF;   
 
       
   wCounter=0;
   wTotalSize_Byte=0;
   wTotalSize_MByte=0;   
  if (psDevice_AP->bSpeed==0)//For Full Speed
            {
             wSizeIncrement=wMaxPacketSize*8;//3;//*8; //(3=Mult / 8uframes )	
             //wSizeMax=500*wMaxPacketSize;//For Full Speed
             wSizeMax=8*wMaxPacketSize;
            }                   //(Max=512 iTD / 1iTD Min=512 => 512*512 = 256K)
         else                    
         	{
         	//wSizeIncrement=wMaxPacketSize*bMult*10;//*8; //(3=Mult / 8uframes )	
         	//wSizeMax=256*1024;//For High Speed
         	                  //(Total iTD=1024 => use 500 iTD => 1 iTD = 64*1*8=512 bytes)=>500*512 = 250K
         	wSizeIncrement=wMaxPacketSize*8;
         	wSizeMax=8*wMaxPacketSize;
         	}                  
   wSize=wSizeIncrement;

   wOffset=0; 
   wOffsetIncrement=101;
   wOffsetMax=4096-1;   
  
  while(wCounter<wInputCounter)
    {
      wCounter++;
      //wSizeMax=128*1024;
      //wSize=99840;
      //wOffset=3030;
      
	//<2>.Prepare sending data
	
	       pbData=sOTGH_PT_ISO.aDataBufferArray[0]+wOffset;
	       bDataCounter=sOTGH_PT_ISO.bDataCounter;
	       
	      for (j=0;j<wSize;j++)
	          {
	           *pbData++=bDataCounter++;
	           if (bDataCounter>=sOTGH_PT_ISO.bDataMax)
	               bDataCounter=0;
	          }	
	       sOTGH_PT_ISO.bDataCounter=bDataCounter;   
	//<3>.Issue the ISO-Out command
	     flib_Host20_Issue_ISO (1,1,wMaxPacketSize,wSize
	                          ,&(sOTGH_PT_ISO.aDataBufferArray[0]),wOffset,OTGH_Dir_Out,bMult);


  wTotalSize_Byte=wTotalSize_Byte+wSize;
  if (wTotalSize_Byte>(1024*1024))
     {
     wTotalSize_MByte++;
     wTotalSize_Byte=wTotalSize_Byte-(1024*1024);
     }



  if ((wCounter%wPrintCounter)==0)
     {
       if (psDevice_AP->bSpeed==HOST20_Attach_Device_Speed_Full)
           printf(">>> Full Speed ISO-Out data : (Size =%d / wOffset =%d)Total Size=%dMB + %dBytes =========> Counter=%d \n"

⌨️ 快捷键说明

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