mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
branchRCL_3
changeset 45 095bea5f582e
parent 40 60e492b28869
child 46 0ac9a5310753
--- a/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp	Thu Aug 19 10:26:11 2010 +0300
+++ b/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp	Tue Aug 31 15:43:02 2010 +0300
@@ -26,6 +26,7 @@
 #include "tmsshared.h"
 #include "tmsclientserver.h"
 #include "tmstarsettings.h"
+#include "tmssyncvol.h"
 
 using namespace TMS;
 
@@ -55,6 +56,7 @@
     iCSUplink = NULL;
     iRouting = NULL;
     iTarSettings = NULL;
+    iResetVolNotifier = NULL;
     TRACE_PRN_FN_EXT;
     }
 
@@ -80,6 +82,7 @@
     delete iTarSettings;
     delete iCSUplink;
     delete iCSDownlink;
+    delete iResetVolNotifier;
 
     if (iMsgQueueUp.Handle() > 0)
         {
@@ -103,8 +106,8 @@
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
     iNextStreamId = 1;
-    iUplinkInitialized = FALSE;
-    iDnlinkInitialized = FALSE;
+    iUplState = EIdle;
+    iDnlState = EIdle;
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -124,12 +127,11 @@
         case TMS_STREAM_UPLINK:
             {
             status = TMS_RESULT_ALREADY_EXIST;
-            if (!iUplinkInitialized)
+            if (iUplState == EIdle)
                 {
                 iUplinkStreamId = iNextStreamId;
                 outStrmId = iUplinkStreamId;
                 iNextStreamId++;
-                //iUplinkInitialized = TRUE; //not initialized yet!
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
@@ -137,12 +139,11 @@
         case TMS_STREAM_DOWNLINK:
             {
             status = TMS_RESULT_ALREADY_EXIST;
-            if (!iDnlinkInitialized)
+            if (iDnlState == EIdle)
                 {
                 iDnlinkStreamId = iNextStreamId;
                 outStrmId = iDnlinkStreamId;
                 iNextStreamId++;
-                //iDnlinkInitialized = TRUE; //not initialized yet!
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
@@ -164,7 +165,8 @@
 //
 gint TMSCallCSAdpt::InitStream(const TMSCallType /*callType*/,
         const TMSStreamType strmType, const gint strmId,
-        const TMSFormatType /*frmtType*/, const RMessage2& message)
+        const TMSFormatType /*frmtType*/, const gint retrytime,
+        const RMessage2& message)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -184,7 +186,7 @@
                     }
                 if (status == TMS_RESULT_SUCCESS)
                     {
-                    status = InitUplink();
+                    status = InitUplink(retrytime);
                     }
                 }
             break;
@@ -202,7 +204,7 @@
                     }
                 if (status == TMS_RESULT_SUCCESS)
                     {
-                    status = InitDownlink();
+                    status = InitDownlink(retrytime);
                     }
                 }
             break;
@@ -224,12 +226,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::InitUplink()
+gint TMSCallCSAdpt::InitUplink(const gint retrytime)
     {
     gint status(TMS_RESULT_SUCCESS);
+
     if (!iCSUplink)
         {
-        TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
+        TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
         }
     return status;
     }
@@ -239,13 +242,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::InitDownlink()
+gint TMSCallCSAdpt::InitDownlink(const gint retrytime)
     {
     gint status(TMS_RESULT_SUCCESS);
 
     if (!iCSDownlink)
         {
-        TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
+        TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this, retrytime));
         }
     if (!iRouting && status == TMS_RESULT_SUCCESS)
         {
@@ -264,7 +267,7 @@
 // -----------------------------------------------------------------------------
 //
 gint TMSCallCSAdpt::StartStream(const TMSCallType /*callType*/,
-        const TMSStreamType strmType, const gint strmId)
+        const TMSStreamType strmType, const gint strmId, const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
@@ -272,18 +275,28 @@
         {
         case TMS_STREAM_UPLINK:
             {
-            if (iCSUplink && strmId == iUplinkStreamId)
+            if (iCSUplink && strmId == iUplinkStreamId &&
+                    iUplState == EInitialized)
                 {
-                iCSUplink->Activate();
+                iCSUplink->Activate(retrytime);
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
             }
         case TMS_STREAM_DOWNLINK:
             {
-            if (iCSDownlink && strmId == iDnlinkStreamId)
+            if(!iResetVolNotifier)
+                {
+                TRAP(status, iResetVolNotifier = TMSSyncVol::NewL());
+                }
+            if(iResetVolNotifier)
                 {
-                iCSDownlink->Activate();
+                iResetVolNotifier->SetSyncVol();
+                }
+            if (iCSDownlink && strmId == iDnlinkStreamId &&
+                    iDnlState == EInitialized)
+                {
+                iCSDownlink->Activate(retrytime);
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
@@ -330,6 +343,7 @@
             if (iCSUplink && strmId == iUplinkStreamId)
                 {
                 iCSUplink->Deactivate();
+                iUplState = EInitialized;
                 status = TMS_RESULT_SUCCESS;
                 NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
                 }
@@ -340,6 +354,7 @@
             if (iCSDownlink && strmId == iDnlinkStreamId)
                 {
                 iCSDownlink->Deactivate();
+                iDnlState = EInitialized;
                 status = TMS_RESULT_SUCCESS;
                 NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
                 }
@@ -373,16 +388,18 @@
             if (iCSUplink && strmId == iUplinkStreamId)
                 {
                 iCSUplink->Deactivate();
-                iUplinkInitialized = FALSE;
+                iUplState = EIdle;
                 status = TMS_RESULT_SUCCESS;
                 NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
                 }
             break;
+            }
         case TMS_STREAM_DOWNLINK:
+            {
             if (iCSDownlink && strmId == iDnlinkStreamId)
                 {
                 iCSDownlink->Deactivate();
-                iDnlinkInitialized = FALSE;
+                iDnlState = EIdle;
                 status = TMS_RESULT_SUCCESS;
                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
                         status);
@@ -416,7 +433,7 @@
             if (strmId == iUplinkStreamId)
                 {
                 iUplinkStreamId = -1;
-                iUplinkInitialized = FALSE;
+                iUplState = EIdle;
                 }
             break;
             }
@@ -425,7 +442,7 @@
             if (strmId == iDnlinkStreamId)
                 {
                 iDnlinkStreamId = -1;
-                iDnlinkInitialized = FALSE;
+                iDnlState = EIdle;
                 }
             break;
             }
@@ -492,7 +509,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSDownlink && iDnlinkInitialized)
+    if (iCSDownlink && iDnlState != EIdle)
         {
         volume = iCSDownlink->MaxVolume();
         status = TMS_RESULT_SUCCESS;
@@ -511,7 +528,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSDownlink && iDnlinkInitialized)
+    if (iCSDownlink && iDnlState != EIdle)
         {
         iCSDownlink->SetVolume(volume);
         status = TMS_RESULT_SUCCESS;
@@ -530,7 +547,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSDownlink && iDnlinkInitialized)
+    if (iCSDownlink && iDnlState != EIdle)
         {
         volume = iCSDownlink->Volume();
         status = TMS_RESULT_SUCCESS;
@@ -548,7 +565,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSUplink && iUplinkInitialized)
+    if (iCSUplink && iUplState != EIdle)
         {
         gain = iCSUplink->MaxGain();
         status = TMS_RESULT_SUCCESS;
@@ -567,7 +584,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSUplink && iUplinkInitialized)
+    if (iCSUplink && iUplState != EIdle)
         {
         iCSUplink->SetGain(gain);
         status = TMS_RESULT_SUCCESS;
@@ -586,7 +603,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSUplink && iUplinkInitialized)
+    if (iCSUplink && iUplState != EIdle)
         {
         gain = iCSUplink->Gain();
         status = TMS_RESULT_SUCCESS;
@@ -604,7 +621,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSDownlink && iDnlinkInitialized)
+    if (iCSDownlink && iDnlState != EIdle)
         {
         volume = iCSDownlink->MaxVolume();
         status = TMS_RESULT_SUCCESS;
@@ -624,7 +641,7 @@
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
     iGlobalVol = volume;
-    if (iCSDownlink && iDnlinkInitialized)
+    if (iCSDownlink && iDnlState != EIdle)
         {
         iCSDownlink->SetVolume(volume);
         status = TMS_RESULT_SUCCESS;
@@ -642,7 +659,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSDownlink && iDnlinkInitialized)
+    if (iCSDownlink && iDnlState != EIdle)
         {
         volume = iCSDownlink->Volume();
         status = TMS_RESULT_SUCCESS;
@@ -660,7 +677,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSUplink && iUplinkInitialized)
+    if (iCSUplink && iUplState != EIdle)
         {
         gain = iCSUplink->MaxGain();
         status = TMS_RESULT_SUCCESS;
@@ -680,7 +697,7 @@
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
     iGlobalGain = gain;
-    if (iCSUplink && iUplinkInitialized)
+    if (iCSUplink && iUplState != EIdle)
         {
         iCSUplink->SetGain(gain);
         status = TMS_RESULT_SUCCESS;
@@ -698,7 +715,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-    if (iCSUplink && iUplinkInitialized)
+    if (iCSUplink && iUplState != EIdle)
         {
         gain = iCSUplink->Gain();
         status = TMS_RESULT_SUCCESS;
@@ -913,7 +930,6 @@
         status = TMS_RESULT_SUCCESS;
         output = TOTMSOUTPUT(taroutput);
         }
-
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -955,10 +971,8 @@
         RBufWriteStream stream;
         stream.Open(*outputsbuf);
         CleanupClosePushL(stream);
-
         TArray<CTelephonyAudioRouting::TAudioOutput>
                 availableOutputs = iRouting->AvailableOutputs();
-
         guint numOfItems = availableOutputs.Count();
         count = numOfItems;
         for (guint i = 0; i < numOfItems; i++)
@@ -966,7 +980,6 @@
             tmsoutput = TOTMSOUTPUT(availableOutputs[i]);
             stream.WriteUint32L(tmsoutput);
             }
-
         CleanupStack::PopAndDestroy(&stream);
         status = TMS_RESULT_SUCCESS;
         }
@@ -975,9 +988,6 @@
     return status;
     }
 
-
-// From TMSCSPDevSoundObserver
-
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::DownlinkInitCompleted
 // From TMSCSDevSoundObserver
@@ -988,7 +998,7 @@
     TRACE_PRN_FN_ENT;
     if (status == TMS_RESULT_SUCCESS)
         {
-        iDnlinkInitialized = TRUE;
+        iDnlState = EInitialized;
         }
     NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
     TRACE_PRN_FN_EXT;
@@ -1004,7 +1014,7 @@
     TRACE_PRN_FN_ENT;
     if (status == TMS_RESULT_SUCCESS)
         {
-        iUplinkInitialized = TRUE;
+        iUplState = EInitialized;
         }
     NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
     TRACE_PRN_FN_EXT;
@@ -1018,6 +1028,10 @@
 void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
+    if (status == TMS_RESULT_SUCCESS)
+        {
+        iUplState = EActivated;
+        }
     NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
     TRACE_PRN_FN_EXT;
     }
@@ -1030,6 +1044,10 @@
 void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
+    if (status == TMS_RESULT_SUCCESS)
+        {
+        iDnlState = EActivated;
+        }
     NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
     TRACE_PRN_FN_EXT;
     }