mmserv/voipaudioservices/VoIPIntfc/src/VoIPDtmfTonePlayerImpl.cpp
changeset 0 71ca22bcf22a
child 53 eabc8c503852
equal deleted inserted replaced
-1:000000000000 0:71ca22bcf22a
       
     1 /*
       
     2 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  VOIP Audio Services
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <e32base.h>
       
    20 #include <voipuplinkstream.h>
       
    21 #include <voipdownlinkstream.h>
       
    22 #include "VoIPAudioSession.h"
       
    23 #include "VoIPDtmfTonePlayerImpl.h"
       
    24 
       
    25 
       
    26 // ---------------------------------------------------------------------------
       
    27 // CDTMFTonePlayerImpl::NewL
       
    28 // ---------------------------------------------------------------------------
       
    29 //
       
    30 CDTMFTonePlayerImpl* CDTMFTonePlayerImpl::NewL()
       
    31     {
       
    32     CDTMFTonePlayerImpl* self = new (ELeave) CDTMFTonePlayerImpl();
       
    33     CleanupStack::PushL(self);
       
    34     self->ConstructL();
       
    35     CleanupStack::Pop(self);
       
    36     return self;
       
    37     }
       
    38 
       
    39 // ---------------------------------------------------------------------------
       
    40 // CDTMFTonePlayerImpl::~CDTMFTonePlayerImpl
       
    41 // ---------------------------------------------------------------------------
       
    42 //
       
    43 CDTMFTonePlayerImpl::~CDTMFTonePlayerImpl()
       
    44     {
       
    45     Close();
       
    46 
       
    47     if (iMsgQComHandler)
       
    48         {
       
    49         iMsgQComHandler->Cancel();
       
    50         delete iMsgQComHandler;
       
    51         }
       
    52 
       
    53     if (iMsgComQueue.Handle() > 0)
       
    54         {
       
    55         iMsgComQueue.Close();
       
    56         }
       
    57     }
       
    58 
       
    59 // ---------------------------------------------------------------------------
       
    60 // CDTMFTonePlayerImpl::CDTMFTonePlayerImpl
       
    61 // ---------------------------------------------------------------------------
       
    62 //
       
    63 CDTMFTonePlayerImpl::CDTMFTonePlayerImpl()
       
    64     {
       
    65     }
       
    66 
       
    67 // ---------------------------------------------------------------------------
       
    68 // CDTMFTonePlayerImpl::ConstructL
       
    69 // ---------------------------------------------------------------------------
       
    70 //
       
    71 void CDTMFTonePlayerImpl::ConstructL()
       
    72     {
       
    73     // Pass ownership to the parent class
       
    74     CDTMFTonePlayer::ConstructL(this);
       
    75     }
       
    76 
       
    77 // ---------------------------------------------------------------------------
       
    78 // CDTMFTonePlayerImpl::Open
       
    79 // ---------------------------------------------------------------------------
       
    80 //
       
    81 TInt CDTMFTonePlayerImpl::Open(MDTMFToneObserver& aObserver)
       
    82     {
       
    83     TInt err = KErrNotReady;
       
    84     iObserver = &aObserver;
       
    85 
       
    86     TRAP(err, StartMsgQueueL());
       
    87     if (iVoIPAudioSession && err == KErrNone)
       
    88         {
       
    89         err = iVoIPAudioSession->OpenDTMFTonePlayer();
       
    90         }
       
    91 
       
    92     return err;
       
    93     }
       
    94 
       
    95 // ---------------------------------------------------------------------------
       
    96 // CDTMFTonePlayerImpl::Play
       
    97 // ---------------------------------------------------------------------------
       
    98 //
       
    99 TInt CDTMFTonePlayerImpl::Play(const TPtr aTones)
       
   100     {
       
   101     TInt err = KErrNotReady;
       
   102 
       
   103     if (iVoIPAudioSession)
       
   104         {
       
   105         err = iVoIPAudioSession->PlayDTMFTone(aTones);
       
   106         }
       
   107 
       
   108     return err;
       
   109     }
       
   110 
       
   111 // ---------------------------------------------------------------------------
       
   112 // CDTMFTonePlayerImpl::Stop
       
   113 // ---------------------------------------------------------------------------
       
   114 //
       
   115 TInt CDTMFTonePlayerImpl::Stop()
       
   116     {
       
   117     TInt err = KErrNotReady;
       
   118 
       
   119     if (iVoIPAudioSession)
       
   120         {
       
   121         err = iVoIPAudioSession->StopDTMFTonePlay();
       
   122         }
       
   123 
       
   124     return err;
       
   125     }
       
   126 
       
   127 // ---------------------------------------------------------------------------
       
   128 // CDTMFTonePlayerImpl::Close
       
   129 // ---------------------------------------------------------------------------
       
   130 //
       
   131 void CDTMFTonePlayerImpl::Close()
       
   132     {
       
   133     if (iVoIPAudioSession)
       
   134         {
       
   135         iVoIPAudioSession->CloseDTMFTonePlayer();
       
   136         }
       
   137     }
       
   138 
       
   139 // ---------------------------------------------------------------------------
       
   140 // CDTMFTonePlayerImpl::AddVoIPAudioUplinkStream
       
   141 // ---------------------------------------------------------------------------
       
   142 //
       
   143 TInt CDTMFTonePlayerImpl::AddVoIPAudioUplinkStream(
       
   144                           CVoIPAudioUplinkStream& /*aStream*/,
       
   145                           RVoIPAudioSession* aSession)
       
   146     {
       
   147     TInt err = KErrNone;
       
   148     iVoIPAudioSession = aSession;
       
   149 
       
   150     if (!iVoIPAudioSession)
       
   151         {
       
   152         err = KErrNotFound;
       
   153         }
       
   154     else
       
   155         {
       
   156         iStreamType = EUplink;
       
   157         }
       
   158 
       
   159     return err;
       
   160     }
       
   161 
       
   162 // ---------------------------------------------------------------------------
       
   163 // CDTMFTonePlayerImpl::RemoveVoIPAudioUplinkStream
       
   164 // ---------------------------------------------------------------------------
       
   165 //
       
   166 TInt CDTMFTonePlayerImpl::RemoveVoIPAudioUplinkStream(
       
   167                           CVoIPAudioUplinkStream& /*aStream*/)
       
   168     {
       
   169     iVoIPAudioSession = NULL;
       
   170     return KErrNone;
       
   171     }
       
   172 
       
   173 // ---------------------------------------------------------------------------
       
   174 // CDTMFTonePlayerImpl::AddVoIPAudioDownlinkStream
       
   175 // ---------------------------------------------------------------------------
       
   176 //
       
   177 TInt CDTMFTonePlayerImpl::AddVoIPAudioDownlinkStream(
       
   178                           CVoIPAudioDownlinkStream& /*aStream*/,
       
   179                           RVoIPAudioSession* aSession)
       
   180     {
       
   181     TInt err = KErrNone;
       
   182     iVoIPAudioSession = aSession;
       
   183 
       
   184     if (!iVoIPAudioSession)
       
   185         {
       
   186         err = KErrNotFound;
       
   187         }
       
   188     else
       
   189         {
       
   190         iStreamType = EDownlink;
       
   191         }
       
   192 
       
   193     return err;
       
   194     }
       
   195 
       
   196 // ---------------------------------------------------------------------------
       
   197 // CDTMFTonePlayerImpl::RemoveVoIPAudioDownlinkStream
       
   198 // ---------------------------------------------------------------------------
       
   199 //
       
   200 TInt CDTMFTonePlayerImpl::RemoveVoIPAudioDownlinkStream(
       
   201                           CVoIPAudioDownlinkStream& /*aStream*/)
       
   202     {
       
   203     iVoIPAudioSession = NULL;
       
   204     return KErrNone;
       
   205     }
       
   206 
       
   207 // ---------------------------------------------------------------------------
       
   208 // CDTMFTonePlayerImpl::StrartMsgQueueL
       
   209 //
       
   210 // ---------------------------------------------------------------------------
       
   211 //
       
   212 void CDTMFTonePlayerImpl::StartMsgQueueL()
       
   213     {
       
   214     TInt err = KErrNone;
       
   215 
       
   216     if (iMsgComQueue.Handle() <= 0)
       
   217         {
       
   218         if (iStreamType == EDownlink)
       
   219             {
       
   220             err = iMsgComQueue.CreateGlobal(KDTMFToneComQueueDNL,
       
   221                                             KVoIPMsgComQSlots);
       
   222             }
       
   223         else
       
   224             {
       
   225             err = iMsgComQueue.CreateGlobal(KDTMFToneComQueueUPL,
       
   226                                             KVoIPMsgComQSlots);
       
   227             }
       
   228 
       
   229         User::LeaveIfError(err);
       
   230         }
       
   231 
       
   232     ReceiveMsgQComHandlerEventsL();
       
   233     }
       
   234 
       
   235 // ---------------------------------------------------------------------------
       
   236 // CDTMFTonePlayerImpl::ReceiveMsgQComHandlerEventsL
       
   237 // Starts message queue handler (A/O) to monitor server side events
       
   238 // ---------------------------------------------------------------------------
       
   239 //
       
   240 void CDTMFTonePlayerImpl::ReceiveMsgQComHandlerEventsL()
       
   241     {
       
   242     if (iMsgQComHandler)
       
   243         {
       
   244         iMsgQComHandler->Cancel();
       
   245         }
       
   246     else
       
   247         {
       
   248         iMsgQComHandler = CQueueHandler::NewL(this, &iMsgComQueue);
       
   249         }
       
   250 
       
   251     iMsgQComHandler->Start();
       
   252     }
       
   253 
       
   254 
       
   255 // ======== CALLBACK FUNCTIONS ========
       
   256 
       
   257 
       
   258 // ---------------------------------------------------------------------------
       
   259 // CDTMFTonePlayerImpl::Event
       
   260 //
       
   261 // From MQueueHandlerObserver
       
   262 // ---------------------------------------------------------------------------
       
   263 //
       
   264 void CDTMFTonePlayerImpl::Event(TInt aEventType, TInt aError)
       
   265     {
       
   266     iObserver->Event(*this, aEventType, aError);
       
   267     }
       
   268 
       
   269 
       
   270 // End of file