diff -r 000000000000 -r 63b37f68c1ce adaptationlayer/modematadaptation/modematcontroller_exe/src/catmessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/adaptationlayer/modematadaptation/modematcontroller_exe/src/catmessage.cpp Fri Nov 06 17:28:23 2009 +0000 @@ -0,0 +1,118 @@ +/* +* 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 the License "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 "modemattrace.h" +#include "cmodematsrv.h" +#include "catmessage.h" + +CAtMessage::CAtMessage( const TUint8 aMessageType, + CModemAtSession* aSession, + const RMessage2& aRequest ): + iMessageType( aMessageType ), + iSession( aSession ), + iRequest( aRequest ), + iMessagePtr( NULL, 0) + { + C_TRACE(( _L("CAtMessage::CAtMessage() this: 0x%x, aRequest 0x%x handle: 0x%x"), this, &aRequest, aRequest.Handle() )); + TInt length = aRequest.GetDesLength( KATModemCommandArgumentIndex ); + C_TRACE((_L("CAtMessage aMessageType: %d at command length: %d"), aMessageType, length )); + iMessage = HBufC8::New( length ); + iMessagePtr.Set( iMessage->Des() ); + TInt err = aRequest.Read( KATModemCommandArgumentIndex, iMessagePtr ); + C_TRACE((_L("aRequest.Read err: %d"), err )); + if( err != KErrNone ) + { + TRACE_ASSERT_ALWAYS; + } + DUMP_MESSAGE( iMessagePtr ); + iRequest.Write( KATModemResponseArgumentIndex, KEmptyString ); + C_TRACE(( _L("CAtMessage done") )); + } + +CAtMessage::~CAtMessage() + { + C_TRACE (( _L("CAtMessage::~CAtMessage()") )); + if( !iRequest.IsNull() ) + { + C_TRACE (( _L("CAtMessage::~CAtMessage() !iRequest.IsNull this: 0x%x iRequest: 0x%x handle: 0x%x"), this, &iRequest, iRequest.Handle() )); + } + if( iMessage ) + { + delete iMessage; + iMessage = NULL; + } + } + +void CAtMessage::CancelRequest() + { + C_TRACE (( _L("CAtMessage::CancelRequest()") )); + if( !iRequest.IsNull() ) + { + C_TRACE (( _L("CAtMessage::CancelRequest complete iRequest KErrCancel iRequest: 0x%x handle 0x%x"), &iRequest, iRequest.Handle() )); + iRequest.Complete( KErrCancel ); + } + } + +CModemAtSession* CAtMessage::GetSession() + { + C_TRACE (( _L("CAtMessage::GetSession() 0x%x"), &iSession )); + return iSession; + } + +TPtr8 CAtMessage::GetBuffer() + { + C_TRACE (( _L("CAtMessage::GetBuffer()"))); + return iMessagePtr; + } + +TUint8 CAtMessage::GetMessageType() + { + C_TRACE (( _L("CAtMessage::GetMessageType()"), iMessageType )); + return iMessageType; + } + +void CAtMessage::ReceiveATResponse( const TDesC8& aResponse, TBool aComplete ) + { + C_TRACE (( _L("CAtMessage::ReceiveATResponse( aResponse 0x%x, aComplete %d )"), &aResponse, (TInt)aComplete )); + C_TRACE (( _L("CAtMessage::ReceiveATResponse iMessageType: %d"), iMessageType )); + if( !iRequest.IsNull() ) + { + C_TRACE (( _L("CAtMessage::ReceiveATResponse Writing to iRequest: 0x%x handle 0x%x"), &iRequest, iRequest.Handle() )); + TInt err = iRequest.Write( KATModemResponseArgumentIndex, aResponse, iRequest.GetDesLength( KATModemResponseArgumentIndex )); + TRACE_ASSERT( err == KErrNone ); + if( aComplete ) + { + C_TRACE (( _L("CAtMessage::ReceiveATResponse completing (%d) this: 0x%x iRequest: 0x%x handle: 0x%x"), err, this, &iRequest, iRequest.Handle() )); + iRequest.Complete( err ); + } + else + { + C_TRACE (( _L("CAtMessage::ReceiveATResponse not completing intermediate data yet(%d)"), err )); + } + } + else + { + TRACE_ASSERT( 0 ); + } + } + +TBool CAtMessage::IsRequestActive() + { + C_TRACE(( _T("CAtMessage::IsRequestActive ret: %d"), (TInt) !iRequest.IsNull() )); + return !iRequest.IsNull(); + }