mmserv/tms/tmscallserver/src/tmscallsession.cpp
changeset 0 71ca22bcf22a
child 3 4f62049db6ac
child 12 5a06f39ad45b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,1112 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Telephony Multimedia Service
+ *
+ */
+
+#include "tmsutility.h"
+#include "tmsutility.h"
+#include "calladpt.h"
+#include "tmscallserver.h"
+#include "tmscallclisrv.h"
+#include "tmscallsession.h"
+
+using namespace TMS;
+
+const guint KArrayExpandSize = 8;
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::TMSCallSession
+// -----------------------------------------------------------------------------
+//
+TMSCallSession::TMSCallSession(TMSCallServer &aServer) :
+    iTMSCallServer(aServer)
+    {
+    TRACE_PRN_FN_ENT;
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::~TMSCallSession
+// The destructor
+// -----------------------------------------------------------------------------
+//
+TMSCallSession::~TMSCallSession()
+    {
+    TRACE_PRN_FN_ENT;
+    delete iCallAdpt;
+    iTMSCallServer.DropSession();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::NewL
+// Symbian constructor.
+// -----------------------------------------------------------------------------
+//
+TMSCallSession* TMSCallSession::NewL(TMSCallServer &aServer)
+    {
+    TRACE_PRN_FN_ENT;
+    TMSCallSession* self = new (ELeave) TMSCallSession(aServer);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    TRACE_PRN_FN_EXT;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::ConstructL
+// 2-nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::ConstructL()
+    {
+    TRACE_PRN_FN_ENT;
+    iTMSCallServer.AddSession(); //add new session
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::ServiceL
+// Service request handler.
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::ServiceL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    TRAPD(status, HandleMessageL(aMessage));
+    if (status != TMS_RESULT_SUCCESS)
+        {
+        aMessage.Complete(status);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleMessageL
+// Service request handler.
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleMessageL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    switch (aMessage.Function())
+        {
+        case TMS_CREATE_CALL:
+            HandleCreateCallL(aMessage);
+            break;
+        case TMS_CREATE_STREAM:
+            HandleCreateStreamL(aMessage);
+            break;
+        case TMS_INIT_STREAM:
+            HandleInitStreamL(aMessage);
+            break;
+        case TMS_START_STREAM:
+            HandleStartStreamL(aMessage);
+            break;
+        case TMS_PAUSE_STREAM:
+            HandlePauseStreamL(aMessage);
+            break;
+        case TMS_STOP_STREAM:
+            HandleStopStreamL(aMessage);
+            break;
+        case TMS_DEINIT_STREAM:
+            HandleDeinitStreamL(aMessage);
+            break;
+        case TMS_DELETE_STREAM:
+            HandleDeleteStreamL(aMessage);
+            break;
+        case TMS_DELETE_CALL:
+            HandleDeleteCallL(aMessage);
+            break;
+        case TMS_DATA_XFER_BUFFER_EMPTIED:
+            HandleDataXferBufferEmptiedCallL(aMessage);
+            break;
+        case TMS_DATA_XFER_BUFFER_FILLED:
+            HandleDataXferBufferFilledCallL(aMessage);
+            break;
+        case TMS_DATA_XFER_BUFFER_GET_HNDL:
+            HandleDataXferBufferGetHndlCallL(aMessage);
+            break;
+        case TMS_EFFECT_VOLUME_GETMAX:
+            HandleEffectVolumeGetMaxVolL(aMessage);
+            break;
+        case TMS_EFFECT_VOLUME_SET:
+            HandleEffectVolumeSetVolL(aMessage);
+            break;
+        case TMS_EFFECT_VOLUME_GET:
+            HandleEffectVolumeGetVolL(aMessage);
+            break;
+        case TMS_EFFECT_GAIN_GETMAX:
+            HandleEffectVolumeGetMaxGainL(aMessage);
+            break;
+        case TMS_EFFECT_GAIN_SET:
+            HandleEffectVolumeSetGainL(aMessage);
+            break;
+        case TMS_EFFECT_GAIN_GET:
+            HandleEffectVolumeGetGainL(aMessage);
+            break;
+        case TMS_EFFECT_GLOBAL_VOL_SET:
+            HandleGlobalEffectVolumeSetVolL(aMessage);
+            break;
+        case TMS_EFFECT_GLOBAL_VOL_GET:
+            HandleGlobalEffectVolumeGetVolL(aMessage);
+            break;
+        case TMS_EFFECT_GLOBAL_VOL_GETMAX:
+            HandleGlobalEffectVolumeGetMaxVolL(aMessage);
+            break;
+        case TMS_EFFECT_GLOBAL_GAIN_SET:
+            HandleGlobalEffectVolumeSetGainL(aMessage);
+            break;
+        case TMS_EFFECT_GLOBAL_GAIN_GET:
+            HandleGlobalEffectVolumeGetGainL(aMessage);
+            break;
+        case TMS_EFFECT_GLOBAL_GAIN_GETMAX:
+            HandleGlobalEffectVolumeGetMaxGainL(aMessage);
+            break;
+        case TMS_FORMAT_SETCODECMODE:
+            HandleFormatSetCodecModeL(aMessage);
+            break;
+        case TMS_FORMAT_GETCODECMODE:
+            HandleFormatGetCodecModeL(aMessage);
+            break;
+        case TMS_FORMAT_GETSUPPORTEDBITRATESCOUNT:
+            HandleFormatGetSupportedBitRatesCountL(aMessage);
+            break;
+        case TMS_FORMAT_GETSUPPORTEDBITRATES:
+            HandleFormatGetSupportedBitRatesL(aMessage);
+            break;
+        case TMS_FORMAT_SETBITRATE:
+            HandleFormatSetBitRateL(aMessage);
+            break;
+        case TMS_FORMAT_GETBITRATE:
+            HandleFormatGetBitRateL(aMessage);
+            break;
+        case TMS_FORMAT_SETVAD:
+            HandleFormatSetVADL(aMessage);
+            break;
+        case TMS_FORMAT_GETVAD:
+            HandleFormatGetVADL(aMessage);
+            break;
+        case TMS_FORMAT_SETCNG:
+            HandleFormatSetCNGL(aMessage);
+            break;
+        case TMS_FORMAT_GETCNG:
+            HandleFormatGetCNGL(aMessage);
+            break;
+        case TMS_FORMAT_SETPLC:
+            HandleFormatSetPlcL(aMessage);
+            break;
+        case TMS_FORMAT_GETPLC:
+            HandleFormatGetPlcL(aMessage);
+            break;
+        case TMS_ROUTING_OUTPUT_SET:
+            HandleRoutingSetOutputL(aMessage);
+            break;
+        case TMS_ROUTING_OUTPUT_GET:
+            HandleRoutingGetOutputL(aMessage);
+            break;
+        case TMS_ROUTING_PREVIOUSOUTPUT_GET:
+            HandleRoutingGetPreviousOutputL(aMessage);
+            break;
+        case TMS_ROUTING_AVAILABLE_OUTPUT_GET:
+            HandleRoutingGetAvailableOutputsL(aMessage);
+            break;
+        default:
+            User::Leave(TMS_RESULT_ILLEGAL_OPERATION);
+            break;
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleCreateCallL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleCreateCallL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_ALREADY_EXIST);
+    if (!iCallAdpt)
+        {
+        // Get Call type
+        gint callType = aMessage.Int0();
+        status = CallAdpt::CreateCallL(callType, iCallAdpt);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleCreateStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleCreateStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamCreateDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        gint outStrmId;
+        status = iCallAdpt->CreateStream(pckg().CallType, pckg().StreamType,
+                outStrmId);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<gint> outPckg(outStrmId);
+            aMessage.WriteL(1, outPckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleInitStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleInitStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamInitDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->InitStreamL(pckg().CallType, pckg().StreamType,
+                pckg().StreamId, pckg().FormatType, aMessage);
+
+        switch (pckg().StreamType)
+            {
+            case TMS_STREAM_DOWNLINK:
+                {
+                iCallAdpt->SetGlobalVolume(iGlobalVol);
+                }
+                break;
+            case TMS_STREAM_UPLINK:
+                {
+                iCallAdpt->SetGlobalGain(iGlobalGain);
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleStartStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleStartStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamOpDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->StartStream(pckg().CallType, pckg().StreamType,
+                pckg().StreamId);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandlePauseStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandlePauseStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamOpDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->PauseStream(pckg().CallType, pckg().StreamType,
+                pckg().StreamId);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleStopStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleStopStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamOpDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->StopStream(pckg().CallType, pckg().StreamType,
+                pckg().StreamId);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleDeinitStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleDeinitStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamOpDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->DeinitStream(pckg().CallType, pckg().StreamType,
+                pckg().StreamId);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleDeleteStreamL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleDeleteStreamL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvStreamOpDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->DeleteStream(pckg().CallType, pckg().StreamType,
+                pckg().StreamId);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleDeleteCallL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleDeleteCallL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    delete iCallAdpt;
+    iCallAdpt = NULL;
+    aMessage.Complete(TMS_RESULT_SUCCESS);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleDataXferBufferEmptiedCallL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleDataXferBufferEmptiedCallL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvDataXferDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->DataXferBufferEmptied(pckg().CallType,
+                pckg().StreamType, pckg().StreamId);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleDataXferBufferFilledCallL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleDataXferBufferFilledCallL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSCliSrvDataXferDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->DataXferBufferFilled(pckg().CallType,
+                pckg().StreamType, pckg().StreamId, pckg().DataSize);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleDataXferBufferGetHndlCallL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleDataXferBufferGetHndlCallL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    RChunk chunk;
+
+    if (iCallAdpt)
+        {
+        TMSCliSrvDataXferChunkHndlDataStructBufPckg pckg;
+        aMessage.ReadL(0, pckg);
+        status = iCallAdpt->GetDataXferBufferHndl(pckg().CallType,
+                pckg().StreamType, pckg().StreamId, pckg().Key, chunk);
+        }
+
+    if (status == TMS_RESULT_SUCCESS && chunk.Handle() > 0)
+        {
+        aMessage.Complete(chunk);
+        }
+    else
+        {
+        // TODO: make sure error code is negative or zero
+        aMessage.Complete(0);
+        }
+
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleEffectVolumeGetMaxVolL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleEffectVolumeGetMaxVolL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint vol;
+        status = iCallAdpt->GetMaxVolume(vol);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(vol);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleEffectVolumeSetVolL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleEffectVolumeSetVolL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint vol;
+        vol = aMessage.Int0();
+        status = iCallAdpt->SetVolume(vol);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleEffectVolumeGetVolL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleEffectVolumeGetVolL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint vol;
+        status = iCallAdpt->GetVolume(vol);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(vol);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleEffectVolumeGetMaxGainL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleEffectVolumeGetMaxGainL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint gain;
+        status = iCallAdpt->GetMaxGain(gain);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(gain);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleEffectVolumeSetGainL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleEffectVolumeSetGainL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint gain;
+        gain = aMessage.Int0();
+        status = iCallAdpt->SetGain(gain);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleEffectVolumeGetGainL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleEffectVolumeGetGainL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint gain;
+        status = iCallAdpt->GetGain(gain);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(gain);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleGlobalEffectVolumeGetMaxVolL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleGlobalEffectVolumeGetMaxVolL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint vol(0);
+        status = iCallAdpt->GetGlobalMaxVolume(vol);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(vol);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleGlobalEffectVolumeSetVolL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleGlobalEffectVolumeSetVolL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    iGlobalVol = aMessage.Int0();
+    if (iCallAdpt)
+        {
+        guint vol(0);
+        vol = aMessage.Int0();
+        status = iCallAdpt->SetGlobalVolume(vol);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleGlobalEffectVolumeGetVolL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleGlobalEffectVolumeGetVolL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint vol(0);
+        status = iCallAdpt->GetGlobalVolume(vol);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(vol);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleGlobalEffectVolumeGetMaxGainL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleGlobalEffectVolumeGetMaxGainL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint gain;
+        status = iCallAdpt->GetGlobalMaxGain(gain);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(gain);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleGlobalEffectVolumeSetGainL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleGlobalEffectVolumeSetGainL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
+    iGlobalGain = aMessage.Int0();
+    if (iCallAdpt)
+        {
+        guint gain;
+        gain = aMessage.Int0();
+        status = iCallAdpt->SetGlobalGain(gain);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleGlobalEffectVolumeGetGainL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleGlobalEffectVolumeGetGainL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint gain;
+        status = iCallAdpt->GetGlobalGain(gain);
+        if (status == TMS_RESULT_SUCCESS)
+            {
+            TPckgBuf<guint> pckg(gain);
+            aMessage.WriteL(0, pckg);
+            }
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetCodecModeL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetCodecModeL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+
+    if (iCallAdpt)
+        {
+        gint mode;
+        TMSFormatType fmttype;
+        TMSStreamType strmtype;
+        fmttype = aMessage.Int0();
+        strmtype = aMessage.Int1();
+        status = iCallAdpt->GetCodecMode(fmttype, strmtype, mode);
+        TPckgBuf<gint> pckg(mode);
+        aMessage.WriteL(2, pckg);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatSetCodecModeL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatSetCodecModeL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gint mode;
+        TMSFormatType fmttype;
+        TMSStreamType strmtype;
+        fmttype = aMessage.Int0();
+        strmtype = aMessage.Int1();
+        mode = aMessage.Int2();
+        status = iCallAdpt->SetCodecMode(fmttype, strmtype, mode);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetSupportedBitRatesCountL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetSupportedBitRatesCountL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint count;
+        status = iCallAdpt->GetSupportedBitRatesCount(count);
+        TPckgBuf<guint> pckg(count);
+        aMessage.WriteL(0, pckg);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetSupportedBitRatesL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetSupportedBitRatesL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        CBufFlat* brbuf = CBufFlat::NewL(KArrayExpandSize);
+        CleanupStack::PushL(brbuf);
+        status = iCallAdpt->GetSupportedBitRates(brbuf);
+        aMessage.WriteL(0, brbuf->Ptr(0));
+        CleanupStack::PopAndDestroy(brbuf);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetBitRateL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetBitRateL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint bitrate;
+        status = iCallAdpt->GetBitRate(bitrate);
+        TPckgBuf<guint> pckg(bitrate);
+        aMessage.WriteL(0, pckg);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatSetBitRateL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatSetBitRateL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        guint bitrate;
+        bitrate = aMessage.Int0();
+        status = iCallAdpt->SetBitRate(bitrate);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetVADL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetVADL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gboolean vad;
+        TMSFormatType fmttype;
+        fmttype = (TMSFormatType) aMessage.Int0();
+        status = iCallAdpt->GetVAD(fmttype, vad);
+        TPckgBuf<gboolean> pckg(vad);
+        aMessage.WriteL(1, pckg);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatSetVADL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatSetVADL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gboolean vad;
+        TMSFormatType fmttype;
+        fmttype = (TMSFormatType) aMessage.Int0();
+        vad = (gboolean) aMessage.Int1();
+        status = iCallAdpt->SetVAD(fmttype, vad);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetCNGL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetCNGL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gboolean cng;
+        TMSFormatType fmttype;
+        fmttype = (TMSFormatType) aMessage.Int0();
+        status = iCallAdpt->GetCNG(fmttype, cng);
+        TPckgBuf<gboolean> pckg(cng);
+        aMessage.WriteL(1, pckg);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatSetCNGL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatSetCNGL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gboolean cng;
+        TMSFormatType fmttype;
+        fmttype = (TMSFormatType) aMessage.Int0();
+        cng = (gboolean) aMessage.Int1();
+        status = iCallAdpt->SetCNG(fmttype, cng);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatGetPlcL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatGetPlcL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gboolean plc;
+        TMSFormatType fmttype;
+        fmttype = (TMSFormatType) aMessage.Int0();
+        status = iCallAdpt->GetPlc(fmttype, plc);
+        TPckgBuf<gboolean> pckg(plc);
+        aMessage.WriteL(1, pckg);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleFormatSetPlcL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleFormatSetPlcL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        gboolean plc;
+        TMSFormatType fmttype;
+        fmttype = (TMSFormatType) aMessage.Int0();
+        plc = (gboolean) aMessage.Int1();
+        status = iCallAdpt->SetPlc(fmttype, plc);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleRoutingSetOutputL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleRoutingSetOutputL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    if (iCallAdpt)
+        {
+        TMSAudioOutput outputtype;
+        outputtype = (TMSAudioOutput) aMessage.Int0();
+        status = iCallAdpt->SetOutput(outputtype);
+        }
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+
+    }
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleRoutingGetOutputL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleRoutingGetOutputL(const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    TMSAudioOutput outputtype;
+    if (iCallAdpt)
+        {
+        status = iCallAdpt->GetOutput(outputtype);
+        }
+    TPckgBuf<gint> p(outputtype);
+    aMessage.Write(0, p);
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleRoutingGetPreviousOutputL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleRoutingGetPreviousOutputL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    TMSAudioOutput outputtype;
+    if (iCallAdpt)
+        {
+        status = iCallAdpt->GetPreviousOutput(outputtype);
+        }
+    TPckgBuf<gint> p(outputtype);
+    aMessage.Write(0, p);
+    aMessage.Complete(status);
+    TRACE_PRN_FN_EXT;
+    }
+// -----------------------------------------------------------------------------
+// TMSCallSession::HandleRoutingGetAvailableOutputsL
+//
+// -----------------------------------------------------------------------------
+//
+void TMSCallSession::HandleRoutingGetAvailableOutputsL(
+        const RMessage2& aMessage)
+    {
+    TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_DOES_NOT_EXIST);
+    TPckgBuf<gint> countpkg;
+    gint count;
+    if (iCallAdpt)
+        {
+        CBufFlat* outputbuf = CBufFlat::NewL(10);
+        CleanupStack::PushL(outputbuf);
+        status = iCallAdpt->GetAvailableOutputsL(count, outputbuf);
+
+        countpkg() = count;
+        aMessage.WriteL(0, countpkg);
+        aMessage.WriteL(1, outputbuf->Ptr(0));
+        CleanupStack::PopAndDestroy(outputbuf);
+        }
+    aMessage.Complete(status);
+    }
+
+// End of file