亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uart_vfifo.c

?? uart全功能實現.實現如下函數: U_Open, U_Close, U_GetBytes, U_PutBytes, U_GetBytesAvail, U_GetTxRoomL
?? C
?? 第 1 頁 / 共 3 頁
字號:
	         DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART3,PDN_UART3);
	         #endif
	         break;
	#endif   /*__UART3_SUPPORT__*/
	      default:
	         ASSERT(0);
	         break;
	   }
   }
   real_count = DMA_GetVFIFO_Roomleft(ch);
#ifdef VFIFO_DBG
{
	kal_char s[50];
	sprintf(s,"uart_putbytes,len %d,left %d",Length,real_count);
	kal_print(s);
}
#endif

   if (real_count >= Length)
   {
      real_count = Length;
   }
   else
   {
      send_Txilm[port] = KAL_TRUE;
      DMA_EnableINT(ch);
   }
   if(ownerid==MOD_TST_READER)
   {
      for (index = 0; index < real_count; index++)
      {
      	savedMask = SaveAndSetIRQMask();   
      	if(!IS_VFIFO_FULL(ch))
      	{
      		DMA_PUSH(ch,*(Buffaddr+index));
      	}	
      	else
      	{
      	   real_count=index;
      	   send_Txilm[port] = KAL_TRUE;
      	   DMA_EnableINT(ch);      	   
      	   RestoreIRQMask(savedMask);	
      	   break;
      	 }   
          RestoreIRQMask(savedMask);	
      }
   }   
   else/*not TST */
   {
      for (index = 0; index < real_count; index++)
      {
      	DMA_PUSH(ch,*(Buffaddr+index));
      }      
   }      
   /*invoke THRE interrupt*/
   //EnableTxIntr(UART_BaseAddr[port]);
   return real_count;
#else /*DRV_DEBUG*/
   return Length;
#endif /*DRV_DEBUG*/
}
kal_uint16 U_PutISRBytes_VFIFO(UART_PORT port, kal_uint8 *Buffaddr, kal_uint16 Length, module_type ownerid)
{
	kal_uint8 ch = UARTPort[port].Tx_DMA_Ch;
#ifndef DRV_DEBUG
   kal_uint16  real_count,index;
    
	EXT_ASSERT( (UARTPort[port].ownerid == ownerid), (kal_uint32) ownerid, (kal_uint32)port, (kal_uint32)UARTPort[port].ownerid);
   if(UARTPort[port].EnableTX == KAL_FALSE)
   {
   	return Length;
   }
   if (UARTPort[port].sleep_on_tx == uart_sleep_on_tx_forbid)
   {
	   switch(port)
	   {
	      case uart_port1:
	         DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART1,PDN_UART1);
	         break;
	      case uart_port2:
	         DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART2,PDN_UART2);
	         break;
	#ifdef __UART3_SUPPORT__
	      case uart_port3:
	         #if ( (defined(MT6219))||defined(MT6226M)||(defined(MT6228))|| defined(MT6229)|| (defined(MT6226))|| (defined(MT6227)) )
	         DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART3,PDN_UART3);
	         #endif
	         break;
	#endif   /*__UART3_SUPPORT__*/
	      default:
	         ASSERT(0);
	         break;
	   }
   }
   real_count = DMA_GetVFIFO_Roomleft(ch);
#ifdef VFIFO_DBG
{
	kal_char s[50];
	sprintf(s,"uart_putbytes,len %d,left %d",Length,real_count);
	kal_print(s);
}
#endif

   if (real_count >= Length)
   {
      real_count = Length;
   }
   else
   {
      send_Txilm[port] = KAL_TRUE;
      DMA_EnableINT(ch);
   }
   
   for (index = 0; index < real_count; index++)
   {   	
   	DMA_PUSH(ch,*(Buffaddr+index));   		
   }
   /*invoke THRE interrupt*/
   //EnableTxIntr(UART_BaseAddr[port]);
   return real_count;
#else /*DRV_DEBUG*/
   return Length;
#endif /*DRV_DEBUG*/
}
kal_uint16 U_SendData_VFIFO(UART_PORT port, kal_uint8 *Buffaddr, kal_uint16 Length,kal_uint8 mode,kal_uint8 escape_char, module_type ownerid)
{
#ifndef DRV_DEBUG
    kal_int16   real_count,index;
    kal_uint8   data;
    kal_uint8 ch = UARTPort[port].Tx_DMA_Ch;
    kal_uint32  savedMask;

   EXT_ASSERT( (UARTPort[port].ownerid == ownerid), (kal_uint32) ownerid,  (kal_uint32)port, (kal_uint32)UARTPort[port].ownerid);
   
   if(UARTPort[port].EnableTX == KAL_FALSE)
   {
   	return Length;
   }      
   
   if( (stack_query_boot_mode()== FACTORY_BOOT && UARTPort[port].DCB.flowControl==fc_sw)||
    (uart_support_autoescape()==KAL_FALSE) )
   {
      if(mode == 0)
          real_count = UART_PutBytes(port, Buffaddr, Length, ownerid);
      else
      {
        if (UARTPort[port].sleep_on_tx == uart_sleep_on_tx_forbid)
        {
           switch(port)
           {
              case uart_port1:
                 DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART1,PDN_UART1);
                 break;
              case uart_port2:
                 DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART2,PDN_UART2);
                 break;
        #ifdef __UART3_SUPPORT__
              case uart_port3:
                 #if ( (defined(MT6219))||defined(MT6226M)||(defined(MT6228))|| defined(MT6229)|| (defined(MT6226))|| (defined(MT6227)) )
                 DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART3,PDN_UART3);
                 #endif
                 break;
        #endif   /*__UART3_SUPPORT__*/
              default:
                 ASSERT(0);
                 break;
           }
        }
        
	   real_count = DMA_GetVFIFO_Roomleft(ch);
      #ifdef VFIFO_DBG
      {
      	char s[50];
      	sprintf(s,"uart_SendData,len %d,left %d",Length,real_count);
      	kal_print(s);
      }
      #endif
      
	   if (real_count > Length)
	   {
	      real_count = Length;
	   }
	   else
	   {
	      send_Txilm[port] = KAL_TRUE;
	      DMA_EnableINT(ch);
	   }
      
         for (index = 0; index < real_count; index++)
         {
	   	   data = *(Buffaddr+index);
	   	
	   	if (data == UARTPort[port].DCB.xonChar)
	   	{   
	   	   savedMask = SaveAndSetIRQMask(); 		     					
      		if(!IS_VFIFO_FULL(ch))
	   		{
	   		     DMA_PUSH(ch,escape_char);
	   		     DMA_PUSH(ch,0x01);
	   		}    
      		else
      		{
      			RestoreIRQMask(savedMask);	
      	   	break;
      		}   
         	RestoreIRQMask(savedMask);				
	   		 
	   	}
 	   	else if (data == UARTPort[port].DCB.xoffChar)
	   	{
	   	    savedMask = SaveAndSetIRQMask(); 	
      		if(!IS_VFIFO_FULL(ch))
	   		{
	   		     DMA_PUSH(ch,escape_char);
	   		     DMA_PUSH(ch,0x02);
	   		}     
	   		else
      		{
      			RestoreIRQMask(savedMask);	
      	   	break;
      		}  
         	RestoreIRQMask(savedMask);				
      					
	   	}
        		else if (data == escape_char)
	   	{
	   	   savedMask = SaveAndSetIRQMask(); 		     					
	   		if(!IS_VFIFO_FULL(ch))
	   		{
	   		     DMA_PUSH(ch,escape_char);
	   		     DMA_PUSH(ch,0x03);
	   		}     
	   		else
      		{
      			RestoreIRQMask(savedMask);				
      	   	break;
      		}  			     
	   		      	RestoreIRQMask(savedMask);				
      
	   	}
	   	 else
	   	 {
	   	   savedMask = SaveAndSetIRQMask(); 		     							 	
	   	   if(!IS_VFIFO_FULL(ch))
	   		{
	   	   	DMA_PUSH(ch,data);
	   	   }	
	   		else
      		{
      			RestoreIRQMask(savedMask);	
      	   	break;
      		} 	
      		RestoreIRQMask(savedMask);				
      
	   	 }
	   	
         }
         real_count = index;
      
	   }   
	}
	else
	{
     real_count = UART_PutBytes(port, Buffaddr, Length, ownerid);
   }   
   /*invoke THRE interrupt*/
   //EnableTxIntr(UART_BaseAddr[port]);
   return real_count;
#else
    return Length;
#endif
}
kal_uint16 U_SendISRData_VFIFO(UART_PORT port, kal_uint8 *Buffaddr, kal_uint16 Length,kal_uint8 mode,kal_uint8 escape_char, module_type ownerid)
{
#ifndef DRV_DEBUG
    kal_int16   real_count,index;
    kal_uint8   data;
    kal_uint8 ch = UARTPort[port].Tx_DMA_Ch;

   EXT_ASSERT( (UARTPort[port].ownerid == ownerid), (kal_uint32) ownerid, (kal_uint32)port, (kal_uint32)UARTPort[port].ownerid);
   
   if(UARTPort[port].EnableTX == KAL_FALSE)
   {
   	return Length;
   }
            
       if( (stack_query_boot_mode()== FACTORY_BOOT && UARTPort[port].DCB.flowControl==fc_sw)||
       (uart_support_autoescape()==KAL_FALSE) )  
       {
          if(mode == 0)
              real_count = UART_PutISRBytes(port, Buffaddr, Length, ownerid);
          else
          {
            if (UARTPort[port].sleep_on_tx == uart_sleep_on_tx_forbid)
            {
               switch(port)
               {
                  case uart_port1:
                     DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART1,PDN_UART1);
                     break;
                  case uart_port2:
                     DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART2,PDN_UART2);
                     break;
            #ifdef __UART3_SUPPORT__
                  case uart_port3:
                     #if ( (defined(MT6219))||defined(MT6226M)||(defined(MT6228))|| defined(MT6229)|| (defined(MT6226))|| (defined(MT6227)) )
                     DRVPDN_Disable(DRVPDN_CON1,DRVPDN_CON1_UART3,PDN_UART3);
                     #endif            
                     break;
            #endif   /*__UART3_SUPPORT__*/
                  default:
                     ASSERT(0);
                     break;
               }
            }
            
   	      real_count = DMA_GetVFIFO_Roomleft(ch);
            #ifdef VFIFO_DBG
            {
            	char s[50];
            	sprintf(s,"uart_SendData,len %d,left %d",Length,real_count);
            	kal_print(s);
            }
            #endif
   
   	   if (real_count > Length)
   	   {
   	      real_count = Length;
   	   }
   	   else
   	   {
   	      send_Txilm[port] = KAL_TRUE;
   	      DMA_EnableINT(ch);
   	   }
         
         for (index = 0; index < real_count; index++)
         {
   	   	data = *(Buffaddr+index);
   	   	if (data == UARTPort[port].DCB.xonChar)
   	   	{   
   	   		DMA_PUSH(ch,escape_char);
   	   		DMA_PUSH(ch,0x01); 
   	   	}
    	   	else if (data == UARTPort[port].DCB.xoffChar)
   	   	{
   	   	   DMA_PUSH(ch,escape_char);
   	   		DMA_PUSH(ch,0x02);
         
   	   	}
            else if (data == escape_char)
   	   	{
   	   		DMA_PUSH(ch,escape_char);
   	   		DMA_PUSH(ch,0x03);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区免费乱视频 | 毛片av中文字幕一区二区| 亚洲午夜在线观看视频在线| 久久久久久久综合日本| 久久久久久影视| 久久亚洲一区二区三区四区| www日韩大片| 精品精品欲导航| 国产亚洲欧美在线| 中文字幕在线不卡国产视频| 亚洲欧美一区二区三区极速播放| 亚洲少妇最新在线视频| 一区二区三区免费观看| 亚洲444eee在线观看| 日精品一区二区| 国产麻豆午夜三级精品| 高清beeg欧美| 欧美性一二三区| 精品免费日韩av| 亚洲少妇最新在线视频| 午夜久久久久久| 国产尤物一区二区| 一本到不卡精品视频在线观看| 日本高清不卡视频| 日韩欧美中文字幕一区| 国产精品女主播av| 亚洲综合激情网| 国产乱码精品一区二区三区五月婷| 成人教育av在线| 欧美久久久久免费| 国产精品你懂的| 日韩在线播放一区二区| 国产福利电影一区二区三区| 色www精品视频在线观看| 欧美一二三四在线| 秋霞午夜鲁丝一区二区老狼| 韩国在线一区二区| 欧美三级日韩三级| 国产欧美日韩在线看| 香蕉久久一区二区不卡无毒影院| 国产乱色国产精品免费视频| 欧洲另类一二三四区| 久久久综合网站| 午夜精品久久久久久久99樱桃| 国产成人综合视频| 88在线观看91蜜桃国自产| 国产精品人成在线观看免费| 热久久国产精品| 在线影院国内精品| 国产精品免费视频观看| 国产综合色精品一区二区三区| 色哦色哦哦色天天综合| 国产精品色呦呦| 精品一区二区三区在线视频| 欧美视频你懂的| 中文字幕中文字幕一区| 国产在线乱码一区二区三区| 欧美一区二区三区四区高清| 一区二区欧美视频| 99精品视频在线播放观看| 国产亚洲欧美激情| 精品午夜一区二区三区在线观看| 欧美乱妇23p| 亚洲精品免费在线| 色欧美片视频在线观看| 中文字幕视频一区| 不卡视频一二三| 欧美国产欧美综合| 国产成人aaa| 国产精品久久一级| jlzzjlzz亚洲日本少妇| 国产精品福利影院| 成人精品电影在线观看| 国产精品国产三级国产aⅴ中文| 国产精品羞羞答答xxdd| 久久综合中文字幕| 国产91精品欧美| 国产精品美日韩| 91麻豆精品视频| 亚洲在线一区二区三区| 欧美日韩精品电影| 日韩电影免费一区| 精品奇米国产一区二区三区| 久久国产精品第一页| 久久免费看少妇高潮| 国产成人在线看| 亚洲欧洲av色图| 欧美性生活久久| 青青草视频一区| 久久女同互慰一区二区三区| 成人午夜精品一区二区三区| 国产精品女上位| 欧美视频完全免费看| 蜜臀av在线播放一区二区三区| 精品国产免费一区二区三区四区 | 蜜臀久久99精品久久久久久9 | 中文字幕一区在线| 欧美视频在线播放| 久热成人在线视频| 日本一区二区三区电影| 日本精品一区二区三区四区的功能| 亚洲第一激情av| 欧美精品一区二区三区高清aⅴ| 从欧美一区二区三区| 亚洲综合偷拍欧美一区色| 制服丝袜中文字幕亚洲| 国产精品系列在线观看| 一区二区三区精品视频在线| 欧美不卡一区二区三区四区| a在线欧美一区| 日本在线不卡视频一二三区| 欧美经典三级视频一区二区三区| 91成人在线免费观看| 国产精品一区免费在线观看| 夜夜精品浪潮av一区二区三区| 精品国精品自拍自在线| 欧美午夜免费电影| 成人毛片在线观看| 捆绑变态av一区二区三区| 亚洲欧美视频一区| 国产亚洲福利社区一区| 欧美精品一二三| 色婷婷精品久久二区二区蜜臂av| 久久机这里只有精品| 亚洲午夜电影在线观看| 国产精品国产a| 日韩精品一区二区三区在线观看 | 欧美一区二区免费视频| 成人动漫视频在线| 激情小说欧美图片| 日本欧美一区二区在线观看| 一区二区在线看| 中文字幕免费不卡| 精品少妇一区二区三区日产乱码| 欧美曰成人黄网| 99riav久久精品riav| 国产福利一区在线| 国产一区二区中文字幕| 蜜桃精品视频在线观看| 视频在线在亚洲| 亚洲国产精品久久一线不卡| 亚洲精选一二三| 亚洲四区在线观看| ㊣最新国产の精品bt伙计久久| 久久你懂得1024| 久久久久国产成人精品亚洲午夜| 日韩欧美在线不卡| 欧美va亚洲va香蕉在线| 欧美成人精精品一区二区频| 欧美一二三区精品| 日韩免费观看高清完整版| 91精品国产91综合久久蜜臀| 7777精品伊人久久久大香线蕉经典版下载 | 欧美一区二区三区喷汁尤物| 在线观看中文字幕不卡| 一本到高清视频免费精品| 9i在线看片成人免费| 成人激情免费网站| 大陆成人av片| 一本大道久久a久久精二百| 91色婷婷久久久久合中文| 色婷婷综合久久久久中文一区二区| 91在线精品秘密一区二区| 99国产精品久久久| 欧美亚洲图片小说| 欧美日韩精品欧美日韩精品| 91精品国产综合久久精品性色| 欧美老年两性高潮| 精品国产一区二区三区四区四| 中文字幕日韩欧美一区二区三区| 中文字幕日韩精品一区 | 日韩精品一区在线| 国产日产欧美精品一区二区三区| 欧美激情艳妇裸体舞| 亚洲色图都市小说| 天天色天天操综合| 国产成人aaa| 欧美图片一区二区三区| 91麻豆精品国产自产在线观看一区| 日韩亚洲欧美一区二区三区| 国产日韩精品一区二区三区在线| 亚洲精品菠萝久久久久久久| 午夜电影网一区| 成人综合激情网| 欧美性大战xxxxx久久久| 精品国产乱子伦一区| 亚洲女同女同女同女同女同69| 香蕉成人啪国产精品视频综合网| 久久99精品网久久| 一本久久a久久免费精品不卡| 欧美精品久久天天躁| 欧美国产综合一区二区| 亚洲成人激情自拍| 国产成都精品91一区二区三| 欧美日韩国产123区| 日本一区二区三级电影在线观看 | 日韩欧美在线影院| 亚洲欧美日韩久久| 国产精品一级二级三级| 91麻豆精品国产91久久久久久|