diff -r 2f88a7d66f50 -r 53b7818cd282 bluetoothengine/btsac/btrcc/src/btrccVolumeLevelControllerBase.cpp --- a/bluetoothengine/btsac/btrcc/src/btrccVolumeLevelControllerBase.cpp Tue May 11 16:23:08 2010 +0300 +++ b/bluetoothengine/btsac/btrcc/src/btrccVolumeLevelControllerBase.cpp Tue May 25 12:53:11 2010 +0300 @@ -82,6 +82,7 @@ iBtrccActive->GoActive(); (void) GetPhoneVolume(iPhoneVolume); + ScalePhoneVolume(iPhoneVolume); if( iPhoneVolume > -1) { DoStart( iPhoneVolume ); @@ -152,10 +153,13 @@ iRemoteVolume = aVolumeInPhoneScale; TInt vol; TInt err = GetPhoneVolume(vol); + ScalePhoneVolume(iPhoneVolume); if(!err) { + TInt prevPhVol = iPhoneVolume; iPhoneVolume = vol; - SetPhoneVolume(); + TInt remoteVol = RoundRemoteVolume(prevPhVol); + SetPhoneVolume(remoteVol); } } @@ -163,24 +167,18 @@ // CBTRCCVolumeLevelControllerBase::SetPhoneVolume // ----------------------------------------------------------------------------- // -void CBTRCCVolumeLevelControllerBase::SetPhoneVolume() +void CBTRCCVolumeLevelControllerBase::SetPhoneVolume(TInt aRemoteVol) { TRACE_FUNC - TRACE_INFO((_L("iRemoteVolume = %d, iPhoneVolume = %d"), iRemoteVolume, iPhoneVolume)) - if (iRemoteVolume != iPhoneVolume) + TRACE_INFO((_L("Remote Volume = %d, iPhoneVolume = %d"), aRemoteVol, iPhoneVolume)) + TInt err( KErrNotFound ); + if (aRemoteVol != iPhoneVolume) { - TInt event = (iRemoteVolume > iPhoneVolume) ? KPSVolumeUpClicked : KPSVolumeDownClicked; - TInt err = iVolKeyEventProperty.Set(event); - if (err) - { - TRACE_ERROR((_L("Set KMediaKeysVolumeKeyEvent err %d"), err)); - } - iState = ESetPhoneVolume; + TInt event = (aRemoteVol > iPhoneVolume) ? KPSVolumeUpClicked : KPSVolumeDownClicked; + err = iVolKeyEventProperty.Set(event); + TRACE_INFO((_L("Set KMediaKeysVolumeKeyEvent click %d err %d"), event, err)); } - else - { - iState = ESubscribePhoneVolume; - } + iState = err ? ESubscribePhoneVolume : ESetPhoneVolume; } // ----------------------------------------------------------------------------- @@ -205,6 +203,36 @@ } // ----------------------------------------------------------------------------- +// CBTRCCVolumeLevelControllerBase::GetCurrentRemoteVolume +// ----------------------------------------------------------------------------- +// +TInt CBTRCCVolumeLevelControllerBase::GetCurrentRemoteVolume() + { + return iRemoteVolume; + } + +// ----------------------------------------------------------------------------- +// CBTRCCVolumeLevelControllerBase::RoundRemoteVolume +// ----------------------------------------------------------------------------- +// +TInt CBTRCCVolumeLevelControllerBase::RoundRemoteVolume(TInt /*aPrevPhVol*/) + { + TRACE_FUNC + // default implementation + return iRemoteVolume; + } + +// ----------------------------------------------------------------------------- +// CBTRCCVolumeLevelControllerBase::ScalePhoneVolume +// ----------------------------------------------------------------------------- +// +void CBTRCCVolumeLevelControllerBase::ScalePhoneVolume(TInt& /*aVolume*/) + { + TRACE_FUNC + // default implementation + } + +// ----------------------------------------------------------------------------- // CBTRCCVolumeLevelControllerBase::RequestCompletedL // ----------------------------------------------------------------------------- // @@ -213,7 +241,9 @@ TRACE_FUNC if(aActive.ServiceId() == KVolumeChangeListenerServiceId) { + TInt prevPhVol = iPhoneVolume; TInt err = GetPhoneVolume(iPhoneVolume); + ScalePhoneVolume(iPhoneVolume); if(!err && !aErr && iPhoneVolume > -1) { @@ -224,7 +254,8 @@ AdjustRemoteVolume(iPhoneVolume); break; case ESetPhoneVolume: - SetPhoneVolume(); + TInt remoteVol = RoundRemoteVolume(prevPhVol); + SetPhoneVolume(remoteVol); break; } }