tda7496.c

来自「GM5621原代码」· C语言 代码 · 共 253 行

C
253
字号
/*
   $Workfile:   TDA7496.c  $
   $Revision:   1.0  $
   $Date:   May 17 2006 01:08:34  $
*/
#define __TDA7496_C__
//******************************************************************************
//
//              Copyright (C) 2002.  GENESIS MICROCHIP INC.
//      All rights reserved.  No part of this program may be reproduced.
//
//     Genesis Microchip Inc., 165 Commerce Valley Dr. West
//     Thornhill, Ontario, Canada, L3T 7V8
//
//==============================================================================
//
// MODULE:     TDA7496.c
//
// USAGE:      Contains Functions related to audio decoder TDA7496
// 
//******************************************************************************

//******************************************************************************
//  I N C L U D E    F I L E S                                              
//******************************************************************************
#include "inc\all.h"

#if (USE_AUDIO && USE_GSEL_DRVR_MODEL && (DEV_AUDIO_DECODER == DEV_TDA7496))
#define DEBUG_AUD 0
#define DEBUG_ADD_EX 0

#if DEBUG_AUD && DEBUG_MSG
   #define msg(a,b)   gm_Print((const char far *)a,b)
#else
   #define msg(a,b)
#endif
#if DEBUG_ADD_EX && DEBUG_MSG
   #define msgx(a,b)   gm_Print((const char far *)a,b)
#else
   #define msgx(a,b)
#endif

//******************************************************************************
//  L O C A L    D E F I N I T I O N S
//******************************************************************************


//******************************************************************************
//   G L O B A L    F U N C T I O N    P R O T O T Y P E S
//******************************************************************************
static BYTE __near dev_TDA7496GetOutputVolume(void);
static void __near dev_TDA7496SetOutputMute(BYTE ctrl);
static void __near dev_TDA7496SetOutputVolume(BYTE vol);
static BYTE __near dev_TDA7496GetOutputMute(void);
static void __near dev_TDA7496SetStandby_On(BYTE ctrl);
static void __near dev_TDA7496SetConfig(BYTE val);

//******************************************************************************
//  G L O B A L    V A R I A B L E S
//******************************************************************************

//******************************************************************************
//  S T A T I C    V A R I A B L E S
//******************************************************************************

//******************************************************************************
//  S T A T I C    F U N C T I O N    P R O T O T Y P E S
//******************************************************************************

//******************************************************************************
//  C O D E
//******************************************************************************
//******************************************************************************
//
// FUNCTION     :   BYTE dev_TDA7496GetOutputVolume(void)
// USAGE        :   This function returns the current output volume
// INPUT        :   None
// OUTPUT       :   returns the volume value
// GLOBALS      :   None
// USED_REGS    :
//******************************************************************************
static BYTE __near dev_TDA7496GetOutputVolume(void)
{
	return AUDIO_GET_PWM_PULSE_VALUE();
}


//******************************************************************************
//
// FUNCTION     :   void dev_TDA7496SetOutputVolume(BYTE vol)
// USAGE        :   This function sets the output Volume value
// INPUT        :   Volume value
// OUTPUT       :   None
// GLOBALS      :   None
// USED_REGS    :
//******************************************************************************
static void __near dev_TDA7496SetOutputVolume(BYTE vol)
{

	if(vol>=AUDIO_VOL_PWM_MAX)
		vol=AUDIO_VOL_PWM_MAX;

	if(vol<=AUDIO_VOL_PWM_MIN)
		vol=AUDIO_VOL_PWM_MIN;

	#if (!AUDIO_VOL_PWM_POLARITY)	//1: Volume up if PWM value increase 		
		vol=AUDIO_VOL_PWM_MAX-vol;  //0: Volume down if PWM value decrease
	#endif
	
	msg("TDA7496:SetOutPutVolume= %d",vol);
	AUDIO_PWM_PULSE_VALUE(vol);
	gm_SyncUpdate();
}


//******************************************************************************
//
// FUNCTION     :   void dev_TDA7496SetOutputMute(BYTE ctrl)
// USAGE        :   This function sets the Mute or UnMute for TDA7496
// INPUT        :   gmd_TRUE=Mute / gmd_FALSE=UnMute
// OUTPUT       :   None
// GLOBALS      :   None
// USED_REGS    :
//******************************************************************************
static void __near dev_TDA7496SetOutputMute(BYTE ctrl)
{
	msg("TDA7496:SetOutPutMute= %d",ctrl);
//	AUD_Mute_Ctrl_Setup();
	if(ctrl)
		AUD_Mute_ON();
	else
		AUD_UnMute();
}
//******************************************************************************
//
// FUNCTION     :   BYTE dev_TDA7496GetOutputMute(void)
// USAGE        :   This function returns the status of the audio mute
// INPUT        :   None
// OUTPUT       :   gmd_False - UnMute
//                  gmd_TRUE  - Mute
// GLOBALS      :   None
// USED_REGS    :
//******************************************************************************
static BYTE __near dev_TDA7496GetOutputMute(void)
{
	return AUD_Get_Mute_Status();
}

//******************************************************************************
//
//  FUNCTION     :   void dev_TDA7496SetStandby_On(BYTE ctrl)
//  USAGE        :   This function set the standby control pin of TDA7496.
//  INPUT        :   ctrl=1 : Enter Standby     ctrl=0: Normal operation mode.
//  OUTPUT       :   None
//  GLOBALS      :   None
//
//******************************************************************************
static void __near dev_TDA7496SetStandby_On(BYTE ctrl)
{
	msg("TDA7496:SetStandby_On= %d",ctrl);
	if(ctrl)
		AUD_STBY_ON();
		
	else
		AUD_STBY_OFF();
}

//******************************************************************************
//
//  FUNCTION     :   void dev_TDA7496SetConfig(BYTE val)
//  USAGE        :   This function set the audeo TDA7496 configrations.
//  INPUT        :   val: configrarion type
//  OUTPUT       :   None
//  GLOBALS      :   None
//
//******************************************************************************
static void __near dev_TDA7496SetConfig(BYTE val)
{
	switch(val)
	{
		case AUDIO_INIT	:
			msg("TDA7496:AUD_INIT",0);
			AUDIO_VOL_Ctrl_Setup1();
			AUDIO_VOL_Ctrl_Setup2();
			AUDIO_PWM_PULSE_VALUE((AUDIO_VOL_PWM_MAX+AUDIO_VOL_PWM_MIN)/2);
			gm_SyncUpdate();
			
			AUD_Mute_Ctrl_Setup();
			AUD_Mute_ON();
			
			AUD_STBY_Ctrl_Setup1();
			AUD_STBY_Ctrl_Setup2();
			AUD_STBY_OFF();
			break;
		default:
            msg("TDA7496: No Audio Decoder SetConfig Function!!",0);
            break;
	}
}
//******************************************************************************
//
//  FUNCTION     :   TDA7496_AudioDecoderEntry(BYTE func, void *p1, void *p2)
//  USAGE        :   This function is main entry point into the audio decoder
//                   driver.
//  INPUT        :   driver function and WORD value.
//  OUTPUT       :   returns WORD value.
//  GLOBALS      :   None
//  USED_REGS    :   None
//
//******************************************************************************
#pragma argsused
WORD TDA7496_AudioDecoderEntry(BYTE func, void *p1, void *p2)
{
   WORD val = (WORD)p1;
//   WORD val2 = (WORD)p2;

   WORD ret = 0;
   msgx("**From Call Driver:TDA7496",0);
   msgx("  Func number = %d", func);
   msgx("  P1= 0x%x", val);
//   msgx("  P1= 0x%x", val2);

   switch(func)
   {
   case gmd_AUD_SET_STANDBY_ON     :
      dev_TDA7496SetStandby_On((BYTE)val);
      break;
   case gmd_AUD_SET_OUTPUT_VOLUME  :
      dev_TDA7496SetOutputVolume((BYTE)val);
      break;
   case gmd_AUD_SET_OUTPUT_MUTE    :
      dev_TDA7496SetOutputMute((BYTE)val);
      break;
   case gmd_AUD_GET_OUTPUT_VOLUME  :
      ret = (WORD)dev_TDA7496GetOutputVolume();
      break;
   case gmd_AUD_GET_OUTPUT_MUTE    :
      ret = (WORD)dev_TDA7496GetOutputMute();
      break;
   case gmd_AUD_SET_CONFIG:
      dev_TDA7496SetConfig((BYTE)val);
      break;
   default :
      msg("TDA7496: No Audio Decoder Function!!",0);
      break;
   }

   return ret;
}

#endif //(USE_AUDIO && USE_GSEL_DRVR_MODEL && (DEV_AUDIO_DECODER == DEV_TDA7496))

⌨️ 快捷键说明

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