⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headset_soundmanager.c

📁 BlueLab 3.5.2 单声道耳机源码
💻 C
字号:
/****************************************************************************Copyright (C) Cambridge Silicon Radio Ltd. 2004-2006Part of BlueLab 3.6.2-releaseFILE NAME    headset_soundmanager.c    DESCRIPTION    module responsible for tone generation and playback    */#include "headset_private.h"#include "headset_configmanager.h"#include "headset_events.h"#include "headset_soundmanager.h"#include "headset_tones.h"#include "headset_volume.h"#include "headset_audio.h"#include <csrtypes.h>#include <stddef.h>/****************************************************************************VARIABLES      */#define SOM_RING_TONE 0x60FF /****************************************************************************Local Functions*//****************************************************************************FUNCTIONS*//****************************************************************************NAME  soundManagerInitDESCRIPTION Initialises sound managerRETURNS void    */void soundManagerInit ( hsTaskData * pApp ) {    uint16 lNote = 0 ;        uint16 lSize =0 ;        SOM_DEBUG (("SOM Init : \n")) ;          /*need to create the space for the event mapping and the vol tone mapping*/    lSize = (EVENTS_MAX_EVENTS * sizeof ( HeadsetTone_t ) ) ;        SOM_DEBUG(("SOM: sz[%x] \n",lSize)) ;            /*allocate the total space*/    pApp->theSoundTask.gEventTones = ( HeadsetTone_t * ) mallocPanic ( lSize ) ;                /*malloc the volume Mappings*/    lSize = (SOM_NUM_VOL_SETTINGS * sizeof (VolMapping_t) ) ;            pApp->theSoundTask.gVolMaps = (VolMapping_t *) mallocPanic ( lSize ) ;            for ( lNote =  0 ; lNote  < EVENTS_MAX_EVENTS ; lNote ++ )    {        pApp->theSoundTask.gEventTones[ lNote ] = TONE_NOT_DEFINED ;    }       for (lNote = 0 ; lNote  < SOM_NUM_VOL_SETTINGS ; lNote ++ )    {        pApp->theSoundTask.gVolMaps [ lNote ].IncVol  = 0 ;        pApp->theSoundTask.gVolMaps [ lNote ].DecVol  = 0 ;                pApp->theSoundTask.gVolMaps [ lNote ].Mic  = SOM_DEFAULT_MIC_LEVEL ;        pApp->theSoundTask.gVolMaps [ lNote ].Tone = TONE_NOT_DEFINED ;    }            /*initialise*/    pApp->theSoundTask.gVolButtonsInverted = FALSE ;            /*init the tones routines*/    TonesInit( pApp ) ;              /*now we are set up - default our internal vol setting*/    VolumeDefault ( pApp , SOM_DEFAULT_VOLUME_LEVEL) ;   }/****************************************************************************NAME  soundManagerIndicateEventDESCRIPTION function to indaicate an event by playing its associated tone uses underlying    tones playbackRETURNS void    */void soundManagerIndicateEvent ( hsTaskData * pApp,  headsetEvents_t pEvent ){        uint16 lEventIndex = pEvent - EVENTS_EVENT_BASE ;            /*if the tone is present*/    if (pApp->theSoundTask.gEventTones [ lEventIndex ] != TONE_NOT_DEFINED )    {        SOM_DEBUG(("SOM: EvPl[%x][%x][%x]\n", pEvent, lEventIndex , (int) pApp->theSoundTask.gEventTones [ lEventIndex]  )) ;                soundManagerPlayTone (pApp ,  pApp->theSoundTask.gEventTones [ lEventIndex] ) ;    }    else    {        SOM_DEBUG(("SOM: NoPl[%x]\n", pEvent)) ;    }        } /*-- Abstraction layer for the volume functions --*//****************************************************************************NAME  soundManagerVolumeUpDESCRIPTION Increment volumeRETURNS void    */void soundManagerVolumeUp ( hsTaskData   * pApp ) {    if ( pApp->theSoundTask.gVolButtonsInverted )    {        SOM_DEBUG(("SOM: Vol Inverted Up->Down\n"));        VolumeDown( pApp ) ;    }    else    {        VolumeUp ( pApp ) ;    }}/****************************************************************************NAME  soundManagerVolumeDownDESCRIPTION Deccrement volumeRETURNS void    */void soundManagerVolumeDown ( hsTaskData * pApp ) {    if ( pApp->theSoundTask.gVolButtonsInverted )    {        SOM_DEBUG(("SOM: Vol Inverted Down->Up\n"));        VolumeUp( pApp ) ;    }    else    {        VolumeDown ( pApp ) ;    }}/****************************************************************************NAME  soundManagerVolumeDefaultDESCRIPTION Set default volumeRETURNS void    */void soundManagerVolumeDefault (const bdaddr* bd_addr) { /* Get the default volume level */ VolumeGetStoredAGVolumeLevel(bd_addr);}/****************************************************************************NAME  soundManagerHandleVolumeLevelDESCRIPTION Handle message containing the volume level of the requested AGRETURNS void    */void soundManagerHandleVolumeLevel(hsTaskData* pApp, CL_SM_GET_ATTRIBUTE_CFM_T* cfm){ uint16 level;  if(cfm->status == success)  level = cfm->psdata[0]; else  level = SOM_DEFAULT_VOLUME_LEVEL;  VolumeDefault(pApp, level);}/****************************************************************************NAME  soundManagerToggleMuteDESCRIPTION Toggle muteRETURNS void    */void soundManagerToggleMute ( hsTaskData * pApp ){    VolumeToggleMute ( pApp ) ;}/****************************************************************************NAME  VolumeMuteOnDESCRIPTION Enables MuteRETURNS void    */void soundManagerMuteOn ( hsTaskData * pApp ) {    VolumeMuteOn ( pApp )  ;}/****************************************************************************NAME  soundManagerMuteOffDESCRIPTION Disables MuteRETURNS void    */void soundManagerMuteOff ( hsTaskData * pApp ) {    VolumeMuteOff ( pApp ) ;}/****************************************************************************NAME  soundManagerCompleteUnmuteDESCRIPTION Finish the unmute actionRETURNS void    */void soundManagerCompleteUnmute ( hsTaskData * pApp ) {    VolumeCompleteUnmuteMicrophone ( pApp ) ;}/****************************************************************************NAME  soundManagerHandleVolumeIndDESCRIPTION Volume change indication from connected AGRETURNS void    */void soundManagerHandleVolumeInd ( hsTaskData * pApp , uint16 pProfileVolume ) {    VolumeHandleVolumeInd ( pApp , pProfileVolume ) ;}/****************************************************************************NAME  soundManagerHandleMicIndDESCRIPTION Microphone gain incrementRETURNS void    */void soundManagerHandleMicInd ( hsTaskData * pApp , uint16 pMicGain ) {        /*if we were muted then unmute via the event so as to play tones and cancel reminder etc*/    if (pApp->theSoundTask.gMuted == VOL_MUTED )    {        MessageSend ( &pApp->task , EventMuteOff , 0 ) ;    }        VolumeSetMicLevel ( pApp , pMicGain ) ;}/****************************************************************************NAME  soundManagerConfigureVolumeSettingsDESCRIPTION Configure local volume related settingsRETURNS void    */void soundManagerConfigureVolumeSettings ( hsTaskData * pApp ,                                           uint16 pProfileVolume ,                                            uint16 pIncLevel ,                                            uint16 pDecLevel ,                                           uint16 pMicLevel ,                                            HeadsetTone_t pTone ,                                           uint16 pVolGain ,                                           uint16 pMicGain)  {   VolumeConfigureVolumeSettings ( pApp , pProfileVolume ,pIncLevel ,pDecLevel , pMicLevel , pTone , pVolGain , pMicGain ) ;}/* -- Abstraction layer for tones functions --*//****************************************************************************NAME  soundManagerConfigureEventToneDESCRIPTION Configure tone eventRETURNS void    */void soundManagerConfigureEventTone ( hsTaskData * pApp ,headsetEvents_t pEvent , HeadsetTone_t pTone ) {        if (pEvent == SOM_RING_TONE )    {           if ( ToneIsDefined ( pTone ) )         {            SOM_DEBUG(("SOM: ConfRingTone [%x]\n" , pTone)) ;                        pApp->RingInfo.RingTone = pTone ;        }        }    else    {        TonesConfigureEvent ( pApp , pEvent , pTone ) ;    }        }/****************************************************************************NAME  soundManagerPlayToneDESCRIPTION Play toneRETURNS	void    */void soundManagerPlayTone ( hsTaskData * pApp , HeadsetTone_t pTone ){    TonesPlayTone ( pApp , pTone ) ;}/****************************************************************************NAME  soundManagerIsToneDefinedDESCRIPTION Check if tone is definedRETURNS void    */bool soundManagerIsToneDefined ( HeadsetTone_t pTone ) {    return ( ToneIsDefined ( pTone ) ) ;}/****************************************************************************NAME  soundManagerStoreVolumeLevelDESCRIPTION Persistently store the current volume levelRETURNS void    */void soundManagerStoreVolumeLevel(hsTaskData * pApp, const bdaddr* bd_addr){ VolumeSetStoredAGVolumeLevel(bd_addr, pApp->theSoundTask.gSMVolumeLevel);}void soundManagerOutOfBandRing ( hsTaskData * pApp ){     if (! pApp->RingInfo.InBandRingEnabled )     {        SOM_DEBUG(("SOM: OutBandRing[%x]\n" , pApp->RingInfo.RingTone)) ;        /* Play ring tone from configuration */        TonesPlayTone ( pApp , pApp->RingInfo.RingTone );     }     else     {        SOM_DEBUG(("SOM: InBandRing \n")) ;       }}/****************************************************************************NAME  soundManagerMuteRemindDESCRIPTION Sends a mute reminder message RETURNS */void soundManagerMuteRemind ( hsTaskData * pApp ) {    VolumeMuteRemind ( pApp ) ;}/****************************************************************************NAME  soundManagerSendAndSetCurrentVolumeDESCRIPTIONSends and sets the current volume to the headset RETURNS */void soundManagerSendAndSetCurrentVolume ( hsTaskData * pApp ){        /*get the curent volume Level*/    uint16 lLevel = pApp->theSoundTask.gSMVolumeLevel ;        VolumeDefault (pApp , lLevel ) ;}

⌨️ 快捷键说明

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