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

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

?? func_volume.c

?? 2.4G無線音箱的接收程序,采用ATMEGA8單片機和STS公司的無線模塊完成
?? C
字號:
/******************************************************************************
*
* Purpose:      Func_Volume.c
*
* Creator:      Paul v/d Linden
*
* Version:		$Revision: 12 $
*
* File Name:	$Workfile: Func_Volume.c $
*
* Author:		Paul v/d Linden
*
* 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"
#include <ina90.h> /* _CLI, _SEI */	
/*
 * Volume Message
 * Byte 1  : 64
 * Byte 2  : Volume (value 1 to 127)
 * Byte 16 : Checksum.
 */
#define MSG_SINGLE_VOLUME_STRA   66  //0x42
#define MSG_SINGLE_VOLUME_STRB   67  //0x43
#define MSG_SINGLE_VOLUME_STRC   68  //0x44
#define MSG_SINGLE_VOLUME_STRD   69  //0x45
#define MSG_TYPE_VOLUME 	64 /* 0x40 */
#define MSG_TYPE_WIRLESS_DATA  65
#define MSG_TYPE_AUDIO_CONTROL   0x81
unsigned char Volume_Memory = START_UP_VOLUME;
unsigned char StreamCode;


/******************************************************************************
*
* Function Name :   Handle_Volume_MainLoop
*
* Purpose       :   Handel the Volume Procedure.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Handle_Volume_MainLoop(void)
{
  static 	unsigned char Prev_PREV_SW;
  static 	unsigned char Prev_NEXT_SW;
  static 	unsigned char Prev_PLAY_PAUSE_STOP_SW;

	if  (
			(VOL_UP_SW == 0) ||
			(VOL_DOWN_SW == 0)
		)
	{
		Wait_For_mSec(20);
		if (Use_ModuleMode == CU)
		{
			/*###### CU ######*/
			DATA_LED_ON;

#ifdef CODEC_CS4341
			if (VOL_UP_SW == 0x00)
			{
				if (Volume_Memory >= MAX_VOLUME + 2)	Volume_Memory -= 2; /* UP */
			}
			else if (VOL_DOWN_SW == 0x00)
			{
				if (Volume_Memory < 126)              Volume_Memory += 2; /* DOWN */
			}
#else
			if (VOL_UP_SW == 0x00)
			{
				if (Volume_Memory <= MAX_VOLUME - 2)	Volume_Memory += 2; // * UP * /
			}
			else if (VOL_DOWN_SW == 0x00)
			{
				if (Volume_Memory > 1)              Volume_Memory -= 2; // * DOWN * /
			}
#endif
			TX_Data_send_array[0] = MSG_TYPE_VOLUME;
			TX_Data_send_array[1] = Volume_Memory;

			if (Use_Speaker_Enable_Bits & 0x01) Send_Message(STR_A, 1);
			if (Use_Speaker_Enable_Bits & 0x02) Send_Message(STR_B, 1);
			#ifdef USE_DUAL_CODEC
				if (Use_Speaker_Enable_Bits & 0x04) Send_Message(STR_C, 1);
				if (Use_Speaker_Enable_Bits & 0x08) Send_Message(STR_D, 1);
			#endif
            //WM100 Display Volume
            //DispMessageVol (2,Volume_Memory);
			Prog_Volume(Volume_Memory);			

			DATA_LED_OFF;
		} /* CU */
		else
		{
			/*###### MU ######*/
			/* just write Both Audio Streams */
			DATA_LED_ON;

#ifdef CODEC_CS4341
			if (VOL_UP_SW == 0x00)
			{
				if (Volume_Memory >= MAX_VOLUME + 2)	Volume_Memory -= 2; /* UP */
			}
			else if (VOL_DOWN_SW == 0x00)
			{
				if (Volume_Memory < 126)              Volume_Memory += 2; /* DOWN */
			}
#else
			if (VOL_UP_SW == 0x00)
			{
				if (Volume_Memory <= MAX_VOLUME - 2)	Volume_Memory += 2; // * UP * /
			}
			else if (VOL_DOWN_SW == 0x00)
			{
				if (Volume_Memory > 1)              Volume_Memory -= 2; // * DOWN * /
			}
#endif
            //WM100 Display Volume
            //DispMessageVol (2,Volume_Memory);

			Set_Volume();
			Prog_Volume(Volume_Memory);			
			
			/* send new volume back to CU */
			TX_Data_send_array[0] = MSG_TYPE_VOLUME;
			TX_Data_send_array[1] = Volume_Memory;

			if (Data_Free_Up)
			{
				Send_Message(STR_FREE, 1); /* use free slots in nack applic */
			}
			else
			{
				     if (Use_Speaker_Enable_Bits & 0x01) Send_Message(STR_A, 1);
				else if (Use_Speaker_Enable_Bits & 0x02) Send_Message(STR_B, 1);
				else if (Use_Speaker_Enable_Bits & 0x04) Send_Message(STR_C, 1);
				else if (Use_Speaker_Enable_Bits & 0x08) Send_Message(STR_D, 1);
			}
			
			DATA_LED_OFF;
		} /* MU */
	} /* VOL_UP_SW | VOL_DOWN_SW */

    if ((Prev_PREV_SW != PREV_SW)  && (Use_ModuleMode == MU))
    {
        Prev_PREV_SW = PREV_SW;
        if(PREV_SW == 0)
        {
          DATA_LED_ON;
            TX_Data_send_array[0] = MSG_TYPE_WIRLESS_DATA;
			TX_Data_send_array[1] = 0x03;

			if (Data_Free_Up)
			{
				Send_Message(STR_FREE, 1); /* use free slots in nack applic */
			}
			else
			{
				     if (Use_Speaker_Enable_Bits & 0x01) Send_Message(STR_A, 1);
				else if (Use_Speaker_Enable_Bits & 0x02) Send_Message(STR_B, 1);
				else if (Use_Speaker_Enable_Bits & 0x04) Send_Message(STR_C, 1);
				else if (Use_Speaker_Enable_Bits & 0x08) Send_Message(STR_D, 1);
			}
            			DATA_LED_OFF;
        }

    }
    if ((Prev_NEXT_SW != NEXT_SW) && (Use_ModuleMode == MU))
    {
        Prev_NEXT_SW = NEXT_SW;
        if (NEXT_SW == 0)
        {
            DATA_LED_ON;
            TX_Data_send_array[0] = MSG_TYPE_WIRLESS_DATA;
			TX_Data_send_array[1] = 0x02;

			if (Data_Free_Up)
			{
				Send_Message(STR_FREE, 1); /* use free slots in nack applic */
			}
			else
			{
				     if (Use_Speaker_Enable_Bits & 0x01) Send_Message(STR_A, 1);
				else if (Use_Speaker_Enable_Bits & 0x02) Send_Message(STR_B, 1);
				else if (Use_Speaker_Enable_Bits & 0x04) Send_Message(STR_C, 1);
				else if (Use_Speaker_Enable_Bits & 0x08) Send_Message(STR_D, 1);
			}
            DATA_LED_OFF;
        }
    }

    if ((Prev_PLAY_PAUSE_STOP_SW != PLAY_PAUSE_STOP_SW) && (Use_ModuleMode == MU))
    {
        Prev_PLAY_PAUSE_STOP_SW = PLAY_PAUSE_STOP_SW;
        if (PLAY_PAUSE_STOP_SW == 0)
        {
            DATA_LED_ON;
            TX_Data_send_array[0] = MSG_TYPE_WIRLESS_DATA;
	     TX_Data_send_array[1] = 0x09;

			if (Data_Free_Up)
			{
				Send_Message(STR_FREE, 1); /* use free slots in nack applic */
			}
			else
			{
				     if (Use_Speaker_Enable_Bits & 0x01) Send_Message(STR_A, 1);
				else if (Use_Speaker_Enable_Bits & 0x02) Send_Message(STR_B, 1);
				else if (Use_Speaker_Enable_Bits & 0x04) Send_Message(STR_C, 1);
				else if (Use_Speaker_Enable_Bits & 0x08) Send_Message(STR_D, 1);
			}
            DATA_LED_OFF;
        }
    }

  	
}


/******************************************************************************
*
* Function Name :   Handle_Volume_RXMsg
*
* Purpose       :   Handle Incomming Volume Messages.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Handle_Volume_RXMsg(void)
{
    unsigned char CheckEqual=0;
	if (Use_ModuleMode == MU)
	{
		/*###### MU ######*/
		

          //WM100 Modification to the data received
          if( RX_Data_recv_array[0] == MSG_TYPE_AUDIO_CONTROL){
                        //printf("Enter switch case.\r");
                        DATA_LED_ON;
	                    Data_Led_Counter = 10; /* after 100 mSec Data Led goes OFF again*/
                        StreamCode = RX_Data_recv_array[1];
  	                    /* just write Both Audio Streams */
                        //printf("StreamCode = %X\r",RX_Data_recv_array[1]);

                        switch(StreamCode)  //only press button status is activated //RX_Data_recv_array[1] == )
                        {
                          case 0: if(Flip_Status == 0) Volume_Memory = RX_Data_recv_array[2];
                                  break;
                          case 1: if(Flip_Status == 1) Volume_Memory = RX_Data_recv_array[2];
                                  break;
                          case 2: if(Flip_Status == 2) Volume_Memory = RX_Data_recv_array[2];
                                  break;
                          case 3: if(Flip_Status == 3) Volume_Memory = RX_Data_recv_array[2];
                                  break;
                          case 7:
                                  Volume_Memory = RX_Data_recv_array[2];

                                  break;
                          default:
                                  CheckEqual = 1;
			              }


                        if(CheckEqual == 0)   Set_VolumeToPipe(0);
                     //}
          }
			/* do not make big delays in this receive section, you loose data due to timeout on DARR79 */
		//}
	}
	else
	{
		/*###### CU ######*/
		if (RX_Data_recv_array[0] == MSG_TYPE_VOLUME)
		{
			DATA_LED_ON;
			Data_Led_Counter = 10; /* after 100 mSec Data Led goes OFF again*/
			Volume_Memory = RX_Data_recv_array[1];  /* Volume changed on MU, update CU */
		}
	}
	Prog_Volume(Volume_Memory);				
}


/******************************************************************************
*
* Function Name :   Get_Volume
*
* Purpose       :   Get the contents of the Volume_Memory
*
* Arguments     :   none
*
* Return value  :   Volume_Memory
*
******************************************************************************/
unsigned char Get_Volume(void)
{
	_CLI();
	_EEGET(Volume_Memory, 0x12);		
	_SEI();
	return(Volume_Memory);
}


/******************************************************************************
*
* Function Name :   Set_Volume
*
* Purpose       :   Set the Volume of Codec line in channel.
*
* Arguments     :   none
*
* Return value  :   none
*
******************************************************************************/
void Set_Volume(void)
{
	if (ApplicType != APPL_TYPE_MICROPHONE)
	{
		SetVolume(0x00, Volume_Memory); /* Left  */
		SetVolume(0x01, Volume_Memory); /* Right */
		#ifdef USE_DUAL_CODEC
			SetVolume(0x02, Volume_Memory); /* Left  */
			SetVolume(0x03, Volume_Memory); /* Right */
		#endif
	}
	else
	{
		#ifndef PCB_EVK_2CH
			SetInVolume(0x00, Volume_Memory); /* Left  */
			SetInVolume(0x01, Volume_Memory); /* Right */
			#ifdef USE_DUAL_CODEC
				SetInVolume(0x02, Volume_Memory); /* Left  */
				SetInVolume(0x03, Volume_Memory); /* Right */
			#endif
		#endif /* END PCB_EVK_2CH */
	}
}
//WM100 New SetVolume function
void Set_VolumeToPipe(unsigned char PipeNR)
{

     //int div;
	if (ApplicType != APPL_TYPE_MICROPHONE)
	{
        if (StreamCode == 7) {
          SetVolume(PipeNR, Volume_Memory); /* Left  */

		
		  //#ifdef USE_DUAL_CODEC
		  //    SetVolume(0x02, Volume_Memory); /* Left  */
		  //    SetVolume(0x03, Volume_Memory); /* Right */
		  //#endif
        }
        else {
          SetVolume(PipeNR, Volume_Memory);     //Set to Pipe W
          //WM100 Dsiplay Volume
         //DispMessageVol (2,Volume_Memory);
          //LCDPutChar(0xFF,0xff,'a');
          //WM
        }

	}
	else
	{
		#ifndef PCB_EVK_2CH
			SetInVolume(0x00, Volume_Memory); /* Left  */
			SetInVolume(0x01, Volume_Memory); /* Right */
			#ifdef USE_DUAL_CODEC
				SetInVolume(0x02, Volume_Memory); /* Left  */
				SetInVolume(0x03, Volume_Memory); /* Right */
			#endif
		#endif /* END PCB_EVK_2CH */
	}
}

/******************************************************************************
*
* Function Name :   Restore_Volume
*
* Purpose       :   Restore Volume_Memory and Set Volume on Codec or DARR79 reg.
*
* Arguments     :   Volume
*
* Return value  :   none
*
******************************************************************************/
void Restore_Volume(unsigned char Volume)
{
	Volume_Memory = Volume;
	Set_Volume();
}
/******************************************************************************
*
* Function Name :   Prog_Volume
*
* Purpose       :
*
* Arguments     :   Volume
*
* Return value  :   none
*
******************************************************************************/
void Prog_Volume(unsigned char Volume)			
{
	_CLI();
	_EEPUT(0x12, Volume);
	_SEI();

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产亚洲在线| 久久综合色婷婷| 成人av片在线观看| 国产呦精品一区二区三区网站| 奇米影视在线99精品| 亚洲成a人片综合在线| 午夜精品视频一区| 日韩高清一区在线| 免费人成精品欧美精品| 久久99国产精品久久99| 久久精品国产免费看久久精品| 久久精品国产免费| 国产在线国偷精品产拍免费yy| 精品一区二区三区香蕉蜜桃 | 国产亚洲一区二区三区四区| 精品88久久久久88久久久| 久久一区二区视频| 国产亚洲综合在线| 日韩伦理免费电影| 亚洲夂夂婷婷色拍ww47 | 国产成人日日夜夜| 成人a免费在线看| 色综合激情五月| 欧美日韩亚洲综合在线| 欧美精品乱码久久久久久| 欧美一级在线视频| 久久精品视频网| 亚洲品质自拍视频网站| 亚洲大片精品永久免费| 精品一区二区免费在线观看| 国产成人欧美日韩在线电影| 91在线免费视频观看| 欧美日韩激情在线| 久久一留热品黄| 亚洲三级小视频| 视频一区二区三区中文字幕| 黑人精品欧美一区二区蜜桃| 成a人片国产精品| 欧美性一级生活| 精品剧情在线观看| 国产精品久久99| 午夜电影网一区| 国产精品资源网| 色国产精品一区在线观看| 91麻豆精品国产自产在线| 久久久国产精华| 一区二区日韩av| 极品美女销魂一区二区三区免费| 成人高清伦理免费影院在线观看| 91麻豆视频网站| 精品国产伦一区二区三区免费| 国产精品久久久久影院| 丝袜美腿亚洲色图| 成人a区在线观看| 欧美一级黄色大片| 亚洲日本va午夜在线电影| 男人的天堂亚洲一区| www.亚洲在线| 欧美一二三区在线| 18成人在线视频| 九九九精品视频| 91成人国产精品| 国产亚洲一区二区在线观看| 五月综合激情日本mⅴ| 成人午夜视频在线| 日韩视频一区二区三区| 一区二区三区在线视频免费| 国模一区二区三区白浆| 欧美亚男人的天堂| 中文字幕在线观看不卡视频| 麻豆成人在线观看| 日本韩国一区二区| 久久免费视频一区| 天天色综合成人网| 91精彩视频在线观看| 日本一区二区免费在线观看视频 | 精品国产免费人成电影在线观看四季 | 色网站国产精品| 久久精品视频网| 美女视频黄久久| 欧美视频三区在线播放| 国产精品女主播av| 国产美女娇喘av呻吟久久| 在线播放欧美女士性生活| 亚洲日本丝袜连裤袜办公室| 国产盗摄一区二区三区| 精品久久一区二区| 日本亚洲电影天堂| 欧美日韩视频第一区| 亚洲综合激情另类小说区| av中文字幕不卡| 日本一区二区免费在线| 国产精品亚洲成人| 久久久久久久久久久黄色| 久久精品av麻豆的观看方式| 91精品国产黑色紧身裤美女| 亚洲va韩国va欧美va精品| 色婷婷综合久久久中文字幕| 亚洲人吸女人奶水| 99久久综合狠狠综合久久| 国产精品午夜久久| 国产91高潮流白浆在线麻豆 | 久久亚洲精品国产精品紫薇| 麻豆国产欧美一区二区三区| 欧美一级欧美一级在线播放| 午夜成人免费电影| 欧美精品乱码久久久久久| 丝袜美腿高跟呻吟高潮一区| 91精品国产91久久久久久最新毛片| 亚洲国产综合色| 欧美日韩免费不卡视频一区二区三区| 亚洲黄网站在线观看| 欧美性感一类影片在线播放| 亚洲综合999| 欧美日韩国产高清一区二区| 偷拍一区二区三区四区| 51久久夜色精品国产麻豆| 日本一道高清亚洲日美韩| 欧美tk丨vk视频| 国产精品1区二区.| 中文字幕在线观看不卡| 色噜噜狠狠成人网p站| 午夜视频在线观看一区| 欧美一a一片一级一片| 无码av免费一区二区三区试看| 日韩一区二区三区高清免费看看| 九色|91porny| 国产精品丝袜在线| 在线观看亚洲成人| 日韩av中文字幕一区二区三区| 欧美videofree性高清杂交| 国产成人免费视频网站| 一区二区中文视频| 欧美日韩成人一区| 国产一区高清在线| 中文字幕综合网| 欧美精品一二三| 国产激情视频一区二区三区欧美| 国产精品不卡在线| 欧美日韩一级黄| 国产成人精品免费| 亚洲一区在线观看免费观看电影高清| 欧美一区二区三区小说| 国产精品18久久久久久久网站| 亚洲人成网站在线| 欧美一区二区三区电影| 国产成人av电影在线| 亚洲精品免费播放| 欧美精品在线一区二区三区| 国产精品一区二区无线| 亚洲欧美日韩系列| 日韩美女在线视频| 91免费观看视频| 热久久免费视频| 国产精品伦一区| 91精品欧美福利在线观看| 成人精品视频一区二区三区尤物| 一区二区三区资源| 国产欧美视频一区二区三区| 欧美系列一区二区| 国产精品一区二区三区乱码| 一区二区成人在线视频| 26uuu久久综合| 欧美在线视频全部完| 国产福利一区二区| 日韩精品亚洲一区| ㊣最新国产の精品bt伙计久久| 日韩亚洲欧美综合| 欧美艳星brazzers| 99久久婷婷国产综合精品| 精品在线视频一区| 亚洲国产日韩a在线播放| 久久精品亚洲国产奇米99| 欧美一区二区三区公司| 91精品福利视频| 大尺度一区二区| 精品综合免费视频观看| 亚洲大片精品永久免费| 亚洲三级免费观看| 国产欧美一区视频| 日韩精品在线看片z| 欧美三级一区二区| www.亚洲色图| 国产99一区视频免费| 青青草国产成人99久久| 亚洲不卡av一区二区三区| 麻豆国产精品视频| 亚洲福中文字幕伊人影院| 国产精品国产三级国产专播品爱网 | 久久精品国产精品青草| 亚洲一区二区三区激情| 中文字幕一区二区三区不卡| 久久精品视频一区| 久久色视频免费观看| 91精品国产手机| 欧美绝品在线观看成人午夜影视| 色综合久久天天综合网| 成人av一区二区三区| 粉嫩一区二区三区性色av| 国产精品一区二区三区四区|