diff -r e5618cc85d74 -r 6c158198356e javauis/nokiasound_akn/src/cmidtone.cpp --- a/javauis/nokiasound_akn/src/cmidtone.cpp Thu Jul 15 18:31:06 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,244 +0,0 @@ -/* -* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This class implements beep playing and OTA ringingtone playing. -* -*/ - - -#include -#include - -#include "com_nokia_mid_sound_Sound.h" -#include "CMIDTone.h" -#include "MMIDEventSender.h" - -namespace -{ -const TInt KMIDMaxJavaVolume = 255; -const TInt KMIDMinNativeVolume = 1; -const TInt KMIDStopSleepTime = 10000; -const TInt KMIDMicrosInMilli = 1000; -const TInt KMIDMinDataLength = 4; -const TInt KMIDLoopForever = 999999; -} - -CMIDTone* CMIDTone::NewL(TInt aFreq, TInt64 aDuration, - MMIDEventSender* aEventSender) -{ - CMIDTone* self = new(ELeave) CMIDTone(aEventSender); - CleanupStack::PushL(self); - self->ConstructL(aFreq, aDuration); - CleanupStack::Pop(self); - return self; -} - -CMIDTone* CMIDTone::NewL(const TDesC8& aData, MMIDEventSender* aEventSender) -{ - CMIDTone* self = new(ELeave) CMIDTone(aEventSender); - CleanupStack::PushL(self); - self->ConstructL(aData); - CleanupStack::Pop(self); - return self; -} - - -CMIDTone::~CMIDTone() -{ - if (iMdaAudioToneUtility) - { - if (iMdaAudioToneUtility->State() == EMdaAudioToneUtilityNotReady) - { - iMdaAudioToneUtility->CancelPrepare(); - } - else if (iMdaAudioToneUtility->State() - == EMdaAudioToneUtilityPlaying) - { - iMdaAudioToneUtility->CancelPlay(); - } - } - delete iMdaAudioToneUtility; - delete iSchedulerWait; -} - -CMIDTone::CMIDTone(MMIDEventSender* aEventSender) - : CMIDSoundImpl(aEventSender) -{ -} - -void CMIDTone::ConstructL(TInt aFreq, TInt64 aDuration) -{ - CMIDSoundImpl::ConstructL(); - iSchedulerWait = new(ELeave) CActiveSchedulerWait; - iFreq = aFreq; - iDuration = aDuration; - iState = EInitialising; - iMdaAudioToneUtility = CMdaAudioToneUtility::NewL(*this); - iMdaAudioToneUtility->PrepareToPlayTone(iFreq, - TTimeIntervalMicroSeconds(iDuration * KMIDMicrosInMilli)); - iSchedulerWait->Start(); -} - -void CMIDTone::ConstructL(const TDesC8& aData) -{ - CMIDSoundImpl::ConstructL(); - iSchedulerWait = new(ELeave) CActiveSchedulerWait; - // first byte is the number of command parts - iFreq = 0; - iDuration = 0; - iState = EInitialising; - - if (aData.Length() < KMIDMinDataLength) - { - iState = ENotSupported; - User::Leave(KErrArgument); - } - - if (aData[0x000] == 0x02 && aData[0x001] == 0x4a && aData[0x002] == 0x3a) - { - iState = EInitialising; - } - else if (aData[0x000] == 0x03 && aData[0x001] == 0x4a && aData[0x002] == - 0x44 && aData[0x003] == 0x3a) - { - iState = EInitialising; - } - else if (aData[0] == 0x00 && aData[1] == 0x11) - { - iState = EInitialising; - } - else - { - iState = ENotSupported; - User::Leave(KErrArgument); - } - iMdaAudioToneUtility = CMdaAudioToneUtility::NewL(*this); - iMdaAudioToneUtility->PrepareToPlayDesSequence(aData); - iSchedulerWait->Start(); - -} - -TInt CMIDTone::Play(TInt aLoop) -{ - __ASSERT_DEBUG(iState == EReadyToPlay, User::Invariant()); - - if (aLoop == 0) - { - // There is no known working method to play tone forever - aLoop = KMIDLoopForever; - } - - // Setting repeats to 1 causes sound played twice - if (aLoop == 1) - { - iMdaAudioToneUtility->SetRepeats(0, TTimeIntervalMicroSeconds(0)); - } - else if (aLoop > 1) - { - iMdaAudioToneUtility->SetRepeats(aLoop, TTimeIntervalMicroSeconds(0)); - } - - iMdaAudioToneUtility->Play(); - - iEventSender->SendEvent(com_nokia_mid_sound_Sound_SOUND_PLAYING); - iState = EPlaying; - iPlayed = ETrue; - - return KErrNone; -} - -void CMIDTone::Stop() -{ - if (iState == EPlaying) - { - iMdaAudioToneUtility->CancelPlay(); - // sleep to make sure the device has time to stop - User::After(TTimeIntervalMicroSeconds32(KMIDStopSleepTime)); // CSI: 92 MdaAudioToneUtility does not send event when stopping has finished # - iEventSender->SendEvent(com_nokia_mid_sound_Sound_SOUND_STOPPED); - iState = EReadyToPlay; - } -} - -void CMIDTone::SetVolume(TInt aVolume) -{ - TInt maxVolume = iMdaAudioToneUtility->MaxVolume(); - TInt volume = 0; - if (aVolume) - { - volume = (((maxVolume - - KMIDMinNativeVolume + 1) - * aVolume) - / (KMIDMaxJavaVolume + 1)) + KMIDMinNativeVolume; - } - iMdaAudioToneUtility->SetVolume(volume); -} - -TInt CMIDTone::Volume() -{ - TInt maxVolume = iMdaAudioToneUtility->MaxVolume(); - TInt volume = (iMdaAudioToneUtility->Volume() * - KMIDMaxJavaVolume) / maxVolume; - - return volume; -} - -void CMIDTone::MatoPrepareComplete(TInt aError) -{ - if (aError == KErrNone) - { - iState = EReadyToPlay; - } - else - { - if (aError == KErrNotSupported) - { - iState = ENotSupported; - } - else - { - iState = ENotReady; - } - } - iSchedulerWait->AsyncStop(); -} - -void CMIDTone::MatoPlayComplete(TInt aError) -{ - if (KErrNone == aError) - { - iEventSender->SendEvent(com_nokia_mid_sound_Sound_SOUND_STOPPED); - iState = EReadyToPlay; - } -} - -void CMIDTone::Release() -{ - iState = ENotReady; - if (iMdaAudioToneUtility) - { - if (iMdaAudioToneUtility->State() == EMdaAudioToneUtilityNotReady) - { - iMdaAudioToneUtility->CancelPrepare(); - } - else if (iMdaAudioToneUtility->State() == EMdaAudioToneUtilityPlaying - || iState == EPlaying) - { - iMdaAudioToneUtility->CancelPlay(); - } - } - delete iMdaAudioToneUtility; - iMdaAudioToneUtility = NULL; - iState = ENotReady; -} - -// End of File