mmserv/tms/tmscallserver/src/tmscallipadpt.cpp
changeset 22 128eb6a32b84
parent 14 80975da52420
child 21 2ed61feeead6
--- a/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp	Fri May 14 16:22:35 2010 +0300
+++ b/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp	Thu May 27 13:20:50 2010 +0300
@@ -105,7 +105,6 @@
     iNextStreamId = 1;
     iUplinkInitialized = FALSE;
     iDnlinkInitialized = FALSE;
-
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -163,14 +162,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::InitStreamL(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId, TMSFormatType frmtType,
-        const RMessage2& aMessage)
+gint TMSCallIPAdpt::InitStream(TMSCallType /*callType*/, TMSStreamType strmType,
+        gint strmId, TMSFormatType frmtType, const RMessage2& message)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
 
-    TUint32 fourCC = TOFOURCC(frmtType);
+    guint32 fourCC = TOFOURCC(frmtType);
     if (fourCC == NULL)
         {
         return TMS_RESULT_INVALID_ARGUMENT;
@@ -184,17 +182,11 @@
             if (strmId == iUplinkStreamId)
                 {
                 SetFormat(iUplinkStreamId, fourCC);
-                status = OpenUplinkL(aMessage);
-
-                iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
-                        KAudioPrefUnknownVoipAudioUplink,
-                        KAudioPriorityUnknownVoipAudioUplink);
-
-                if (!iDTMFNotifier)
+                status = OpenUplinkL(message);
+                if (status == TMS_RESULT_SUCCESS)
                     {
-                    iDTMFNotifier = TMSDtmfNotifier::NewL();
+                    status = InitDTMF(TMS_STREAM_UPLINK);
                     }
-
                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
                 }
             break;
@@ -205,17 +197,11 @@
             if (strmId == iDnlinkStreamId)
                 {
                 SetFormat(iDnlinkStreamId, fourCC);
-                status = OpenDownlinkL(aMessage);
-
-                iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
-                        KAudioPrefUnknownVoipAudioDownlink,
-                        KAudioPriorityUnknownVoipAudioDownlink);
-
-                if (!iDTMFNotifier)
+                status = OpenDownlinkL(message);
+                if (status == TMS_RESULT_SUCCESS)
                     {
-                    iDTMFNotifier = TMSDtmfNotifier::NewL();
+                    status = InitDTMF(TMS_STREAM_DOWNLINK);
                     }
-
                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
                 }
             break;
@@ -1013,14 +999,21 @@
 // Method for player initialization.
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& aMessage)
+gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& message)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
 
     // Clients must have MultimediaDD capability to use this priority/pref.
     // TODO: Also, TMS will monitor for emergency call and if detected it
     //       will deny access to audio resources.
+
+    /* Clarify with adaptation team which prio/pref values should be used.
+     * 1) KAudioPrefUnknownVoipAudioDownlink      -3rd party VoIP?
+     *    KAudioPriorityUnknownVoipAudioDownlink  -3rd party VoIP?
+     * 2) KAudioPrefVoipAudioDownlink             -NOK native VoIP?
+     *    KAudioPriorityVoipAudioDownlink         -NOK native VoIP?
+     */
     iPriority.iPref = KAudioPrefVoipAudioDownlink;
     iPriority.iPriority = KAudioPriorityVoipAudioDownlink;
 
@@ -1035,7 +1028,7 @@
         if (iMsgQueueDn.Handle() <= 0)
             {
             // Second argument in TMSCallProxy::InitStream
-            status = iMsgQueueDn.Open(aMessage, 1);
+            status = iMsgQueueDn.Open(message, 1);
             }
 
         if (status == TMS_RESULT_SUCCESS)
@@ -1044,7 +1037,6 @@
             iIPDownlink->SetMsgQueue(iMsgQueueDn);
             }
         }
-
     TRACE_PRN_IF_ERR(status);
     TRACE_PRN_FN_EXT;
     return status;
@@ -1055,12 +1047,19 @@
 // Method for recorder initialization.
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& aMessage)
+gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& message)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
+    gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
+
+    // Clients must have MultimediaDD capability to use this priority/pref
 
-    // Ensure clients have MultimediaDD capability to use this priority/pref
+    /* Clarify with adaptation team which prio/pref values should be used.
+     * 1) KAudioPrefUnknownVoipAudioUplink      -3rd party VoIP?
+     *    KAudioPriorityUnknownVoipAudioUplink  -3rd party VoIP?
+     * 2) KAudioPrefVoipAudioUplink             -NOK native VoIP?
+     *    KAudioPriorityVoipAudioUplink         -NOK native VoIP?
+     */
     iPriority.iPref = KAudioPrefVoipAudioUplink;
     iPriority.iPriority = KAudioPriorityVoipAudioUplink;
 
@@ -1075,7 +1074,7 @@
         if (iMsgQueueUp.Handle() <= 0)
             {
             // Second argument in TMSCallProxy::InitStream
-            status = iMsgQueueUp.Open(aMessage, 1);
+            status = iMsgQueueUp.Open(message, 1);
             }
 
         if (status == TMS_RESULT_SUCCESS)
@@ -1084,7 +1083,6 @@
             iIPUplink->SetMsgQueue(iMsgQueueUp);
             }
         }
-
     TRACE_PRN_IF_ERR(status);
     TRACE_PRN_FN_EXT;
     return status;
@@ -1095,7 +1093,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::SetFormat(const gint strmId, const TUint32 aFormat)
+void TMSCallIPAdpt::SetFormat(const gint strmId, const guint32 aFormat)
     {
     if (strmId == iUplinkStreamId)
         {
@@ -1112,7 +1110,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::BufferFilledL(TUint dataSize)
+void TMSCallIPAdpt::BufferFilledL(guint dataSize)
     {
     if (iIPDownlink)
         {
@@ -1139,7 +1137,7 @@
 // -----------------------------------------------------------------------------
 //
 gint TMSCallIPAdpt::GetDataXferChunkHndl(const TMSStreamType strmType,
-        const TUint32 key, RChunk& chunk)
+        const guint32 key, RChunk& chunk)
     {
     TRACE_PRN_FN_ENT;
 
@@ -1405,6 +1403,60 @@
     }
 
 // -----------------------------------------------------------------------------
+// TMSCallIPAdpt::InitDTMF
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallIPAdpt::InitDTMF(TMSStreamType strmtype)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED);
+
+    if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        delete iDTMFDnlinkPlayer;
+        iDTMFDnlinkPlayer = NULL;
+
+        /* Clarify with adaptation team which prio/pref values should be used.
+         * 1) KAudioDTMFString                       -local play, no mixing
+         *    KAudioPriorityDTMFString               -local play, no mixing
+         * 2) KAudioPrefUnknownVoipAudioDownlink     -3rd party VoIP?
+         *    KAudioPriorityUnknownVoipAudioDownlink -3rd party VoIP?
+         * 3) KAudioPrefVoipAudioDownlink            -NOK native VoIP?
+         *    KAudioPriorityVoipAudioDownlink        -NOK native VoIP?
+         */
+        TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
+                KAudioPrefVoipAudioDownlink, KAudioPriorityVoipAudioDownlink));
+         }
+    else if (strmtype == TMS_STREAM_UPLINK)
+        {
+        delete iDTMFUplinkPlayer;
+        iDTMFUplinkPlayer = NULL;
+
+        /* Clarify with adaptation team which prio/pref values should be used.
+         * Currently the audio policy blocks DTMF mixing with the UPL stream.
+         * 1) KAudioPrefUnknownVoipAudioUplink      -3rd party VoIP?
+         *    KAudioPriorityUnknownVoipAudioUplink  -3rd party VoIP?
+         *    KAudioPriorityUnknownVoipAudioUplinkNonSignal -???
+         * 2) KAudioPrefVoipAudioUplink             -NOK native VoIP?
+         *    KAudioPrefUnknownVoipAudioUplinkNonSignal -???
+         *    KAudioPrefVoipAudioUplinkNonSignal        -???
+         *    KAudioPriorityVoipAudioUplink         -NOK native VoIP?
+         */
+        TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
+                KAudioPrefVoipAudioUplink, KAudioPriorityVoipAudioUplink));
+        }
+
+    if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
+         {
+         TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
+         }
+
+    TRACE_PRN_FN_EXT;
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
 // TMSCallIPAdpt::StartDTMF
 //
 // -----------------------------------------------------------------------------
@@ -1412,35 +1464,44 @@
 gint TMSCallIPAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
     {
     TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED);
     TmsMsgBufPckg dtmfpckg;
+    dtmfpckg().iStatus = status;
+    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
+
     if (strmtype == TMS_STREAM_DOWNLINK)
         {
-        if (iDTMFDnlinkPlayer /*&& iDTMFDnlinkStatus*/)
+        status = TMS_RESULT_UNINITIALIZED_OBJECT;
+        if (iDTMFDnlinkPlayer)
             {
             iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
-            dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
-            //TMS_EVENT_DTMF_TONE_STARTED
-            dtmfpckg().iRequest = ECmdDTMFOpenDnlinkComplete;
+            status = TMS_RESULT_SUCCESS;
             }
+        dtmfpckg().iStatus = status;
+        dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted;
         }
     else if (strmtype == TMS_STREAM_UPLINK)
         {
-        if (iDTMFUplinkPlayer /*&& iDTMFUplinkStatus*/)
+        status = TMS_RESULT_UNINITIALIZED_OBJECT;
+        if (iDTMFUplinkPlayer)
             {
             iDTMFUplinkPlayer->PlayDtmfTone(dtmfstring);
-            dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
-            //TMS_EVENT_DTMF_TONE_STARTED
-            dtmfpckg().iRequest = ECmdDTMFOpenUplinkComplete;
+            status = TMS_RESULT_SUCCESS;
             }
+        dtmfpckg().iStatus = status;
+        dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
         }
 
     if (iDTMFNotifier)
         {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        iDTMFNotifier->SetDtmf(dtmfpckg);
         }
+
+    TRACE_PRN_IF_ERR(status);
     TRACE_PRN_FN_EXT;
-    return TMS_RESULT_SUCCESS;
+    return status;
     }
+
 // -----------------------------------------------------------------------------
 // TMSCallIPAdpt::StopDTMF
 //
@@ -1454,7 +1515,7 @@
         {
         iDTMFDnlinkPlayer->Cancel();
         }
-    else
+    else if (streamtype == TMS_STREAM_UPLINK)
         {
         iDTMFUplinkPlayer->Cancel();
         }
@@ -1468,10 +1529,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::ContinueDTMF(TBool /*continuesending*/)
+gint TMSCallIPAdpt::ContinueDTMF(gboolean /*continuesending*/)
     {
-    TRACE_PRN_FN_ENT;
-    TRACE_PRN_FN_EXT;
     return TMS_RESULT_FEATURE_NOT_SUPPORTED;
     }
 
@@ -1481,10 +1540,10 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::DTMFInitCompleted(TInt /*error*/)
+void TMSCallIPAdpt::DTMFInitCompleted(gint /*error*/)
     {
-    //DTMF init status
     TRACE_PRN_FN_ENT;
+    //TRACE_PRN_IF_ERR(error);
     TRACE_PRN_FN_EXT;
     }
 
@@ -1493,22 +1552,22 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::DTMFToneFinished(TInt error)
+void TMSCallIPAdpt::DTMFToneFinished(gint error)
     {
     TRACE_PRN_FN_ENT;
+    TRACE_PRN_IF_ERR(error);
     TmsMsgBufPckg dtmfpckg;
 
-     if(error == KErrUnderflow || error == KErrInUse)
+    // Ignore KErrUnderflow - end of DTMF playback.
+    if(error == KErrUnderflow /*|| error == KErrInUse*/)
          {
          error = TMS_RESULT_SUCCESS;
          }
-
     dtmfpckg().iStatus = error;
-    //TMS_EVENT_DTMF_TONE_STOPPED
     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
     if (iDTMFNotifier)
         {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        iDTMFNotifier->SetDtmf(dtmfpckg);
         }
     TRACE_PRN_FN_EXT;
     }
@@ -1517,8 +1576,8 @@
 // TMSCallIPAdpt::NotifyClient
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::NotifyClient(const gint strmId, const TInt aCommand,
-        const TInt aStatus, const TInt64 /*aInt64*/)
+void TMSCallIPAdpt::NotifyClient(const gint strmId, const gint aCommand,
+        const gint aStatus, const gint64 /*aInt64*/)
     {
     iMsgBuffer.iRequest = aCommand;
     iMsgBuffer.iStatus = aStatus;