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

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

?? func_auto_namg.c

?? 2.4G無線音箱的接收程序,采用ATMEGA8單片機和STS公司的無線模塊完成
?? C
字號:
/******************************************************************************
*
* Purpose:      Func_Auto_NAMG.c
*
* Creator:      Rob Lansbergen
*
* Version:		$Revision: 6 $
*
* File Name:	$Workfile: Func_Auto_NAMG.c $
*
* Author:		Rob Lansbergen
*
* Check in:		$Author: Chong.cheeleong $
*
* The information is provided 揳s is?without any express or implied warranty  
* of any kind, * including warranties of merchantability, noninfringement of   
* intellectual property, or fitness for any particular purpose. In no event sha
* Wireless Sound Solutions and/or its affiliate companies, or its suppliers be 
* liable for any damages whatsoever arising out of the use of or inability to  
* use the information or the materials. Wireless Sound Solutions, its affiliate
* companies, and its suppliers further do not warrant the accuracy or          
* completeness of information, text, graphics, or other items contained within 
* materials. Wireless Sound Solutions, Inc., may make changes to materials, or 
* the products described within, at any time, without notice.                  
* ?007 Wireless Sound Solutions. All rights reserved. Wireless Sound Solutions
* STS and STS-wireless are trademarks of Wireless Sound Solutions.        
******************************************************************************/
/*
** Include files
** -------------
*/
#include <stdio.h>
#include "defines.h"

/*
 * NACK Message on MU 2 CU
 * Byte 1  : 93
 * Byte 2  : AGC down level
 * Byte 16 : Checksum.
 */
#define MSG_TYPE_AGCD_MU 	93 /* 0x5D */

/* Parameter settings */
unsigned char NACK_Time 	= 0x01; /* MU AGCD Report Time Interval in Seconds */
unsigned char NAMG_Offset	= 83;   /* NAMG Offset (ranging 77 -- 83) */

#define NAMG_MIN 107
#define NAMG_MAX 117


/* Variable declarations */
unsigned char NACK_Time_Cnt = 0x01;	/* Report Time Counter */
unsigned char AGC_Max 		= 0x10; /* Start Value for AGC Max Tracking */
unsigned char NAMG_shd 	    = 0x74; /* Shadow Register of NAMG, 116 decimal, is Default Reset Value */
unsigned char NAMG_MAX_Reduction_Tmr = 0x00;/*Counter for message received*/		
unsigned char AGCD_Msg_Send_Tmr 	= 0x00;/*Counter for message send*/		
unsigned char MAXNAMG_TimeOut_Tmr 	= 0x00;	/*Set NAMG to MAX value if over the time limit*/		
unsigned char DT_AGCD_Level[5];	/*Data Table to get the average value of AGCD and eliminate the highest value*/	
unsigned char AGCD_Level    = 0x00;     /*AGC Detect Level*/
unsigned char NAMG_Level    = 0x00;     /*NAMG Level*/
/******************************************************************************
*
* Function Name :   Handle_Auto_NAMG_MainLoop
*
* Purpose       :   Handel the Auto NAMG Procedure.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Handle_Auto_NAMG_MainLoop(void)
{		

    //#ifdef Target_MU          /******* WRONG **********************************/
    #ifdef Target_CU            /******* CORRECTION, PLEASE USE THIS LINE *******/     
    if (Use_ModuleMode == CU)
	{
		if(NAMG_MAX_Reduction_Tmr == NAMG_MAX_DEDUCT_2SEC)		
		{
			NAMG_MAX_Reduction_Tmr = 0;
			/* AGC Max processing */
            if (AGC_Max !=0)
	   			AGC_Max--;			                  
		}
	}
   //#endif /*Target_MU*/ /******* WRONG **********************************/
   #endif /*Target_CU*/ /******* CORRECTION, PLEASE USE THIS LINE *******/  

	if (Event_NACK )		
	{
		Event_NACK = 0;
	   #ifdef Target_MU
		unsigned char sncd=0;
		if (Use_ModuleMode == MU)		
		{								
			DT_AGCD_Level[AGCD_Msg_Send_Tmr] = I2C_Read_Byte(AGCD_ADDR) & 0x7F;	
			AGCD_Msg_Send_Tmr++;				
			
			if(AGCD_Msg_Send_Tmr ==5)			
			{								
				sncd = I2C_Read_Byte(SNCD_ADDR);			                                           
				/* search for next insync Stream */
				for (int i = 0; i < 4; i++)
				{								
					/* Check if Stream is In Sync */
					if (((sncd  >> (i* 2)) & 0x03) != 0x00)
					{					
                       /* Next In Sync Channel Found */
						if(InSync_Detected == 1)
						{
			               	break;
						}
					}

					if((i == 3) && (InSync_Detected == 1))
                   	{
						InSync_Detected = 0;

                   	}
				
				}



				AGCD_Msg_Send_Tmr = 0;					
				if (NACK_Time_Cnt == 1)
				{
					/* New NACK Report Requested */
					NACK_Time_Cnt = NACK_Time;
				
					/*###### MU ######*/
			
					/* Send New AGCD Level to CU */
					TX_Data_send_array[0] = MSG_TYPE_AGCD_MU;
					TX_Data_send_array[1] = Calculate_Average_AGCD();


					/* send always a data msg */
					if (Data_Free_Up) /* is it a NACK application ? */
					{
						DATA_LED_ON;
						Send_Message(STR_FREE, 1); /* use free slots in nack applic */
						DATA_LED_OFF;
					}

				}
				else
				{
					/* Counting Down in Seconds for Next Report */
					if (NACK_Time_Cnt != 0) NACK_Time_Cnt--;
					else 					NACK_Time_Cnt = NACK_Time;
				}


			}
		}
	     #endif /*Target_MU*/
	}
}


/******************************************************************************
*
* Function Name :   Handle_Auto_NAMG_RXMsg
*
* Purpose       :   Handle Incomming NACK Messages.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Handle_Auto_NAMG_RXMsg(void)
{
 #ifdef Target_CU                
	if (Use_ModuleMode == CU)
	{
		/*###### CU ######*/
		if (RX_Data_recv_array[0] == MSG_TYPE_AGCD_MU)
		{

			
			DATA_LED_ON;
			MAXNAMG_TimeOut_Tmr = 0;		/*Reset everytime receive message*/
			Data_Led_Counter = 10; /* after 100 mSec Data Led goes OFF again */
			/* msg to GUI */
			/* prepare parameters here and do some action */
			/* paralist: AGCD */
			AGCD_Level = RX_Data_recv_array[1];

			/*** Processing data ***/		
			/* AGC Max processing */
			
			if (AGC_Max < AGCD_Level) 
			{
				AGC_Max = AGCD_Level;
				NAMG_MAX_Reduction_Tmr =0;
			}
			
			/* NAMG_Level Processing */
			NAMG_Level = (AGC_Max >> 1) + NAMG_Offset;

			if ((NAMG_Level > NAMG_MAX) ||(AGC_Max >=65)) NAMG_Level = NAMG_MAX;
			if (NAMG_Level < NAMG_MIN) NAMG_Level = NAMG_MIN;

			/* writing new level to DARR80 */
			if (NAMG_Level != NAMG_shd)
			{
				NAMG_shd = NAMG_Level;
				I2C_Write_Byte(NAMG_ADDR, NAMG_Level);
			}

			/* tracking report */
#ifndef	NO_GUI
            Show_NAMG_Status();
#endif	/*NO_GUI*/
			/*** End Processing data ***/
		}
	}
 #endif /*Target_CU*/
}

/******************************************************************************
*
* Function Name :   Handle_Auto_NAMG_RXMsg_TimeOut
*
* Purpose       :   Set the NAMG to max after timeout.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Handle_Auto_NAMG_RXMsg_TimeOut(void)
{

  #ifdef Target_CU       
	if(MAXNAMG_TimeOut_Tmr == NO_AGCD_RXMsg_2SEC )		
	{
		MAXNAMG_TimeOut_Tmr = 0;
		if (Use_ModuleMode == CU)
		{
			/* writing new level to DARR80 */
			if (NAMG_MAX != NAMG_shd)
			{
				NAMG_shd = NAMG_MAX;
				I2C_Write_Byte(NAMG_ADDR, NAMG_MAX);

			}

				/* tracking report */	
#ifndef	NO_GUI
            Show_NAMG_Timeout_Status();
#endif	/*NO_GUI*/

		}
	}
 #endif /*Target_CU*/	

}

/******************************************************************************
*
* Function Name :   Calculate_Average_AGCD
*
* Purpose       :   Calculate Average AGCD Value and eliminate the Max value.
*
* Arguments     :   none
*
* Return value  :   AGCD_Level
*
******************************************************************************/
unsigned char Calculate_Average_AGCD(void)
{
#ifdef Target_MU
	unsigned char a;
	unsigned char b;
	unsigned char AGCD_MAX;
	unsigned char i;
	unsigned int AGCD_Level=0;

	a =((DT_AGCD_Level[0] > DT_AGCD_Level[1]) ? DT_AGCD_Level[0] : DT_AGCD_Level[1]);
	b =((DT_AGCD_Level[2] > DT_AGCD_Level[3]) ? DT_AGCD_Level[2] : DT_AGCD_Level[3]);
	AGCD_MAX =((a> b) ? a : b);
	AGCD_MAX =((AGCD_MAX> DT_AGCD_Level[4]) ? AGCD_MAX : DT_AGCD_Level[4]);	

	for (i=0; i<5; i++)
	{
		AGCD_Level += DT_AGCD_Level[i];
	}

	AGCD_Level -= AGCD_MAX;
	AGCD_Level /= 0x04;
#endif /*Target_MU*/

	return(AGCD_Level);
}

/******************************************************************************
*
* Function Name :   Handle_Auto_NAMG_Func_Timer
*
* Purpose       :   Auto NAMG Function Timer.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Handle_Auto_NAMG_Func_Timer(void)
{

	NAMG_MAX_Reduction_Tmr++;		
	MAXNAMG_TimeOut_Tmr++;
	Event_NACK ++;		

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区成人| 一区二区三区高清在线| 欧美一卡在线观看| 欧美一区二区三区视频在线| 欧美日韩精品综合在线| 欧美日韩视频专区在线播放| 欧美三级视频在线| 欧美人与性动xxxx| 337p粉嫩大胆噜噜噜噜噜91av | 欧美三级欧美一级| 欧美日韩在线播放一区| 欧美日韩电影一区| 日韩亚洲欧美一区| 久久久久久久精| 国产精品久久久久久久岛一牛影视| 国产精品欧美极品| 亚洲女同ⅹxx女同tv| 午夜精品123| 狠狠色狠狠色综合系列| av高清久久久| 欧美日韩久久久久久| 久久嫩草精品久久久精品一| 欧美国产欧美亚州国产日韩mv天天看完整| 中文字幕二三区不卡| 亚洲成人免费视| 国产a精品视频| 欧美猛男超大videosgay| 欧美va日韩va| 一区二区在线观看视频| 男人的天堂亚洲一区| 成人高清免费观看| 欧美丰满少妇xxxxx高潮对白| 国产亚洲综合av| 亚洲国产精品视频| 成人av免费在线观看| 欧美一区二区在线看| 国产精品国产馆在线真实露脸| 午夜电影久久久| av中文一区二区三区| 日韩欧美一区中文| 亚洲欧美偷拍另类a∨色屁股| 久久精品国产色蜜蜜麻豆| 91女人视频在线观看| 久久综合九色综合97婷婷女人 | 久久www免费人成看片高清| 不卡高清视频专区| 精品蜜桃在线看| 亚洲一区二区三区四区在线观看| 国产精品自拍在线| 日韩视频免费直播| 亚洲小说春色综合另类电影| 不卡免费追剧大全电视剧网站| 精品国产乱码久久久久久浪潮| 亚洲精品伦理在线| 9i在线看片成人免费| 2023国产精品视频| 美女网站视频久久| 欧美一区午夜视频在线观看| 亚洲男同性视频| 91美女片黄在线| 国产精品传媒入口麻豆| 国产成人精品免费看| 久久精品视频一区二区三区| 日韩成人伦理电影在线观看| 欧美日韩国产小视频在线观看| 亚洲乱码国产乱码精品精可以看 | aaa欧美大片| 国产精品美女久久久久高潮| 国内精品伊人久久久久av一坑| 欧美成人性福生活免费看| 日本在线观看不卡视频| 欧美福利视频导航| 免费观看30秒视频久久| 在线成人免费视频| 麻豆精品一区二区综合av| 91精品国产综合久久久久久漫画| 日韩国产成人精品| 日韩一级免费观看| 国产精品一级黄| 国产精品欧美一级免费| 99视频精品全部免费在线| 综合自拍亚洲综合图不卡区| 色av一区二区| 午夜视频在线观看一区| 欧美一区二区大片| 国产呦萝稀缺另类资源| 国产精品乱码一区二三区小蝌蚪| 成人黄色免费短视频| 一区二区三区av电影 | 久久久久97国产精华液好用吗| 国产一区二区三区综合| 日本一区二区不卡视频| 欧美午夜视频网站| 蜜桃视频在线观看一区二区| xfplay精品久久| 色婷婷av一区二区三区之一色屋| 亚洲自拍另类综合| 日韩精品一区二区三区在线观看| 国产伦精品一区二区三区在线观看| 欧美国产一区在线| 欧美午夜在线一二页| 黑人巨大精品欧美黑白配亚洲| 国产视频一区二区在线观看| 色诱亚洲精品久久久久久| 天堂久久久久va久久久久| 国产偷国产偷亚洲高清人白洁| 色综合av在线| 国模少妇一区二区三区| 国产精品免费久久| 欧美妇女性影城| 99re8在线精品视频免费播放| 亚洲五码中文字幕| 国产午夜精品福利| 欧美日韩国产一级片| www.一区二区| 久久国产综合精品| 亚洲成人激情av| 国产精品色噜噜| 精品国免费一区二区三区| 91老师片黄在线观看| 国产麻豆视频一区二区| 日韩成人av影视| 亚洲天堂av老司机| 国产欧美日韩另类视频免费观看| 欧美日韩国产高清一区| 99re成人精品视频| 国产成人精品综合在线观看| 日av在线不卡| 五月天精品一区二区三区| 中文字幕亚洲一区二区av在线 | 26uuu精品一区二区三区四区在线| 99国产精品99久久久久久| 国产自产v一区二区三区c| 丝袜亚洲另类丝袜在线| 一区二区在线看| **欧美大码日韩| 综合久久国产九一剧情麻豆| 国产日韩精品一区二区三区| 精品国产乱码久久久久久久| 777a∨成人精品桃花网| 欧美三级日韩三级国产三级| 色婷婷一区二区三区四区| 波多野结衣中文一区| 国产精品资源在线观看| 国内精品久久久久影院薰衣草| 亚洲国产乱码最新视频| 亚洲在线视频一区| 亚洲韩国一区二区三区| 亚洲一区二区三区四区在线观看 | 亚洲视频一区在线观看| 综合自拍亚洲综合图不卡区| 最新中文字幕一区二区三区| 综合激情网...| 亚洲品质自拍视频网站| 一区二区三区四区不卡视频 | 日韩和欧美一区二区三区| 天天操天天综合网| 日韩电影在线观看电影| 蜜桃视频一区二区三区| 韩国女主播成人在线观看| 国产在线精品免费| 成人午夜私人影院| 99国产精品99久久久久久| 91美女视频网站| 欧美日韩国产小视频| 日韩欧美123| 国产精品美女久久久久aⅴ| 国产精品第四页| 午夜a成v人精品| 韩国女主播成人在线| 波多野结衣中文字幕一区二区三区 | 欧美一区二区国产| 久久精品一二三| 亚洲精选视频在线| 日韩精品久久久久久| 久久成人久久鬼色| 97久久超碰国产精品电影| 欧美精选午夜久久久乱码6080| 欧美成人精品1314www| 国产欧美日本一区视频| 亚洲一区二三区| 精品影视av免费| 色综合天天综合网天天狠天天| 欧美狂野另类xxxxoooo| 精品成a人在线观看| 一区二区三区在线视频免费 | 日韩欧美视频一区| 亚洲人亚洲人成电影网站色| 天堂va蜜桃一区二区三区 | 欧美精品一卡二卡| 欧美激情一区二区三区蜜桃视频 | 精品播放一区二区| 亚洲午夜免费福利视频| 国产99一区视频免费| 3d成人h动漫网站入口| 国产精品女主播在线观看| 日本伊人精品一区二区三区观看方式| 国产一区二区三区高清播放| 欧美中文字幕一区| 亚洲欧洲精品天堂一级 |