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

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

?? darr_data_msg_easy.c

?? 2.4G無線音箱的接收程序,采用ATMEGA8單片機和STS公司的無線模塊完成
?? C
字號:
/******************************************************************************
*
* Purpose:      MAX II data message transfer (Easy).
*				This code is set-up for mimimum code and
*				ram size, and not for maximum speed.
*
* Creator:      Rob Lansbergen
*
* Version:		$Revision: 21 $
*
* File Name:	$Workfile: DARR_Data_Msg_Easy.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"

/*
** Private data definitions
** ------------------------
*/

         TXDATA_STATE TXDataState = TX_IDLE;
volatile RXDATA_STATE RXDataState;
volatile unsigned char Process_New_Frame = 0;
volatile unsigned char TX_Timeout;

unsigned char TX_Data_send_array[I2C_WBUFFER_SIZE];
unsigned char RX_Data_recv_array[I2C_RBUFFER_SIZE];
unsigned char RX_Stream_Nr;
unsigned int  RX_SMUA;

unsigned char INTF_Reg;
unsigned char RDC_Reg;

extern unsigned char TbusOn_NoInt;

/******************************************************************************
*
* Function Name :   DARR_Interrupt_Handler
*
* Purpose       :   When ever the interrupts pin goes low this function should be called.
*
* Arguments     :   -
*
* Return value  :   none
*
******************************************************************************/
void DARR_Interrupt_Handler(void)
{
	
	INTF_Reg = I2C_Read_Byte(INTF_ADDR);
	/*** New Frame ***/
	if (INTF_Reg & 0x01)
	{
		if (Use_Own_WLAN_Detection == 0)
                {
                  Process_New_Frame = 1;
                }
		Process_New_Frame_Own_WLAN_Det = 1;
	}
	/*** RX Complete ***/
	if (INTF_Reg & 0x02)
	{
		RXDataState = DATA_TOBEREAD;
	}
	/*** TX Timout ***/
	if (INTF_Reg & 0x04)
	{
		TXDataState = TX_TIME_OUT;
	}
	/*** TX Complete ***/
	if (INTF_Reg & 0x08)
	{
		TXDataState = TX_COMPLETE;
	}
	/*** channel switch ***/
	if (INTF_Reg & 0x40)	
	{
        RF_Used = Read_RFC();
		if (Audio_Status == AUDIO) Update_LED(RF_Used);
#ifndef	NO_GUI
        Show_RF_Status();
#endif	/*NO_GUI*/
        if (BadLink_Cnt < 50) BadLink_Cnt++;					
        ASTH_Reg = 55;  
	}
	/*** insync ***/
	if (INTF_Reg & 0x10)	
	{
		if (Use_ModuleMode == CU)
		{
			Update_LED(Read_RFC());
		}
		InSync_Detected = 1;
	}else			
	/*** No_Sync ***/
	if (INTF_Reg & 0x20)
	{
		InSync_Detected = 0;
	}
	/*** Audio Snooze interupt ***/
//	if (INTF_Reg & 0x80)    //new s/w snooze 
//	{
//		if (Use_Audio_Detection == 1) Handle_Wake_up_Sleep_Interrupt();
//	}
	
}


/******************************************************************************
*
* Function Name :   Send_Message
*
* Purpose       :   This procedure send a message to the other side unit.
*
* Arguments     :   TX_STReam_NR is the Audio stream on which the packet is send
*					0 = Stream A
*					1 = Stream B
*					2 = Stream C
*					3 = Stream D
*					128 = Free_slot, only for Data Up in NACK application
*
*  !!!!!!!!!  	This is different compared to DARR78
*				Bit 7 in TDC and RDC is now used to as TX_STRM_Free bit
*
*		    MU_Address this is only used when the CU send a message to the a MU
*		    For NACK application the MU addressing can be used to address the different
*		    MU modules.
*		    MU_address should never be zero except when a CU NACK application is sending a Broadcast
*		    TX_Data_send_array[16] hold the data that needs to be send.
*
* Return value  :   1 if there was Time-out on the transmision of the data.
*		    		0 If message was send correcly
*
******************************************************************************/

unsigned char Send_Message (unsigned char TX_Stream_NR, unsigned int MU_Address)
{
	unsigned char checksum;
	unsigned char i;
	
	if(!InSync_Detected)return (0);	//Not Insync
	TXDataState = TX_IDLE;

	if ((I2C_Read_Byte(TDC_ADDR) & 0x08) == 0x00) /* If Not Full */
	{
		I2C_Write_Buf(DMUA_ADDR, (unsigned char *)&MU_Address, 2, 0);
		I2C_Write_Byte(DMUA_ADDR + 2, 0x00);
		
		I2C_Write_Byte(TDC_ADDR, TX_Stream_NR & 0x83);

		checksum = 0;
		for (i = 0; i < 15; i++)
		{
			checksum += TX_Data_send_array[i];
		}
		TX_Data_send_array[15] = checksum;

		I2C_Write_Buf(DBUF_ADDR, TX_Data_send_array, 16, 0);
		#ifdef DEBUG
			putstring("TXmsg: ");
			puthex(TX_Data_send_array[0]);
			putchar(' ');
			puthex(TX_Data_send_array[1]);
			putchar(' ');
			puthex(TX_Data_send_array[2]);
			putchar('\r');
		#endif

		TX_Timeout = 0;
		while (1)
		{
			/* check interrupt on using polling mechanism */
#ifndef	NO_GUI
			if (TbusOn_NoInt == 1)
			{
				DARR_Interrupt_Handler();
			}
			else
#endif	/*NO_GUI*/
			{
				if (CHECK_INTERRUPT_PIN)
				{
					DARR_Interrupt_Handler();
				}
			}
			if (TXDataState == TX_COMPLETE)
			{
				TXDataState = TX_IDLE;
				#ifdef DEBUG
					putstring("TX OKE\r");
				#endif
				return (0); /* message send corretly */
			}
			if ((TXDataState == TX_TIME_OUT) || (TX_Timeout > TIME_1_SEC))
			{
				#ifdef DEBUG
					putstring("TO TX_Stream_NR=");
					puthex(TX_Stream_NR);
					putstring(" TXDataState=");
					puthex(TXDataState);
					putstring(" TX_Timeout=");
					puthex(TX_Timeout);
					putstring("\r");
				#endif
				TXDataState = TX_IDLE;
				return (1);
			}
		}
	}
	else
	{
		I2C_Write_Byte(TDC_ADDR, 0x40); /* TX reset, clear TX buffers in DARR79 */
	}
	return (1);	/* Some how there where both buffer where full(Should not be possible) */
}



/******************************************************************************
*
* Function Name :   Handle_Received_Packet

* Purpose       :   This procedure retrieves any data from the DARR that was received
*		    		It should only be called when the RX_Complete interrupt flag was set.
*
* Arguments     :   Global Variable
*		    		RX_Stream_Nr This is the audio stream of on which the data messages was send on
*					0 = Stream A
*					1 = Stream B
*					2 = Stream C
*					3 = Stream D
*					128 = Free_slot, only for Data Up in NACK application
*
*  			!!!!!!!!!  	This is different compared to DARR78
*			Bit 7 in TDC and RDC is now used to as TX_STRM_Free bit
*
*		    RX_SMUA This is the Address of the MU from which the message came from (used for CU only)
*		    MU modules.
*		    RX_Data_recv_array[16] This is where the message was stored in.
*
* Return value  :   0xFF incorrect message (Checksum error)
*					1 Empty buffer nothing to read(Should never occur,just for safety)
*		    		0 If message was received correctly
*
******************************************************************************/

unsigned char Handle_Received_Packet(void)
{
	unsigned char temp,i;
	unsigned char return_code = 0;

	if (RXDataState == DATA_TOBEREAD)
	{
		RDC_Reg= I2C_Read_Byte(RDC_ADDR);
		
		if ((RDC_Reg & 0x04) != 0x04) /* check if not empty */
		{
			RX_SMUA= I2C_Read_Byte(SMUA_ADDR);
			RX_SMUA= RX_SMUA + (I2C_Read_Byte(SMUA_ADDR + 1) << 8);
			
			I2C_Read_Buf(DBUF_ADDR, 16); /* Read message */

			/*  !!!!!  	TDC is different compared to DARR78   !!!!! */
			RX_Stream_Nr = (RDC_Reg & 0x83);

			temp = 0;
			for (i = 0; i < 16; i++) /* Calculate checksum */
			{
				if (i != 15) temp += RX_Data_recv_array[i];
			}
			#ifdef DEBUG
				putstring("RXmsg: ");
				puthex(RX_Data_recv_array[0]);
				putchar(' ');
				puthex(RX_Data_recv_array[1]);
				putchar(' ');
				puthex(RX_Data_recv_array[2]);
				putchar('\r');
			#endif

				if (temp != RX_Data_recv_array[15])	/* Check checksum */
				{
					RXDataState = DATA_IDLE;
					return (0xFF); /* Incorrect Checksum */
				}

			RXDataState = DATA_IDLE;
			/* data ready to be parsed */
			return_code = 1;
		}
		else
		{
			RXDataState = DATA_IDLE;
			/* nothing to read */
			return_code = 0;
		}
		
		RDC_Reg= I2C_Read_Byte(RDC_ADDR);
		if ((RDC_Reg & 0x04) != 0x04) /* if buffer still not empty, set flag to read again */
		{
			RXDataState = DATA_TOBEREAD;
		}		
	}
	return(return_code);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频中文字幕| 狠狠久久亚洲欧美| 久久欧美一区二区| 欧美日韩精品电影| 欧美曰成人黄网| 久久99久久久久| 亚洲成人第一页| 亚洲成人激情av| 国产91丝袜在线观看| 国产黄色91视频| 懂色中文一区二区在线播放| 欧美精品在线一区二区三区| 欧美一区二区二区| 精品999久久久| 日本一区二区三区电影| 国产精品久久久久一区二区三区共| 中文字幕在线不卡视频| 亚洲一区在线观看网站| 日韩成人一级大片| 精品写真视频在线观看| 4438成人网| 国产精品热久久久久夜色精品三区| 伊人色综合久久天天| 日韩激情视频网站| 国产黑丝在线一区二区三区| 欧美大胆一级视频| 中文字幕在线播放不卡一区| 国产福利一区二区| 日韩欧美国产综合| 蓝色福利精品导航| 精品粉嫩aⅴ一区二区三区四区| 首页综合国产亚洲丝袜| 欧美日本在线视频| 成人午夜激情在线| 在线视频综合导航| 亚洲美女视频在线观看| 久久超级碰视频| 欧美大胆人体bbbb| 精品一区二区三区免费视频| 欧美成人官网二区| 亚洲卡通动漫在线| 欧美日免费三级在线| 久久日一线二线三线suv| 中文字幕永久在线不卡| 91免费版pro下载短视频| 日韩一区二区精品葵司在线| 亚洲欧美激情一区二区| 色婷婷精品久久二区二区蜜臀av| 日韩欧美一区二区久久婷婷| 精品无人码麻豆乱码1区2区| 欧美精品一区二区三区在线播放| 国产综合色视频| 欧美国产乱子伦| 免费人成黄页网站在线一区二区| 91国产成人在线| 国产午夜精品一区二区三区四区 | 在线观看91精品国产入口| 亚洲伦在线观看| 制服丝袜亚洲网站| 国产一区二区三区免费在线观看| 欧美日韩精品欧美日韩精品一综合| 日韩专区欧美专区| 久久久久国产精品麻豆ai换脸 | 天天做天天摸天天爽国产一区| 国内精品第一页| 国产精品国产三级国产普通话蜜臀| 色综合久久88色综合天天免费| 亚洲成人www| 亚洲国产精品精华液ab| 欧美视频中文一区二区三区在线观看 | 91精品国产91久久综合桃花| 国产精品66部| 久久精品人人做| 欧美综合在线视频| 国产精品羞羞答答xxdd| 一区二区成人在线视频| 97久久人人超碰| 中文字幕乱码日本亚洲一区二区| 在线观看欧美精品| 国产伦精品一区二区三区视频青涩 | 久久亚洲精华国产精华液| 一本久久a久久精品亚洲| 奇米色一区二区三区四区| 国产精品久久久久久久久快鸭| 日韩欧美电影一二三| 色婷婷综合视频在线观看| 国产剧情一区二区三区| 日韩不卡一区二区| 一区二区三区精品视频在线| 久久精品视频网| 欧美大片国产精品| 欧美男生操女生| 色成人在线视频| 成人高清免费在线播放| 综合分类小说区另类春色亚洲小说欧美 | 国产日韩欧美制服另类| 欧美一级一级性生活免费录像| 色综合中文字幕国产| 亚洲色图色小说| 久久久综合九色合综国产精品| 欧美日韩精品欧美日韩精品| 日本道在线观看一区二区| 成人免费不卡视频| 大白屁股一区二区视频| 国产精品资源站在线| 国精产品一区一区三区mba视频 | 欧美日韩国产高清一区二区| 91日韩在线专区| 色综合久久久久久久久| 色噜噜狠狠一区二区三区果冻| 成人激情小说网站| 波多野结衣在线一区| 1024成人网| ...av二区三区久久精品| 国产精品欧美久久久久无广告| 国产亚洲一本大道中文在线| xfplay精品久久| 久久久久久久久岛国免费| 久久一区二区视频| 国产欧美一区二区三区网站| 久久久亚洲精品一区二区三区 | 国产伦精品一区二区三区免费 | 午夜成人在线视频| 丝袜诱惑制服诱惑色一区在线观看| 亚洲国产成人av| 国产精品久久久久婷婷二区次| 国产三级精品视频| 中文在线免费一区三区高中清不卡| 欧美国产欧美亚州国产日韩mv天天看完整| 国产午夜精品理论片a级大结局| 国产喷白浆一区二区三区| 国产精品久久久久婷婷二区次| 亚洲免费资源在线播放| 亚洲国产wwwccc36天堂| 青草av.久久免费一区| 国产在线精品免费| www.成人网.com| 欧美视频一区二区在线观看| 日韩一二三区视频| 国产欧美日韩精品在线| 亚洲欧美二区三区| 石原莉奈一区二区三区在线观看| 久久国产精品色| 成人av先锋影音| 欧美日免费三级在线| 久久免费午夜影院| 亚洲美女少妇撒尿| 麻豆91免费观看| 亚洲一区中文日韩| 久久精品国产免费| 91片黄在线观看| 日韩一区二区高清| 《视频一区视频二区| 五月婷婷色综合| 成人丝袜高跟foot| 制服丝袜亚洲精品中文字幕| 蜜臀精品一区二区三区在线观看| 国产激情一区二区三区四区 | 国产成人av一区二区三区在线 | 26uuu国产电影一区二区| 亚洲婷婷综合久久一本伊一区| 日韩精品乱码免费| av不卡在线播放| 日韩精品在线一区二区| 亚洲精品你懂的| 国产丶欧美丶日本不卡视频| 欧美日韩国产在线观看| 中文一区二区在线观看| 美女一区二区视频| 在线观看网站黄不卡| 欧美激情在线免费观看| 久久国产精品一区二区| 精品1区2区3区| 中文字幕亚洲在| 国产麻豆9l精品三级站| 日韩一区二区三区电影在线观看 | 久久久亚洲综合| 蜜桃传媒麻豆第一区在线观看| 99re热这里只有精品免费视频| 久久综合资源网| 免费成人在线视频观看| 欧美挠脚心视频网站| 一区二区成人在线视频| 一本色道亚洲精品aⅴ| 国产精品另类一区| 国产成人啪午夜精品网站男同| 日韩欧美一区二区不卡| 视频一区在线播放| 日本久久精品电影| 亚洲图片另类小说| 99久久久精品| 亚洲欧美综合在线精品| 成人免费的视频| 午夜影视日本亚洲欧洲精品| 91网上在线视频| 国产精品短视频| 91视频精品在这里| 亚洲黄色小视频| 欧美综合在线视频| 亚洲国产精品久久久久婷婷884|