📄 headset_soundmanager.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 + -