- /****************************************************************************************
- * Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
- * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
- *
- * File: $Workfile: HeadPhone.c $
- *
- * Description: detect HeadPhone status
- *
- ****************************************************************************************/
- #include "Config.h" // Global Configuration - do not remove!
- #ifdef D_ENABLE_HEADPHONE_DETECT
- #include "Includesysdefs.h"
- #include "Kernelker_api.h"
- #include "KernelEventDef.h"
- #include "Decoderdecoder.h"
- #include "PlaycoreCoremaincoregdef.h"
- #include "PlaycorePSps.h"
- #include "PlaycoreHeadPhoneHeadPhone.h"
- static BOOL gb_HeadPhone_Detected = FALSE;
- static HEADPHONE_STATE b_last_HeadPhone_Detected = HEADPHONE_PLUG_OUT;
- static int g_HeadPhoneInProcess = 0;
- #ifndef COUNTER_TO_DEACTIVATE_HEADPHONE
- #define COUNTER_TO_DEACTIVATE_HEADPHONE 80
- #endif
- #ifndef COUNTER_TO_ACTIVATE_HEADPHONE
- #define COUNTER_TO_ACTIVATE_HEADPHONE 80
- #endif
- void SetHeadPhone(void);
- int HeadPhoneDetection(void);
- void HeadPhoneDetectionInit(void);
- /**************************************************************************
- *
- * Function : SetHeadPhone
- *
- * In : void
- * Out : void
- *
- * Return : void
- *
- * Desc : send message to decoder when HeadPhone is plug in/out
- *
- ***************************************************************************/
- void SetHeadPhone(void)
- {
- static UINT16 count = 0x0;
- DWORD dCmd;
- if (TRUE == gb_HeadPhone_Detected)
- {
- if(HEADPHONE_PLUG_OUT == b_last_HeadPhone_Detected)
- {
- count = 0x0;
- b_last_HeadPhone_Detected = HEADPHONE_PLUG_IN;
- }
- else
- if(count < COUNTER_TO_ACTIVATE_HEADPHONE)
- {
- count++;
- }
- else if(HEADPHONE_PLUG_IN != gtps.mHeadPhone)
- {
- dCmd = (((DWORD)PS_UPDATE_HEADPHONE_SETTING)<<16) + (DWORD)HEADPHONE_PLUG_IN;
- k_ie_send_ex(IE_CORE_UPDATE_PS, (void *)dCmd);
- count = 0x0;
- }
- }
- else
- {
- if(HEADPHONE_PLUG_IN == b_last_HeadPhone_Detected)
- {
- count = 0x0;
- b_last_HeadPhone_Detected = HEADPHONE_PLUG_OUT;
- }
- else
- if(count < COUNTER_TO_DEACTIVATE_HEADPHONE)
- {
- count++;
- }
- else if(HEADPHONE_PLUG_OUT != gtps.mHeadPhone)
- {
- dCmd = (((DWORD)PS_UPDATE_HEADPHONE_SETTING)<<16) + (DWORD)HEADPHONE_PLUG_OUT;
- k_ie_send_ex(IE_CORE_UPDATE_PS, (void *)dCmd);
- count = 0x0;
- }
- }
- g_HeadPhoneInProcess = 0x0;
- }
- /**************************************************************************
- *
- * Function : HeadPhoneDetection
- *
- * In : void
- * Out : void
- *
- * Return : TRUE if Headphone plug in, FALSE else
- *
- * Desc :
- *
- ***************************************************************************/
- int HeadPhoneDetection(void)
- {
- gb_HeadPhone_Detected = ioHeadPhoneDetection();
- return TRUE;
- }
- /**************************************************************************
- *
- * Function : HeadPhoneDetectionInit
- *
- * In : void
- * Out : void
- *
- * Return : void
- *
- * Desc :
- *
- ***************************************************************************/
- void HeadPhoneDetectionInit(void)
- {
- /* Install the callback function for Vocal Detection and Set */
- DEC_install_fast_callback(HeadPhoneDetection, SetHeadPhone, &g_HeadPhoneInProcess);
- }
- #endif