mmserv/tms/tmsserver/src/tmsserversession.cpp
changeset 12 5a06f39ad45b
parent 0 71ca22bcf22a
child 14 80975da52420
--- a/mmserv/tms/tmsserver/src/tmsserversession.cpp	Tue Feb 02 01:08:46 2010 +0200
+++ b/mmserv/tms/tmsserver/src/tmsserversession.cpp	Fri Apr 16 15:29:42 2010 +0300
@@ -19,6 +19,8 @@
 #include "tmsutility.h"
 #include "tmsclientserver.h"
 #include "tmsshared.h"
+#include "tmsaudioinbandtoneplayer.h"
+#include "tmsrtplayer.h"
 #include "tmsserversession.h"
 
 using namespace TMS;
@@ -50,6 +52,7 @@
 
     iServer.DropSession(); // will start shutdown if no more sessions left
     delete iDevSound;
+    delete iInbandTonePlayer;
 
     if (iMsgQueue.Handle() > 0)
         {
@@ -99,7 +102,7 @@
     {
     TRAPD(err, DispatchMessageL(aMessage));
 
-    if (err != KErrNone)
+    if (err != TMS_RESULT_SUCCESS)
         {
         aMessage.Complete(err);
         }
@@ -143,19 +146,19 @@
             break;
         case ETMSStartRoutingNotifier:
             iServer.StartRoutingNotifierL();
-            aMessage.Complete(KErrNone);
+            aMessage.Complete(TMS_RESULT_SUCCESS);
             break;
         case ETMSCancelRoutingNotifier:
             iServer.CancelRoutingNotifier();
-            aMessage.Complete(KErrNone);
+            aMessage.Complete(TMS_RESULT_SUCCESS);
             break;
         case ETMSStartGlobalEffectNotifier:
             iServer.StartCenRepHandlerL();
-            aMessage.Complete(KErrNone);
+            aMessage.Complete(TMS_RESULT_SUCCESS);
             break;
         case ETMSCancelGlobalEffectNotifier:
             iServer.CancelCenRepHandler();
-            aMessage.Complete(KErrNone);
+            aMessage.Complete(TMS_RESULT_SUCCESS);
             break;
         case ETMSSetMsgQueueHandle:
             SetMessageQueueHandleL(aMessage);
@@ -178,6 +181,79 @@
         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 ETMSStartDTMFNotifier:
+            iServer.StartDTMFNotifierL();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            break;
+        case ETMSCancelDTMFNotifier:
+            iServer.CancelDTMFNotifier();
+            aMessage.Complete(TMS_RESULT_SUCCESS);
+            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;
@@ -192,16 +268,16 @@
 //
 void TMSServerSession::SetMessageQueueHandleL(const RMessage2& aMessage)
     {
-    gint status = KErrNone;
+    gint status = TMS_RESULT_SUCCESS;
     if (iMsgQueue.Handle() <= 0)
         {
         status = iMsgQueue.Open(aMessage, 0);
         }
-    if (status != KErrNone)
+    if (status != TMS_RESULT_SUCCESS)
         {
         User::Leave(KErrArgument);
         }
-    aMessage.Complete(KErrNone);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
     }
 
 // -----------------------------------------------------------------------------
@@ -212,7 +288,7 @@
     {
     TInt level = aMessage.Int0();
     iServer.SetLevel(this, TRUE, level);
-    aMessage.Complete(KErrNone);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
     }
 
 // -----------------------------------------------------------------------------
@@ -223,7 +299,7 @@
     {
     TInt gain = aMessage.Int0();
     iServer.SetGain(this, gain);
-    aMessage.Complete(KErrNone);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
     }
 
 // -----------------------------------------------------------------------------
@@ -233,10 +309,8 @@
 void TMSServerSession::HandleGlobalEffectChange(TInt globalevent)
     {
     TRACE_PRN_FN_ENT;
-    iMsgBuffer.iRequest = ECmdGlobalEffectChange;
-    iMsgBuffer.iStatus = KErrNone;
     iMsgBuffer.iInt = globalevent;
-    NotifyClient();
+    NotifyClient(ECmdGlobalEffectChange);
     TRACE_PRN_FN_EXT;
     }
 
@@ -247,11 +321,9 @@
 void TMSServerSession::HandleRoutingChange(TRoutingMsgBufPckg routinginfo)
     {
     TRACE_PRN_FN_ENT;
-    iMsgBuffer.iRequest = ECmdGlobalRoutingChange;
-    iMsgBuffer.iStatus = KErrNone;
     iMsgBuffer.iInt = routinginfo().iEvent;
     iMsgBuffer.iUint = routinginfo().iOutput;
-    NotifyClient();
+    NotifyClient(ECmdGlobalRoutingChange);
     TRACE_PRN_FN_EXT;
     }
 
@@ -280,7 +352,7 @@
 void TMSServerSession::GetCodecsCountL(const RMessage2& aMessage,
         TMSStreamType strmType)
     {
-    TInt err = KErrNone;
+    TInt err = TMS_RESULT_SUCCESS;
     TInt codecsCount = 0;
 
     RArray<TFourCC>* codecs;
@@ -315,13 +387,6 @@
                 err = KErrNotSupported;
                 }
 
-#ifdef __WINSCW__
-            // Support for adaptation stubs
-            codecs->Append(KMccFourCCIdG711);
-            codecs->Append(KMccFourCCIdG729);
-            codecs->Append(KMccFourCCIdILBC);
-            codecs->Append(KMccFourCCIdAMRNB);
-#endif
             codecsCount = codecs->Count();
             }
 
@@ -339,7 +404,7 @@
 #endif //__WINSCW__
     p().iStatus = err;
     aMessage.WriteL(0, p);
-    aMessage.Complete(KErrNone);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
     }
 
 // -----------------------------------------------------------------------------
@@ -373,7 +438,7 @@
     aMessage.WriteL(0, dataCopyBuffer->Ptr(0));
     CleanupStack::PopAndDestroy(&stream);
     CleanupStack::PopAndDestroy(dataCopyBuffer);
-    aMessage.Complete(KErrNone);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
 
     TRACE_PRN_FN_EXT;
     }
@@ -386,15 +451,67 @@
     {
     TInt output = aMessage.Int0();
     iServer.SetOutput(this, output);
-    aMessage.Complete(KErrNone);
+    aMessage.Complete(TMS_RESULT_SUCCESS);
+    }
+
+// -----------------------------------------------------------------------------
+// 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()
+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)
         {
         iMsgQueue.Send(iMsgBuffer);