mmserv/tms/tmsserver/src/tmsaudioinbandtoneplayer.cpp
branchRCL_3
changeset 20 0ac9a5310753
parent 19 095bea5f582e
child 21 999b2818a0eb
--- a/mmserv/tms/tmsserver/src/tmsaudioinbandtoneplayer.cpp	Tue Aug 31 15:43:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,371 +0,0 @@
-/*
- * Copyright (c) 2009 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: Telephony Multimedia Service
- *
- */
-
-//  INCLUDE FILES
-
-#include <tms.h>
-#include <AudioPreference.h>
-#include <data_caging_path_literals.hrh>
-#include <defaultbeep.rsg>
-#include "tmsutility.h"
-#include "tmsaudioinbandtoneplayer.h"
-#include "tmsaudiotoneutilityimpl.h"
-
-using namespace TMS;
-
-// CONSTANTS
-const gint KPhoneInbandVolumeMax = 10;
-const gint KPhoneInbandVolumeMin = 0;
-
-// Resourcefile destination.
-_LIT(KSystemDefaultbeepRscDrive, "Z:");
-_LIT(KSystemDefaultbeepRscFile, "DEFAULTBEEP.rSC");
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-TMSAudioInbandTonePlayer* TMSAudioInbandTonePlayer::NewL()
-    {
-    TMSAudioInbandTonePlayer* self = new (ELeave) TMSAudioInbandTonePlayer();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-//Destructor
-TMSAudioInbandTonePlayer::~TMSAudioInbandTonePlayer()
-    {
-    TRACE_PRN_FN_ENT;
-    iResourceFile.Close();
-    iFsSession.Close();
-    iTones.ResetAndDestroy();
-    iTones.Close();
-    if (iPlayer)
-        {
-        iPlayer->CancelPlay();
-        }
-    delete iPlayer;
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::TMSAudioInbandTonePlayer
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-TMSAudioInbandTonePlayer::TMSAudioInbandTonePlayer() :
-    iPlayer(NULL)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::ConstructL()
-    {
-    TRACE_PRN_FN_ENT;
-    iPlayer = TMSAudioToneUtilityImpl::NewL(*this);
-    iTones.Reset();
-    CreateToneSequencesL();
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::CreateSequencesL
-// Create inband tone sequences from resources.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::CreateToneSequencesL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    iFileName = KSystemDefaultbeepRscDrive;
-    iFileName.Append(KDC_RESOURCE_FILES_DIR);
-    iFileName.Append(KSystemDefaultbeepRscFile);
-    iFsSession.Connect();
-    iResourceFile.OpenL(iFsSession, iFileName);
-
-    // DO NOT change order of sequence allocation!
-    AllocSeqFromResourceL(R_NET_BUSY);                 //iTones[0]
-    AllocSeqFromResourceL(R_NET_RADIO_NOT_AVAILABLE);  //iTones[1]
-    AllocSeqFromResourceL(R_NET_CONGESTION);           //iTones[2]
-    AllocSeqFromResourceL(R_NET_SPECIAL_INFORMATION);  //iTones[3]
-    AllocSeqFromResourceL(R_NET_REORDER);              //iTones[4]
-    AllocSeqFromResourceL(R_NET_RING_GOING);           //iTones[5]
-    AllocSeqFromResourceL(R_NET_CALL_WAITING);         //iTones[6]
-    AllocSeqFromResourceL(R_DATA_CALL_TONE);           //iTones[7]
-    AllocSeqFromResourceL(R_NO_SOUND_SEQUENCE);        //iTones[8]
-    AllocSeqFromResourceL(R_BEEP_SEQUENCE);            //iTones[9]
-
-    iResourceFile.Close();
-    iFsSession.Close();
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::AllocSeqFromResourceL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::AllocSeqFromResourceL(const gint resource)
-    {
-    HBufC8* res = iResourceFile.AllocReadLC(resource);
-    iReader.SetBuffer(res);
-    gint length = iReader.ReadInt16();
-    HBufC8* buf = HBufC8::NewL(length);
-    TPtr8 ptr(buf->Des());
-    for (gint i = 0; i < length; i++)
-        {
-        ptr.Append(iReader.ReadUint16());
-        }
-    User::LeaveIfError(iTones.Append(buf));
-    CleanupStack::PopAndDestroy(res);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::PlayInbandTone
-// Searches the given Inband tone from iToneArray and calls PlayCurrentTone.
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::PlayInbandTone(TMSInbandToneType tone)
-    {
-    TRACE_PRN_FN_ENT;
-
-    // First stop any ongoing playback
-    Cancel();
-    UpdateTonePlayerVolume();
-    iToneName = tone;
-
-    if (iPlayer && (tone >= 0 && tone < iTones.Count()))
-        {
-        iPlayer->PrepareToPlayDesSequence(iTones[tone]->Des());
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::Cancel
-// Cancels the currently playing tone.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::Cancel()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (iPlayer)
-        {
-        if (iPlayer->State() == EMdaAudioToneUtilityNotReady)
-            {
-            // Prepare is called, but toneplayer's state is not yet prepare,
-            // then cancel to prepare is needed.
-            iPlayer->CancelPrepare();
-            }
-        else
-            {
-            iPlayer->CancelPlay();
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::PlayCurrentTone
-// Cancels the currently playing tone.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::PlayCurrentTone()
-    {
-    TRACE_PRN_FN_ENT;
-    if (iPlayer)
-        {
-        if (iPlayer->State() == EMdaAudioToneUtilityPrepared)
-            {
-            UpdateTonePlayerVolume();
-
-            switch (iToneName)
-                {
-                case TMS_INBAND_USER_BUSY:
-                    SetToneAttributes(KAudioPrefBusy);
-                    break;
-                case TMS_INBAND_RADIO_PATH_NOT_AVAIL:
-                    SetToneAttributes(KAudioPrefRadioNotAvailable);
-                    break;
-                case TMS_INBAND_CONGESTION:
-                    SetToneAttributes(KAudioPrefCongestion);
-                    break;
-                case TMS_INBAND_SPECIAL_INFO:
-                    SetToneAttributes(KAudioPrefSpecialInformation);
-                    break;
-                case TMS_INBAND_REORDER:
-                    SetToneAttributes(KAudioPrefReorder);
-                    break;
-                case TMS_INBAND_REMOTE_ALEARTING:
-                    SetToneAttributes(KAudioPrefRingGoing);
-                    break;
-                case TMS_INBAND_CALL_WAITING:
-                    SetToneAttributes(KAudioPrefCallWaiting,
-                            KAudioPriorityNetMsg, 0);
-                    break;
-                case TMS_INBAND_DATA_CALL:
-                    SetToneAttributes(KAudioPrefIncomingDataCall,
-                            KAudioPriorityPhoneCall);
-
-            //      if ( iRingingType == EProfileRingingTypeAscending )
-            //           {
-            //           iPlayer->SetVolumeRamp(
-            //               TTimeIntervalMicroSeconds( KPERingingToneRampDuration ) );
-            //           }
-            //       else
-            //          {
-            //          EProfileRingingTypeRinging, EProfileRingingTypeRingingOnce
-                    iPlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(
-                            KPhoneInbandToneZero));
-            //           }
-            //      if ( iRingingType == EProfileRingingTypeRingingOnce )
-            //          {
-            //        iPlayer->SetRepeats(0, TTimeIntervalMicroSeconds(
-            //                KPhoneInbandToneZero));
-                    //          }
-                    break;
-                case TMS_INBAND_NO_SEQUENCE:
-                case TMS_INBAND_BEEP_SEQUENCE:
-                    SetToneAttributes(KAudioPrefIncomingCall,
-                            KAudioPriorityPhoneCall);
-
-                    //iPlayer->SetRepeats(0, TTimeIntervalMicroSeconds(
-                    //        KPhoneInbandToneZero));
-                    iPlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(
-                            KPhoneInbandToneZero));
-                    break;
-                default:
-                    break;
-                }
-#ifndef __WINSCW__
-            //Play the tone
-            iPlayer->Play();
-#endif
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::SetToneAttributes
-//
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::SetToneAttributes(const guint pref,
-        const guint priority, const gint repeatTimes, const gint trailSilence)
-    {
-    iPlayer->SetRepeats(repeatTimes, TTimeIntervalMicroSeconds(trailSilence));
-    iPlayer->SetPriority(priority, static_cast<TMdaPriorityPreference> (pref));
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::SetVolume
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::SetVolume(gint volume)
-    {
-    TRACE_PRN_FN_ENT;
-    gint safeVolume = Max(Min(volume, KPhoneInbandVolumeMax),
-            KPhoneInbandVolumeMin);
-
-    if (iPlayer)
-        {
-        gint mediaServerVolume = CalculateMediaServerVolume(safeVolume);
-        if (EMdaAudioToneUtilityNotReady != iPlayer->State())
-            {
-            iPlayer->SetVolume(mediaServerVolume);
-            }
-        }
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::MatoPrepareComplete
-// Updates flag values and plays current inbandtone.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::MatoPrepareComplete(TInt aError)
-    {
-    TRACE_PRN_FN_ENT;
-    if (aError == KErrNone)
-        {
-        PlayCurrentTone();
-        }
-    TRACE_PRN_IF_ERR(aError);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::MatoPlayComplete
-// -
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::MatoPlayComplete(
-#ifdef _DEBUG
-        TInt aError)
-#else
-        TInt /*aError*/)
-#endif
-    {
-    TRACE_PRN_FN_ENT;
-    // TODO: process error?
-#ifdef _DEBUG
-    TRACE_PRN_IF_ERR(aError);
-#endif
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::CalculateMediaServerVolume
-// -----------------------------------------------------------------------------
-//
-gint TMSAudioInbandTonePlayer::CalculateMediaServerVolume(gint volume) const
-    {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
-    // Our volume level scale is 0...10, media server's can be anything.
-    // This scales the volume to correct level.
-    return (iPlayer->MaxVolume() * volume) /
-            (KPhoneInbandVolumeMax - KPhoneInbandVolumeMin);
-    }
-
-// -----------------------------------------------------------------------------
-// TMSAudioInbandTonePlayer::UpdateTonePlayerVolume
-// -----------------------------------------------------------------------------
-//
-void TMSAudioInbandTonePlayer::UpdateTonePlayerVolume()
-    {
-    TRACE_PRN_FN_ENT;
-    gint volume( /*KPhoneInbandVolumeMin*/KPhoneInbandVolumeMax);
-    SetVolume(volume);
-    TRACE_PRN_FN_EXT;
-    }
-