diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcecli/src/mceitcsender.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcecli/src/mceitcsender.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,298 @@ +/* +* Copyright (c) 2005 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: +* +*/ + + + + +#include "mcesession.h" +#include "mceitcsender.h" +#include "mceitc.h" +#include "mcecomsession.h" +#include "mceserial.h" +#include "mceclilogs.h" + + +// ----------------------------------------------------------------------------- +// CMceItcSender::NewL +// ----------------------------------------------------------------------------- +// +CMceItcSender* CMceItcSender::NewL ( MMceItc& aITC ) + { + CMceItcSender* self = CMceItcSender::NewLC( aITC ); + CleanupStack::Pop (self); + return self; + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::NewLC +// ----------------------------------------------------------------------------- +// +CMceItcSender* CMceItcSender::NewLC ( MMceItc& aITC ) + { + CMceItcSender* self = new (ELeave) CMceItcSender( aITC ); + CleanupStack::PushL( self ); + return self; + } + + +// ----------------------------------------------------------------------------- +// CMceItcSender::CMceItcSender +// ----------------------------------------------------------------------------- +// +CMceItcSender::CMceItcSender ( MMceItc& aITC ) + : iITC ( aITC ), + iEmptyBody ( KNullDesC8 ) + { + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::~CMceItcSender +// ----------------------------------------------------------------------------- +// +CMceItcSender::~CMceItcSender () + { + } + + +// ----------------------------------------------------------------------------- +// CMceItcSender::Send +// ----------------------------------------------------------------------------- +// +TInt CMceItcSender::Send(TMceIds& aIds, TMceItcFunctions aITCFunction) + { + + TPckgBuf mceIdsPckg( aIds ); + iITCMsgArgs.Set( EMceItcArgIds, &mceIdsPckg ); + + TInt err = iITC.Send( aITCFunction, iITCMsgArgs ); + aIds = mceIdsPckg(); + return err; + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::SendL +// ----------------------------------------------------------------------------- +// +void CMceItcSender::SendL( TMceIds& aIds, TMceItcFunctions aITCFunction ) + { + MCECLI_DEBUG("CMceItcSender::SendL, Entry"); + MCECLI_DEBUG_ITC( "ITC", aITCFunction ); + MCECLI_DEBUG_IDS( "IDS", aIds ); + + TInt err = Send( aIds, aITCFunction ); + if ( err != KErrNone ) + { + MCECLI_DEBUG_DVALUE("CMceItcSender::SendL, Exit. error", err ); + User::Leave( err ); + } + + MCECLI_DEBUG("CMceItcSender::SendL, Exit"); + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::SendL +// ----------------------------------------------------------------------------- +// +void CMceItcSender::SendL( TMceIds& aIds, + TMceItcFunctions aITCFunction, + CMceMsgBase& aMessage, + HBufC8* aBody, + TBool aTakeOwnershipOfBody ) + { + MCECLI_DEBUG("CMceItcSender::SendL(message,body), Entry"); + + aMessage.EncodeL(); + TPtr8 externalizedMessage = aMessage.EncodeBuffer().Ptr(0); + + Mem::FillZ( &iITCMsgArgs, sizeof( iITCMsgArgs ) ); + aIds.iMsgType = aMessage.Type(); + + iITCMsgArgs.Set( EMceItcArgContext, &externalizedMessage ); + + if ( aBody ) + { + iITCMsgArgs.Set( EMceItcArgMessageContent, aBody ); + } + else + { + iITCMsgArgs.Set( EMceItcArgMessageContent, &iEmptyBody ); + } + SendL( aIds, aITCFunction ); + if ( aTakeOwnershipOfBody ) + { + delete aBody; + } + + MCECLI_DEBUG("CMceItcSender::SendL(message,body), Exit"); + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::SendL +// ----------------------------------------------------------------------------- +// +void CMceItcSender::SendL( TMceIds& aIds, + TMceItcFunctions aITCFunction, + TUint32& aData ) + { + MCECLI_DEBUG("CMceItcSender::SendL(TUin32), Entry"); + + Mem::FillZ( &iITCMsgArgs, sizeof( iITCMsgArgs ) ); + TPckgBuf mceDataPckg( aData ); + + iITCMsgArgs.Set( EMceItcArgId, &mceDataPckg ); + + SendL( aIds, aITCFunction ); + + MCECLI_DEBUG("CMceItcSender::SendL(TUin32), Exit"); + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::WriteL +// ----------------------------------------------------------------------------- +// +void CMceItcSender::WriteL( TMceIds& aIds, + TMceItcFunctions aITCFunction, + const TDesC8& aData ) + { + MCECLI_DEBUG("CMceItcSender::WriteL, Entry"); + + Mem::FillZ( &iITCMsgArgs, sizeof( iITCMsgArgs ) ); + aIds.iMsgType = EMceItcMsgTypeWriteString; + + iITCMsgArgs.Set( EMceItcArgContext, &aData ); + + SendL( aIds, aITCFunction ); + + MCECLI_DEBUG("CMceItcSender::WriteL, Exit"); + } + + +// ----------------------------------------------------------------------------- +// CMceItcSender::ReadL +// ----------------------------------------------------------------------------- +// +void CMceItcSender::ReadL( TMceIds& aIds, + TMceItcFunctions aITCFunction, + TDes8& aData ) + { + MCECLI_DEBUG("CMceItcSender::ReadL, Entry"); + Mem::FillZ( &iITCMsgArgs, sizeof( iITCMsgArgs ) ); + aIds.iMsgType = EMceItcMsgTypeReadString; + + iITCMsgArgs.Set( EMceItcArgContext, &aData ); + + SendL( aIds, aITCFunction ); + + MCECLI_DEBUG("CMceItcSender::ReadL, Exit"); + } + + +// ----------------------------------------------------------------------------- +// CMceItcSender::ReadArrayL +// ----------------------------------------------------------------------------- +// +CDesC8Array* CMceItcSender::ReadArrayL(TMceIds& aIds, + TMceItcFunctions aITCFunction ) + { + MCECLI_DEBUG("CMceItcSender::ReadArrayL, Entry"); + + Mem::FillZ(&iITCMsgArgs, sizeof(iITCMsgArgs)); + aIds.iMsgType = KMceNotAssigned; + + CMceMsgTextArray* textArray = new (ELeave) CMceMsgTextArray(); + CleanupStack::PushL( textArray ); + + HBufC8* arrayBuf = HBufC8::NewLC( KMceMaxSizeInReadStream ); + TPtr8 arrayBufPtr = arrayBuf->Des(); + iITCMsgArgs.Set (EMceItcArgContext, &arrayBufPtr); + SendL (aIds,aITCFunction); + + textArray->DecodeL( *arrayBuf ); + + CDesC8Array* array = textArray->iArray; + + CleanupStack::PopAndDestroy(arrayBuf);//arrayBuf + CleanupStack::PopAndDestroy( textArray );//textArray + + MCECLI_DEBUG("CMceItcSender::ReadArrayL, Exit"); + return array; + + } + +// ----------------------------------------------------------------------------- +// CMceItcSender::ReadArrayL +// ----------------------------------------------------------------------------- +// +CDesC8Array* CMceItcSender::ReadArrayL( TMceIds& aIds, + TMceItcFunctions aITCFunction, + const TDesC8& aData ) + { + MCECLI_DEBUG("CMceItcSender::ReadArrayL(inout), Entry"); + + Mem::FillZ( &iITCMsgArgs, sizeof( iITCMsgArgs ) ); + aIds.iMsgType = KMceNotAssigned; + + CMceMsgTextArray* textArray = new (ELeave) CMceMsgTextArray(); + CleanupStack::PushL( textArray ); + + HBufC8* arrayBuf = HBufC8::NewLC( KMceMaxSizeInReadStream ); + TPtr8 arrayBufPtr = arrayBuf->Des(); + arrayBufPtr.Copy( aData ); + iITCMsgArgs.Set ( EMceItcArgContext, &arrayBufPtr ); + SendL ( aIds, aITCFunction ); + + textArray->DecodeL( *arrayBuf ); + + CDesC8Array* array = textArray->iArray; + + CleanupStack::PopAndDestroy( arrayBuf );//arrayBuf + CleanupStack::PopAndDestroy( textArray );//textArray + + MCECLI_DEBUG("CMceItcSender::ReadArrayL(inout), Exit"); + return array; + + } + + +// ----------------------------------------------------------------------------- +// CMceItcSender::ReadStringL +// ----------------------------------------------------------------------------- +// +HBufC8* CMceItcSender::ReadStringL(TMceIds& aIds, + TMceItcFunctions aITCFunction ) + { + + MCECLI_DEBUG("CMceItcSender::ReadStringL, Entry"); + + Mem::FillZ(&iITCMsgArgs, sizeof(iITCMsgArgs)); + aIds.iMsgType = KMceNotAssigned; + + + HBufC8* string = HBufC8::NewLC( KMceMaxSizeInSessionAsDesc ); + TPtr8 stringPtr = string->Des(); + iITCMsgArgs.Set (EMceItcArgContext, &stringPtr); + SendL (aIds,aITCFunction); + + CleanupStack::Pop( string ); + + MCECLI_DEBUG("CMceItcSender::ReadStringL, Exit"); + return string; + + } + + +