adaptationlayer/modematadaptation/modematcontroller_exe/src/cmodemathandler.cpp
changeset 9 8486d82aef45
parent 8 6295dc2169f3
equal deleted inserted replaced
8:6295dc2169f3 9:8486d82aef45
     1 /*
     1 /*
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Eclipse Public License v1.0"
     5 * under the terms of the License "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    19 
    19 
    20 #include <e32std.h>
    20 #include <e32std.h>
    21 #include <iscapi.h>
    21 #include <iscapi.h>
    22 #include <iscnokiadefinitions.h>
    22 #include <iscnokiadefinitions.h>
    23 #include <pn_const.h>
    23 #include <pn_const.h>
    24 #ifndef NCP_COMMON_BRIDGE_FAMILY       
       
    25 #include <nsisi.h>
    24 #include <nsisi.h>
    26 #include <pipeisi.h>
    25 #include <pipeisi.h>
    27 #include <pipe_sharedisi.h>
    26 #include <pipe_sharedisi.h>
    28 #endif
       
    29 #include <tisi.h>
    27 #include <tisi.h>
    30 #include <at_modemisi.h>
    28 #include <at_modemisi.h>
    31 #include "cmodemathandler.h"
    29 #include "cmodemathandler.h"
    32 #include "cmodematpipecontroller.h"
    30 #include "cmodematpipecontroller.h"
    33 #include "modemattrace.h"
    31 #include "modemattrace.h"
    34 #include "cmodematsrv.h"
    32 #include "cmodematsrv.h"
       
    33 #include "OstTraceDefinitions.h"
       
    34 #ifdef OST_TRACE_COMPILER_IN_USE
       
    35 #include "cmodemathandlerTraces.h"
       
    36 #endif
       
    37 
    35 
    38 
    36 #define KCommandBits 0x0f
    39 #define KCommandBits 0x0f
    37 #define KMaxBufferLength 1024
       
    38 #define KTransactionIdBitsShift 4
    40 #define KTransactionIdBitsShift 4
    39 #define KFiller 0
    41 #define KFiller 0
    40 #define KIndicationOrderMsgLength 14
    42 #define KIndicationOrderMsgLength 14
    41 #define KObjectIdLength 2
    43 #define KObjectIdLength 2
    42 #define KEightBits 8
    44 #define KEightBits 8
    43 #define KDefaultTId 0
    45 #define KDefaultTId 0
    44 
    46 
    45 const TInt KUnsubscribeFourEvents(4);
    47 const TInt KUnsubscribeFourEvents(4);
    46 const TInt KAlignToFourBytes(4);
    48 const TInt KAlignToFourBytes(4);
       
    49 const TInt KSessionIndLimit(1);        // AT_MODEM_SIGNAL_IND is not handled if only one session is connected
       
    50 const TInt KEscapeDataLength(2);
       
    51 const TInt KFlowCtrlDataLength(3);
       
    52 const TUint8 KReservedDteId( 255 );
    47 
    53 
    48 #ifdef __WINSCW__
    54 #ifdef __WINSCW__
    49 #define KEmulatedReplyMsgLength 50
    55 #define KEmulatedReplyMsgLength 50
    50 #endif
    56 #endif
    51 
    57 
    52 CModemAtHandler* CModemAtHandler::NewL( CModemAtSrv& aServer )
    58 CModemAtHandler* CModemAtHandler::NewL( 
    53     {
    59     CModemAtSrv& aServer,
    54     CModemAtHandler* self = new (ELeave) CModemAtHandler( aServer );
    60     TInt aChannel )
       
    61     {
       
    62     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_NEWL, "CModemAtHandler::NewL" );
       
    63     CModemAtHandler* self = new (ELeave) CModemAtHandler( aServer, aChannel );
    55     CleanupStack::PushL( self );
    64     CleanupStack::PushL( self );
    56     self->ConstructL();
    65     self->ConstructL();
    57     CleanupStack::Pop( self );
    66     CleanupStack::Pop( self );
    58     return self;
    67     return self;
    59     }
    68     }
    60 
    69 
    61 CModemAtHandler::~CModemAtHandler()
    70 CModemAtHandler::~CModemAtHandler()
    62     {
    71     {
       
    72     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_CMODEMATHANDLER, "CModemAtHandler::~CModemAtHandler" );
    63     C_TRACE(( _T("CModemAtHandler::~CModemAtHandler()") ));
    73     C_TRACE(( _T("CModemAtHandler::~CModemAtHandler()") ));
    64     TBuf8<KUnsubscribeFourEvents> events;
    74     TBuf8<KUnsubscribeFourEvents> events;
    65     events.Append( KFiller );
    75     events.Append( KFiller );
    66     events.Append( KFiller );  
    76     events.Append( KFiller );  
    67     events.Append( KFiller );
    77     events.Append( KFiller );
    79         } 
    89         } 
    80     Cancel();
    90     Cancel();
    81 
    91 
    82     if( iIscApi )
    92     if( iIscApi )
    83         {
    93         {
       
    94         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_CMODEMATHANDLER, "CModemAtHandler::~CModemAtHandler - closing isc api" );
       
    95         C_TRACE(( _T("CModemAtHandler::~CModemAtHandler() closing isc api") ));
    84         iIscApi->Close();
    96         iIscApi->Close();
    85         delete iIscApi;
    97         delete iIscApi;
    86         }
    98         }
    87    }
    99    }
    88 
   100 
    89 CModemAtHandler::CModemAtHandler( CModemAtSrv& aServer )
   101 CModemAtHandler::CModemAtHandler( CModemAtSrv& aServer, TInt aChannel )
    90     : CActive( EPriorityHigh ),
   102     : CActive( EPriorityHigh ),
    91     iServer( aServer ),
   103     iServer( aServer ),
    92     iIscApi( NULL ),
   104     iIscApi( NULL ),
    93     iReceivedMessageBuffer( NULL ),
   105     iReceivedMessageBuffer( NULL ),
    94     iMessageBufferSize( KMaxBufferLength ),
   106     iMessageBufferSize( KMaxBufferLength ),
    95     iReceivePtr( 0, 0 ),
   107     iReceivePtr( 0, 0 ),
    96     iReceiveMessageLength( 0 ),
   108     iReceiveMessageLength( 0 ),
    97     iReceivedMessage( NULL ),
   109     iReceivedMessage( NULL ),
    98     iPepObjId(0),
   110     iPepObjId(0),
       
   111     iDataportObjId(0),
    99     iPipeController(NULL),
   112     iPipeController(NULL),
   100     iLastTransactionId( 0 ),
   113     iLastTransactionId( 0 ),
   101     iDisconnected( EFalse ),
   114     iDisconnected( EFalse ),
   102     iModemAtExistInCmt( EFalse )
   115     iModemAtExistInCmt( EFalse ),
   103     {
   116     iTextMessageMode( EFalse ),
       
   117     iChannel( aChannel )
       
   118     {
       
   119     OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_CMODEMATHANDLER, "CModemAtHandler::CModemAtHandler" );
   104     C_TRACE (( _T("CModemAtHandler::CModemAtHandler") ));
   120     C_TRACE (( _T("CModemAtHandler::CModemAtHandler") ));
   105     }
   121     }
   106 
   122 
   107 void CModemAtHandler::DoCancel()
   123 void CModemAtHandler::DoCancel()
   108     {
   124     {
       
   125     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_DOCANCEL, "CModemAtHandler::DoCancel" );
   109     C_TRACE (( _T("CModemAtHandler::DoCancel()") ));
   126     C_TRACE (( _T("CModemAtHandler::DoCancel()") ));
   110     iIscApi->ReceiveCancel();
   127     iIscApi->ReceiveCancel();
   111     }
   128     }
   112 
   129 
   113 
   130 
   114 void CModemAtHandler::RunL()
   131 void CModemAtHandler::RunL()
   115     {
   132     {
   116     C_TRACE (( _T("CModemAtHandler::RunL()") ));
   133     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL" );
       
   134     C_TRACE (( _T("CModemAtHandler::RunL() %d"), iDteId ));
   117    
   135    
   118     if( iStatus == KErrNone ) 
   136     if( iStatus == KErrNone ) 
   119         {
   137         {
   120         TIsiReceiveC receiveMessage = TIsiReceiveC( *iReceivedMessageBuffer );
   138         TIsiReceiveC receiveMessage = TIsiReceiveC( *iReceivedMessageBuffer );
       
   139         OstTraceExt1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - message dump;iReceivePtr=%s", iReceivePtr );
   121         DUMP_MESSAGE( iReceivePtr );
   140         DUMP_MESSAGE( iReceivePtr );
   122             
   141             
   123         if( iReceivedMessageBuffer->Length() > ISI_HEADER_OFFSET_MESSAGEID )
   142         if( iReceivedMessageBuffer->Length() > ISI_HEADER_OFFSET_MESSAGEID )
   124             {
   143             {
   125             switch(receiveMessage.Get8bit(ISI_HEADER_OFFSET_RESOURCEID))
   144             switch(receiveMessage.Get8bit(ISI_HEADER_OFFSET_RESOURCEID))
   126                 {
   145                 {
   127                 case PN_AT_MODEM: //AT MODEM COMMANDS
   146                 case PN_AT_MODEM: //AT MODEM COMMANDS
       
   147                     OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - PN_AT_MODEM" );
   128                     C_TRACE(_L("PN_AT_MODEM"));
   148                     C_TRACE(_L("PN_AT_MODEM"));
   129 
   149 
   130                     switch( receiveMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) )
   150                     switch( receiveMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) )
   131                         {
   151                         {
   132                         case AT_MODEM_CONNECT_RESP: 
   152                         case AT_MODEM_CONNECT_RESP: 
   133                             HandleModemConnectResp( receiveMessage );
   153                             HandleModemConnectResp( receiveMessage );
   134                             break;
   154                             break;
   135 
   155 
   136                         case AT_MODEM_DISCONNECT_RESP:
   156                         case AT_MODEM_DISCONNECT_RESP:
       
   157                             OstTrace0( TRACE_NORMAL, DUP3_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - AT_MODEM_DISCONNECT_RESP" );
   137                             C_TRACE(_L("AT_MODEM_DISCONNECT_RESP"));
   158                             C_TRACE(_L("AT_MODEM_DISCONNECT_RESP"));
   138                             break;
   159                             break;
   139 
   160 
   140                         case AT_MODEM_CMD_RESP:
   161                         case AT_MODEM_CMD_RESP:
   141                             HandleATResponse( receiveMessage );
   162                             HandleATResponse( receiveMessage );
   144                         case AT_MODEM_SIGNAL_IND:
   165                         case AT_MODEM_SIGNAL_IND:
   145                             HandleSignalInd( receiveMessage );
   166                             HandleSignalInd( receiveMessage );
   146                             break;
   167                             break;
   147 
   168 
   148                         case AT_MODEM_UNSOLICITED_DATA_IND:
   169                         case AT_MODEM_UNSOLICITED_DATA_IND:
       
   170                             OstTrace0( TRACE_NORMAL, DUP4_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - AT_MODEM_UNSOLICITED_DATA_IND" );
       
   171                             C_TRACE(_L("AT_MODEM_UNSOLICITED_DATA_IND"));
   149                             HandleUnsolicitedData( receiveMessage );
   172                             HandleUnsolicitedData( receiveMessage );
   150                             break;
   173                             break;
   151 
   174 
   152                         case AT_MODEM_INTERMEDIATE_DATA_IND:
   175                         case AT_MODEM_INTERMEDIATE_DATA_IND:
   153                             HandleIntermediateDataInd( receiveMessage );
   176                             HandleIntermediateDataInd( receiveMessage );
   156                         case AT_MODEM_DATA_REDIRECT_IND:
   179                         case AT_MODEM_DATA_REDIRECT_IND:
   157                             HandleRedirectInd( receiveMessage );
   180                             HandleRedirectInd( receiveMessage );
   158                             break;
   181                             break;
   159                             
   182                             
   160                         case AT_MODEM_DATA_REDIRECT_RESULT_RESP:
   183                         case AT_MODEM_DATA_REDIRECT_RESULT_RESP:
       
   184                             OstTrace0( TRACE_NORMAL, DUP5_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - AT_MODEM_DATA_REDIRECT_RESULT_RESP" );
   161                             C_TRACE((_L("AT_MODEM_DATA_REDIRECT_RESULT_RESP")));
   185                             C_TRACE((_L("AT_MODEM_DATA_REDIRECT_RESULT_RESP")));
   162                             HandleRedirectResultResp( receiveMessage );
   186                             HandleRedirectResultResp( receiveMessage );
   163                             break;
   187                             break;
   164 
   188 
   165                         case AT_MODEM_SIGNAL_DETECTED_RESP:
   189                         case AT_MODEM_SIGNAL_DETECTED_RESP:
       
   190                             OstTrace0( TRACE_NORMAL, DUP6_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - AT_MODEM_SIGNAL_DETECTED_RESP" );
   166                             C_TRACE((_L("AT_MODEM_SIGNAL_DETECTED_RESP")));
   191                             C_TRACE((_L("AT_MODEM_SIGNAL_DETECTED_RESP")));
   167                             HandleSignalDetectedResp(  receiveMessage  );
   192                             HandleSignalDetectedResp(  receiveMessage  );
   168                             break;
   193                             break;
   169                         default: 
   194                         default: 
       
   195                             OstTrace0( TRACE_NORMAL, DUP7_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - Not a valid message" );
   170                             C_TRACE(_L("CModemAtHandler::RunL: Not a valid message"))  ;
   196                             C_TRACE(_L("CModemAtHandler::RunL: Not a valid message"))  ;
   171                             TRACE_ASSERT_ALWAYS;
   197                             TRACE_ASSERT_ALWAYS;
   172                             break;
   198                             break;
   173                          } //switch( receiveMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) )
   199                          } //switch( receiveMessage.Get8bit( ISI_HEADER_OFFSET_MESSAGEID ) )
   174                         
   200                         
   175                     break;  //case PN_AT_MODEM: //AT MODEM COMMANDS
   201                     break;  //case PN_AT_MODEM: //AT MODEM COMMANDS
   176 
   202 
   177 #ifndef NCP_COMMON_BRIDGE_FAMILY
   203                 case PN_NAMESERVICE: 
   178                 case PN_NAME_SERVICE: 
   204                     OstTrace0( TRACE_NORMAL, DUP8_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - PN_NAMESERVICE" );
   179                     C_TRACE(_L("PN_NAME_SERVICE"));
   205                     C_TRACE(_L("PN_NAMESERVICE"));
   180                     iPipeController->HandleNameServiceMessage(receiveMessage);
   206                     iPipeController->HandleNameServiceMessage( receiveMessage );
   181                     break;
   207                     break;
   182 
   208 
   183                 case PN_PIPE:
   209                 case PN_PIPE:
   184                     C_TRACE(_L("Pipe message"));
   210                     OstTrace0( TRACE_NORMAL, DUP9_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - PN_PIPE" );
   185                     iPipeController->HandlePipeServiceMessage(receiveMessage);
   211                     C_TRACE(_L("PN_PIPE"));
       
   212                     iPipeController->HandlePipeServiceMessage( receiveMessage );
   186                     break;
   213                     break;
   187 #endif
       
   188                 default:  
   214                 default:  
       
   215                     OstTrace0( TRACE_NORMAL, DUP10_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - Unknown resource id" );
   189                     C_TRACE((_L("Unknown resource id")));
   216                     C_TRACE((_L("Unknown resource id")));
   190                     TRACE_ASSERT_ALWAYS;
   217                     TRACE_ASSERT_ALWAYS;
   191                     break; 
   218                     break; 
   192                 }
   219                 }
   193                 
   220 
   194             } //if( receiveMessageBuffer->Length() > ISI_HEADER_OFFSET_MESSAGEID )
   221             } //if( receiveMessageBuffer->Length() > ISI_HEADER_OFFSET_MESSAGEID )
   195         else 
   222         else 
   196             {
   223             {
       
   224             OstTrace0( TRACE_NORMAL, DUP11_CMODEMATHANDLER_RUNL, "CModemAtHandler::RunL - ISI message is too short" );
   197             C_TRACE(_L("ISI message is too short"));
   225             C_TRACE(_L("ISI message is too short"));
   198             TRACE_ASSERT_ALWAYS;
   226             TRACE_ASSERT_ALWAYS;
   199             }
   227             }
   200         
   228         
   201         //Start receiving ISI messages again
   229         //Start receiving ISI messages again
   210     }
   238     }
   211 
   239 
   212 
   240 
   213 void CModemAtHandler::ConstructL()
   241 void CModemAtHandler::ConstructL()
   214     {
   242     {
       
   243    OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_CONSTRUCTL, "CModemAtHandler::ConstructL" );
   215    C_TRACE (( _T("CModemAtHandler::ConstructL()") ));
   244    C_TRACE (( _T("CModemAtHandler::ConstructL()") ));
   216 
   245 
   217     CActiveScheduler::Add( this );
   246     CActiveScheduler::Add( this );
   218     
   247     
   219     iIscApi = new ( ELeave ) RIscApi;
   248     iIscApi = new ( ELeave ) RIscApi;
       
   249     OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_CONSTRUCTL, "CModemAtHandler::ConstructL - RIscApi created" );
   220     C_TRACE(_L("RIscApi created"));
   250     C_TRACE(_L("RIscApi created"));
   221    
   251    
   222 #ifndef __WINSCW__
   252 #ifndef __WINSCW__
   223       OpenChannelL();
   253       OpenChannelL();
   224 #ifndef NCP_COMMON_BRIDGE_FAMILY
   254       if( iChannel == EIscNokiaAtController )
   225       iPipeController->QueryModemAtFromNameService();
   255           {
   226 #endif
   256           iPipeController->QueryModemAtFromNameService();
       
   257           }
       
   258       else
       
   259           {
       
   260           SetModemAtExistsInCmt( ETrue );
       
   261           }
   227 #else
   262 #else
   228       iEmulatedValue = 0;
   263       iEmulatedValue = 0;
   229 #endif
   264 #endif
   230     
   265     
   231     }
   266     }
   232 
   267 
   233 TInt CModemAtHandler::SendATCommand(const TUint8 aDteId,
   268 TInt CModemAtHandler::SendATCommand(
   234     const TATPluginInterface aPluginType,
   269     const TATPluginInterface aPluginType,
   235     const TUint8 aMessageType,
   270     const TUint8 aMessageType,
   236     const TDesC8& aCmd)
   271     const TDesC8& aCmd)
   237     {
   272     {
   238     C_TRACE (( _T(">>CModemAtHandler::SendATCommand()") ));
   273     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand;iDteId=%d", iDteId );
       
   274     C_TRACE (( _T(">>CModemAtHandler::SendATCommand() %d"), iDteId ));
   239 
   275 
   240     TInt err = KErrNone;
   276     TInt err = KErrNone;
   241     // aMessageType contains normal AT-cmd (0) or Nvram-query (1)
   277     // aMessageType contains normal AT-cmd (0) or Nvram-query (1)
   242     TUint transactionId = ( aPluginType << KTransactionIdBitsShift ) | aMessageType;
   278     TUint transactionId = ( aPluginType << KTransactionIdBitsShift ) | aMessageType;
   243     // used with intermediate data ind
   279     // used with intermediate data ind
   244     // can be removed, when AT_MODEM_INTERMEDIATE_DATA_IND supports transactionid        
   280     // can be removed, when AT_MODEM_INTERMEDIATE_DATA_IND supports transactionid        
   245     iLastTransactionId = transactionId;  //messages are routed to correct plugin by transaction id
   281     iLastTransactionId = transactionId;  //messages are routed to correct plugin by transaction id
       
   282     OstTraceExt4( TRACE_NORMAL, DUP1_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand;transactionId=%d;aPluginType=%d;aMessageType=%d;iLastTransactionId=%d", transactionId, aPluginType, aMessageType, iLastTransactionId );
   246     C_TRACE((_L("transaction id %d, plugintype %d, aMessageType %d"), transactionId, aPluginType, aMessageType));
   283     C_TRACE((_L("transaction id %d, plugintype %d, aMessageType %d"), transactionId, aPluginType, aMessageType));
   247     C_TRACE((_L("iLastTransctionId = %d "), iLastTransactionId ));
   284     C_TRACE((_L("iLastTransctionId = %d "), iLastTransactionId ));
   248 
   285 
   249     #ifdef __WINSCW__
       
   250     iDteId = aDteId;
       
   251     iChannel = aMessageType;
       
   252     iPluginType = aPluginType;
       
   253     HandleATResponse();
       
   254     return KErrNone;
       
   255     #endif
       
   256 
       
   257     TInt size = ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_CMDLINEBUFFER + aCmd.Length();
   286     TInt size = ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_CMDLINEBUFFER + aCmd.Length();
   258     
   287     
   259     TInt sizeWithFillers = size;
   288     TInt sizeWithFillers = size;
   260     while( sizeWithFillers % KAlignToFourBytes )
   289     while( sizeWithFillers % KAlignToFourBytes )
   261         {
   290         {
   262         sizeWithFillers++;
   291         sizeWithFillers++;
   263         }
   292         }
       
   293     OstTrace1( TRACE_NORMAL, DUP2_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand - Message length;sizeWithFillers=%d", sizeWithFillers );
   264     C_TRACE((_L("Message length %d"), sizeWithFillers));
   294     C_TRACE((_L("Message length %d"), sizeWithFillers));
   265 
   295 
   266     HBufC8* message = HBufC8::New( sizeWithFillers );
   296     HBufC8* message = HBufC8::New( sizeWithFillers );
   267     if( message )
   297     if( message )
   268       {
   298       {
   269       TPtr8 messageptr = message->Des();
   299       TPtr8 messageptr = message->Des();
   270       TIsiSend isimessage( messageptr, sizeWithFillers );
   300       TIsiSend isimessage( messageptr, sizeWithFillers );
   271       isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM );       
   301       isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM );       
   272       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_TID, transactionId );
   302       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_TID, transactionId );
   273       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_MESSAGEID, AT_MODEM_CMD_REQ );
   303       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_MESSAGEID, AT_MODEM_CMD_REQ );
   274       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_DTEID, aDteId );
   304       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_DTEID, iDteId );
   275       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_FILLERBYTE1, 0 );
   305       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_FILLERBYTE1, 0 );
       
   306       OstTrace1( TRACE_NORMAL, DUP3_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand - AT command length:;aCmd.Length()=%d", aCmd.Length() );
   276       C_TRACE((_L("AT command length: %d"), aCmd.Length()));
   307       C_TRACE((_L("AT command length: %d"), aCmd.Length()));
   277       isimessage.Set16bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_LENGTH, (TUint16) aCmd.Length() );
   308       isimessage.Set16bit( ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_LENGTH, (TUint16) aCmd.Length() );
   278 
   309 
   279       const TUint8* ptr = aCmd.Ptr();
   310       const TUint8* ptr = aCmd.Ptr();
   280       for ( TInt i = 0; i < aCmd.Length(); i++ )
   311       for ( TInt i = 0; i < aCmd.Length(); i++ )
   281           {
   312           {
       
   313           OstTraceExt3( TRACE_NORMAL, DUP4_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand - message;i=%d;ptr[i]=%x;charptr[i]=%c", i, ptr[i], ptr[i] );
   282           C_TRACE((_L("message %d, 0x%x '%c'"), i, ptr[i], ptr[i]));
   314           C_TRACE((_L("message %d, 0x%x '%c'"), i, ptr[i], ptr[i]));
   283           isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_CMDLINEBUFFER + i, ptr[i]);
   315           isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CMD_REQ_OFFSET_CMDLINEBUFFER + i, ptr[i]);
   284           }
   316           }
   285 
   317 
   286       for( TInt j = sizeWithFillers; j < size; j++ )
   318       for( TInt j = sizeWithFillers; j < size; j++ )
   287           {
   319           {
       
   320           OstTrace1( TRACE_NORMAL, DUP5_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand - Add filler;j=%d", j );
   288           C_TRACE((_L("Add filler [%d]"), j));
   321           C_TRACE((_L("Add filler [%d]"), j));
   289           isimessage.Set8bit( j , KFiller );
   322           isimessage.Set8bit( j , KFiller );
   290           }
   323           }
   291 
   324 
   292       isimessage.Complete();
   325       isimessage.Complete();
       
   326       OstTraceExt1( TRACE_NORMAL, DUP6_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand - Created ISI-message;messageptr=%s", messageptr );
   293       C_TRACE(_L("Created ISI-message"));
   327       C_TRACE(_L("Created ISI-message"));
   294       DUMP_MESSAGE( messageptr );
   328       DUMP_MESSAGE( messageptr );
   295 
   329 
   296       err = iIscApi->Send( messageptr );
   330       err = iIscApi->Send( messageptr );
   297       TRACE_ASSERT( err == KErrNone );
   331       TRACE_ASSERT( err == KErrNone );
   298       delete message;
   332       delete message;
   299       message = NULL;
   333       message = NULL;
   300       }
   334       }
   301     else
   335     else
   302       {
   336       {
       
   337       OstTrace0( TRACE_NORMAL, DUP7_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand - No memory - error in sending ISI message from heap" );
   303       C_TRACE(_L("No memory - error in sending ISI message from heap"));
   338       C_TRACE(_L("No memory - error in sending ISI message from heap"));
   304       TRACE_ASSERT_ALWAYS;
   339       TRACE_ASSERT_ALWAYS;
   305       }
   340       }
       
   341 
       
   342     OstTrace1( TRACE_NORMAL, DUP8_CMODEMATHANDLER_SENDATCOMMAND, "CModemAtHandler::SendATCommand;err=%d", err );
   306     C_TRACE (( _T("<<CModemAtHandler::SendATCommand() err: %d"), err ));
   343     C_TRACE (( _T("<<CModemAtHandler::SendATCommand() err: %d"), err ));
   307     return err;
   344     return err;
   308     }
   345     }
   309 
   346 
   310 void CModemAtHandler::OpenChannelL()
   347 void CModemAtHandler::OpenChannelL()
   311     {
   348     {
       
   349     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL" );
   312     C_TRACE (( _T("CModemAtHandler::OpenChannelL()") ));
   350     C_TRACE (( _T("CModemAtHandler::OpenChannelL()") ));
   313     TRequestStatus openStatus;
   351     TRequestStatus openStatus;
   314 
   352 
   315     iIscApi->Open( EIscNokiaAtController, openStatus, EOwnerThread );
   353     iIscApi->Open( iChannel, openStatus, EOwnerThread );
   316     User::WaitForRequest( openStatus );
   354     User::WaitForRequest( openStatus );
   317 
   355 
   318     TRACE_ASSERT( !openStatus.Int());
   356     TRACE_ASSERT( !openStatus.Int());
   319     
   357     
   320     if( iReceivedMessageBuffer )
   358     if( iReceivedMessageBuffer )
   325 
   363 
   326     iReceivedMessageBuffer = HBufC8::NewL(iMessageBufferSize);
   364     iReceivedMessageBuffer = HBufC8::NewL(iMessageBufferSize);
   327     TRACE_ASSERT(iReceivedMessageBuffer);
   365     TRACE_ASSERT(iReceivedMessageBuffer);
   328     iReceivePtr.Set( iReceivedMessageBuffer->Des() );
   366     iReceivePtr.Set( iReceivedMessageBuffer->Des() );
   329 
   367 
       
   368     OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL - Start receive ISI messages" );
   330     C_TRACE(_L("Start receive ISI messages"));
   369     C_TRACE(_L("Start receive ISI messages"));
   331     iIscApi->Receive( iStatus, iReceivePtr, iReceiveMessageLength );
   370     iIscApi->Receive( iStatus, iReceivePtr, iReceiveMessageLength );
   332 
   371 
   333     SetActive();
   372     SetActive();
   334     
   373     
       
   374     OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL - Start receive indications" );
   335     C_TRACE(_L("Start receive indications"));
   375     C_TRACE(_L("Start receive indications"));
   336     TBuf8<KIndicationOrderMsgLength> events;
   376     TBuf8<KIndicationOrderMsgLength> events;
   337     events.Append( PN_AT_MODEM );
   377     events.Append( PN_AT_MODEM );
   338     events.Append( AT_MODEM_INTERMEDIATE_DATA_IND );  
   378     events.Append( AT_MODEM_INTERMEDIATE_DATA_IND );  
   339     events.Append( PN_AT_MODEM );
   379     events.Append( PN_AT_MODEM );
   341     events.Append( PN_AT_MODEM );
   381     events.Append( PN_AT_MODEM );
   342     events.Append( AT_MODEM_UNSOLICITED_DATA_IND );  
   382     events.Append( AT_MODEM_UNSOLICITED_DATA_IND );  
   343     events.Append( PN_AT_MODEM );
   383     events.Append( PN_AT_MODEM );
   344     events.Append( AT_MODEM_DATA_REDIRECT_IND );  
   384     events.Append( AT_MODEM_DATA_REDIRECT_IND );  
   345 
   385 
   346 #ifndef NCP_COMMON_BRIDGE_FAMILY       
   386 #ifndef PIPECAMP_UNSUBSCRIBE_PNS_PEP_STATUS_IND 
       
   387     events.Append( PN_PIPE );
       
   388     events.Append( PNS_PEP_STATUS_IND );
       
   389 #endif    
   347     //name add ind
   390     //name add ind
   348     events.Append( PN_NAMESERVICE );
   391     events.Append( PN_NAMESERVICE );
   349     events.Append( PNS_NAME_ADD_IND );  
   392     events.Append( PNS_NAME_ADD_IND );  
   350     events.Append( PN_NAMESERVICE );
   393     events.Append( PN_NAMESERVICE );
   351     events.Append( PNS_NAME_REMOVE_IND );
   394     events.Append( PNS_NAME_REMOVE_IND );
   352     events.Append( PN_PIPE );
   395     
   353     events.Append( PNS_PEP_STATUS_IND );
   396     iIscApi->CustomFunction( EIscNokiaEventSubscribe, &events );
   354 #else
       
   355     events.Append( 0 );
       
   356     events.Append( 0 );  
       
   357     events.Append( 0 );
       
   358     events.Append( 0 );
       
   359     events.Append( 0 );
       
   360     events.Append( 0 );
       
   361 #endif
       
   362     
       
   363     iIscApi->CustomFunction(EIscNokiaEventSubscribe,&events);
       
   364     TBuf8<KObjectIdLength> objId;
   397     TBuf8<KObjectIdLength> objId;
   365     iIscApi->GetChannelInfo(EIscNokiaAtController, objId);
   398     iIscApi->GetChannelInfo( iChannel, objId );
   366     
   399 
   367     iPepObjId = (((TUint16)(objId[0]))<<KEightBits) + objId[1];
   400     iPepObjId = (((TUint16)(objId[0]))<<KEightBits) + objId[1];
       
   401     OstTrace1( TRACE_NORMAL, DUP3_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL;iPepObjId=%x", iPepObjId );
   368     C_TRACE((_L("PepObjId 0x%x"),iPepObjId));
   402     C_TRACE((_L("PepObjId 0x%x"),iPepObjId));
   369     iPipeController = CModemAtPipeController::NewL(*iIscApi, iPepObjId, *this); 
   403     iPipeController = CModemAtPipeController::NewL(*iIscApi, iPepObjId, *this); 
       
   404     OstTraceExt1( TRACE_NORMAL, DUP4_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL;iPipeController=%p", iPipeController );
   370     C_TRACE((_L("iPipeController 0x%x"),iPipeController ));
   405     C_TRACE((_L("iPipeController 0x%x"),iPipeController ));
   371     ASSERT_PANIC_ALWAYS( iPipeController );
   406     ASSERT_PANIC_ALWAYS( iPipeController );
       
   407     
       
   408     TBuf8<KObjectIdLength> dpObjId;
       
   409     OstTrace0( TRACE_NORMAL, DUP5_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL - GetChannelInfo(EIscNokiaDataport2)" );
       
   410     C_TRACE(( _T("GetChannelInfo() EIscNokiaDataport2") ));
       
   411     iIscApi->GetChannelInfo( EIscNokiaDataport2, dpObjId );
       
   412 
       
   413     OstTrace0( TRACE_NORMAL, DUP6_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL - GetChannelInfo() done" );
       
   414     C_TRACE(( _T("GetChannelInfo() done") ));
       
   415     iDataportObjId = (((TUint16)(dpObjId[0])) << KEightBits) + dpObjId[1];
       
   416     OstTrace1( TRACE_NORMAL, DUP7_CMODEMATHANDLER_OPENCHANNELL, "CModemAtHandler::OpenChannelL;iDataportObjId=%x", iDataportObjId );
       
   417     C_TRACE((_L("DataportObjId 0x%x"), iDataportObjId));
   372     }
   418     }
   373 
   419 
   374 
   420 
   375 void CModemAtHandler::HandleATResponse( const TIsiReceiveC& aMessage )
   421 void CModemAtHandler::HandleATResponse( const TIsiReceiveC& aMessage )
   376     {
   422     {
       
   423     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_HANDLEATRESPONSE, "CModemAtHandler::HandleATResponse" );
   377     C_TRACE (( _T("CModemAtHandler::HandleATResponse()") ));
   424     C_TRACE (( _T("CModemAtHandler::HandleATResponse()") ));
   378     
   425     
   379     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_DTEID ) ;
   426     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_DTEID ) ;
   380     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   427     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   381     TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   428     TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   382     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE+AT_MODEM_CMD_RESP_OFFSET_LENGTH );
   429     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_LENGTH );
       
   430     OstTraceExt3( TRACE_NORMAL, DUP2_CMODEMATHANDLER_HANDLEATRESPONSE, "CModemAtHandler::HandleATResponse;dteId=%d;AT (0) or nvram command (1):;command=%d;Response length;length=%d", dteId, command, length );
   383     C_TRACE(( _L("DteId: %d AT (0) or nvram command (1): %d Response length %d"), dteId, command, length ));
   431     C_TRACE(( _L("DteId: %d AT (0) or nvram command (1): %d Response length %d"), dteId, command, length ));
   384 
   432 
   385     /**
   433     /**
   386      * Plugintype can be read from transaction id:
   434      * Plugintype can be read from transaction id:
   387      * TUint8 pluginType = transactionId >> KTransactionIdBitsShift;
   435      * TUint8 pluginType = transactionId >> KTransactionIdBitsShift;
   388      * (TATPluginInterface) pluginType
   436      * (TATPluginInterface) pluginType
   389      *
   437      *
   390      * Current implementation uses first in first out response completion
   438      * Current implementation uses first in first out response completion
   391      * so plugintype is not needed.
   439      * so plugintype is not needed.
   392      */
   440      */
       
   441     OstTrace1( TRACE_NORMAL, DUP3_CMODEMATHANDLER_HANDLEATRESPONSE, "CModemAtHandler::HandleATResponse - ;Plugintype=%d", transactionId >> KTransactionIdBitsShift );
   393     C_TRACE(( _L("Plugintype: %d"), transactionId >> KTransactionIdBitsShift ));
   442     C_TRACE(( _L("Plugintype: %d"), transactionId >> KTransactionIdBitsShift ));
   394     
   443     
   395     iServer.HandleATResponse( dteId,  
   444     iServer.HandleATResponse( 
       
   445       dteId,  
       
   446       this,
   396       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_CMDLINEBUFFER, length),
   447       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_CMDLINEBUFFER, length),
   397       command );
   448       command );
   398     }
   449     }
   399 
   450 
   400 #ifdef __WINSCW__
   451 #ifdef __WINSCW__
   401 void CModemAtHandler::HandleATResponse( )
   452 void CModemAtHandler::HandleATResponse( )
   402     {
   453     {
   403     C_TRACE (( _T("CModemAtHandler::HandleATResponse()") ));
   454     OstTrace1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_HANDLEATRESPONSE, "CModemAtHandler::HandleATResponse;iDteId=%d", iDteId );
       
   455     C_TRACE (( _T("CModemAtHandler::HandleATResponse() %d"), iDteId ));
   404     //reply back immediately
   456     //reply back immediately
   405     const TInt KReplyLength(50);
   457     const TInt KReplyLength(50);
   406     TBuf8<KReplyLength> replyEmulated = _L8("\r\nAT TEST REPLY");
   458     TBuf8<KReplyLength> replyEmulated = _L8("\r\nAT TEST REPLY");
   407     replyEmulated.AppendNum(iEmulatedValue++);
   459     replyEmulated.AppendNum(iEmulatedValue++);
   408     replyEmulated.Append(_L8("\r\n"));
   460     replyEmulated.Append(_L8("\r\n"));
   409     iServer.HandleATResponse( iDteId, replyEmulated, 0 /* 0 = AT-cmd, 1 = nvram */);
   461     iServer.HandleATResponse( iDteId, this, replyEmulated, 0 /* 0 = AT-cmd, 1 = nvram */);
   410     }
   462     }
   411 #endif
   463 #endif
   412 
   464 
   413     
   465     
   414 TInt CModemAtHandler::Connect( const TUint8 aDteId )
   466 TInt CModemAtHandler::Connect( TUint8 aDevId, TUint8 aObjId )
   415     {
   467     {
   416     C_TRACE (( _T("CModemAtHandler::Connect()") ));
   468     OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_CONNECT, "CModemAtHandler::Connect;aDevId=%hhx;aObjId=%hhx", aDevId, aObjId );
       
   469     C_TRACE (( _T("CModemAtHandler::Connect() dev id: 0x%x, obj id: 0x%x"), aDevId, aObjId ));
   417 
   470 
   418     if( !iModemAtExistInCmt )
   471     if( !iModemAtExistInCmt )
   419         {
   472         {
       
   473         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_CONNECT, "CModemAtHandler::Connect - Connection failed, PN_AT_MODEM is not in CMT" );
   420         C_TRACE((_T("Connection failed, PN_AT_MODEM is not in CMT")));
   474         C_TRACE((_T("Connection failed, PN_AT_MODEM is not in CMT")));
   421         TRACE_ASSERT_ALWAYS;
   475         TRACE_ASSERT_ALWAYS;
   422         return KErrNotFound;
   476         return KErrNotFound;
   423         }
   477         }
   424     SetDisconnected( EFalse );
   478     SetDisconnected( EFalse );
   425 
   479 
   426 #ifdef __WINSCW__
   480     iPipeController->SendCreatePipeMessage( aDevId, aObjId );
       
   481 
   427     return KErrNone;
   482     return KErrNone;
   428 #endif
       
   429 
       
   430     TInt err( KErrNone );
       
   431 	TUint8 pipeHandle( KInvalidPipeHandle );
       
   432 
       
   433 #ifndef NCP_COMMON_BRIDGE_FAMILY
       
   434     pipeHandle = iPipeController->GetPipeHandle();
       
   435 #endif
       
   436 
       
   437     if( pipeHandle == KInvalidPipeHandle )
       
   438         {
       
   439         C_TRACE(( _L("Connecting with dteId %d. (RComm was not used before connecting the plug-ins)."), aDteId ));
       
   440         err = SendAtModemConnectReq( aDteId );
       
   441         }
       
   442     else
       
   443         {
       
   444         C_TRACE(( _L("Connecting with pipehandle %d."), pipeHandle ));
       
   445         err = SendAtModemConnectReq( pipeHandle );
       
   446         }
       
   447    
       
   448    if( err != KErrNone )
       
   449        {
       
   450        TRACE_ASSERT_ALWAYS;
       
   451        return KErrNotFound;
       
   452        }
       
   453 
       
   454     return KErrNone;
       
   455     }
   483     }
   456 
   484 
   457 void CModemAtHandler::SetDisconnected( TBool aIsDisconnected )
   485 void CModemAtHandler::SetDisconnected( TBool aIsDisconnected )
   458     {
   486     {
       
   487     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_SETDISCONNECTED, "CModemAtHandler::SetDisconnected;aIsDisconnected=%d", aIsDisconnected );
   459     C_TRACE (( _T("CModemAtHandler::SetDisconnected(%d)"),aIsDisconnected ));
   488     C_TRACE (( _T("CModemAtHandler::SetDisconnected(%d)"),aIsDisconnected ));
   460     iDisconnected = aIsDisconnected;
   489     iDisconnected = aIsDisconnected;
   461     }
   490     }
   462 
   491 
   463 TBool CModemAtHandler::IsDisconnected()
   492 TBool CModemAtHandler::IsDisconnected()
   464     {
   493     {
       
   494     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_ISDISCONNECTED, "CModemAtHandler::IsDisconnected;iDisconnected=%d", iDisconnected );
   465     C_TRACE (( _T("CModemAtHandler::IsDisconnected(%d)"),iDisconnected ));
   495     C_TRACE (( _T("CModemAtHandler::IsDisconnected(%d)"),iDisconnected ));
   466     return iDisconnected;
   496     return iDisconnected;
   467     }
   497     }
   468 
   498 
   469 TBool CModemAtHandler::IsPluginConnected()
   499 TBool CModemAtHandler::IsPluginConnected()
   470     {
   500     {
       
   501     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_ISPLUGINCONNECTED, "CModemAtHandler::IsPluginConnected;iServer.SessionCount()=%d", iServer.SessionCount() );
   471     C_TRACE (( _T("CModemAtHandler::IsPluginConnected() sessions: %d"), iServer.SessionCount() ));
   502     C_TRACE (( _T("CModemAtHandler::IsPluginConnected() sessions: %d"), iServer.SessionCount() ));
   472     return iServer.SessionCount() > 0;
   503     return iServer.SessionCount() > 0;
   473     }
   504     }
   474 
   505 
   475 void CModemAtHandler::RemovePipe( const TUint8 aDteId )
   506 void CModemAtHandler::RemovePipe()
   476     {
   507     {
   477     C_TRACE(( _T("CModemAtHandler::RemovePipe()")));
   508     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_REMOVEPIPE, "CModemAtHandler::RemovePipe;iDteId=%d", iDteId );
       
   509     C_TRACE(( _T("CModemAtHandler::RemovePipe() %d"), iDteId ));
   478     iDisconnected = ETrue;
   510     iDisconnected = ETrue;
   479 #ifndef NCP_COMMON_BRIDGE_FAMILY
   511     iPipeController->RemovePipe();
   480     iPipeController->RemovePipe( aDteId );
   512     }
   481 #endif
   513 
   482     }
   514 TInt CModemAtHandler::Disconnect()
   483 
   515     {
   484 TInt CModemAtHandler::Disconnect( const TUint8 aDteId )
   516     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_DISCONNECT, "CModemAtHandler::Disconnect;iDteId=%d", iDteId );
   485     {
   517     C_TRACE (( _T("CModemAtHandler::Disconnect(%d)"),iDteId ));
   486     C_TRACE (( _T("CModemAtHandler::Disconnect(%d)"),aDteId ));
       
   487     #ifdef __WINSCW__
       
   488     iDteId = aDteId;
       
   489     return KErrNone;
       
   490     #endif
       
   491  
   518  
   492     TInt size = ISI_HEADER_SIZE + SIZE_AT_MODEM_DISCONNECT_REQ;
   519     TInt size = ISI_HEADER_SIZE + SIZE_AT_MODEM_DISCONNECT_REQ;
   493     HBufC8* message = HBufC8::New( size );
   520     HBufC8* message = HBufC8::New( size );
   494     TRACE_ASSERT( message );
   521     TRACE_ASSERT( message );
   495     TPtr8 messageptr = message->Des();
   522     TPtr8 messageptr = message->Des();
   496     TIsiSend isimessage( messageptr, size );
   523     TIsiSend isimessage( messageptr, size );
   497     isimessage.Set8bit(ISI_HEADER_OFFSET_RESOURCEID,PN_AT_MODEM);
   524     isimessage.Set8bit(ISI_HEADER_OFFSET_RESOURCEID,PN_AT_MODEM);
   498     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_TID, 0);
   525     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_TID, 0);
   499     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_MESSAGEID,
   526     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_MESSAGEID,
   500       AT_MODEM_DISCONNECT_REQ);
   527       AT_MODEM_DISCONNECT_REQ);
   501     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_DTEID, aDteId);
   528     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_DTEID, iDteId);
   502     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_FILLERBYTE1, KFiller);
   529     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_DISCONNECT_REQ_OFFSET_FILLERBYTE1, KFiller);
   503     isimessage.Complete();
   530     isimessage.Complete();
   504 
   531 
       
   532     OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_DISCONNECT, "CModemAtHandler::Disconnect - Sending AT_MODEM_DISCONNECT_REQ" );
   505     C_TRACE (( _T("CModemAtHandler::Disconnect Sending AT_MODEM_DISCONNECT_REQ")));
   533     C_TRACE (( _T("CModemAtHandler::Disconnect Sending AT_MODEM_DISCONNECT_REQ")));
   506     TInt err = iIscApi->Send(messageptr);
   534     TInt err = iIscApi->Send(messageptr);
   507     TRACE_ASSERT( err == KErrNone );
   535     TRACE_ASSERT( err == KErrNone );
   508     delete message;
   536     delete message;
   509     return err;
   537     return err;
   511 
   539 
   512 
   540 
   513 
   541 
   514 void CModemAtHandler::HandleModemConnectResp( const TIsiReceiveC& aMessage )
   542 void CModemAtHandler::HandleModemConnectResp( const TIsiReceiveC& aMessage )
   515     {
   543     {
   516     C_TRACE (( _T("CModemAtHandler::HandleModemConnectResp()") ));
   544     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_HANDLEMODEMCONNECTRESP, "CModemAtHandler::HandleModemConnectResp;iDteId=%d", iDteId );
       
   545     C_TRACE (( _T("CModemAtHandler::HandleModemConnectResp() %d"), iDteId ));
   517     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CONNECT_RESP_OFFSET_DTEID );
   546     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CONNECT_RESP_OFFSET_DTEID );
   518     TInt status = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CONNECT_RESP_OFFSET_RESULT );
   547     TInt status = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CONNECT_RESP_OFFSET_RESULT );
   519     TInt err = KErrGeneral;
   548     TInt err = KErrGeneral;
   520     if( status == AT_MODEM_RESULT_OK )
   549     if( status == AT_MODEM_RESULT_OK )
   521         {
   550         {
       
   551         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_HANDLEMODEMCONNECTRESP, "CModemAtHandler::HandleModemConnectResp - Connected ok, AT_MODEM_RESULT_OK received" );
   522         C_TRACE(_L("Connected ok, AT_MODEM_RESULT_OK received"));
   552         C_TRACE(_L("Connected ok, AT_MODEM_RESULT_OK received"));
   523         err = KErrNone;
   553         err = KErrNone;
   524         }
   554         }
   525     else
   555     else
   526         {
   556         {
       
   557         OstTrace1( TRACE_NORMAL, DUP2_CMODEMATHANDLER_HANDLEMODEMCONNECTRESP, "CModemAtHandler::HandleModemConnectResp - Connection failed, AT_MODEM_RESULT_ERROR received;status=%d", status );
   527         C_TRACE((_L("Connection failed, AT_MODEM_RESULT_ERROR received (%d)"), status));
   558         C_TRACE((_L("Connection failed, AT_MODEM_RESULT_ERROR received (%d)"), status));
   528         TRACE_ASSERT_ALWAYS;
       
   529         }
   559         }
   530 
   560 
   531     iServer.SetDteIdAndConnect( dteId, err );
   561     iServer.SetDteIdAndConnect( dteId, err );
   532     }
   562     }
   533 
   563 
   534 
   564 
   535 void CModemAtHandler::HandleSignalInd( const TIsiReceiveC& aMessage )
   565 void CModemAtHandler::HandleSignalInd( const TIsiReceiveC& aMessage )
   536     {
   566     {
   537     C_TRACE (( _T("CModemAtHandler::HandleSignalInd()") ));
   567     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;iDteId=%d", iDteId );
       
   568     C_TRACE (( _T("CModemAtHandler::HandleSignalInd() (%d)"), iDteId ));
       
   569 
   538     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_IND_OFFSET_DTEID );
   570     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_IND_OFFSET_DTEID );
   539     iServer.HandleSignalInd( dteId );
   571     OstTrace1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;dteId=%x", dteId );
       
   572     C_TRACE(( _L("dteId: 0x%x"), dteId ));
       
   573 
       
   574     if( iDteId != dteId )
       
   575         {
       
   576         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND is ignored because of it's received from diffrent dte." );
       
   577         C_TRACE (( _T("AT_MODEM_SIGNAL_IND is ignored because of it's received from diffrent dte.") ));
       
   578         return;
       
   579         }
       
   580 
       
   581     if( IsTextMessageMode() )
       
   582         {
       
   583         OstTrace0( TRACE_NORMAL, DUP3_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND is ignored during text message mode." );
       
   584         C_TRACE (( _T("AT_MODEM_SIGNAL_IND is ignored during text message mode.") ));
       
   585         return;
       
   586         }
       
   587 
       
   588     // Go through indications. Note that common plugin handles only these:
       
   589     // echo, verbose, quiet, escape char, linefeed char and backspace char.
       
   590 
       
   591     
       
   592 
       
   593     TUint8 count = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_IND_OFFSET_NOOFSUBBLOCKS );
       
   594     OstTrace1( TRACE_NORMAL, DUP4_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - subblock;count=%d", count );
       
   595     C_TRACE(( _L("subblock count: 0x%x"), count ));
       
   596     if( count > 0 )
       
   597         {
       
   598         TInt length( ISI_HEADER_SIZE + SIZE_AT_MODEM_SIGNAL_IND );
       
   599         TUint8 messageId( 0 );
       
   600         TUint8 echoValue( KInitialValue );
       
   601         TUint8 escapeChar( KInitialValue );
       
   602         TUint8 flowControlOutward( AT_MODEM_FLOW_CONTROL_SW );
       
   603         TUint8 flowControlInward( AT_MODEM_FLOW_CONTROL_SW );
       
   604         TUint8 flowControlExtract( AT_MODEM_WITH_EXTRACT );
       
   605         TUint8 dcdValue( AT_MODEM_DCD_OFF );
       
   606         TUint8 dsrValue( AT_MODEM_DSR_OFF );
       
   607         for( TInt i = 0; i < count; i++ )
       
   608             {
       
   609             messageId = aMessage.Get8bit( length );
       
   610             OstTrace1( TRACE_NORMAL, DUP5_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;messageId=%x", messageId );
       
   611             C_TRACE((_L("messageId: 0x%x"), messageId));
       
   612 
       
   613             switch( messageId )
       
   614                 {
       
   615                 case AT_MODEM_SB_ECHO_VALUE:
       
   616                     {
       
   617                     echoValue = aMessage.Get8bit( length +
       
   618                       AT_MODEM_SB_ECHO_VALUE_OFFSET_ECHOVALUE );
       
   619                     OstTrace1( TRACE_NORMAL, DUP6_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;echoValue=%x", echoValue );
       
   620                     C_TRACE(( _L("echo value: 0x%x"), echoValue));
       
   621                     length += SIZE_AT_MODEM_SB_ECHO_VALUE;
       
   622                     break;
       
   623                     }
       
   624                 case AT_MODEM_SB_DTE_PARAMS:
       
   625                     {
       
   626                     length += SIZE_AT_MODEM_SB_DTE_PARAMS;
       
   627                     break;
       
   628                     }
       
   629                 case AT_MODEM_SB_FLOW_CTRL:
       
   630                     {
       
   631                     flowControlOutward = aMessage.Get8bit( length +
       
   632                       AT_MODEM_SB_FLOW_CTRL_OFFSET_FLOWCTRLOUTWARDDCE );
       
   633                     C_TRACE(( _L("Flow control outward used by DCE towards DTE: 0x%x"), flowControlOutward ));
       
   634                     
       
   635                     flowControlInward = aMessage.Get8bit( length +
       
   636                       AT_MODEM_SB_FLOW_CTRL_OFFSET_FLOWCTRLINWARDDTE );
       
   637                     C_TRACE(( _L("Flow control inward from DTE: 0x%x"), flowControlInward ));
       
   638                     
       
   639                     flowControlExtract = aMessage.Get8bit( length +
       
   640                       AT_MODEM_SB_FLOW_CTRL_OFFSET_EXTRACT );
       
   641                     C_TRACE(( _L("extract: 0x%x"), flowControlExtract ));
       
   642 
       
   643                     TBuf8<KFlowCtrlDataLength> data;
       
   644                     switch( flowControlOutward )
       
   645                         {
       
   646                         case AT_MODEM_FLOW_CONTROL_SW:
       
   647                             data.Append( PEP_COMM_FLOW_CTRL_SW );
       
   648                             break;
       
   649                         case AT_MODEM_FLOW_CONTROL_NONE:
       
   650                             data.Append( PEP_COMM_FLOW_CTRL_NONE );
       
   651                             break;
       
   652                         case AT_MODEM_FLOW_CONTROL_HW:
       
   653                             data.Append( PEP_COMM_FLOW_CTRL_HW );
       
   654                             break;
       
   655                         default:
       
   656                             data.Append( PEP_COMM_FLOW_CTRL_SW );
       
   657                             break;
       
   658                         }
       
   659                      switch( flowControlInward )
       
   660                         {
       
   661                         case AT_MODEM_FLOW_CONTROL_SW:
       
   662                             data.Append( PEP_COMM_FLOW_CTRL_SW );
       
   663                             break;
       
   664                         case AT_MODEM_FLOW_CONTROL_NONE:
       
   665                             data.Append( PEP_COMM_FLOW_CTRL_NONE );
       
   666                             break;
       
   667                         case AT_MODEM_FLOW_CONTROL_HW:
       
   668                             data.Append( PEP_COMM_FLOW_CTRL_HW );
       
   669                             break;
       
   670                         default:
       
   671                             data.Append( PEP_COMM_FLOW_CTRL_SW );
       
   672                             break;
       
   673                         }
       
   674                     switch( flowControlExtract )
       
   675                         {
       
   676                         case AT_MODEM_NO_EXTRACT:
       
   677                             data.Append( PEP_COMM_FLOW_CTRL_NO_EXTRACT );
       
   678                             break;
       
   679                         case AT_MODEM_WITH_EXTRACT:
       
   680                             data.Append( PEP_COMM_FLOW_CTRL_EXTRACT );
       
   681                             break;
       
   682                         default:
       
   683                             data.Append( PEP_COMM_FLOW_CTRL_EXTRACT );
       
   684                             break;
       
   685                         }
       
   686 
       
   687                     TPipeInfo::EPipeState pipeState = iPipeController->GetPipeState();
       
   688                     if( pipeState != TPipeInfo::EPipeNoPipe &&
       
   689                         pipeState != TPipeInfo::EPipeRemoving )
       
   690                         {
       
   691                         iPipeController->SendPepCtrlReq( PEP_COMM_CTRL_ID_FLOW_CTRL, data );
       
   692                         }
       
   693                     length += SIZE_AT_MODEM_SB_FLOW_CTRL;
       
   694                     break;
       
   695                     }
       
   696                 case AT_MODEM_SB_ESCAPE_PARAMS:
       
   697                     {
       
   698                     escapeChar = aMessage.Get8bit( length +
       
   699                       AT_MODEM_SB_ESCAPE_PARAMS_OFFSET_ESCAPECHAR );
       
   700                     OstTrace1( TRACE_NORMAL, DUP7_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;escapeChar=%x", escapeChar );
       
   701                     C_TRACE(( _L("escape character: 0x%x"),  escapeChar ));
       
   702                     length += SIZE_AT_MODEM_SB_ESCAPE_PARAMS;
       
   703                     break;
       
   704                     }
       
   705                 case AT_MODEM_SB_AUTOBAUD:
       
   706                     {
       
   707                     length += SIZE_AT_MODEM_SB_AUTOBAUD;
       
   708                     break;
       
   709                     }
       
   710                 case AT_MODEM_SB_DTE_SIGNALS:
       
   711                     {
       
   712                    dcdValue = aMessage.Get8bit( length +
       
   713                       AT_MODEM_SB_DTE_SIGNALS_OFFSET_DCDSIGNAL );
       
   714                     OstTrace1( TRACE_NORMAL, DUP8_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;dcdValue=%x", dcdValue );
       
   715 					C_TRACE(( _L("DCD value: 0x%x"), dcdValue));
       
   716                     
       
   717                     dsrValue = aMessage.Get8bit( length +
       
   718                       AT_MODEM_SB_DTE_SIGNALS_OFFSET_DSRSIGNAL );
       
   719                     OstTrace1( TRACE_NORMAL, DUP9_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd;dsrValue=%x", dsrValue );
       
   720 					C_TRACE(( _L("DSR value: 0x%x"), dsrValue));
       
   721                     TPipeInfo::EPipeState pipeState = iPipeController->GetPipeState();
       
   722                     if( pipeState != TPipeInfo::EPipeNoPipe &&
       
   723                         pipeState != TPipeInfo::EPipeRemoving )
       
   724                         {
       
   725                         if( AT_MODEM_DCD_OFF == dcdValue )
       
   726                             {
       
   727                             iPipeController->SendPepStatusIndSignal( PEP_COMM_SIGNAL_DCD_OFF );
       
   728                             }
       
   729                         else if( AT_MODEM_DCD_ON == dcdValue )
       
   730                             {
       
   731                             iPipeController->SendPepStatusIndSignal( PEP_COMM_SIGNAL_DCD_ON );
       
   732                             }
       
   733                         
       
   734                         if( AT_MODEM_DSR_OFF == dsrValue )
       
   735                             {
       
   736                             iPipeController->SendPepStatusIndSignal( PEP_COMM_SIGNAL_DSR_OFF );
       
   737                             }
       
   738                         else if( AT_MODEM_DSR_ON == dsrValue )
       
   739                             {
       
   740                             iPipeController->SendPepStatusIndSignal( PEP_COMM_SIGNAL_DSR_ON );
       
   741                             }
       
   742                         }
       
   743                     length += SIZE_AT_MODEM_SB_DTE_SIGNALS;
       
   744                     break;
       
   745                     }
       
   746                 default:
       
   747                     {
       
   748                     TRACE_ASSERT_ALWAYS;
       
   749                     break;
       
   750                     }
       
   751                 }
       
   752             }
       
   753 
       
   754         if( escapeChar != KInitialValue )
       
   755             {
       
   756             OstTrace0( TRACE_NORMAL, DUP10_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - Escape char received, it will be sent to dataport." );
       
   757             C_TRACE(( _T("Escape char received, it will be sent to dataport.") ));
       
   758 
       
   759             // Dataport should have the pipehandle and escape character. It defaults to handle 0xff and escape char '+'.
       
   760             TPipeInfo::EPipeState pipeState = iPipeController->GetPipeState();
       
   761             if( pipeState != TPipeInfo::EPipeNoPipe &&
       
   762                 pipeState != TPipeInfo::EPipeRemoving )
       
   763                 {
       
   764                 TBuf8<KEscapeDataLength> data;
       
   765                 data.Append( escapeChar );
       
   766                 data.Append( KEscapeTime );
       
   767                 iPipeController->SendPepCtrlReq( PEP_COMM_CTRL_ID_ESCAPE, data );
       
   768                 }
       
   769 
       
   770             }
       
   771         if( IsPipeInDataMode() )
       
   772             {
       
   773             OstTrace0( TRACE_NORMAL, DUP11_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND is ignored during data mode (exception: escape char is allowed)" );
       
   774             C_TRACE (( _T("AT_MODEM_SIGNAL_IND is ignored during data mode (exception: escape char is allowed)") ));
       
   775             return;
       
   776             }
       
   777 
       
   778         if( echoValue == KInitialValue )
       
   779             {
       
   780             OstTrace0( TRACE_NORMAL, DUP12_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND not handled (no echo changes)" );
       
   781             C_TRACE(( _T("AT_MODEM_SIGNAL_IND not handled (no echo changes)") ));
       
   782             return;
       
   783             }
       
   784         TInt sessionCount = iServer.SessionCount();
       
   785         if( sessionCount == KSessionIndLimit )
       
   786             {
       
   787             OstTrace0( TRACE_NORMAL, DUP13_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND not handled (connect ongoing)" );
       
   788             C_TRACE(( _T("AT_MODEM_SIGNAL_IND not handled (connect ongoing)") ));
       
   789             return;
       
   790             }
       
   791         if( iServer.IsSettingQueryOngoing() )
       
   792             {
       
   793             // V, Q or E command is not ongoing, handle AT_MODEM_SIGNAL_IND always.
       
   794             OstTrace0( TRACE_NORMAL, DUP14_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND not handled (Q, V or E query ongoing)" );
       
   795             C_TRACE(( _T("AT_MODEM_SIGNAL_IND not handled (Q, V or E query ongoing)") ));
       
   796             return;
       
   797             }
       
   798 
       
   799         if( !iServer.IsEchoNotified( echoValue ) )
       
   800             {
       
   801             OstTrace0( TRACE_NORMAL, DUP15_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - Handling AT_MODEM_SIGNAL_IND (new echo value received, more than 1 session open)" );
       
   802             C_TRACE(( _T("Handling AT_MODEM_SIGNAL_IND (new echo value received, more than 1 session open)") ));
       
   803             iServer.HandleSignalInd( dteId, KErrNone );
       
   804             return;
       
   805             }
       
   806 
       
   807         OstTrace1( TRACE_NORMAL, DUP16_CMODEMATHANDLER_HANDLESIGNALIND, "CModemAtHandler::HandleSignalInd - AT_MODEM_SIGNAL_IND not handled.;sessionCount=%d", sessionCount );
       
   808         C_TRACE(( _L("AT_MODEM_SIGNAL_IND not handled. sessionCount: %d"),  sessionCount ));
       
   809         }
       
   810     // no else
   540     }
   811     }
   541 
   812 
   542 void CModemAtHandler::HandleUnsolicitedData( const TIsiReceiveC& aMessage )
   813 void CModemAtHandler::HandleUnsolicitedData( const TIsiReceiveC& aMessage )
   543     {
   814     {
   544     C_TRACE (( _T("CModemAtHandler::HandleUnsolicitedData()") ));
   815     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE+AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_DTEID );
   545     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE+ AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_LENGTH );
       
   546     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE+AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_LENGTH );
   816     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE+AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_LENGTH );
   547     
   817     OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_HANDLEUNSOLICITEDDATA, "CModemAtHandler::HandleUnsolicitedData;dteId=%d;iDteId=%d", dteId, iDteId );
   548     iServer.HandleUnsolicitedData( dteId,
   818     C_TRACE (( _T("CModemAtHandler::HandleUnsolicitedData() %d %d"), dteId, iDteId ));
   549       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_UNSOLICITEDDATABUFFER,
   819     if( iDteId == dteId ||
   550       length ) );
   820         KReservedDteId == dteId )
       
   821         {
       
   822         iServer.HandleUnsolicitedData( dteId,
       
   823           aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_UNSOLICITEDDATABUFFER,
       
   824           length ) );
       
   825         }
       
   826     // no else
   551     }
   827     }
   552 
   828 
   553 
   829 
   554 void CModemAtHandler::HandleIntermediateDataInd( const TIsiReceiveC& aMessage )
   830 void CModemAtHandler::HandleIntermediateDataInd( const TIsiReceiveC& aMessage )
   555     {
   831     {
   556     C_TRACE (( _T("CModemAtHandler::HandleIntermediateDataInd()") ));
       
   557     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_DTEID );
   832     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_DTEID );
   558     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_LENGTH );
   833     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_LENGTH );
   559      
   834     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_HANDLEINTERMEDIATEDATAIND, "CModemAtHandler::HandleIntermediateDataInd;iDteId=%d", iDteId );
   560     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   835     C_TRACE (( _T("CModemAtHandler::HandleIntermediateDataInd() %d"), iDteId ));
   561     
   836 
   562     C_TRACE((_L("transactionId from %d"), transactionId));
   837     if( iDteId == dteId )
   563     transactionId = iLastTransactionId;
   838         {
   564     C_TRACE((_L("transactionId after setting it to iLastTransactionId: %d"), transactionId));
   839         TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   565     
   840 
   566     TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   841         OstTrace1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_HANDLEINTERMEDIATEDATAIND, "CModemAtHandler::HandleIntermediateDataInd - transactionId from;transactionId=%d", transactionId );
   567     TUint8 pluginType = transactionId >> KTransactionIdBitsShift;
   842         C_TRACE((_L("transactionId from %d"), transactionId));
   568     C_TRACE((_L("dteId %d, command %d (AT=0,NVRAM=1), pluginType = %d (atext=0,common=1)"), dteId, command, pluginType));
   843         transactionId = iLastTransactionId;
   569     
   844         OstTrace1( TRACE_NORMAL, DUP2_CMODEMATHANDLER_HANDLEINTERMEDIATEDATAIND, "CModemAtHandler::HandleIntermediateDataInd - transactionId after setting it to iLastTransactionId:;transactionId=%d", transactionId );
   570     iServer.HandleIntermediateDataInd( dteId,
   845         C_TRACE((_L("transactionId after setting it to iLastTransactionId: %d"), transactionId));
   571       (TATPluginInterface) pluginType,
   846 
   572       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_INTERMEDIATEDATABUFFER,
   847         TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   573       length),
   848         TUint8 pluginType = transactionId >> KTransactionIdBitsShift;
   574       command );
   849         OstTraceExt4( TRACE_NORMAL, DUP3_CMODEMATHANDLER_HANDLEINTERMEDIATEDATAIND, "CModemAtHandler::HandleIntermediateDataInd;dteId=%d;command=%d;(AT=0,NVRAM=1);pluginType=%d;(atext=0,common=1);iDteId=%d", dteId, command, pluginType, iDteId );
       
   850         C_TRACE((_L("dteId %d, command %d (AT=0,NVRAM=1), pluginType = %d (atext=0,common=1)"), dteId, command, pluginType));
       
   851 
       
   852         iServer.HandleIntermediateDataInd( dteId,
       
   853             (TATPluginInterface) pluginType,
       
   854             aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_INTERMEDIATEDATABUFFER,
       
   855             length),
       
   856             command );
       
   857         }
   575     }
   858     }
   576 
   859 
   577 
   860 
   578 void CModemAtHandler::HandleRedirectInd( const TIsiReceiveC& aMessage ) 
   861 void CModemAtHandler::HandleRedirectInd( const TIsiReceiveC& aMessage ) 
   579     {
   862     {
   580     C_TRACE (( _T("CModemAtHandler::HandleRedirectInd()") ));
       
   581   
       
   582     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_DTEID );
   863     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_DTEID );
   583     TInt newSecondDevId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_DEVICEID );
   864     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_HANDLEREDIRECTIND, "CModemAtHandler::HandleRedirectInd;iChannel=%d", iChannel );
   584     TInt newSecondObjId = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_SERVERID );
   865     C_TRACE (( _T("CModemAtHandler::HandleRedirectInd() %d %d"), iDteId, iChannel ));
   585 #ifndef NCP_COMMON_BRIDGE_FAMILY
   866     if( iDteId == dteId )
   586     iPipeController->RedirectPipe( dteId, newSecondDevId, newSecondObjId ); 
   867         {
   587 #endif
   868         TInt newSecondDevId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_DEVICEID );
   588     }
   869         TInt newSecondObjId = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_SERVERID );
   589 
   870         iPipeController->RedirectPipe( newSecondDevId, newSecondObjId ); 
   590 void CModemAtHandler::SendAtModemDataRedirectResultReq( const TUint8 aDteId, const TUint aResult )
   871         }
   591     {
   872     else
       
   873         {
       
   874         TRACE_ASSERT_ALWAYS;
       
   875         }
       
   876     }
       
   877 
       
   878 void CModemAtHandler::SendAtModemDataRedirectResultReq( const TUint aResult )
       
   879     {
       
   880     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_SENDATMODEMDATAREDIRECTRESULTREQ, "CModemAtHandler::SendAtModemDataRedirectResultReq" );
   592     C_TRACE (( _T("CModemAtHandler::SendAtModemDataRedirectResultReq()") ));
   881     C_TRACE (( _T("CModemAtHandler::SendAtModemDataRedirectResultReq()") ));
   593     HBufC8* message = HBufC8::New( ISI_HEADER_SIZE + SIZE_AT_MODEM_DATA_REDIRECT_RESULT_REQ );
   882     HBufC8* message = HBufC8::New( ISI_HEADER_SIZE + SIZE_AT_MODEM_DATA_REDIRECT_RESULT_REQ );
   594     C_TRACE((_L("Sending AT_MODEM_DATA_REDIRECT_RESULT_REQ dteid %d result %d"), aDteId, aResult));
   883     OstTraceExt2( TRACE_NORMAL, DUP1_CMODEMATHANDLER_SENDATMODEMDATAREDIRECTRESULTREQ, "CModemAtHandler::SendAtModemDataRedirectResultReq - Sending AT_MODEM_DATA_REDIRECT_RESULT_REQ;iDteId=%d;aResult=%d", (TUint)iDteId, aResult );
       
   884     C_TRACE((_L("Sending AT_MODEM_DATA_REDIRECT_RESULT_REQ dteid %d result %d"), iDteId, aResult));
   595     
   885     
   596     TPtr8 messageptr = message->Des();
   886     TPtr8 messageptr = message->Des();
   597     TIsiSend isimessage( messageptr, ISI_HEADER_SIZE + SIZE_AT_MODEM_DATA_REDIRECT_RESULT_REQ );
   887     TIsiSend isimessage( messageptr, ISI_HEADER_SIZE + SIZE_AT_MODEM_DATA_REDIRECT_RESULT_REQ );
   598     isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM);       
   888     isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM);       
   599     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_TID, 0 );
   889     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_TID, 0 );
   600     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_MESSAGEID,
   890     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_MESSAGEID,
   601       AT_MODEM_DATA_REDIRECT_RESULT_REQ );
   891       AT_MODEM_DATA_REDIRECT_RESULT_REQ );
   602     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_DTEID ,aDteId );
   892     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_DTEID ,iDteId );
   603     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_RESULT ,aResult );
   893     isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_REQ_OFFSET_RESULT ,aResult );
   604     isimessage.Complete();
   894     isimessage.Complete();
   605         
   895         
       
   896     OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_SENDATMODEMDATAREDIRECTRESULTREQ, "CModemAtHandler::SendAtModemDataRedirectResultReq - Created ISI-message" );
   606     C_TRACE(_L("Created ISI-message"));
   897     C_TRACE(_L("Created ISI-message"));
   607     for( TInt i = 0 ; i < (ISI_HEADER_SIZE + SIZE_AT_MODEM_DATA_REDIRECT_RESULT_REQ); i++ ) 
   898     for( TInt i = 0 ; i < (ISI_HEADER_SIZE + SIZE_AT_MODEM_DATA_REDIRECT_RESULT_REQ); i++ ) 
   608         {
   899         {
       
   900         OstTraceExt2( TRACE_NORMAL, DUP3_CMODEMATHANDLER_SENDATMODEMDATAREDIRECTRESULTREQ, "CModemAtHandler - ;i=%d;%x", (TUint)i, (TUint)((*message)[i]) );
   609         C_TRACE((_L("[%d] 0x%x"),i ,(*message)[i]) );
   901         C_TRACE((_L("[%d] 0x%x"),i ,(*message)[i]) );
   610         }
   902         }
   611 
   903 
   612     TInt err = iIscApi->Send( messageptr );
   904     TInt err = iIscApi->Send( messageptr );
   613     TRACE_ASSERT( err == KErrNone );
   905     TRACE_ASSERT( err == KErrNone );
   616     }
   908     }
   617 
   909 
   618 
   910 
   619 void CModemAtHandler::HandleRedirectResultResp(const TIsiReceiveC& aMessage)
   911 void CModemAtHandler::HandleRedirectResultResp(const TIsiReceiveC& aMessage)
   620     {
   912     {
   621     C_TRACE (( _T("CModemAtHandler::HandleRedirectResultResp()") ));
   913     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_HANDLEREDIRECTRESULTRESP, "CModemAtHandler::HandleRedirectResultResp;iDteId=%d", iDteId );
       
   914     C_TRACE (( _T("CModemAtHandler::HandleRedirectResultResp() %d"), iDteId ));
   622     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_RESP_OFFSET_DTEID );
   915     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_RESP_OFFSET_DTEID );
   623     TInt error = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_RESP_OFFSET_RESULT );
   916     TInt error = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_RESP_OFFSET_RESULT );
       
   917     OstTrace1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_HANDLEREDIRECTRESULTRESP, "CModemAtHandler::HandleRedirectResultResp;dteId=%d", dteId );
   624     C_TRACE((_L("CModemAtHandler::HandleRedirectResultResp() dte %d"), dteId));
   918     C_TRACE((_L("CModemAtHandler::HandleRedirectResultResp() dte %d"), dteId));
   625     
   919     
   626     if( error == AT_MODEM_RESULT_ERROR ) 
   920     if( error == AT_MODEM_RESULT_ERROR ) 
   627         {
   921         {
   628         C_TRACE(_L("CModemAtHandler::HandleRedirectResultResp() AT_MODEM_RESULT_ERROR received, redirect failed"));
   922         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_HANDLEREDIRECTRESULTRESP, "CModemAtHandler::HandleRedirectResultResp - AT_MODEM_RESULT_ERROR -> COMMAND MODE" );
   629         TRACE_ASSERT_ALWAYS;
   923         C_TRACE(_L("AT_MODEM_RESULT_ERROR -> COMMAND MODE"));
       
   924         iServer.HandleCommandModeChange( dteId, ECommandMode );
   630         }
   925         }
   631     else 
   926     else 
   632         {
   927         {
       
   928         OstTrace0( TRACE_NORMAL, DUP3_CMODEMATHANDLER_HANDLEREDIRECTRESULTRESP, "CModemAtHandler::HandleRedirectResultResp - redirect OK, enable pipe" );
   633         C_TRACE(_L("CModemAtHandler::HandleRedirectResultResp() redirect OK"));
   929         C_TRACE(_L("CModemAtHandler::HandleRedirectResultResp() redirect OK"));
   634         }
   930         TPipeInfo::EPipeState pipeState = iPipeController->GetPipeState();
   635     
   931         OstTrace1( TRACE_NORMAL, DUP4_CMODEMATHANDLER_HANDLEREDIRECTRESULTRESP, "CModemAtHandler::HandleRedirectResultResp;pipeState=%d", pipeState );
   636     }
   932         C_TRACE((_L("CModemAtHandler::HandleRedirectResultResp() pipe state %d"), pipeState));
       
   933         if( pipeState != TPipeInfo::EPipeDisabled )
       
   934             {
       
   935             iPipeController->SendEnablePipeReq();
       
   936             }
       
   937         }
       
   938     }
       
   939 
   637 void CModemAtHandler::HandleCommandModeChange( TCommandMode aMode )
   940 void CModemAtHandler::HandleCommandModeChange( TCommandMode aMode )
   638     {
   941     {
   639     C_TRACE(( _T("CModemAtHandler::HandleCommandModeChange() aMode: %d"), (TInt) aMode ));
   942     OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_HANDLECOMMANDMODECHANGE, "CModemAtHandler::HandleCommandModeChange;aMode=%d;iDteId=%d", (TUint)aMode, (TUint)iDteId );
   640     iServer.HandleCommandModeChange( aMode );
   943     C_TRACE(( _T("CModemAtHandler::HandleCommandModeChange() aMode: %d dteId: %d"), (TInt) aMode, iDteId ));
   641     }
   944     iServer.HandleCommandModeChange( iDteId, aMode );
   642 
   945     }
   643 TInt CModemAtHandler::SendEscapeSignalDetection( const TUint8 aDteId )
   946 
   644     {
   947 TInt CModemAtHandler::SendSignalDetection( const TUint8 aSignal )
   645     C_TRACE((_T("CModemAtHandler::SendEscapeSignalDetection(%d)"), aDteId));
   948     {
   646 #ifdef __WINSCW__
   949     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_SENDSIGNALDETECTION, "CModemAtHandler::SendSignalDetection;iDteId=%d", iDteId );
   647     iDteId = aDteId;
   950     C_TRACE((_T("CModemAtHandler::SendSignalDetection( dteId: %d, aSignal: 0x%x)"), iDteId, aSignal ));
   648     return KErrNone;
   951 
   649 #endif
       
   650   
       
   651     TInt error( KErrGeneral );  
   952     TInt error( KErrGeneral );  
   652     TUint msgSize( ISI_HEADER_SIZE + SIZE_AT_MODEM_SIGNAL_DETECTED_REQ );
   953     TUint msgSize( ISI_HEADER_SIZE + SIZE_AT_MODEM_SIGNAL_DETECTED_REQ );
   653     TUint size( msgSize + SIZE_AT_MODEM_SB_SIGNAL_DETECTED ); 
   954     TUint size( msgSize + SIZE_AT_MODEM_SB_SIGNAL_DETECTED ); 
   654     HBufC8* message = HBufC8::New( size );
   955     HBufC8* message = HBufC8::New( size );
   655     if( message )
   956     if( message )
   656       {
   957         {
   657       TPtr8 messageptr = message->Des();
   958         TPtr8 messageptr = message->Des();
   658       TIsiSend isimessage( messageptr, size );
   959         TIsiSend isimessage( messageptr, size );
   659       isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM );
   960         isimessage.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM );
   660       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_TID, 0x00 );
   961         isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_TID, 0x00 );
   661       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_MESSAGEID,
   962         isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_MESSAGEID,
   662         AT_MODEM_SIGNAL_DETECTED_REQ );
   963           AT_MODEM_SIGNAL_DETECTED_REQ );
   663       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_DTEID, aDteId );
   964         isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_DTEID, iDteId );
   664       isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_NOOFSUBBLOCKS, 0x01 );
   965         isimessage.Set8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_REQ_OFFSET_NOOFSUBBLOCKS, 0x01 );
   665       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_SUBBLOCKID,
   966         isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_SUBBLOCKID,
   666         AT_MODEM_SB_SIGNAL_DETECTED );
   967           AT_MODEM_SB_SIGNAL_DETECTED );
   667       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_SUBBLOCKLENGTH,
   968         isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_SUBBLOCKLENGTH,
   668         SIZE_AT_MODEM_SB_SIGNAL_DETECTED );
   969           SIZE_AT_MODEM_SB_SIGNAL_DETECTED );
   669       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_TYPEOFSIGNALDETECTED,
   970         isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_TYPEOFSIGNALDETECTED,
   670         AT_MODEM_SIGNAL_ESCAPE_DETECTED );
   971           aSignal );
   671       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_FILLERBYTE1, 0x00 );
   972         isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_FILLERBYTE1, 0x00 );
   672       isimessage.Complete();
   973         isimessage.Complete();
   673       error = iIscApi->Send(messageptr);
   974         error = iIscApi->Send(messageptr);
   674       C_TRACE((_L("escape send result %d"), error ));
   975         TRACE_ASSERT( error == KErrNone );
   675       delete message;
   976         delete message;
   676       message = NULL;
   977         message = NULL;
   677       }
   978         }
   678     else
   979     else
   679       {
   980         {
   680       ASSERT_ALWAYS;
   981         ASSERT_ALWAYS;
   681       error = KErrNoMemory;
   982         error = KErrNoMemory;
   682       }
   983         }
   683     return error; 
   984     return error; 
   684     }
   985     }
   685 
   986 
   686 
   987 
   687 void CModemAtHandler::HandleSignalDetectedResp( const TIsiReceiveC& aMessage )
   988 void CModemAtHandler::HandleSignalDetectedResp( const TIsiReceiveC& aMessage )
   688     {
   989     {
   689     C_TRACE (( _T("CModemAtHandler::HandleSignalDetectedResp() escape sequence detect response received from cellmo") ));
   990     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_HANDLESIGNALDETECTEDRESP, "CModemAtHandler::HandleSignalDetectedResp() - escape sequence detect response received from cellmo" );
       
   991     C_TRACE (( _T("CModemAtHandler::HandleSignalDetectedResp()") ));
   690     TUint8 dteId( aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_DTEID ) );
   992     TUint8 dteId( aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_DTEID ) );
   691     TInt result = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_RESULT );
   993     TInt result = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_RESULT );
       
   994     OstTrace1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_HANDLESIGNALDETECTEDRESP, "CModemAtHandler::HandleSignalDetectedResp;dteId=%d", dteId );
   692     C_TRACE((_L("CModemAtHandler::HandleSignalDetectedResp() dteId %d"), dteId));
   995     C_TRACE((_L("CModemAtHandler::HandleSignalDetectedResp() dteId %d"), dteId));
   693     TRACE_ASSERT( result == AT_MODEM_RESULT_OK );
   996     TRACE_ASSERT( result == AT_MODEM_RESULT_OK );
   694     }
   997     }
   695 
   998 
   696 void CModemAtHandler::SetModemAtExistsInCmt( TBool aModemAtExistsInCmt )
   999 void CModemAtHandler::SetModemAtExistsInCmt( TBool aModemAtExistsInCmt )
   697     {
  1000     {
       
  1001     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_SETMODEMATEXISTSINCMT, "CModemAtHandler::SetModemAtExistsInCmt;aModemAtExistsInCmt=%d", (TInt)aModemAtExistsInCmt );
   698     C_TRACE((_T("CModemAtHandler::SetModemAtExistsInCmt(%d)"), (TInt)aModemAtExistsInCmt));
  1002     C_TRACE((_T("CModemAtHandler::SetModemAtExistsInCmt(%d)"), (TInt)aModemAtExistsInCmt));
   699     iModemAtExistInCmt = aModemAtExistsInCmt;
  1003     iModemAtExistInCmt = aModemAtExistsInCmt;
   700     }
  1004     }
   701 
  1005 
   702 TInt CModemAtHandler::SendAtModemConnectReq( const TUint8 aDteId )
  1006 TInt CModemAtHandler::SendAtModemConnectReq()
   703     {
  1007     {
   704     C_TRACE (( _T("CModemAtHandler::SendAtModemConnectReq()") ));
  1008     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_SENDATMODEMCONNECTREQ, "CModemAtHandler::SendAtModemConnectReq;iDteId=%d", iDteId );
       
  1009     C_TRACE (( _T("CModemAtHandler::SendAtModemConnectReq() %d"), iDteId ));
   705     TInt size = ISI_HEADER_SIZE + SIZE_AT_MODEM_CONNECT_REQ;
  1010     TInt size = ISI_HEADER_SIZE + SIZE_AT_MODEM_CONNECT_REQ;
   706     HBufC8* message = HBufC8::New( size );
  1011     HBufC8* message = HBufC8::New( size );
   707     TRACE_ASSERT( message );
  1012     TRACE_ASSERT( message );
   708     TPtr8 messageptr = message->Des();
  1013     TPtr8 messageptr = message->Des();
   709     TIsiSend isimessage( messageptr, size );
  1014     TIsiSend isimessage( messageptr, size );
   710     isimessage.Set8bit(ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM); 
  1015     isimessage.Set8bit(ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM); 
   711     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_TID, KDefaultTId);
  1016     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_TID, KDefaultTId);
   712     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_MESSAGEID, AT_MODEM_CONNECT_REQ);
  1017     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_MESSAGEID, AT_MODEM_CONNECT_REQ);
   713     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_DTEID, aDteId);
  1018     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_DTEID, iDteId);
   714     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_FILLERBYTE1, KFiller);
  1019     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_FILLERBYTE1, KFiller);
   715     isimessage.Complete();
  1020     isimessage.Complete();
       
  1021     OstTraceExt1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_SENDATMODEMCONNECTREQ, "CModemAtHandler::SendAtModemConnectReq - message dump;messageptr=%s", messageptr );
   716     DUMP_MESSAGE( messageptr );
  1022     DUMP_MESSAGE( messageptr );
   717     TInt err = iIscApi->Send( messageptr );
  1023     TInt err = iIscApi->Send( messageptr );
   718     TRACE_ASSERT( err == KErrNone );
  1024     TRACE_ASSERT( err == KErrNone );
   719     delete message;
  1025     delete message;
   720     message = NULL;
  1026     message = NULL;
       
  1027     OstTrace1( TRACE_NORMAL, DUP2_CMODEMATHANDLER_SENDATMODEMCONNECTREQ, "CModemAtHandler::SendAtModemConnectReq - return;err=%d", err );
   721     C_TRACE (( _T("CModemAtHandler::SendAtModemConnectReq()<< returned: %d"), err ));
  1028     C_TRACE (( _T("CModemAtHandler::SendAtModemConnectReq()<< returned: %d"), err ));
   722     return err;
  1029     return err;
   723     }
  1030     }
   724 
  1031 
       
  1032 TBool CModemAtHandler::IsPipeInDataMode()
       
  1033     {
       
  1034     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_ISPIPEINDATAMODE, "CModemAtHandler::IsPipeInDataMode;iDteId=%d", iDteId );
       
  1035     C_TRACE(( _T("CModemAtHandler::IsPipeInDataMode() dteId: %d"), iDteId ));
       
  1036     TPipeInfo::EPipeState pipeState( iPipeController->GetPipeState() );
       
  1037     if( pipeState == TPipeInfo::EPipeEnabled ||
       
  1038         pipeState == TPipeInfo::EPipeRedirected )
       
  1039         {
       
  1040         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_ISPIPEINDATAMODE, "CModemAtHandler::IsPipeInDataMode - True" );
       
  1041         C_TRACE(( _T("CModemAtHandler::IsPipeInDataMode() True") ));
       
  1042         return ETrue;
       
  1043         }
       
  1044     else
       
  1045         {
       
  1046         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_ISPIPEINDATAMODE, "CModemAtHandler::IsPipeInDataMode - False" );
       
  1047         C_TRACE(( _T("CModemAtHandler::IsPipeInDataMode() False") ));
       
  1048         return EFalse;
       
  1049         }
       
  1050     }
       
  1051 
       
  1052 
       
  1053 void CModemAtHandler::SetTextMessageMode( TBool aTextMode )
       
  1054     {
       
  1055     OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_SETTEXTMESSAGEMODE, "CModemAtHandler::SetTextMessageMode(;aTextMode=%d;);iDteId=%d", (TUint)aTextMode, (TUint)iDteId );
       
  1056     C_TRACE (( _T("CModemAtHandler::SetTextMessageMode( aTextMode: %d ) dte id: %d"), (TInt) aTextMode, iDteId ));
       
  1057     iTextMessageMode = aTextMode;
       
  1058     }
       
  1059 
       
  1060 TBool CModemAtHandler::IsTextMessageMode()
       
  1061     {
       
  1062     OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_ISTEXTMESSAGEMODE, "CModemAtHandler::IsTextMessageMode;iTextMessageMode=%d;iDteId=%d", (TUint)iTextMessageMode, (TUint)iDteId );
       
  1063     C_TRACE (( _T("CModemAtHandler::IsTextMessageMode() iTextMessageMode: %d dte id: %d"), (TInt) iTextMessageMode, iDteId ));
       
  1064     return iTextMessageMode;
       
  1065     }
       
  1066 
       
  1067 void CModemAtHandler::PipeCreated( TUint8 aPipeHandle, TInt aError )
       
  1068     {
       
  1069     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_PIPECREATED, "CModemAtHandler::PipeCreated;aPipeHandle=%d", aPipeHandle );
       
  1070     C_TRACE(( _T("CModemAtHandler::PipeCreated() pipehandle: %d"), aPipeHandle ));
       
  1071 
       
  1072     iDteId = aPipeHandle;
       
  1073 
       
  1074     if( KErrNone == aError )
       
  1075         {
       
  1076         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_PIPECREATED, "CModemAtHandler::PipeCreated - pipe created, let's connect to modem" );
       
  1077         C_TRACE(( _T("CModemAtHandler::pipeCreated(): pipe created, let's connect to modem") ));
       
  1078         SendAtModemConnectReq();
       
  1079         }
       
  1080     else
       
  1081         {
       
  1082         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_PIPECREATED, "CModemAtHandler::PipeCreated - pipe creation has failed, connect is aborted" );
       
  1083         C_TRACE(( _T("CModemAtHandler::pipeCreated(): pipe creation has failed, connect is aborted") ));
       
  1084         iServer.SetDteIdAndConnect( KInvalidPipeHandle, aError );
       
  1085         }
       
  1086     }
       
  1087     
       
  1088 
       
  1089 void CModemAtHandler::AddDevice( TUint8 aDevId, TUint8 aObjId )
       
  1090     {
       
  1091 	OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_ADDDEVICE, "CModemAtHandler::AddDevice;aDevId=%x;aObjId=%x", aDevId, aObjId );
       
  1092 	C_TRACE(( _T("CModemAtHandler::AddDevice() aDevId: 0x%x, aObjId: 0x%x"), aDevId, aObjId ));
       
  1093     iServer.AddDevice( aDevId, aObjId );
       
  1094     }
       
  1095 
       
  1096 
       
  1097 void CModemAtHandler::RemoveDevice( TUint8 aDevId, TUint8 aObjId )
       
  1098     {
       
  1099     OstTraceExt2( TRACE_NORMAL, CMODEMATHANDLER_REMOVEDEVICE, "CModemAtHandler::RemoveDevice;aDevId=%hhu;aObjId=%hhu", aDevId, aObjId );
       
  1100     C_TRACE(( _T("CModemAtHandler::RemoveDevice() aDevId: 0x%x, aObjId: 0x%x"), aDevId, aObjId ));
       
  1101     iServer.RemoveDevice( aDevId, aObjId );
       
  1102     }
       
  1103 
       
  1104 void CModemAtHandler::GetDataportObjectId( TUint& aObjId )
       
  1105     {
       
  1106     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_GETDATAPORTOBJECTID, "CModemAtHandler::GetDataportObjectId" );
       
  1107     C_TRACE(( _T("CModemAtHandler::GetDataportObjectId()") ));
       
  1108     aObjId = iDataportObjId;
       
  1109     }
       
  1110 
       
  1111 void CModemAtHandler::GetSecondaryDataportObjectId( TUint& aObjId )
       
  1112     {
       
  1113     OstTrace0( TRACE_NORMAL, CMODEMATHANDLER_GETSECONDARYDATAPORTOBJECTID, "CModemAtHandler::GetSecondaryDataportObjectId" );
       
  1114     C_TRACE(( _T("CModemAtHandler::GetScondaryDataportObjectId()") ));
       
  1115     TBuf8<KObjectIdLength> dpObjId;
       
  1116     
       
  1117     if( iIscApi )
       
  1118         {
       
  1119         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATHANDLER_GETSECONDARYDATAPORTOBJECTID, "CModemAtHandler::GetSecondaryDataportObjectId - call GetChannelInfo(EIscNokiaDataport4) " );
       
  1120         C_TRACE(( _T("GetChannelInfo() EIscNokiaDataport4") ));
       
  1121         iIscApi->GetChannelInfo( EIscNokiaDataport4, dpObjId );
       
  1122         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATHANDLER_GETSECONDARYDATAPORTOBJECTID, "CModemAtHandler::GetSecondaryDataportObjectId - GetChannelInfo() done" );
       
  1123         C_TRACE(( _T("GetChannelInfo() done") ));
       
  1124         aObjId = (((TUint16)(dpObjId[0])) << KEightBits) + dpObjId[1];
       
  1125         OstTrace1( TRACE_NORMAL, DUP3_CMODEMATHANDLER_GETSECONDARYDATAPORTOBJECTID, "CModemAtHandler::GetSecondaryDataportObjectId;aObjId=%d", aObjId );
       
  1126         C_TRACE((_L("DataportObjId 0x%x"), aObjId ));
       
  1127         }
       
  1128     else
       
  1129         {
       
  1130         OstTrace0( TRACE_NORMAL, DUP4_CMODEMATHANDLER_GETSECONDARYDATAPORTOBJECTID, "CModemAtHandler::GetSecondaryDataportObjectId - No IscApi found, using default dataport object id" );
       
  1131         C_TRACE(( _T("No IscApi found, using default dataport object id") ));
       
  1132         }
       
  1133     }
       
  1134 
       
  1135 
       
  1136 TInt CModemAtHandler::GetChannelId()
       
  1137     {
       
  1138     OstTrace1( TRACE_NORMAL, DUP1_CMODEMATHANDLER_GETCHANNELID, "CModemAtHandler::GetChannelId;iChannel=%x", iChannel );
       
  1139     OstTrace1( TRACE_NORMAL, CMODEMATHANDLER_GETCHANNELID, "CModemAtHandler::GetChannelId;this=%x", this );
       
  1140     C_TRACE(( _T("CModemAtHandler::GetChannelId() handler: 0x%x, channel id: 0x%x"), this, iChannel ));
       
  1141     return iChannel;
       
  1142     }
       
  1143