mmserv/tms/tmsserver/src/tmsserversession.cpp
branchRCL_3
changeset 45 095bea5f582e
parent 13 f5c5c82a163e
child 46 0ac9a5310753
--- a/mmserv/tms/tmsserver/src/tmsserversession.cpp	Thu Aug 19 10:26:11 2010 +0300
+++ b/mmserv/tms/tmsserver/src/tmsserversession.cpp	Tue Aug 31 15:43:02 2010 +0300
@@ -15,10 +15,11 @@
  *
  */
 
-#include <AudioPreference.h>
 #include "tmsutility.h"
 #include "tmsclientserver.h"
 #include "tmsshared.h"
+#include "tmsaudioinbandtoneplayer.h"
+#include "tmsrtplayer.h"
 #include "tmsserversession.h"
 
 using namespace TMS;
@@ -50,6 +51,7 @@
 
     iServer.DropSession(); // will start shutdown if no more sessions left
     delete iDevSound;
+    delete iInbandTonePlayer;
 
     if (iMsgQueue.Handle() > 0)
         {
@@ -178,6 +180,74 @@
         case ETMSGetMaxGlobalGain:
             iServer.GetMaxGain(aMessage);
             break;
+        case ETMSRingToneInitDefault:
+            iHasRtPlayer = ETrue;
+            iServer.OpenRingTonePlayerFromProfileL(aMessage);
+            break;
+        case ETMSRingToneInitFile:
+            iHasRtPlayer = ETrue;
+            iServer.OpenRingTonePlayerFromFileL(aMessage);
+            break;
+        case ETMSRingToneInitSequence:
+            iHasRtPlayer = ETrue;
+            iServer.OpenRingToneSequencePlayerL(aMessage);
+            break;
+        case ETMSRingToneInitBeepOnce:
+            iHasRtPlayer = ETrue;
+            iServer.OpenRingToneBeepOnceL();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingToneInitSilent:
+            iHasRtPlayer = ETrue;
+            iServer.OpenRingToneSilentL();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingToneInitUnsecureVoIP:
+            iHasRtPlayer = ETrue;
+            iServer.OpenRingToneUnsecureVoipL();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingToneDeinit:
+            iServer.DeinitRingTonePlayer();
+            NotifyClient(ECmdRingToneDeinitComplete, KErrNone);
+            iHasRtPlayer = EFalse;
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingTonePlay:
+            iHasRtPlayer = ETrue; //will play w/o prior initialization
+            iServer.PlayRingToneL();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingTonePause:
+            iServer.PauseVideoRingTone();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingToneStop:
+            iServer.StopRingTone();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSRingToneMute:
+            iServer.MuteRingTone();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSInitDTMF:
+            iServer.InitDTMF(aMessage);
+            break;
+        case ETMSStartDTMF:
+            iServer.StartDTMF(aMessage);
+            break;
+        case ETMSStopDTMF:
+            iServer.StopDTMF(aMessage);
+            break;
+        case ETMSContinueDTMF:
+            iServer.ContinueSendingDTMF(aMessage);
+            break;
+        case ETMSStartInbandTone:
+            StartInbandTone(aMessage);
+            break;
+        case ETMSStopInbandTone:
+            StopInbandTone(aMessage);
+            break;
         default:
             User::Leave(KErrNotSupported);
             break;
@@ -383,11 +453,61 @@
     }
 
 // -----------------------------------------------------------------------------
+// TMSServerSession::StartInbandTone
+//
+// -----------------------------------------------------------------------------
+//
+void TMSServerSession::StartInbandTone(const RMessage2& aMessage)
+    {
+    if (!iInbandTonePlayer)
+        {
+        //TODO: Add inband tone observer
+        iInbandTonePlayer = TMSAudioInbandTonePlayer::NewL();
+        }
+
+    if (iInbandTonePlayer)
+        {
+        TMSInbandToneType tonetype = (TMSInbandToneType) aMessage.Int0();
+        iInbandTonePlayer->PlayInbandTone(tonetype);
+        }
+
+    //TODO: Move to inband tone observer callback
+    NotifyClient(ECmdInbandToneStarted);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSServerSession::StopInbandTone
+//
+// -----------------------------------------------------------------------------
+//
+void TMSServerSession::StopInbandTone(const RMessage2& aMessage)
+    {
+    if (iInbandTonePlayer)
+        {
+        iInbandTonePlayer->Cancel();
+        }
+
+    //TODO: Move to inband tone observer callback
+    NotifyClient(ECmdInbandToneStopped);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
+    }
+
+// -----------------------------------------------------------------------------
 // TMSServerSession::NotifyClient
 // -----------------------------------------------------------------------------
 //
 void TMSServerSession::NotifyClient(const TInt aCommand, const TInt aStatus)
     {
+    if (aCommand == ECmdRingToneOpenComplete ||
+            aCommand == ECmdRingToneOpenComplete)
+        {
+        if (!iHasRtPlayer)
+            {
+            return;
+            }
+        }
+
     iMsgBuffer.iRequest = aCommand;
     iMsgBuffer.iStatus = aStatus;
     if (iMsgQueue.Handle() > 0)
@@ -396,4 +516,3 @@
         }
     }
 
-// End of file