diff -r 000000000000 -r 63b37f68c1ce adaptationlayer/tsy/nokiatsy_dll/src/cmmpipecontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmpipecontrol.cpp Fri Nov 06 17:28:23 2009 +0000 @@ -0,0 +1,1167 @@ +/* +* Copyright (c) 2007-2008 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: +* +*/ + + + +// INCLUDES +#include "cmmpipecontrol.h" +#include +#include "cmmpacketservicemesshandler.h" +#include "cmmpacketmesshandlercontextlist.h" +#include +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING +#include +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ +#include "tsylogger.h" +#include "osttracedefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "cmmpipecontroltraces.h" +#endif + +// EXTERNAL DATA STRUCTURES + // None + +// EXTERNAL FUNCTION PROTOTYPES + // None + +// CONSTANTS + // None + +// MACROS + // None + +// LOCAL CONSTANTS AND MACROS + // None + +// MODULE DATA STRUCTURES + // None + +// LOCAL FUNCTION PROTOTYPES + // None + +// ==================== LOCAL FUNCTIONS ======================================= + + // None + +// ================= MEMBER FUNCTIONS ========================================= + +// ---------------------------------------------------------------------------- +// CMmPipeControl::CMmPipeControl +// C++ default constructor can NOT contain any code, that +// might leave. +// ---------------------------------------------------------------------------- +// +CMmPipeControl::CMmPipeControl() + { + + TFLOGSTRING("TSY: CMmPipeControl::CMmPipeControl"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_CMMPIPECONTROL, "CMmPipeControl::CMmPipeControl" ); + } + +// ----------------------------------------------------------------------------- +// CMmPipeControl::~CMmPipeControl +// Destructor, deletes all allocated resources. +// ----------------------------------------------------------------------------- +// +CMmPipeControl::~CMmPipeControl() + { + + TFLOGSTRING("TSY: CMmPipeControl::~CMmPipeControl"); +OstTrace0( TRACE_NORMAL, DUP1_CMMPIPECONTROL_CMMPIPECONTROL, "CMmPipeControl::~CMmPipeControl" ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::NewL +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +CMmPipeControl* CMmPipeControl::NewL( + CMmPhoNetSender* aPhoNetSender, + CMmPhoNetReceiver* aPhoNetReceiver, + CMmPacketContextMessHandler* aMmPacketContextMessHandler, + CMmPacketContextMesshandlerList* aMmPacketContextMesshandlerList) + { + + TFLOGSTRING("TSY: CMmPipeControl::NewL"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_NEWL, "CMmPipeControl::NewL" ); + + CMmPipeControl* mmPipeControl = new ( ELeave ) CMmPipeControl(); + + CleanupStack::PushL( mmPipeControl ); + + mmPipeControl->iPhoNetSender = aPhoNetSender; + mmPipeControl->iContextMessHandler = aMmPacketContextMessHandler; + mmPipeControl->iContextList = aMmPacketContextMesshandlerList; + + mmPipeControl->ConstructL(); + + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PIPE_CREATE_RESP ); + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PIPE_ENABLE_RESP ); + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PIPE_RESET_RESP ); + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PIPE_REMOVE_RESP ); + +#ifdef DUMMY_NIF_PEP_FOR_PACKET_DATA_TESTING_DOS + + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PEP_CONNECT_REQ ); + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PEP_DISCONNECT_REQ ); + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PEP_RESET_REQ ); + aPhoNetReceiver->RegisterL( mmPipeControl, PN_PIPE, PNS_PEP_ENABLE_REQ ); + +#endif //DUMMY_NIF_PEP_FOR_PACKET_DATA_TESTING_DOS + +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + aPhoNetReceiver-> + RegisterL( mmPipeControl, PN_NAMESERVICE, PNS_NAME_QUERY_RESP ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + CleanupStack::Pop( mmPipeControl ); + + return mmPipeControl; + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::ConstructL +// Symbian 2nd phase constructor can leave. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::ConstructL() + { + + TFLOGSTRING("TSY: CMmPipeControl::ConstructL"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_CONSTRUCTL, "CMmPipeControl::ConstructL" ); + + iSecondPepDeviceId = KSecondPepDevice; // Default Device Id of second PEP + iSecondPepObjectId = KSecondPepObject; // Default Object Id of second PEP + + InitLists(); +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + PnsNameQueryReq(); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + } + +// ----------------------------------------------------------------------------- +// CMmPipeControl::ReceiveMessageL +// Entry point for messages received from Domestic OS. +// Switches the message to the correct method. +// ----------------------------------------------------------------------------- +// +void CMmPipeControl::ReceiveMessageL( const TIsiReceiveC& aIsiMessage ) + { + TInt resource( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_RESOURCEID ) ); + TInt messageId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) ); + + TFLOGSTRING3("TSY: CMmPipeControl::ReceiveMessageL - resource: %d, msgId: %d", resource, messageId); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_RECEIVEMESSAGEL, "CMmPipeControl::ReceiveMessageL;resource=%d;messageId=%d", resource, messageId ); + + switch ( resource ) + { + case PN_PIPE: + { + switch( messageId ) + { + case PNS_PIPE_CREATE_RESP: + { + PnsPipeCreateResp( aIsiMessage ); + break; + } + case PNS_PIPE_ENABLE_RESP: + { + PnsPipeEnableResp( aIsiMessage ); + break; + } + case PNS_PIPE_RESET_RESP: + { + PnsPipeResetResp( aIsiMessage ); + break; + } + case PNS_PIPE_REMOVE_RESP: + { + PnsPipeRemoveResp( aIsiMessage ); + break; + } + +#ifdef DUMMY_NIF_PEP_FOR_PACKET_DATA_TESTING_DOS + case PNS_PEP_CONNECT_REQ: + { + PnsPepConnectReq( aIsiMessage ); + break; + } + case PNS_PEP_DISCONNECT_REQ: + { + PnsPepDisconnectReq( aIsiMessage ); + break; + } + case PNS_PEP_RESET_REQ: + { + PnsPepResetReq( aIsiMessage ); + break; + } + case PNS_PEP_ENABLE_REQ: + { + PnsPepEnableReq( aIsiMessage ); + break; + } +#endif // DUMMY_NIF_PEP_FOR_PACKET_DATA_TESTING_DOS + + default: + { + + TFLOGSTRING2("TSY: CMmPipeControl::ReceiveMessageL - PN_PIPE - unknown msgId: %d", messageId); +OstTrace1( TRACE_NORMAL, DUP1_CMMPIPECONTROL_RECEIVEMESSAGEL, "CMmPipeControl::ReceiveMessageL;unknown messageId=%d", messageId ); + break; + } + } + break; + } +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + case PN_NAMESERVICE: + { + switch( messageId ) + { + case PNS_NAME_QUERY_RESP: + { + PnsNameQueryResp( aIsiMessage ); + break; + } + default: + { + + TFLOGSTRING2("TSY: CMmPipeControl::ReceiveMessageL - PN_NAMESERVICE - unknown msgId: %d", messageId); +OstTrace1( TRACE_NORMAL, DUP2_CMMPIPECONTROL_RECEIVEMESSAGEL, "CMmPipeControl::ReceiveMessageL;unknown messageId=%d", messageId ); + break; + } + } + break; + } +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + default: + { + + TFLOGSTRING2("TSY: CMmPipeControl::ReceiveMessageL - unknown resource: %d", resource); +OstTrace1( TRACE_NORMAL, DUP3_CMMPIPECONTROL_RECEIVEMESSAGEL, "CMmPipeControl::ReceiveMessageL;unknown resource=%d", resource ); + break; // server not known + } + } // end of switch + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::InitLists +// Initialize used lists and attributes. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::InitLists() + { + + TFLOGSTRING("TSY: CMmPipeControl::InitLists"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_INITLISTS, "CMmPipeControl::InitLists" ); + + // Find PipeHandle id from Pipe Operation by PipeHandle List + for ( TInt i = 0; i < KMmMaxNumberOfPipeHandles; i++ ) + { + // Initialize pipe operation array + iPipeOperationArray[i].iPipeHandle = KInvalidPipeHandle; + + // Use zero as default value + iPipeOperationArray[i].iTransId = 0; + } + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::SetPipeHandle +// Set Pipe Handle value to the list. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::SetPipeHandle( + const TUint8 aPipeHandle ) + { + + TFLOGSTRING("TSY: CMmPipeControl::SetPipeHandle"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_SETPIPEHANDLE, "CMmPipeControl::SetPipeHandle" ); + + // Find PipeHandle id from Pipe Operation by PipeHandle List + for ( TInt i = 0; i < KMmMaxNumberOfPipeHandles; i++ ) + { + // If KInvalidPipeHandle is same as in iPipeOperationArray list + if ( KInvalidPipeHandle == iPipeOperationArray[i].iPipeHandle ) + { + // Set pipehandle to the pipe operation list + iPipeOperationArray[i].iPipeHandle = aPipeHandle; + // Pipe handle found, break + i = KMmMaxNumberOfPipeHandles; + } + //no else + } + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::SetTransactionId +// If pipehandle found set transaction id value to the list. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::SetTransactionId( + const TUint8 aPipeHandle, + const TUint8 aTransId ) + { + + TFLOGSTRING("TSY: CMmPipeControl::SetTransactionId"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_SETTRANSACTIONID, "CMmPipeControl::SetTransactionId" ); + + // Find PipeHandle id from Pipe Operation by PipeHandle List + for ( TInt i = 0; i < KMmMaxNumberOfPipeHandles; i++ ) + { + // If aPipeHandle is same as in iPipeOperationArray list + if ( aPipeHandle == iPipeOperationArray[i].iPipeHandle ) + { + // Set aTransId to the pipe operation list + iPipeOperationArray[i].iTransId = aTransId; + // Pipe handle found, break + i = KMmMaxNumberOfPipeHandles; + } + //no else + } + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::TransactionId +// Returns Transaction id by PipeHandle. +// ---------------------------------------------------------------------------- +// +TUint8 CMmPipeControl::TransactionId( + const TUint8 aPipeHandle ) const + { + + TFLOGSTRING("TSY: CMmPipeControl::TransactionId"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_TRANSACTIONID, "CMmPipeControl::TransactionId" ); + + TUint8 transId( 0 ); + + // Find PipeHandle from Pipe Operation by PipeHandle List + for ( TInt i = 0; i < KMmMaxNumberOfPipeHandles; i++ ) + { + // If aPipeHandle is same as in iPipeOperationArray list + if ( aPipeHandle == iPipeOperationArray[i].iPipeHandle ) + { + // Get transaction id from the PipeOperationArray list + transId = iPipeOperationArray[i].iTransId; + // Pipe handle found, break + i = KMmMaxNumberOfPipeHandles; + } + //no else + } + // Return Transaction id + return transId; + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::ResetPipeHandle +// Remove Pipehandle and Transaction id from the list. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::ResetPipeHandle( + const TUint8 aPipeHandle ) + { + + TFLOGSTRING("TSY: CMmPipeControl::ResetPipeHandle"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_RESETPIPEHANDLE, "CMmPipeControl::ResetPipeHandle" ); + + // Find PipeHandle id from Pipe Operation by PipeHandle List + for ( TInt i = 0; i < KMmMaxNumberOfPipeHandles; i++ ) + { + // If aPipeHandle is same as in iPipeOperationArray list + if ( aPipeHandle == iPipeOperationArray[i].iPipeHandle ) + { + // Initialize Pipehandle to KInvalidPipeHandle + iPipeOperationArray[i].iPipeHandle = KInvalidPipeHandle; + // initialize TransactionId to zero + iPipeOperationArray[i].iTransId = 0; + // Pipe handle found, break + i = KMmMaxNumberOfPipeHandles; + } + //no else + } + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::IsOperationCalled +// Check if pipe operation for given pipe is outgoing +// ---------------------------------------------------------------------------- +// +TBool CMmPipeControl::IsOperationCalled( + const TUint8 aPipeHandle ) const + { + + TFLOGSTRING("TSY: CMmPipeControl::IsOperationCalled"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_ISOPERATIONCALLED, "CMmPipeControl::IsOperationCalled" ); + + TBool ret( EFalse); + + // Find PipeHandle id from PipeHandle List + for ( TInt i = 0; i < KMmMaxNumberOfPipeHandles; i++ ) + { + if ( aPipeHandle == iPipeOperationArray[i].iPipeHandle ) + { + // PipeHandle id found, return true + ret = ETrue; + } + } + // PipeHandle id not found, return false + return ret; + } + +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsNameQueryReq +// Construct a PNS_NAME_QUERY_REQ ISI-message +// ---------------------------------------------------------------------------- +// +TInt CMmPipeControl::PnsNameQueryReq() const + { + + TFLOGSTRING("TSY: CMmPipeControl::PnsNameQueryReq"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_PNSNAMEQUERYREQ, "CMmPipeControl::PnsNameQueryReq" ); + + // create buffer for isi msg data + TBuf8 data; + // set message data + data.Append( KGpdsPadding ); // Padding byte + data.Append( KGpdsPadding ); // Padding byte + data.Append( KGpdsPadding ); // Padding byte + data.Append( KGpdsPadding ); // Padding byte + data.Append( KGpdsPadding ); // Padding byte + data.Append( PN_GPRS ); // Gprs server + data.Append( KGpdsPadding ); // Padding byte + data.Append( KGpdsPadding ); // Padding byte + data.Append( KGpdsPadding ); // Padding byte + data.Append( PN_GPRS ); // Gprs server + + // set dummyTransactionId value to 0x0F + TUint8 dummyTransactionId( KDummyTrId ); + + // Sending message to phonet + return iPhoNetSender->Send( + PN_NAMESERVICE, dummyTransactionId, PNS_NAME_QUERY_REQ, data ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsNameQueryResp +// Breaks a PNS_NAME_QUERY_RESP ISI-message +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsNameQueryResp( + const TIsiReceiveC& aIsiMessage ) + { + + TUint16 matchesInThisMsg( aIsiMessage.Get16bit( + ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_MATCHESINMSG ) ); + + TFLOGSTRING2("TSY: CMmPipeControl::PnsNameQueryResp - matches in this msg: %d", matchesInThisMsg); +OstTraceExt1( TRACE_NORMAL, CMMPIPECONTROL_PNSNAMEQUERYRESP, "CMmPipeControl::PnsNameQueryResp;matchesInThisMsg=%hu", matchesInThisMsg ); + + if ( 0 < matchesInThisMsg ) + { + for ( TInt i = 0; i < matchesInThisMsg; i++ ) + { + // each match is represented as 8-byte record => + // recordIndex = i * SIZE_PN_NAME_SRV_ITEM_STR + // name is 4 bytes => + // last byte index = PN_NAME_SRV_ITEM_STR_OFFSET_NAME + KLastByteIndex + TInt recordIndex( i * SIZE_PN_NAME_SRV_ITEM_STR ); + TUint8 name( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_NAMEENTRYTBL + + recordIndex + ( PN_NAME_SRV_ITEM_STR_OFFSET_NAME + KLastByteIndex ) ) ); + if ( PN_GPRS == name ) + { + // Get and store SecondPepDevice id and SecondPepObject id + iSecondPepDeviceId = aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_NAMEENTRYTBL + + recordIndex + PN_NAME_SRV_ITEM_STR_OFFSET_DEV ); + iSecondPepObjectId = aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_NAMEENTRYTBL + + recordIndex + PN_NAME_SRV_ITEM_STR_OFFSET_OBJ ); + // then find right server, stop finding + i = matchesInThisMsg; + + TFLOGSTRING3("TSY: CMmPipeControl::PnsNameQueryResp. SecondPepDeviceId: %d SecondPepObjectId: %d", iSecondPepDeviceId, iSecondPepObjectId ); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSNAMEQUERYRESP, "CMmPipeControl::PnsNameQueryResp;iSecondPepDeviceId=%hhu;iSecondPepObjectId=%hhu", iSecondPepDeviceId, iSecondPepObjectId ); + + } + //no else + } + } + //no else + } + +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeCreateReq +// Construct a PNS_PIPE_CREATE_REQ ISI-message +// ---------------------------------------------------------------------------- +// +TInt CMmPipeControl::PnsPipeCreateReq( + const TUint8 aTransId, + const TUint8 aPipeState, + const TUint8 aFirstPepObject ) const + { + + TFLOGSTRING2("TSY: CMmPipeControl::PnsPipeCreateReq. TransactionId: %d", aTransId ); +OstTraceExt1( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPECREATEREQ, "CMmPipeControl::PnsPipeCreateReq;aTransId=%hhu", aTransId ); + + // create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + // set message data + data.Append( aPipeState ); + data.Append( KGpdsPadding ); + data.Append( KFirstPepDevice ); + data.Append( aFirstPepObject ); + data.Append( KFirstPepType ); + data.Append( KGpdsPadding ); + data.Append( iSecondPepDeviceId ); + data.Append( iSecondPepObjectId ); + data.Append( KSecondPepType ); + data.Append( KGpdsPadding ); + + // Sending message to phonet + return iPhoNetSender->Send( + PN_PIPE, aTransId, PNS_PIPE_CREATE_REQ, data ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeCreateResp +// Breaks a PNS_PIPE_CREATE_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPipeCreateResp( + const TIsiReceiveC& aIsiMessage ) + { +TFLOGSTRING("TSY: CMmPipeControl::PnsPipeCreateResp"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPECREATERESP, "CMmPipeControl::PnsPipeCreateResp" ); + + // Get transaction Id + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + + TInt ret = iContextList->PipeCreateTransIdOkByTransId( transId ); + + if ( KErrNone == ret ) + { +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_CREATE_RESP_OFFSET_PIPEHANDLE ) ); + TUint8 errorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_CREATE_RESP_OFFSET_ERRORCODE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_CREATE_RESP_OFFSET_PIPEHANDLE ) ); + TUint8 errorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_CREATE_RESP_OFFSET_ERRORCODE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + TFLOGSTRING4("TSY: CMmPipeControl::PnsPipeCreateResp. TransactionId: %d, PipeHandle: %d, error code: %d", transId, pipeHandle, errorCode ); +OstTraceExt3( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPIPECREATERESP, "CMmPipeControl::PnsPipeCreateResp;transId=%hhu;pipeHandle=%hhu;errorCode=%hhu", transId, pipeHandle, errorCode ); + + // Check PIPE Error Code + if ( PN_PIPE_ERR_GENERAL == errorCode ) + { +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TUint8 pep1ErrorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_CREATE_RESP_OFFSET_PEP1ERRORCODE ) ); + TUint8 pep2ErrorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_CREATE_RESP_OFFSET_PEP2ERRORCODE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TUint8 pep1ErrorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_CREATE_RESP_OFFSET_PEP1ERRORCODE ) ); + TUint8 pep2ErrorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_CREATE_RESP_OFFSET_PEP2ERRORCODE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + // Check PEP Error Codes + if ( pep1ErrorCode == PN_PIPE_ERR_PEP_IN_USE || + pep1ErrorCode == PN_PIPE_ERR_ALL_PIPES_IN_USE || + pep2ErrorCode == PN_PIPE_ERR_PEP_IN_USE || + pep2ErrorCode == PN_PIPE_ERR_ALL_PIPES_IN_USE ) + { + + TFLOGSTRING("TSY: CMmPipeControl::PnsPipeCreateResp. ErrorCode changed to PN_PIPE_ERR_ALL_PIPES_IN_USE" ); +OstTrace0( TRACE_NORMAL, DUP2_CMMPIPECONTROL_PNSPIPECREATERESP, "CMmPipeControl::PnsPipeCreateResp, ErrorCode changed to PN_PIPE_ERR_ALL_PIPES_IN_USE" ); + // PEP can't create more pipes (all pipes in use), + // error value is updated here + errorCode = PN_PIPE_ERR_ALL_PIPES_IN_USE; + } + //no else + } + //no else + + iContextMessHandler->CompletePipeOperation( + PNS_PIPE_CREATE_RESP, + transId, + pipeHandle, + errorCode ); + } + //no else + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeEnableReq +// Construct a PNS_PIPE_ENABLE_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +TInt CMmPipeControl::PnsPipeEnableReq( + const CMmDataPackage& aPackage ) const + { +TFLOGSTRING("TSY: CMmPipeControl::PnsPipeEnableReq"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPEENABLEREQ, "CMmPipeControl::PnsPipeEnableReq" ); + + TInfoName* contextName = NULL; + aPackage.UnPackData( &contextName ); + + TInt ret( KErrServerBusy ); + + if( NULL != contextName ) + { + + TFLOGSTRING2("TSY: CMmPipeControl::PnsPipeEnableReq - context name: %S", contextName); +OstTraceExt1( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPIPEENABLEREQ, "CMmPipeControl::PnsPipeEnableReq;contextName=%S", *contextName ); + + TUint8 pipehandle( iContextList->PipeHandleByContextName(contextName) ); + + TUint8 traId( iContextList->ProxyIdByContextName( contextName ) ); + + TFLOGSTRING2("TSY: CMmPipeControl::PnsPipeEnableReq. PipeHandle: %d", pipehandle ); +OstTraceExt1( TRACE_NORMAL, DUP2_CMMPIPECONTROL_PNSPIPEENABLEREQ, "CMmPipeControl::PnsPipeEnableReq;pipehandle=%hhu", pipehandle ); + + // Check if Pipe operation is not outstanding. IsOperationCalled is EFalse + if ( !IsOperationCalled( pipehandle ) ) + { + // Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + data.Append( pipehandle ); + data.Append( KGpdsPadding ); + + // Send Isi message via phonet + ret = iPhoNetSender->Send( + PN_PIPE, traId, PNS_PIPE_ENABLE_REQ, data ); + } + //no else + } + //no else + + return ret; + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeEnableResp +// Breaks a PNS_PIPE_ENABLE_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPipeEnableResp( + const TIsiReceiveC& aIsiMessage ) + { +TFLOGSTRING("TSY: CMmPipeControl::PnsPipeEnableResp"); +OstTrace0( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPIPEENABLERESP, "CMmPipeControl::PnsPipeEnableResp" ); + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + + // pipe control handles only messages for NIF pipes + // TODO: See TelAd-110 + TInt ret = iContextList->PipeCreateTransIdOkByTransId( transId ); + + if ( KErrNone == ret ) + { + // Get Pipehandle from the ISI message + TUint8 pipeHandle( aIsiMessage.Get8bit( +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + ISI_HEADER_SIZE + PNS_PIPE_ENABLE_RESP_OFFSET_PIPEHANDLE ) ); + // Get Errorcode from the ISI message + TUint8 errorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_ENABLE_RESP_OFFSET_ERRORCODE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + ISI_HEADER_SIZE + CM_PIPE_ENABLE_RESP_OFFSET_PIPEHANDLE ) ); + // Get Errorcode from the ISI message + TUint8 errorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_ENABLE_RESP_OFFSET_ERRORCODE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + +TFLOGSTRING4("TSY: CMmPipeControl::PnsPipeEnableResp - traId: %d, PipeHandle: %d, ErrorCode: %d", transId, pipeHandle, errorCode ); +OstTraceExt3( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPEENABLERESP, "CMmPipeControl::PnsPipeEnableResp;transId=%hhu;pipeHandle=%hhu;errorCode=%hhu", transId, pipeHandle, errorCode ); + + iContextMessHandler->CompletePipeOperation( + PNS_PIPE_ENABLE_RESP, + transId, + pipeHandle, + errorCode ); + } + // no else + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeResetReq +// Construct a PNS_PIPE_RESET_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +TInt CMmPipeControl::PnsPipeResetReq( + const TUint8 aTransId, + const TUint8 aPipeHandle, + const TUint8 aStateAfterReset ) + { +TFLOGSTRING2("TSY: CMmPipeControl::PnsPipeResetReq. PipeHandle: %d", aPipeHandle ); +OstTraceExt1( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPERESETREQ, "CMmPipeControl::PnsPipeResetReq;aPipeHandle=%hhu", aPipeHandle ); + + // Set ret to KErrServerBusy + TInt ret( KErrServerBusy ); + + // Check if Pipe operation is not outstanding. IsOperationCalled is EFalse + if ( !IsOperationCalled( aPipeHandle ) ) + { + // Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + data.Append( aPipeHandle ); + data.Append( aStateAfterReset ); + + // Send Isi message via phonet + ret = iPhoNetSender->Send( + PN_PIPE, aTransId, PNS_PIPE_RESET_REQ, data ); + + if ( KErrNone == ret ) + { + SetPipeHandle( aPipeHandle ); + } + //no else + } + //no else + + return ret; + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeResetResp +// Breaks a PNS_PIPE_RESET_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPipeResetResp( + const TIsiReceiveC& aIsiMessage ) + { +TFLOGSTRING("TSY: CMmPipeControl::PnsPipeResetResp"); +OstTrace0( TRACE_NORMAL, DUP2_CMMPIPECONTROL_PNSPIPERESETRESP, "CMmPipeControl::PnsPipeResetResp" ); + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + + // pipe control handles only messages for NIF pipes + // TODO: See TelAd-110 + TInt ret = iContextList->PipeCreateTransIdOkByTransId( transId ); + + if ( KErrNone == ret ) + { + // Get Pipehandle from the ISI message + TUint8 pipeHandle( aIsiMessage.Get8bit( +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + ISI_HEADER_SIZE + PNS_PIPE_RESET_RESP_OFFSET_PIPEHANDLE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + ISI_HEADER_SIZE + CM_PIPE_RESET_RESP_OFFSET_PIPEHANDLE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + +TFLOGSTRING3("TSY: CMmPipeControl::PnsPipeResetResp - traId: %d, pipe handle: %d", transId, pipeHandle); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPERESETRESP, "CMmPipeControl::PnsPipeResetResp;transId=%hhu;pipeHandle=%hhu", transId, pipeHandle ); + + // Call TransactionId + TUint8 removeTransId( TransactionId( pipeHandle ) ); + // Call ResetPipeHandle -method from CMmPipeControl + ResetPipeHandle( pipeHandle ); + + if ( KUnknownTransID != removeTransId ) + { + // Context has called the PnsPipeRemoveReq that was buffered + PnsPipeRemoveReq( removeTransId, pipeHandle ); + } + //no else + + // Check req is valid by Transaction id + TInt ret( iContextList->CheckAndResetPipeResetTraId( transId ) ); + + if ( KErrNone == ret ) + { + TUint8 errorCode( aIsiMessage.Get8bit( +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + ISI_HEADER_SIZE + PNS_PIPE_RESET_RESP_OFFSET_ERRORCODE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + ISI_HEADER_SIZE + CM_PIPE_RESET_RESP_OFFSET_ERRORCODE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + +TFLOGSTRING3("TSY: CMmPipeControl::PnsPipeResetResp. PipeHandle: %d ErrorCode: %d", pipeHandle, errorCode ); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPIPERESETRESP, "CMmPipeControl::PnsPipeResetResp;pipeHandle=%hhu;errorCode=%hhu", pipeHandle, errorCode ); + iContextMessHandler->CompletePipeOperation( + PNS_PIPE_RESET_RESP, + transId, + pipeHandle, + errorCode ); + } + //no else + } + // no else + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeRemoveReq +// Construct a PNS_PIPE_REMOVE_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +TInt CMmPipeControl::PnsPipeRemoveReq( + const TUint8 aTransId, + const TUint8 aPipeHandle ) + { +TFLOGSTRING2("TSY: CMmPipeControl::PnsPipeRemoveReq. PipeHandle: %d", aPipeHandle ); +OstTraceExt1( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPEREMOVEREQ, "CMmPipeControl::PnsPipeRemoveReq;aPipeHandle=%hhu", aPipeHandle ); + + // Set ret to KErrNone + TInt ret( KErrNone ); + + // Check if Pipe operation is not outstanding. IsOperationCalled is EFalse + if ( !IsOperationCalled( aPipeHandle ) ) + { + // Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + data.Append( aPipeHandle ); + data.Append( KGpdsPadding ); + + // Send Isi message via phonet + ret = iPhoNetSender->Send( + PN_PIPE, + aTransId, + PNS_PIPE_REMOVE_REQ, + data ); + + if ( KErrNone == ret ) + { + SetPipeHandle( aPipeHandle ); + } + //no else + } + else + { + // Remove req is buffered by transaction id + SetTransactionId( aPipeHandle, aTransId ); + } + + return ret; + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPipeRemoveResp +// Breaks a PNS_PIPE_REMOVE_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPipeRemoveResp( + const TIsiReceiveC& aIsiMessage ) + { +TFLOGSTRING("TSY: CMmPipeControl::PnsPipeRemoveResp"); +OstTrace0( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPIPEREMOVERESP, "CMmPipeControl::PnsPipeRemoveResp" ); + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + + // pipe control handles only messages for NIF pipes + // TODO: See TelAd-110 + TInt ret = iContextList->PipeCreateTransIdOkByTransId( transId ); + + if ( KErrNone == ret ) + { + // Get Pipehandle from the ISI message +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_REMOVE_RESP_OFFSET_PIPEHANDLE ) ); + // Get Errorcode from the ISI message + TUint8 errorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PIPE_REMOVE_RESP_OFFSET_ERRORCODE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_REMOVE_RESP_OFFSET_PIPEHANDLE ) ); + // Get Errorcode from the ISI message + TUint8 errorCode( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PIPE_REMOVE_RESP_OFFSET_ERRORCODE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + TFLOGSTRING4("TSY: CMmPipeControl::PnsPipeRemoveResp - traId: %d, PipeHandle: %d, ErrorCode: %d", transId, pipeHandle, errorCode ); + OstTraceExt3( TRACE_NORMAL, CMMPIPECONTROL_PNSPIPEREMOVERESP, "CMmPipeControl::PnsPipeRemoveResp;transId=%hhu;pipeHandle=%hhu;errorCode=%hhu", transId, pipeHandle, errorCode ); + + // Call ResetPipeHandle -method from CMmPipeControl + ResetPipeHandle( pipeHandle ); + + iContextMessHandler->CompletePipeOperation( + PNS_PIPE_REMOVE_RESP, + transId, + pipeHandle, + errorCode ); + } + // no else + } + +#ifdef DUMMY_NIF_PEP_FOR_PACKET_DATA_TESTING_DOS +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepConnectReq +// Breaks a PNS_PEP_CONNECT_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepConnectReq( + const TIsiReceiveC& aIsiMessage ) + { + + TFLOGSTRING("TSY: CMmPipeControl::PnsPepConnectReq"); +OstTrace0( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPCONNECTREQ, "CMmPipeControl::PnsPepConnectReq" ); + + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + // Get Pipehandle from the ISI message +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PEP_CONNECT_REQ_OFFSET_PIPEHANDLE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PEP_CONNECT_REQ_OFFSET_PIPEHANDLE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepConnectReq - traId: %d, PipeHandle: %d", transId, pipeHandle ); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPEPCONNECTREQ, "CMmPipeControl::PnsPepConnectReq;transId=%hhu;pipeHandle=%hhu", transId, pipeHandle ); + + PnsPepConnectResp( transId, pipeHandle ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepConnectResp +// Construct a PNS_PEP_CONNECT_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepConnectResp( + const TUint8 aTransId, + const TUint8 aPipeHandle ) + { + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepConnectResp - traId: %d, pipe handle: %d", aTransId, aPipeHandle); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPEPCONNECTRESP, "CMmPipeControl::PnsPepConnectResp;aTransId=%hhu;aPipeHandle=%hhu", aTransId, aPipeHandle ); + + // Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + // Set message data + data.Append( aPipeHandle ); + data.Append( PN_PIPE_NO_ERROR ); + + // Send Isi message via phonet + TInt ret( iPhoNetSender->Send( + PN_PIPE, + aTransId, + PNS_PEP_CONNECT_RESP, + data ) ); + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepConnectResp. PipeHandle: %d RetFromPhonetSender: %d", aPipeHandle, ret ); + +OstTraceExt2( TRACE_NORMAL, DUP2_CMMPIPECONTROL_PNSPEPCONNECTRESP, "CMmPipeControl::PnsPepConnectResp;aPipeHandle=%hhu;RetFromPhonetSender=%d", aPipeHandle, ret ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepDisconnectReq +// Breaks a PNS_PEP_DISCONNECT_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepDisconnectReq( + const TIsiReceiveC& aIsiMessage ) + { + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + // Get Pipehandle from the ISI message +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PEP_DISCONNECT_REQ_OFFSET_PIPEHANDLE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PEP_DISCONNECT_REQ_OFFSET_PIPEHANDLE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepDisconnectReq - traId: %d, PipeHandle: %d", transId, pipeHandle ); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPDISCONNECTREQ, "CMmPipeControl::PnsPepDisconnectReq;transId=%hhu;pipeHandle=%hhu", transId, pipeHandle ); + + PnsPepDisconnectResp( transId, pipeHandle ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepDisconnectResp +// Construct a PNS_PEP_DISCONNECT_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepDisconnectResp( + const TUint8 aTransId, + const TUint8 aPipeHandle ) + { + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepDisconnectResp - traId: %d, pipe handle: %d", aTransId, aPipeHandle); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPDISCONNECTRESP, "CMmPipeControl::PnsPepDisconnectResp;aTransId=%hhu;aPipeHandle=%hhu", aTransId, aPipeHandle ); + + //Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + // Set message data + data.Append( aPipeHandle ); + data.Append( PN_PIPE_NO_ERROR ); + + // Send Isi message via phonet + TInt ret( iPhoNetSender->Send( + PN_PIPE, aTransId, PNS_PEP_DISCONNECT_RESP, data ) ); + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepDisconnectResp. PipeHandle: %d RetFromPhonetSender: %d", aPipeHandle, ret ); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPEPDISCONNECTRESP, "CMmPipeControl::PnsPepDisconnectResp;aPipeHandle=%hhu;RetFromPhonetSender=%d", aPipeHandle, ret ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepResetReq +// Breaks a CM_PEP_RESET_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepResetReq( + const TIsiReceiveC& aIsiMessage ) + { + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + // Get Pipehandle from the ISI message +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + PNS_PEP_RESET_REQ_OFFSET_PIPEHANDLE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TUint8 pipeHandle( aIsiMessage.Get8bit( + ISI_HEADER_SIZE + CM_PEP_RESET_REQ_OFFSET_PIPEHANDLE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepResetReq - traId: %d, PipeHandle: %d", transId, pipeHandle ); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPRESETREQ, "CMmPipeControl::PnsPepResetReq;transId=%hhu;pipeHandle=%hhu", transId, pipeHandle ); + + PnsPepResetResp( transId, pipeHandle ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepResetResp +// Construct a PNS_PEP_RESET_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepResetResp( + const TUint8 aTransId, + const TUint8 aPipeHandle ) + { + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepResetResp - traId: %d, pipe handle: %d", aTransId, aPipeHandle); +OstTraceExt1( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPRESETRESP, "CMmPipeControl::PnsPepResetResp;aTransId=%hhu", aTransId ); + + // Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + // Set message data + data.Append( aPipeHandle ); + data.Append( PN_PIPE_NO_ERROR ); + + // Send Isi message via phonet + TInt ret( iPhoNetSender->Send( + PN_PIPE, aTransId, PNS_PEP_RESET_RESP, data ) ); + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepResetResp. PipeHandle: %d RetFromPhonetSender: %d", aPipeHandle, ret ); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPEPRESETRESP, "CMmPipeControl::PnsPepResetResp;aPipeHandle=%hhu;ret=%d", aPipeHandle, ret ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepEnableReq +// Breaks a PNS_PEP_ENABLE_REQ ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepEnableReq( + const TIsiReceiveC& aIsiMessage ) + { + + // Get Transaction Id from the ISI message + TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); + // Get Pipehandle from the ISI message + TUint8 pipeHandle( aIsiMessage.Get8bit( +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + ISI_HEADER_SIZE + PNS_PEP_ENABLE_REQ_OFFSET_PIPEHANDLE ) ); +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + ISI_HEADER_SIZE + CM_PEP_ENABLE_REQ_OFFSET_PIPEHANDLE ) ); +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepEnableReq - traId: %d, PipeHandle: %d", transId, pipeHandle ); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPENABLEREQ, "CMmPipeControl::PnsPepEnableReq;transId=%hhu;pipeHandle=%hhu", transId, pipeHandle ); + + PnsPepEnableResp( transId, pipeHandle ); + } + +// ---------------------------------------------------------------------------- +// CMmPipeControl::PnsPepEnableResp +// Construct a PNS_PEP_ENABLE_RESP ISI-message. +// ---------------------------------------------------------------------------- +// +void CMmPipeControl::PnsPepEnableResp( + const TUint8 aTransId, + const TUint8 aPipeHandle ) + { + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepEnableResp - traId: %d, pipe handle: %d", aTransId, aPipeHandle); +OstTraceExt2( TRACE_NORMAL, CMMPIPECONTROL_PNSPEPENABLERESP, "CMmPipeControl::PnsPepEnableResp;aTransId=%hhu;aPipeHandle=%hhu", aTransId, aPipeHandle ); + + // Create buffer for isi msg data +#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING + TBuf8 data; +#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + TBuf8 data; +#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ + // Set message data + data.Append( aPipeHandle ); + data.Append( PN_PIPE_NO_ERROR ); + + // Send Isi message via phonet + TInt ret( iPhoNetSender->Send( + PN_PIPE, + aTransId, + PNS_PEP_ENABLE_RESP, + data ) ); + + TFLOGSTRING3("TSY: CMmPipeControl::PnsPepEnableResp. PipeHandle: %d RetFromPhonetSender: %d", aPipeHandle, ret ); +OstTraceExt2( TRACE_NORMAL, DUP1_CMMPIPECONTROL_PNSPEPENABLERESP, "CMmPipeControl::PnsPepEnableResp;aPipeHandle=%hhu;RetFromPhonetSender=%d", aPipeHandle, ret ); + } + +#endif // DUMMY_NIF_PEP_FOR_PACKET_DATA_TESTING_DOS + +// ================= OTHER EXPORTED FUNCTIONS =============================== + + //None + +// End of File