--- a/adaptationlayer/modematadaptation/modematcontroller_exe/src/cmodematpipecontroller.cpp Wed Apr 21 14:29:55 2010 +0300
+++ b/adaptationlayer/modematadaptation/modematcontroller_exe/src/cmodematpipecontroller.cpp Tue Oct 19 13:16:20 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 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"
@@ -20,30 +20,36 @@
#include <iscapi.h> //For ISC
#include <iscnokiadefinitions.h> //isc definitions
#include <pn_const.h>
-#ifndef NCP_COMMON_BRIDGE_FAMILY
#include <nsisi.h>
#include <pipeisi.h> //pipe
#include <pipe_sharedisi.h> //pipe
-#endif
#include <tisi.h> //for isimessage
-#include "cmodematpipecontroller.h"
+#include "cmodematpipecontroller.h"
#include "cmodemathandler.h"
#include <at_modemisi.h> //redirectreq error codes
#include "modemattrace.h"
#include "cmodematsrv.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmodematpipecontrollerTraces.h"
+#endif
-#ifndef NCP_COMMON_BRIDGE_FAMILY
-const TUint8 PEP_COMM_IND_ID_ESCAPE = 0x07;
const TUint8 KFiller = 0;
const TUint8 KDefaultTrId = 0;
const TInt KLastByteIndex = 3;
-#endif
+const TUint8 KDpPadding = 0;
+const TUint8 KDialUpPort1 = 1;// from Dataport export (otherwise hard coded and incorrect)
+const TUint8 KDialUpPort4 = 4;
+const TUint8 KDialUpPort5 = 5;
+const TUint8 KPepCtrlDataSize = 1;
+const TUint8 KPepFlowCtrlDataSize = 2;
CModemAtPipeController* CModemAtPipeController::NewL( RIscApi& aIscApi,
TUint& aObjId,
CModemAtHandler& aHandler )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_NEWL, "CModemAtPipeController::NewL" );
CModemAtPipeController* self = new (ELeave) CModemAtPipeController( aIscApi,aObjId, aHandler );
CleanupStack::PushL( self );
self->ConstructL();
@@ -53,15 +59,18 @@
void CModemAtPipeController::ConstructL()
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_CONSTRUCTL, "CModemAtPipeController::ConstructL" );
C_TRACE (( _T("CModemAtPipeController::ConstructL()") ));
}
CModemAtPipeController::~CModemAtPipeController()
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_CMODEMATPIPECONTROLLER, "CModemAtPipeController::~CModemAtPipeController" );
C_TRACE((_L(">>CModemAtPipeController::~CModemAtPipeController()")));
if( iSchedulerWait )
{
C_TRACE((_L("CModemAtPipeController::~CModemAtPipeController() iSchedulerWait->Stop")));
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_CMODEMATPIPECONTROLLER, "CModemAtPipeController::~CModemAtPipeController - iSchedulerWait->Stop" );
iSchedulerWait->AsyncStop();
delete iSchedulerWait;
iSchedulerWait = NULL;
@@ -75,41 +84,45 @@
iIscApi( aIscApi ),
iModemAtObjId( aObjId ),
iModemAtDevId( THIS_DEVICE ),
- iDataportDevId( 0 ),
- iDataportObjId( 0 ),
+ iDpDevId( 0 ),
+ iDpObjId( 0 ),
iAtHandler( aHandler ),
iSchedulerWait( NULL )
- {
- C_TRACE (( _T("CModemAtPipeController::CModemAtPipeController()>") ));
- iPipe.pipeHandle = KInvalidPipeHandle;
- iPipe.firstDevId = 0;
- iPipe.firstObjId = 0;
- iPipe.secondDevId = 0;
- iPipe.secondDevId = 0;
- iPipe.pipeState = TPipeInfo::EPipeNoPipe;
+ {
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_CMODEMATPIPECONTROLLER, "CModemAtPipeController::CModemAtPipeController;aObjId=%d", aObjId );
+ C_TRACE (( _T("CModemAtPipeController::CModemAtPipeController() obj id: 0x%x>"), aObjId ));
+ iPipe.pipeHandle = KInvalidPipeHandle;
+ iPipe.firstDevId = 0;
+ iPipe.firstObjId = 0;
+ iPipe.secondDevId = 0;
+ iPipe.secondDevId = 0;
+ iPipe.pipeState = TPipeInfo::EPipeNoPipe;
- C_TRACE (( _T("CModemAtPipeController::CModemAtPipeController()<") ));
+ C_TRACE (( _T("CModemAtPipeController::CModemAtPipeController()<") ));
}
-#ifndef NCP_COMMON_BRIDGE_FAMILY
void CModemAtPipeController::HandleNameServiceMessage( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLENAMESERVICEMESSAGE, "CModemAtPipeController::HandleNameServiceMessage" );
C_TRACE (( _T("CModemAtPipeController::HandleNameServiceMessage()") ));
switch( aReceivedMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) )
{
case PNS_NAME_QUERY_RESP:
C_TRACE(_L("PNS_NAME_QUERY_RESP"));
+ OstTrace0( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLENAMESERVICEMESSAGE, "CModemAtPipeController::HandleNameServiceMessage - PNS_NAME_QUERY_RESP" );
HandleNameQueryResp( aReceivedMessage );
break;
case PNS_NAME_ADD_IND:
C_TRACE(_L("PNS_NAME_ADD_IND"));
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLENAMESERVICEMESSAGE, "CModemAtPipeController::HandleNameServiceMessage - PNS_NAME_ADD_IND" );
HandleNameAddInd( aReceivedMessage );
break;
case PNS_NAME_REMOVE_IND:
C_TRACE(_L("PNS_NAME_REMOVE_IND"));
+ OstTrace0( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLENAMESERVICEMESSAGE, "CModemAtPipeController::HandleNameServiceMessage - PNS_NAME_REMOVE_IND" );
HandleNameRemoveInd( aReceivedMessage );
break;
@@ -121,44 +134,58 @@
void CModemAtPipeController::HandlePipeServiceMessage( const TIsiReceiveC& aReceivedMessage)
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage" );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage;messageId=%d", aReceivedMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) );
C_TRACE (( _T("CModemAtPipeController::HandlePipeServiceMessage()") ));
C_TRACE((_L("message id: %d") , aReceivedMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) ));
switch( aReceivedMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) )
{
case PNS_PIPE_CREATE_RESP:
C_TRACE(_L("PNS_PIPE_CREATE_RESP"));
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage - PNS_PIPE_CREATE_RESP" );
HandlePipeCreateResp( aReceivedMessage );
break;
case PNS_PIPE_REDIRECT_RESP:
C_TRACE(_L("PNS_PIPE_REDIRECT_RESP"));
+ OstTrace0( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage - PNS_PIPE_REDIRECT_RESP" );
HandlePipeRedirectResp( aReceivedMessage );
break;
case PNS_PIPE_REMOVE_RESP:
C_TRACE(_L("PNS_PIPE_REMOVE_RESP"));
+ OstTrace0( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage - PNS_PIPE_REMOVE_RESP" );
HandlePipeRemoveResp( aReceivedMessage );
break;
case PNS_PIPE_ENABLE_RESP:
C_TRACE(_L("PNS_PIPE_ENABLE_RESP"));
+ OstTrace0( TRACE_NORMAL, DUP5_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage - PNS_PIPE_ENABLE_RESP" );
HandlePipeEnabledResp( aReceivedMessage );
break;
case PNS_PEP_STATUS_IND :
C_TRACE(_L("PNS_PEP_STATUS_IND"));
+ OstTrace0( TRACE_NORMAL, DUP6_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage - PNS_PEP_STATUS_IND" );
HandlePepStatusInd( aReceivedMessage );
break;
+
+ case PNS_PEP_CTRL_RESP:
+ C_TRACE(_L("PNS_PEP_CTRL_RESP"));
+ OstTrace0( TRACE_NORMAL, DUP7_CMODEMATPIPECONTROLLER_HANDLEPIPESERVICEMESSAGE, "CModemAtPipeController::HandlePipeServiceMessage - PNS_PEP_CTRL_RESP" );
+ HandlePepCtrlResp( aReceivedMessage );
+ break;
default:
TRACE_ASSERT_ALWAYS;
break;
- }
+ }
}
-TUint CModemAtPipeController::MatchDataportName( TUint aName)
+TBool CModemAtPipeController::MatchDataportName( TUint aName )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_MATCHDATAPORTNAME, "CModemAtPipeController::MatchDataportName" );
/*
See from dataport:
@@ -175,30 +202,52 @@
break;
Only 3 last bytes count
*/
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_MATCHDATAPORTNAME, "CModemAtPipeController::MatchDataportName;aName=%d", aName );
+ C_TRACE((_L("CModemAtPipeController::MatchDataportName(): %d") , aName ) );
+ TBool ret( EFalse );
- TUint KDpDialUpPort = 1;
- TUint KDpPadding = 0;
- TUint dataportName(0);
- dataportName = (
+ TUint dataportName1(0);
+ dataportName1 = (
+ ( (TUint)PN_PIPE ) |
+ ( (TUint)PN_PEP_TYPE_COMM << 8 ) |
+ ( KDpPadding << 16) |
+ ( KDialUpPort1 << 24 ) );
+ OstTrace1( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_MATCHDATAPORTNAME, "CModemAtPipeController::MatchDataportName;dataportName1=%d", dataportName1 );
+ C_TRACE((_L("CModemAtPipeController::MatchDataportName(): name1 %d") , dataportName1 ) );
+ TUint dataportName4(0);
+ dataportName4 = (
( (TUint)PN_PIPE ) |
( (TUint)PN_PEP_TYPE_COMM << 8 ) |
( KDpPadding << 16) |
- ( KDpDialUpPort << 24 )
- );
+ ( KDialUpPort4 << 24 ) );
+ OstTrace1( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_MATCHDATAPORTNAME, "CModemAtPipeController::MatchDataportName;dataportName4=%d", dataportName4 );
+ C_TRACE((_L("CModemAtPipeController::MatchDataportName(): name4 %d") , dataportName4 ) );
+ TUint dataportName5(0);
+ dataportName5 = (
+ ( (TUint)PN_PIPE ) |
+ ( (TUint)PN_PEP_TYPE_COMM << 8 ) |
+ ( KDpPadding << 16) |
+ ( KDialUpPort5 << 24 ) );
+ OstTrace1( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_MATCHDATAPORTNAME, "CModemAtPipeController::MatchDataportName;dataportName5=%d", dataportName5 );
+ C_TRACE((_L("CModemAtPipeController::MatchDataportName(): name5 %d") , dataportName5 ) );
- if( aName == dataportName )
+ if( dataportName1 == aName ||
+ dataportName4 == aName ||
+ dataportName5 == aName )
{
- return ETrue;
- }
- return EFalse;
+ ret = ETrue;
+ }
+ return ret;
}
void CModemAtPipeController::HandleNameAddInd( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLENAMEADDIND, "CModemAtPipeController::HandleNameAddInd" );
C_TRACE (( _T("CModemAtPipeController::HandleNameAddInd()") ));
TInt matchesInThisMsg = aReceivedMessage.Get16bit( ISI_HEADER_SIZE +
PNS_NAME_ADD_IND_OFFSET_MATCHESINMSG );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLENAMEADDIND, "CModemAtPipeController::HandleNameAddInd;matchesInThisMsg=%d", matchesInThisMsg );
C_TRACE((_L("matchesInThisMsg: %d") ,matchesInThisMsg ));
TUint name = 0;
@@ -206,27 +255,28 @@
{
name = aReceivedMessage.Get32bit(ISI_HEADER_SIZE +
PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL * i);
+ OstTraceExt2( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLENAMEADDIND, "CModemAtPipeController:;i=%d;name=%x", i, name );
C_TRACE((_L("name [%d] 0x%x"), i ,name));
if( MatchDataportName(name) )
{
- iDataportDevId = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ TUint8 devId = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL * i +
PN_NAME_SRV_ITEM_STR_OFFSET_DEV );
- iDataportObjId = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ TUint8 objId = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_NAME_ADD_IND_OFFSET_NAMEENTRYTBL * i +
PN_NAME_SRV_ITEM_STR_OFFSET_OBJ);
- if( ( iDataportDevId == THIS_DEVICE ) &&
- ( iPipe.pipeState == TPipeInfo::EPipeNoPipe ) )
+ if( devId == THIS_DEVICE )
{
- C_TRACE((_L("Creating pipe. (Dataport device id 0x%x, object id: 0x%x)"),iDataportDevId,iDataportObjId));
- SendCreatePipeMessage( iDataportDevId, iDataportObjId );
+ OstTraceExt2( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLENAMEADDIND, "CModemAtPipeController::HandleNameAddInd - Adding dataport name.;devId=%x;objId=%x", devId, objId );
+ C_TRACE((_L("Adding dataport name. (Dataport device id 0x%x, object id: 0x%x)"),devId,objId));
+ iAtHandler.AddDevice( devId, objId );
}
else
{
- C_TRACE((_L("ERROR: Pipe is not created. (Dataport device id 0x%x, object id: 0x%x)"),iDataportDevId, iDataportObjId ));
- TRACE_ASSERT_ALWAYS;
+ OstTraceExt2( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_HANDLENAMEADDIND, "CModemAtPipeController::HandleNameAddInd - ERROR: Pipe is not created.;devId=%x;objId=%x", devId, objId );
+ C_TRACE((_L("ERROR: Pipe is not created. (Dataport device id 0x%x, object id: 0x%x)"),devId, objId ));
}
}
}
@@ -234,10 +284,12 @@
void CModemAtPipeController::HandleNameRemoveInd( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLENAMEREMOVEIND, "CModemAtPipeController::HandleNameRemoveInd" );
C_TRACE (( _T("CModemAtPipeController::HandleNameRemoveInd()") ));
TInt matchesInThisMsg = aReceivedMessage.Get16bit( ISI_HEADER_SIZE +
PNS_NAME_REMOVE_IND_OFFSET_MATCHESINMSG );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLENAMEREMOVEIND, "CModemAtPipeController::HandleNameRemoveInd;matchesInThisMsg=%d", matchesInThisMsg );
C_TRACE((_L("matchesInThisMsg: %d"), matchesInThisMsg ));
TUint name = 0;
@@ -245,6 +297,7 @@
{
name = aReceivedMessage.Get32bit(ISI_HEADER_SIZE +
PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL * i);
+ OstTraceExt2( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLENAMEREMOVEIND, "CModemAtPipeController::HandleNameRemoveInd;i=%d;name=%x", i, name );
C_TRACE((_L("name [%d] 0x%x"), i ,name));
if( MatchDataportName(name) )
@@ -256,26 +309,20 @@
PNS_NAME_REMOVE_IND_OFFSET_NAMEENTRYTBL * i +
PN_NAME_SRV_ITEM_STR_OFFSET_OBJ);
- if( iDataportDevId == devId && iDataportObjId == objId )
- {
- C_TRACE((_L("Dataport removed from name service (devid %x o-bjid %x) "), iDataportDevId, iDataportObjId));
- iDataportDevId = 0;
- iDataportObjId = 0;
- }
- else
- {
- C_TRACE((_L("Unused dataport removed from name service. DevId: 0x%x or ObjId 0x%x"), iDataportDevId, iDataportObjId ));
- TRACE_ASSERT_ALWAYS;
- }
+ OstTraceExt2( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLENAMEREMOVEIND, "CModemAtPipeController::HandleNameRemoveInd - Dataport removed from name service;devId=%x;objId=%x", devId, objId );
+ C_TRACE((_L("Dataport removed from name service (devid %x o-bjid %x) "), devId, objId));
+ iAtHandler.RemoveDevice( devId, objId );
}
}
}
void CModemAtPipeController::HandleNameQueryResp( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLENAMEQUERYRESP, "CModemAtPipeController::HandleNameQueryResp" );
C_TRACE((_L("CModemAtPipeHandler::HandleNameQueryResp")));
TUint16 matchesInThisMsg( aReceivedMessage.Get16bit(
ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_MATCHESINMSG ) );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLENAMEQUERYRESP, "CModemAtPipeController::HandleNameQueryResp;matchesInThisMsg=%d", matchesInThisMsg );
C_TRACE((_L("matchesInThisMsg: %d"), matchesInThisMsg ));
TBool found = EFalse;
@@ -287,9 +334,11 @@
TUint8 name( aReceivedMessage.Get8bit(
ISI_HEADER_SIZE + PNS_NAME_QUERY_RESP_OFFSET_NAMEENTRYTBL +
recordIndex + ( PN_NAME_SRV_ITEM_STR_OFFSET_NAME + KLastByteIndex ) ) );
+ OstTraceExt2( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLENAMEQUERYRESP, "CModemAtPipeController::HandleNameQueryResp;i=%d;name=%x", i, name );
C_TRACE((_L("name [%d] 0x%x"), i, name ));
if( PN_AT_MODEM == name )
{
+ OstTrace0( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLENAMEQUERYRESP, "CModemAtPipeController::HandleNameQueryResp - PN_AT_MODEM found." );
C_TRACE((_L("PN_AT_MODEM found.")));
i = matchesInThisMsg;
found = ETrue;
@@ -303,9 +352,13 @@
void CModemAtPipeController::SendCreatePipeMessage( const TUint8 aDevId, const TUint8 aObjId )
{
+ OstTraceExt2( TRACE_NORMAL, CMODEMATPIPECONTROLLER_SENDCREATEPIPEMESSAGE, "CModemAtPipeController::SendCreatePipeMessage;aDevId=%x;aObjId=%x", aDevId, aObjId );
C_TRACE (( _T("CModemAtPipeController::SendCreatePipeMessage() DevId: 0x%x ObjId: 0x%x"), aDevId, aObjId ));
HBufC8* message = HBufC8::New( ISI_HEADER_SIZE + SIZE_PNS_PIPE_CREATE_REQ );
TRACE_ASSERT(message);
+
+ iDpObjId = aObjId;
+ iDpDevId = aDevId;
TPtr8 messageptr = message->Des();
TIsiSend isimessage( messageptr, ISI_HEADER_SIZE + SIZE_PNS_PIPE_CREATE_REQ );
@@ -326,6 +379,8 @@
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_CREATE_REQ_OFFSET_SECONDPEPTYPE, PN_PEP_TYPE_COMMON );
isimessage.Complete();
+ OstTrace0( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_SENDCREATEPIPEMESSAGE, "CModemAtPipeController::SendCreatePipeMessage - Created ISI-message" );
+ OstTraceExt1( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_SENDCREATEPIPEMESSAGE, "CModemAtPipeController::SendCreatePipeMessage - msg;messageptr=%s", messageptr );
C_TRACE(_L("Created ISI-message"));
DUMP_MESSAGE( messageptr );
TInt retVal = iIscApi.Send( messageptr );
@@ -336,28 +391,36 @@
void CModemAtPipeController::HandlePipeCreateResp( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPIPECREATERESP, "CModemAtPipeController::HandlePipeCreateResp" );
C_TRACE (( _T("CModemAtPipeController::HandlePipeCreateResp()") ));
TInt error = aReceivedMessage.Get8bit(ISI_HEADER_SIZE +
PNS_PIPE_CREATE_RESP_OFFSET_ERRORCODE );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLEPIPECREATERESP, "CModemAtPipeController::HandlePipeCreateResp - Pipe create resp:;error=%d", error );
C_TRACE((_L("Pipe create resp: %d"), error ));
if( error == PN_PIPE_NO_ERROR)
{
- iPipe.pipeHandle = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ TUint8 pipeHandle;
+ pipeHandle = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_PIPE_CREATE_RESP_OFFSET_PIPEHANDLE );
- C_TRACE( (_L("Pipe created successfully. Pipehandle: %d"), iPipe.pipeHandle ));
+ OstTrace1( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLEPIPECREATERESP, "CModemAtPipeController::HandlePipeCreateResp - Pipe created successfully.;pipeHandle=%d", pipeHandle );
+ C_TRACE( (_L("Pipe created successfully. Pipehandle: %d"), pipeHandle ));
// Now that pipehandle is received, it will also be used as dteId when connecting to AT Modem.
-
- iPipe.firstDevId = iDataportDevId;
- iPipe.firstObjId = iDataportObjId;
+ OstTrace0( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLEPIPECREATERESP, "CModemAtPipeController::HandlePipeCreateResp - pipe found" );
+ C_TRACE((_L("CModemAtPipeHandler::HandlePipeCreateResp: pipe found")));
+ iPipe.pipeHandle = pipeHandle;
+ iPipe.firstDevId = iDpDevId;
+ iPipe.firstObjId = iDpObjId;
+ iPipe.secondObjId = iModemAtObjId;
iPipe.secondDevId = THIS_DEVICE;
- iPipe.secondObjId = iModemAtObjId;
ChangePipeState( TPipeInfo::EPipeCreated );
+ iAtHandler.PipeCreated( pipeHandle, KErrNone );
}
else
{
+ OstTrace1( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_HANDLEPIPECREATERESP, "CModemAtPipeController::HandlePipeCreateResp - Pipe creation failed:;error=%d", error );
C_TRACE((_L("Pipe creation failed: %d"), error ));
iPipe.pipeHandle = KInvalidPipeHandle;
iPipe.firstDevId = 0;
@@ -365,7 +428,8 @@
iPipe.secondDevId = 0;
iPipe.secondObjId = 0;
ChangePipeState( TPipeInfo::EPipeNoPipe );
- ASSERT_ALWAYS;
+
+ iAtHandler.PipeCreated( KInvalidPipeHandle, KErrGeneral );
}
}
@@ -373,32 +437,27 @@
void CModemAtPipeController::HandlePipeRemoveResp( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPIPEREMOVERESP, "CModemAtPipeController::HandlePipeRemoveResp" );
C_TRACE (( _T(">>CModemAtPipeController::HandlePipeRemoveResp()") ));
TInt error = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_PIPE_REMOVE_RESP_OFFSET_ERRORCODE );
TInt pipehandle = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_PIPE_REMOVE_RESP_OFFSET_PIPEHANDLE );
- TRACE_ASSERT( pipehandle == iPipe.pipeHandle );
- if( pipehandle != iPipe.pipeHandle )
- {
- C_TRACE(( _T("CModemAtPipeController::HandlePipeRemoveResp() illegal pipehandle %d"), pipehandle ));
- return;
- }
-
+
TRACE_ASSERT( error == PN_PIPE_NO_ERROR )
if( error != PN_PIPE_NO_ERROR )
{
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLEPIPEREMOVERESP, "CModemAtPipeController::HandlePipeRemoveResp;error=%d", error );
C_TRACE(( _T("CModemAtPipeController::HandlePipeRemoveResp() error %d"), error ));
return;
}
ChangePipeState( TPipeInfo::EPipeNoPipe );
- iPipe.pipeHandle = KInvalidPipeHandle;
-
if( iSchedulerWait )
{
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLEPIPEREMOVERESP, "CModemAtPipeController::HandlePipeRemoveResp - iSchedulerWait->Stop" );
C_TRACE((_L("CModemAtPipeController::HandlePipeRemoveResp() iSchedulerWait->Stop")));
iSchedulerWait->AsyncStop();
delete iSchedulerWait;
@@ -408,45 +467,33 @@
}
-void CModemAtPipeController::RemovePipe( const TUint8 aDteId )
+void CModemAtPipeController::RemovePipe()
{
- C_TRACE (( _T("CModemAtPipeController::RemovePipe(%d, 0x%x)"), aDteId, this ));
-
- C_TRACE (( _T("iPipe:0x%x"), &iPipe ));
- C_TRACE (( _T("iHandle: %d"), iPipe.pipeHandle ));
- C_TRACE (( _T("i1stDevId: %d"), iPipe.firstDevId ));
- C_TRACE (( _T("i1stObjId: %d"), iPipe.firstObjId ));
- C_TRACE (( _T("i2ndDevId: %d"), iPipe.secondDevId ));
- C_TRACE (( _T("i2ndObjId: %d"), iPipe.secondObjId ));
-
- if( iPipe.pipeHandle != KInvalidPipeHandle )
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_REMOVEPIPE, "CModemAtPipeController::RemovePipe" );
+ OstTraceExt3( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_REMOVEPIPE, "CModemAtPipeController::RemovePipe - ;iPipe.pipeHandle=%d;this=%p;iPipe.pipeState=%d", iPipe.pipeHandle, this, iPipe.pipeState );
+ C_TRACE (( _T("CModemAtPipeController::RemovePipe(%d, 0x%x)"), iPipe.pipeHandle, this ));
+ C_TRACE (( _T("CModemAtPipeController::RemovePipe( dteID: %d, state: %d)"), iPipe.pipeHandle, iPipe.pipeState ));
+
+ if( KInvalidPipeHandle != iPipe.pipeHandle &&
+ TPipeInfo::EPipeRemoving != iPipe.pipeState &&
+ TPipeInfo::EPipeNoPipe != iPipe.pipeState )
{
- if( ( iPipe.pipeState == TPipeInfo::EPipeRemoving ) ||
- ( iPipe.pipeState == TPipeInfo::EPipeNoPipe ) )
- {
- C_TRACE((_L("Already removing pipe or pipe is removed. Handle %d"), iPipe.pipeHandle));
- return;
- }
-
- if( aDteId != iPipe.pipeHandle )
- {
- C_TRACE(( _T("Dteid %d is not same as pipehandle %d, so there is no pipe to remove."), aDteId, iPipe.pipeHandle ));
- return;
- }
-
- C_TRACE((_L("Remove pipe. Handle %d"), iPipe.pipeHandle));
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_REMOVEPIPE, "CModemAtPipeController::RemovePipe - start to remove pipe" );
+ C_TRACE((_L("CModemAtPipeController::RemovePipe: start to remove pipe")));
ChangePipeState( TPipeInfo::EPipeRemoving );
SendRemovePipeReq( iPipe.pipeHandle );
}
else
{
- C_TRACE((_L("No Pipe to Remove")));
+ OstTrace0( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_REMOVEPIPE, "CModemAtPipeController::RemovePipe - no need to remove pipe" );
+ C_TRACE((_L("CModemAtPipeController::RemovePipe: no need to remove pipe")));
}
}
void CModemAtPipeController::SendRemovePipeReq( const TUint8 aPipeHandle )
{
+ OstTrace1( TRACE_NORMAL, CMODEMATPIPECONTROLLER_SENDREMOVEPIPEREQ, "CModemAtPipeController::SendRemovePipeReq();aPipeHandle=%d", aPipeHandle );
C_TRACE (( _T(">>CModemAtPipeController::SendRemovePipeReq()") ));
C_TRACE((_L("Remove pipe handle %d"), aPipeHandle));
TInt size = ISI_HEADER_SIZE + SIZE_PNS_PIPE_REMOVE_REQ;
@@ -463,6 +510,7 @@
aPipeHandle ); //disabled
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REMOVE_REQ_OFFSET_FILLERBYTE1 ,0 );
isimessage.Complete();
+ OstTrace0( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_SENDREMOVEPIPEREQ, "CModemAtPipeController::SendRemovePipeReq - Created ISI-message" );
C_TRACE(_L("Created ISI-message"));
TInt retVal = iIscApi.Send( messageptr );
@@ -470,6 +518,7 @@
delete message;
if( !iSchedulerWait )
{
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_SENDREMOVEPIPEREQ, "CModemAtPipeController::SendRemovePipeReq - iSchedulerWait->Start()" );
C_TRACE(_L("CModemAtPipeController::SendRemovePipeReq() iSchedulerWait->Start()"));
TRAPD(err, iSchedulerWait = new (ELeave) CActiveSchedulerWait);
ASSERT_PANIC_ALWAYS( err == KErrNone );
@@ -478,43 +527,38 @@
C_TRACE (( _T("<<CModemAtPipeController::SendRemovePipeReq()") ));
}
-void CModemAtPipeController::RedirectPipe( const TUint8 aDteId,
+void CModemAtPipeController::RedirectPipe(
const TUint8 aNewDevId,
const TUint8 aNewObjId )
{
- C_TRACE (( _T("CModemAtPipeController::RedirectPipe() dteid %d, iPipe.pipeHandle: %d"), aDteId, iPipe.pipeHandle ));
+ OstTraceExt2( TRACE_NORMAL, CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe;aNewDevId=%x;aNewObjId=%x", aNewDevId, aNewObjId );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe;iPipe.pipeHandle=%d", iPipe.pipeHandle );
+ C_TRACE (( _T("CModemAtPipeController::RedirectPipe() dteid %d"), iPipe.pipeHandle));
C_TRACE((_L("CModemAtPipeController::RedirectPipe() New pep, deviceId: 0x%x objId: 0x%x "), aNewDevId, aNewObjId));
- TRACE_ASSERT( aDteId == iPipe.pipeHandle );
- if( aDteId != iPipe.pipeHandle )
- {
- C_TRACE(( _T("CModemAtPipeController::RedirectPipe() illegal dteid %d"), aDteId ));
- return;
- }
- TRACE_ASSERT( iPipe.pipeHandle != KInvalidPipeHandle );
- if( iPipe.pipeHandle == KInvalidPipeHandle )
- {
- C_TRACE(( _T("CModemAtPipeController::RedirectPipe() invalid pipe handle %d"), iPipe.pipeHandle ));
- return;
- }
if( iPipe.pipeState == TPipeInfo::EPipeRemoving ||
iPipe.pipeState == TPipeInfo::EPipeNoPipe )
{
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe - Pipe is already removed -> cant redirect" );
C_TRACE(_L("CModemAtPipeController::RedirectPipe() Pipe is already removed -> cant redirect"));
return;
}
if( aNewDevId == THIS_DEVICE && aNewObjId == iModemAtObjId )
{
+ OstTrace1( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe - EPipeDisabled.;iModemAtObjId=%x", iModemAtObjId );
C_TRACE((_L("CModemAtPipeController::RedirectPipe() EPipeDisabled. iModemAtObjId: 0x%x"), iModemAtObjId));
- ChangePipeState( TPipeInfo::EPipeDisabled );
+ // NOTE: Setting pipe state disabled here won't send command mode yet.
+ iPipe.pipeState = TPipeInfo::EPipeDisabled;
}
else
{
+ OstTrace0( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe - EPipeRedirected" );
C_TRACE(_L("CModemAtPipeController::RedirectPipe() EPipeRedirected"));
ChangePipeState( TPipeInfo::EPipeRedirected );
}
+ OstTrace0( TRACE_NORMAL, DUP5_CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe - Redirecting pipe" );
C_TRACE(_L("CModemAtPipeController::RedirectPipe() Redirecting pipe"));
HBufC8* message = HBufC8::New( ISI_HEADER_SIZE + SIZE_PNS_PIPE_REDIRECT_REQ );
@@ -523,25 +567,24 @@
TIsiSend isimessage( messageptr, ISI_HEADER_SIZE + SIZE_PNS_PIPE_REDIRECT_REQ );
isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID,PN_PIPE);
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_UTID, 0);
-
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_SUBFUNCTION,
- PNS_PIPE_REDIRECT_REQ );
+ PNS_PIPE_REDIRECT_REQ );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_PIPEHANDLE,
- iPipe.pipeHandle );
+ iPipe.pipeHandle );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_STATEAFTERCREATION,
- PN_PIPE_DISABLE );
+ PN_PIPE_DISABLE );
//old pep
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_OLDPEPDEV,
- iPipe.secondDevId );
+ iPipe.secondDevId );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_OLDPEPOBJ,
- iPipe.secondObjId );
+ iPipe.secondObjId );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_OLDPEPTYPE, PN_PEP_TYPE_COMMON);
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_FILLERBYTE1, KFiller );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_REPLACEMENTPEPDEV, aNewDevId );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_REPLACEMENTPEPOBJ, aNewObjId );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_REPLACEMENTPEPTYPE,
- PN_PEP_TYPE_COMMON );
+ PN_PEP_TYPE_COMMON );
iPipe.secondDevId = aNewDevId;
iPipe.secondObjId = aNewObjId;
@@ -549,6 +592,7 @@
isimessage.Set8bit(ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_REQ_OFFSET_NSB, KFiller );
isimessage.Complete();
+ OstTrace0( TRACE_NORMAL, DUP6_CMODEMATPIPECONTROLLER_REDIRECTPIPE, "CModemAtPipeController::RedirectPipe - Created ISI-message" );
C_TRACE(_L("Created ISI-message"));
TInt retVal = iIscApi.Send( messageptr );
TRACE_ASSERT( retVal == KErrNone );
@@ -557,6 +601,7 @@
void CModemAtPipeController::HandlePipeRedirectResp( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPIPEREDIRECTRESP, "CModemAtPipeController::HandlePipeRedirectResp" );
C_TRACE (( _T("CModemAtPipeController::HandlePipeRedirectResp()") ));
TInt error = aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_PIPE_REDIRECT_RESP_OFFSET_ERRORCODE );
@@ -566,38 +611,18 @@
if( error != PN_PIPE_NO_ERROR )
{
- if( pipeHandle == iPipe.pipeHandle )
- {
- C_TRACE(( _L("CModemAtPipeController::HandlePipeRedirectResp() pipe error: %d"), error ));
- iAtHandler.SendAtModemDataRedirectResultReq( pipeHandle, AT_MODEM_REDIRECT_RESULT_ERROR);
- RemovePipe( pipeHandle );
- return;
- }
- else
- {
- C_TRACE(( _L("CModemAtPipeController::HandlePipeRedirectResp() pipeHandle not found, pipe error: %d"), error ));
- TRACE_ASSERT_ALWAYS;
- return;
- }
+ iAtHandler.SendAtModemDataRedirectResultReq( AT_MODEM_REDIRECT_RESULT_ERROR );
+ RemovePipe();
}
-
- if( pipeHandle != iPipe.pipeHandle )
+ else
{
- C_TRACE(( _L("CModemAtPipeController::HandlePipeRedirectResp() unknown pipehandle %d"), pipeHandle ));
- TRACE_ASSERT_ALWAYS;
- return;
- }
-
- iAtHandler.SendAtModemDataRedirectResultReq( pipeHandle, AT_MODEM_REDIRECT_RESULT_OK );
-
- if( iPipe.pipeState != TPipeInfo::EPipeDisabled )
- {
- SendEnablePipeReq( pipeHandle );
+ iAtHandler.SendAtModemDataRedirectResultReq( AT_MODEM_REDIRECT_RESULT_OK );
}
}
void CModemAtPipeController::QueryModemAtFromNameService()
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_QUERYMODEMATFROMNAMESERVICE, "CModemAtPipeController::QueryModemAtFromNameService" );
C_TRACE (( _T("CModemAtPipeController::QueryModemAtFromNameService()") ));
HBufC8* message = HBufC8::New( ISI_HEADER_SIZE + SIZE_PNS_NAME_QUERY_REQ );
TRACE_ASSERT( message );
@@ -614,6 +639,7 @@
isimessage.Set32bit( ISI_HEADER_SIZE + PNS_NAME_QUERY_REQ_OFFSET_BITMASK, PN_AT_MODEM );
isimessage.Complete();
+ OstTraceExt1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_QUERYMODEMATFROMNAMESERVICE, "CModemAtPipeController::QueryModemAtFromNameService - msg dump;messageptr=%s", messageptr );
DUMP_MESSAGE( messageptr );
TInt retVal = iIscApi.Send( messageptr );
TRACE_ASSERT( retVal == KErrNone );
@@ -621,8 +647,9 @@
}
}
-void CModemAtPipeController::SendEnablePipeReq( const TUint8 aPipeHandle )
+void CModemAtPipeController::SendEnablePipeReq()
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_SENDENABLEPIPEREQ, "CModemAtPipeController::SendEnablePipeReq" );
C_TRACE (( _T("CModemAtPipeController::SendEnablePipeReq()") ));
HBufC8* message = HBufC8::New( ISI_HEADER_SIZE + SIZE_PNS_PIPE_ENABLE_REQ );
ASSERT_PANIC_ALWAYS( message )
@@ -631,7 +658,7 @@
isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_PIPE );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_ENABLE_REQ_OFFSET_UTID, 0 );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_ENABLE_REQ_OFFSET_SUBFUNCTION, PNS_PIPE_ENABLE_REQ );
- isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_ENABLE_REQ_OFFSET_PIPEHANDLE , aPipeHandle );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_ENABLE_REQ_OFFSET_PIPEHANDLE , iPipe.pipeHandle );
isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PIPE_ENABLE_REQ_OFFSET_FILLERBYTE1 , 0 );
isimessage.Complete();
@@ -643,44 +670,45 @@
void CModemAtPipeController::HandlePipeEnabledResp( const TIsiReceiveC& aReceivedMessage )
{
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPIPEENABLEDRESP, "CModemAtPipeController::HandlePipeEnabledResp" );
C_TRACE (( _T("CModemAtPipeController::HandlePipeEnabledResp()") ));
TInt error = aReceivedMessage.Get8bit(ISI_HEADER_SIZE +
PNS_PIPE_ENABLE_RESP_OFFSET_ERRORCODE);
TInt pipeHandle = aReceivedMessage.Get8bit(ISI_HEADER_SIZE +
PNS_PIPE_ENABLE_RESP_OFFSET_PIPEHANDLE);
- if( pipeHandle != iPipe.pipeHandle )
- {
- C_TRACE((_L("CModemAtPipeController::HandlePipeEnabledResp() unknown pipeHandle received")));
- TRACE_ASSERT_ALWAYS;
- return;
- }
- C_TRACE((_L("CModemAtPipeController::HandlePipeEnabledResp() pipehandle %d"), pipeHandle));
-
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLEPIPEENABLEDRESP, "CModemAtPipeController::HandlePipeEnabledResp;pipeHandle=%d", pipeHandle );
+ C_TRACE((_L("CModemAtPipeController::HandlePipeEnabledResp() pipehandle %d"), pipeHandle));
if( error == PN_PIPE_NO_ERROR )
{
ChangePipeState( TPipeInfo::EPipeEnabled );
}
else
{
+ OstTrace1( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLEPIPEENABLEDRESP, "CModemAtPipeController::HandlePipeEnabledResp - pipe;error=%d", error );
C_TRACE((_L("CModemAtPipeController::HandlePipeEnabledResp() pipe error: %d"), error));
- TRACE_ASSERT_ALWAYS;
}
}
void CModemAtPipeController::ChangePipeState( TPipeInfo::EPipeState aState )
{
- C_TRACE((_L("CModemAtPipeController::ChangePipeState( New state: %d )"), (TInt)aState));
- C_TRACE(( _L("Old iPipe.pipeState = %d"), (TInt)iPipe.pipeState ));
+ OstTraceExt2( TRACE_NORMAL, CMODEMATPIPECONTROLLER_CHANGEPIPESTATE, "CModemAtPipeController::ChangePipeState;aState=%d;iPipe.pipeHandle=%d", (TInt)aState, iPipe.pipeHandle );
+ C_TRACE((_L("CModemAtPipeController::ChangePipeState: pipe handle: %d ( New state: %d )"), iPipe.pipeHandle, (TInt)aState));
+
iPipe.pipeState = aState;
- if( aState == TPipeInfo::EPipeEnabled )
+ if( TPipeInfo::EPipeRedirected == aState )
{
+ // NOTE: Setting data mode when pipe is being redirected.
+ // This will fasten the discovery of data mode.
+ // If pipe fails, we return to command mode.
+ OstTrace0( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_CHANGEPIPESTATE, "CModemAtPipeController::ChangePipeState - DATA MODE" );
C_TRACE(( _T("DATA MODE") ));
iAtHandler.HandleCommandModeChange( EDataMode );
}
- else if( aState == TPipeInfo::EPipeDisabled )
+ else if( TPipeInfo::EPipeDisabled == aState )
{
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_CHANGEPIPESTATE, "CModemAtPipeController::ChangePipeState - COMMAND MODE" );
C_TRACE(( _T("COMMAND MODE") ));
iAtHandler.HandleCommandModeChange( ECommandMode );
}
@@ -688,44 +716,240 @@
void CModemAtPipeController::HandlePepStatusInd( const TIsiReceiveC& aReceivedMessage )
{
- C_TRACE(( _L("CModemAtPipeController::HandlePepStatusInd")));
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd" );
+ C_TRACE(( _L("CModemAtPipeController::HandlePepStatusInd()")));
TUint8 pepType( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_PEP_STATUS_IND_OFFSET_PEPTYPE ) );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd;pepType=%d", pepType );
+ C_TRACE(( _L("pepType: %d"), pepType ));
+
+ TUint8 pipeHandle( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ PNS_PEP_STATUS_IND_OFFSET_PIPEHANDLE ) );
+ OstTrace1( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd;pipeHandle=%d", pipeHandle );
+ C_TRACE(( _L("pipeHandle: %d"), pipeHandle ));
+
+ if( iPipe.pipeHandle != pipeHandle )
+ {
+ C_TRACE( (_L("Unknown pipe handle: %d, iPipe.pipeHandle: %d "), pipeHandle, iPipe.pipeHandle ));
+ return;
+ }
+
if( pepType == PN_PEP_TYPE_COMM )
{
TUint8 indicationId( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
PNS_PEP_STATUS_IND_OFFSET_INDICATIONID ) );
+ OstTrace1( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd;indicationId=%d", indicationId );
+ C_TRACE(( _L("indicationId: %d"), indicationId ));
if( indicationId == PEP_COMM_IND_ID_ESCAPE )
{
- TUint8 pipeHandle( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
- PNS_PEP_STATUS_IND_OFFSET_PIPEHANDLE ) );
-
- C_TRACE( (_L("CModemAtPipeController PEP_COMM_IND_ID_ESCAPE received, pipehandle: %d iPipe.pipeHandle: %d"), pipeHandle, iPipe.pipeHandle ));
+ C_TRACE(( _T("PEP_COMM_IND_ID_ESCAPE -> AT_MODEM_SIGNAL_ESCAPE_DETECTED") ));
+ iAtHandler.SendSignalDetection( AT_MODEM_SIGNAL_ESCAPE_DETECTED );
+ }
+ else if( indicationId == PEP_COMM_IND_ID_V24_CHANGE )
+ {
+ OstTrace0( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "PEP_COMM_IND_ID_V24_CHANGE" );
+ C_TRACE(( _T("PEP_COMM_IND_ID_V24_CHANGE") ));
+
+ TUint8 indicationData( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ PNS_PEP_STATUS_IND_OFFSET_INDICATIONDATA ) );
+ OstTrace1( TRACE_NORMAL, DUP5_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd;indicationData=%d", indicationData );
+ C_TRACE(( _L("indicationData: %d"), indicationData ));
- if( pipeHandle == iPipe.pipeHandle )
+ if( indicationData == PEP_COMM_SIGNAL_DTR_ON )
+ {
+ OstTrace0( TRACE_NORMAL, DUP6_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "AT_MODEM_SIGNAL_DTR_ON" );
+ C_TRACE(( _T("PEP_COMM_SIGNAL_DTR_ON -> AT_MODEM_SIGNAL_DTR_ON") ));
+ iAtHandler.SendSignalDetection( AT_MODEM_SIGNAL_DTR_ON );
+ }
+ else if( indicationData == PEP_COMM_SIGNAL_DTR_OFF )
{
- C_TRACE( (_L("SendEscapeSignalDetection dteid %d"), pipeHandle ));
- iAtHandler.SendEscapeSignalDetection( pipeHandle );
+ OstTrace0( TRACE_NORMAL, DUP7_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "AT_MODEM_SIGNAL_DTR_OFF" );
+ C_TRACE(( _T("PEP_COMM_SIGNAL_DTR_OF -> AT_MODEM_SIGNAL_DTR_OFF") ));
+ iAtHandler.SendSignalDetection( AT_MODEM_SIGNAL_DTR_OFF );
+ }
+ else
+ {
+ OstTrace0( TRACE_NORMAL, DUP8_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "Unknown indication data" );
+ C_TRACE(( _T("Unknown indication data") ));
}
}
- // Not know should any other indicationid from comm pep type to be handled
else
{
- C_TRACE((_L("CModemAtPipeController Indication ignored pepType %d indicationId: %d "), pepType, indicationId));
+ OstTrace1( TRACE_NORMAL, DUP9_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd;indicationId=%d", indicationId );
+ C_TRACE((_L("Unknown indicationId: %d pepType %d"), indicationId, pepType));
}
}
- // pep type comm only supported one
else
{
- C_TRACE((_L("CModemAtPipeController Peptype ignored %d "), pepType));
+ OstTrace1( TRACE_NORMAL, DUP10_CMODEMATPIPECONTROLLER_HANDLEPEPSTATUSIND, "CModemAtPipeController::HandlePepStatusInd;pepType=%d", pepType );
+ C_TRACE((_L("CModemAtPipeController::HandlePepStatusInd() Peptype ignored %d "), pepType));
}
}
-TUint8 CModemAtPipeController::GetPipeHandle()
+
+TPipeInfo::EPipeState CModemAtPipeController::GetPipeState()
+ {
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_GETPIPESTATE, "CModemAtPipeController::GetPipeState" );
+ C_TRACE((_L("CModemAtPipeController::GetPipeState") ) );
+ return iPipe.pipeState;
+ }
+
+
+void CModemAtPipeController::SendPepCtrlReq( const TUint8 aControlId, TDesC8& aData )
{
- C_TRACE((_L("CModemAtPipeController::GetPipeHandle %d"), iPipe.pipeHandle));
- return iPipe.pipeHandle;
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_SENDPEPCTRLREQ, "CModemAtPipeController::SendPepCtrlReq" );
+ C_TRACE (( _T("CModemAtPipeController::SendPepCtrlReq()") ));
+ TInt length( ISI_HEADER_SIZE + SIZE_PNS_PEP_CTRL_REQ );
+ TInt fillers( 0 );
+ if( aControlId == PEP_COMM_CTRL_ID_ESCAPE )
+ {
+ fillers++;
+ length += ( KPepCtrlDataSize + fillers );
+ }
+ else if( aControlId == PEP_COMM_CTRL_ID_FLOW_CTRL)
+ {
+ length += KPepFlowCtrlDataSize;
+ }
+ else
+ {
+ TRACE_ASSERT_ALWAYS;
+ return;
+ }
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_SENDPEPCTRLREQ, "CModemAtPipeController::SendPepCtrlReq;length=%d", length );
+ C_TRACE((_L("ISI message length: %d"), length));
+ HBufC8* message = HBufC8::New( length );
+ if( message )
+ {
+ TPtr8 messageptr = message->Des();
+ TIsiSend isimessage( messageptr, length );
+ isimessage.Set8bit( ISI_HEADER_OFFSET_RECEIVERDEVICE, iDpDevId );
+ isimessage.Set8bit( ISI_HEADER_OFFSET_RECEIVEROBJECT, iDpObjId );
+ isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_PIPE );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_UTID, 0 );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_SUBFUNCTION, PNS_PEP_CTRL_REQ );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_PIPEHANDLE , iPipe.pipeHandle );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_PEPTYPE , PN_PEP_TYPE_COMM );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_PEPCTRLID, aControlId );
+ for( TInt i = 0; i < aData.Length(); i++ )
+ {
+ C_TRACE((_L("Setting control data[%d] = 0x%x"), ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_PEPCTRLDATA + i, aData[ i ] ));
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_CTRL_REQ_OFFSET_PEPCTRLDATA + i, aData[ i ] );
+ }
+ if( fillers > 0 )
+ {
+ C_TRACE((_L("Setting filler to data[%d] = 0x%x"), length - 1, KFiller ));
+ isimessage.Set8bit( length - 1, KFiller );
+ }
+ isimessage.Complete();
+
+ DUMP_MESSAGE( messageptr );
+ TInt retVal = iIscApi.Send( messageptr );
+ TRACE_ASSERT( KErrNone == retVal );
+ delete message;
+ }
+ else
+ {
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_SENDPEPCTRLREQ, "CModemAtPipeController::SendPepCtrlReq - No enough memory" );
+ C_TRACE (( _T("CModemAtPipeController::SendPepCtrlReq(): No enough memory") ));
+ }
}
- #endif // NCP_COMMON_BRIDGE_FAMILY
+void CModemAtPipeController::HandlePepCtrlResp( const TIsiReceiveC& aReceivedMessage )
+ {
+ OstTrace0( TRACE_NORMAL, CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp" );
+ C_TRACE(( _L("CModemAtPipeController::HandlePepCtrlResp") ));
+ TUint8 pepType( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ PNS_PEP_CTRL_RESP_OFFSET_PEPTYPE ) );
+ C_TRACE(( _L("pepType: %d"), pepType ));
+
+ TUint8 pipeHandle( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ PNS_PEP_CTRL_RESP_OFFSET_PIPEHANDLE ) );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp;pipeHandle=%d", pipeHandle );
+ C_TRACE(( _L("pipeHandle: %d"), pipeHandle ));
+
+ TUint8 controlId( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ PNS_PEP_CTRL_RESP_OFFSET_PEPCTRLID ) );
+ OstTrace1( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp;controlId=%d", controlId );
+ C_TRACE(( _L("controlId: %d"), controlId ));
+
+ if( PN_PEP_TYPE_COMM == pepType &&
+ PEP_COMM_CTRL_ID_ESCAPE == controlId )
+ {
+ TUint8 error( aReceivedMessage.Get8bit( ISI_HEADER_SIZE +
+ PNS_PEP_CTRL_RESP_OFFSET_ERRORCODE ) );
+ OstTrace1( TRACE_NORMAL, DUP3_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp;error=%d", error );
+ C_TRACE(( _L("error code: %d"), error ));
+ switch( error )
+ {
+ case PN_PIPE_NO_ERROR:
+ {
+ OstTrace0( TRACE_NORMAL, DUP4_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp - PN_PIPE_NO_ERROR" );
+ C_TRACE(( _L("PN_PIPE_NO_ERROR")));
+ break;
+ }
+ case PN_PIPE_ERR_NOT_SUPPORTED:
+ {
+ OstTrace0( TRACE_NORMAL, DUP5_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp - error:PN_PIPE_ERR_NOT_SUPPORTED" );
+ C_TRACE(( _L("error: PN_PIPE_ERR_NOT_SUPPORTED")));
+ break;
+ }
+ case PN_PIPE_ERR_INVALID_PARAM:
+ {
+ OstTrace0( TRACE_NORMAL, DUP6_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp - error: PN_PIPE_ERR_INVALID_PARAM" );
+ C_TRACE(( _L("error: PN_PIPE_ERR_INVALID_PARAM")));
+ break;
+ }
+ case PN_PIPE_ERR_INVALID_CTRL_ID:
+ {
+ OstTrace0( TRACE_NORMAL, DUP7_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp - error: PN_PIPE_ERR_INVALID_CTRL_ID" );
+ C_TRACE(( _L("error: PN_PIPE_ERR_INVALID_CTRL_ID")));
+ break;
+ }
+ case PN_PIPE_ERR_GENERAL:
+ {
+ OstTrace0( TRACE_NORMAL, DUP8_CMODEMATPIPECONTROLLER_HANDLEPEPCTRLRESP, "CModemAtPipeController::HandlePepCtrlResp - error: PN_PIPE_ERR_GENERAL" );
+ C_TRACE(( _L("error: PN_PIPE_ERR_GENERAL")));
+ break;
+ }
+ }
+ }
+ }
+// sending PNS_PEP_STATUS_IND from pipe controller should be moved to PEP !
+void CModemAtPipeController::SendPepStatusIndSignal( const TUint8 aPepCommSignal )
+ {
+ OstTrace1( TRACE_NORMAL, CMODEMATPIPECONTROLLER_SENDPEPSTATUSINDSIGNAL, "CModemAtPipeController::SendPepStatusIndSignal;aPepCommSignal=%x", aPepCommSignal );
+ C_TRACE((_L("CModemAtPipeController::SendPepStatusIndSignal() aPepCommSignal: 0x%x"), aPepCommSignal ));
+ TInt length( ISI_HEADER_SIZE + SIZE_PNS_PEP_STATUS_IND );
+ OstTrace1( TRACE_NORMAL, DUP1_CMODEMATPIPECONTROLLER_SENDPEPSTATUSINDSIGNAL, "CModemAtPipeController::SendPepStatusIndSignal;length=%d", length );
+ C_TRACE((_L("ISI message length: %d"), length));
+ HBufC8* message = HBufC8::New( length );
+ if( message )
+ {
+ TPtr8 messageptr = message->Des();
+ TIsiSend isimessage( messageptr, length );
+ isimessage.Set8bit( ISI_HEADER_OFFSET_RECEIVERDEVICE, iDpDevId );
+ isimessage.Set8bit( ISI_HEADER_OFFSET_RECEIVEROBJECT, iDpObjId );
+ isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_PIPE );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_UTID, 0 );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_SUBFUNCTION, PNS_PEP_STATUS_IND );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_PIPEHANDLE, iPipe.pipeHandle );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_PEPTYPE, PN_PEP_TYPE_COMM );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_INDICATIONID, PEP_COMM_IND_ID_V24_CHANGE );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_FILLERBYTE1, 0 );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_FILLERBYTE2, 0 );
+ isimessage.Set8bit( ISI_HEADER_SIZE + PNS_PEP_STATUS_IND_OFFSET_INDICATIONDATA, aPepCommSignal );
+ isimessage.Complete();
+ DUMP_MESSAGE( messageptr );
+ TInt retVal = iIscApi.Send( messageptr );
+ TRACE_ASSERT( KErrNone == retVal );
+ delete message;
+ }
+ else
+ {
+ OstTrace0( TRACE_NORMAL, DUP2_CMODEMATPIPECONTROLLER_SENDPEPSTATUSINDSIGNAL, "CModemAtPipeController::SendPepStatusIndSignal - error: not enough memory" );
+ C_TRACE (( _T("CModemAtPipeController::SendPepStatusIndSignal(): Not enough memory") ));
+ }
+ }
+
+