mmserv/tms/tmsserver/src/tmsserver.cpp
changeset 36 73253677b50a
parent 33 5e8b14bae8c3
child 38 9e9fc5ab059f
--- a/mmserv/tms/tmsserver/src/tmsserver.cpp	Fri Jul 09 16:43:35 2010 -0500
+++ b/mmserv/tms/tmsserver/src/tmsserver.cpp	Fri Jul 23 17:29:03 2010 -0500
@@ -32,8 +32,7 @@
 #include "tmscenrepaudiohandler.h"
 #include "tmsdtmftoneplayer.h"
 #include "tmsdtmfprovider.h"
-#include "tmsdtmfnotifier.h"
-#include "tmsdtmfeventhandler.h"
+#include "tmspubsublistener.h"
 #include "tmsrtparam.h"
 #include "tmsserver.h"
 
@@ -86,14 +85,12 @@
     delete iEffectSettings;
     delete iTarHandler;
     delete iAudioCenRepHandler;
-    delete iDTMFHandler;
     DeinitRingTonePlayer();
     delete iTMSRtPlayer;
     delete iDTMFUplinkPlayer;
     delete iDTMFUplinkPlayerEtel;
     delete iDTMFDnlinkPlayer;
-    delete iDTMFNotifier;
-
+    delete iSyncVol;
     TRACE_PRN_FN_EXT;
     }
 
@@ -141,12 +138,11 @@
     iEffectSettings = TMSGlobalEffectsSettings::NewL();
     iTarHandler = NULL;
     iAudioCenRepHandler = NULL;
-    iDTMFHandler = NULL;
     iCurrentRouting = TMS_AUDIO_OUTPUT_PRIVATE;
     iDTMFDnlinkPlayer = NULL;
     iDTMFUplinkPlayer = NULL;
     iDTMFUplinkPlayerEtel = NULL;
-    iDTMFNotifier = NULL;
+    iSyncVol = TMSPubSubListener::NewL(KTMSPropertyCategory,ESyncVolume, this);
 
     //TODO: EUnit fails to initialize ProfileEngine in RT in eshell mode
     TRAP_IGNORE(InitRingTonePlayerL());
@@ -268,11 +264,13 @@
                 case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
                     {
                     iEffectSettings->GetLoudSpkrVolume(volume);
+                    TRACE_PRN_N1(_L("loudspk vol %d"),volume);
                     }
                     break;
                 default:
                     {
                     iEffectSettings->GetEarPieceVolume(volume);
+                    TRACE_PRN_N1(_L("ear vol %d"),volume);
                     }
                     break;
                 }
@@ -360,40 +358,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TMSServer::StartDTMFNotifierL
-//
-// -----------------------------------------------------------------------------
-//
-void TMSServer::StartDTMFNotifierL()
-    {
-    TRACE_PRN_FN_ENT;
-
-    if (!iDTMFHandler)
-        {
-        iDTMFHandlerCount = 0;
-        iDTMFHandler = TMSDtmfEventHandler::NewL(
-                (const_cast<TMSServer*> (this)));
-        }
-    iDTMFHandlerCount++;
-
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSServer::CancelDTMFNotifier
-//
-// -----------------------------------------------------------------------------
-//
-void TMSServer::CancelDTMFNotifier()
-    {
-    if (--iDTMFHandlerCount <= 0)
-        {
-        delete iDTMFHandler;
-        iDTMFHandler = NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
 // TMSServer::SetOutput
 //
 // -----------------------------------------------------------------------------
@@ -579,9 +543,11 @@
         case TMS_AUDIO_OUTPUT_PUBLIC:
         case TMS_AUDIO_OUTPUT_LOUDSPEAKER:
             iEffectSettings->GetLoudSpkrVolume(volume);
+            TRACE_PRN_N1(_L("TMSServer::GetLevel loudspkr vol %d"),volume);
             break;
         default:
             iEffectSettings->GetEarPieceVolume(volume);
+            TRACE_PRN_N1(_L("TMSServer::GetLevel ear vol %d"),volume);
             break;
         }
 
@@ -839,10 +805,12 @@
             iCurrentRouting == TMS_AUDIO_OUTPUT_LOUDSPEAKER)
         {
         iEffectSettings->GetLoudSpkrVolume(vol);
+        TRACE_PRN_N1(_L("TMSServer::NotifyTarClients loudspkr vol %d"),vol);
         }
     else
         {
         iEffectSettings->GetEarPieceVolume(vol);
+        TRACE_PRN_N1(_L("TMSServer::NotifyTarClients ear vol %d"),vol);
         }
 
     TInt status = SendMessageToCallServ(TMS_EFFECT_GLOBAL_VOL_SET, vol);
@@ -890,6 +858,7 @@
             }
         if (!iDTMFUplinkPlayer) //IP call
             {
+            // TODO: Ongoing work with Audio Policy team...
             TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
 //                    KAudioPrefVoipAudioUplinkNonSignal,
 //                    KAudioPrefVoipAudioUplink,
@@ -906,10 +875,6 @@
                     KAudioDTMFString, KAudioPriorityDTMFString));
             }
         }
-    if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
-        {
-        TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
-        }
 
     aMessage.Complete(status);
     TRACE_PRN_FN_EXT;
@@ -939,54 +904,45 @@
             TPtr ptr = tone->Des();
             status = aMessage.Read(1, ptr);
             TRACE_PRN_N(ptr);
-            TmsMsgBufPckg dtmfpckg;
-            dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
 
             if (strmtype == TMS_STREAM_UPLINK)
                 {
-//#ifdef __WINSCW__
-                // Just to test playback in wins
-//                iActiveCallType = TMS_CALL_IP;
-//#else
+#ifdef __WINSCW__
+                // Just to hear DTMF tones in Wins
+                iActiveCallType = TMS_CALL_IP;
+#else
                 FindActiveCallType();
-//#endif
+#endif
                 if (iActiveCallType == TMS_CALL_IP && iDTMFUplinkPlayer)
                     {
                     iDTMFUplinkPlayer->PlayDtmfTone(ptr);
                     status = TMS_RESULT_SUCCESS;
-                    dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
                     }
                 else if (iActiveCallType == TMS_CALL_CS &&
                         iDTMFUplinkPlayerEtel)
                     {
                     status = iDTMFUplinkPlayerEtel->SendDtmfToneString(ptr);
-                    dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
                     }
                 else
                     {
                     status = TMS_RESULT_INVALID_STATE;
                     }
+                NotifyDtmfClients(ECmdDTMFToneUplPlayStarted, status);
                 }
             else if (strmtype == TMS_STREAM_DOWNLINK)
                 {
-                //status = TMS_RESULT_UNINITIALIZED_OBJECT;
+                status = TMS_RESULT_INVALID_STATE;
                 if (iDTMFDnlinkPlayer)
                     {
                     iDTMFDnlinkPlayer->PlayDtmfTone(ptr);
                     status = TMS_RESULT_SUCCESS;
-                    dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted;
                     }
+                NotifyDtmfClients(ECmdDTMFToneDnlPlayStarted, status);
                 }
             else
                 {
                 status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
                 }
-
-            if (iDTMFNotifier)
-                {
-                dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
-                iDTMFNotifier->SetDtmf(dtmfpckg);
-                }
             }
         delete tone;
         tone = NULL;
@@ -1032,14 +988,7 @@
             status = TMS_RESULT_SUCCESS;
             }
         }
-    if (iDTMFNotifier)
-        {
-        TmsMsgBufPckg dtmfpckg;
-        dtmfpckg().iStatus = status;
-        dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
-        iDTMFNotifier->SetDtmf(dtmfpckg);
-        }
-
+    NotifyDtmfClients(ECmdDTMFTonePlayFinished, status);
     aMessage.Complete(status);
     TRACE_PRN_FN_EXT;
     return status;
@@ -1073,14 +1022,14 @@
 //
 // -----------------------------------------------------------------------------
 //
-TInt TMSServer::NotifyDtmfClients(TmsMsgBufPckg dtmfpckg)
+TInt TMSServer::NotifyDtmfClients(gint aEventType, gint aError)
     {
     TRACE_PRN_FN_ENT;
     iSessionIter.SetToFirst();
     TMSServerSession* ss = static_cast<TMSServerSession*> (iSessionIter++);
     while (ss != NULL)
         {
-        ss->NotifyClient(dtmfpckg().iRequest, dtmfpckg().iStatus);
+        ss->NotifyClient(aEventType, aError);
         ss = static_cast<TMSServerSession*> (iSessionIter++);
         }
     TRACE_PRN_FN_EXT;
@@ -1093,10 +1042,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSServer::DTMFInitCompleted(gint /*status*/)
+void TMSServer::DTMFInitCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
-    // TODO: process error
+    if (status != TMS_RESULT_SUCCESS)
+        {
+        NotifyDtmfClients(ECmdDTMFTonePlayFinished, status);
+        }
     TRACE_PRN_FN_EXT;
     }
 
@@ -1109,19 +1061,13 @@
     {
     TRACE_PRN_FN_ENT;
     TRACE_PRN_IF_ERR(status);
-    TmsMsgBufPckg dtmfpckg;
 
     // KErrUnderflow indicates end of DTMF playback.
     if (status == KErrUnderflow /*|| status == KErrInUse*/)
         {
         status = TMS_RESULT_SUCCESS;
         }
-    dtmfpckg().iStatus = TMSRESULT(status);
-    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
-    if (iDTMFNotifier)
-        {
-        iDTMFNotifier->SetDtmf(dtmfpckg);
-        }
+    NotifyDtmfClients(ECmdDTMFTonePlayFinished, status);
     TRACE_PRN_FN_EXT;
     }
 
@@ -1165,8 +1111,7 @@
     {
     TRACE_PRN_FN_ENT;
     TRACE_PRN_IF_ERR(status);
-    TmsMsgBufPckg dtmfpckg;
-    dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
+    gint cmd = ECmdDTMFTonePlayFinished;
 
     switch (event)
         {
@@ -1174,7 +1119,7 @@
             break;
         case ECCPDtmfManualStart:           //DTMF sending started manually
         case ECCPDtmfSequenceStart:         //Automatic DTMF sending initialized
-            dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
+            cmd = ECmdDTMFToneUplPlayStarted;
             break;
         case ECCPDtmfManualStop:            //DTMF sending stopped manually
         case ECCPDtmfManualAbort:           //DTMF sending aborted manually
@@ -1182,16 +1127,11 @@
         case ECCPDtmfSequenceAbort:         //Automatic DTMF sending aborted
         case ECCPDtmfStopInDtmfString:      //There was stop mark in DTMF string
         case ECCPDtmfStringSendingCompleted://DTMF sending success
-            dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
-            break;
         default:
             break;
         }
 
-    if (iDTMFNotifier)
-        {
-        iDTMFNotifier->SetDtmf(dtmfpckg);
-        }
+    NotifyDtmfClients(cmd, status);
     TRACE_PRN_FN_EXT;
     }
 
@@ -1482,6 +1422,22 @@
     }
 
 // -----------------------------------------------------------------------------
+// TMSServer::HandleNotifyPSL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSServer::HandleNotifyPSL(const TUid aUid, const TInt& aKey,
+            const TRequestStatus& aStatus)
+    {
+    TRACE_PRN_FN_ENT;
+    if(iEffectSettings)
+        {
+        iEffectSettings->ResetDefaultVolume();
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
 // TMSServer::RunServerL
 //
 // -----------------------------------------------------------------------------