adaptationlayer/modematadaptation/modematcontroller_exe/src/cmodemathandler.cpp
changeset 8 6295dc2169f3
parent 5 8ccc39f9d787
child 9 8486d82aef45
equal deleted inserted replaced
7:fa67e03b87df 8:6295dc2169f3
    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       
    24 #ifndef NCP_COMMON_BRIDGE_FAMILY       
    25 #include <nsisi.h>
    25 #include <nsisi.h>
    26 #endif
       
    27 #include <pipeisi.h>
    26 #include <pipeisi.h>
    28 #include <pipe_sharedisi.h>
    27 #include <pipe_sharedisi.h>
       
    28 #endif
    29 #include <tisi.h>
    29 #include <tisi.h>
    30 #include <at_modemisi.h>
    30 #include <at_modemisi.h>
    31 #include "cmodemathandler.h"
    31 #include "cmodemathandler.h"
    32 #include "cmodematpipecontroller.h"
    32 #include "cmodematpipecontroller.h"
    33 #include "modemattrace.h"
    33 #include "modemattrace.h"
    95     iReceivePtr( 0, 0 ),
    95     iReceivePtr( 0, 0 ),
    96     iReceiveMessageLength( 0 ),
    96     iReceiveMessageLength( 0 ),
    97     iReceivedMessage( NULL ),
    97     iReceivedMessage( NULL ),
    98     iPepObjId(0),
    98     iPepObjId(0),
    99     iPipeController(NULL),
    99     iPipeController(NULL),
       
   100     iLastTransactionId( 0 ),
   100     iDisconnected( EFalse ),
   101     iDisconnected( EFalse ),
   101     iModemAtExistInCmt( EFalse )
   102     iModemAtExistInCmt( EFalse )
   102     {
   103     {
   103     C_TRACE (( _T("CModemAtHandler::CModemAtHandler") ));
   104     C_TRACE (( _T("CModemAtHandler::CModemAtHandler") ));
   104     }
   105     }
   191                 }
   192                 }
   192                 
   193                 
   193             } //if( receiveMessageBuffer->Length() > ISI_HEADER_OFFSET_MESSAGEID )
   194             } //if( receiveMessageBuffer->Length() > ISI_HEADER_OFFSET_MESSAGEID )
   194         else 
   195         else 
   195             {
   196             {
   196             C_TRACE(_L("ISI essage is too short"));
   197             C_TRACE(_L("ISI message is too short"));
   197             TRACE_ASSERT_ALWAYS;
   198             TRACE_ASSERT_ALWAYS;
   198             }
   199             }
   199         
   200         
   200         //Start receiving ISI messages again
   201         //Start receiving ISI messages again
   201         iReceivePtr.Set( iReceivedMessageBuffer->Des() );
   202         iReceivePtr.Set( iReceivedMessageBuffer->Des() );
   215 
   216 
   216     CActiveScheduler::Add( this );
   217     CActiveScheduler::Add( this );
   217     
   218     
   218     iIscApi = new ( ELeave ) RIscApi;
   219     iIscApi = new ( ELeave ) RIscApi;
   219     C_TRACE(_L("RIscApi created"));
   220     C_TRACE(_L("RIscApi created"));
   220 
   221    
   221     //used with intermediate data ind
       
   222     //can be removed, when AT_MODEM_INTERMEDIATE_DATA_IND supports transactionid 
       
   223     for( TInt i = 0 ; i < KMaxDteIdCount ; i++) 
       
   224         {
       
   225         iLastTransactionId[i]=0;
       
   226         }
       
   227     
       
   228 #ifndef __WINSCW__
   222 #ifndef __WINSCW__
   229       OpenChannelL();
   223       OpenChannelL();
   230 #ifndef NCP_COMMON_BRIDGE_FAMILY
   224 #ifndef NCP_COMMON_BRIDGE_FAMILY
   231       iPipeController->QueryModemAtFromNameService();
   225       iPipeController->QueryModemAtFromNameService();
   232 #endif
   226 #endif
   243     {
   237     {
   244     C_TRACE (( _T(">>CModemAtHandler::SendATCommand()") ));
   238     C_TRACE (( _T(">>CModemAtHandler::SendATCommand()") ));
   245 
   239 
   246     TInt err = KErrNone;
   240     TInt err = KErrNone;
   247     // aMessageType contains normal AT-cmd (0) or Nvram-query (1)
   241     // aMessageType contains normal AT-cmd (0) or Nvram-query (1)
   248     TUint transactionId= (aPluginType << KTransactionIdBitsShift) | aMessageType;
   242     TUint transactionId = ( aPluginType << KTransactionIdBitsShift ) | aMessageType;
   249     //used with intermediate data ind
   243     // used with intermediate data ind
   250     //can be removed, when AT_MODEM_INTERMEDIATE_DATA_IND supports transactionid        
   244     // can be removed, when AT_MODEM_INTERMEDIATE_DATA_IND supports transactionid        
   251     iLastTransactionId[aDteId] = transactionId;  //messages are routed to correct plugin by transaction id
   245     iLastTransactionId = transactionId;  //messages are routed to correct plugin by transaction id
   252     C_TRACE((_L("transaction id %d, plugintype %d, aMessageType %d"), transactionId, aPluginType, aMessageType));
   246     C_TRACE((_L("transaction id %d, plugintype %d, aMessageType %d"), transactionId, aPluginType, aMessageType));
   253     C_TRACE((_L("iLastTransctionId[%d] = %d "),aDteId,iLastTransactionId[aDteId]));
   247     C_TRACE((_L("iLastTransctionId = %d "), iLastTransactionId ));
   254 
   248 
   255     #ifdef __WINSCW__
   249     #ifdef __WINSCW__
   256     iDteId = aDteId;
   250     iDteId = aDteId;
   257     iChannel = aMessageType;
   251     iChannel = aMessageType;
   258     iPluginType = aPluginType;
   252     iPluginType = aPluginType;
   346     events.Append( AT_MODEM_SIGNAL_IND );  
   340     events.Append( AT_MODEM_SIGNAL_IND );  
   347     events.Append( PN_AT_MODEM );
   341     events.Append( PN_AT_MODEM );
   348     events.Append( AT_MODEM_UNSOLICITED_DATA_IND );  
   342     events.Append( AT_MODEM_UNSOLICITED_DATA_IND );  
   349     events.Append( PN_AT_MODEM );
   343     events.Append( PN_AT_MODEM );
   350     events.Append( AT_MODEM_DATA_REDIRECT_IND );  
   344     events.Append( AT_MODEM_DATA_REDIRECT_IND );  
   351     events.Append( PN_PIPE );
       
   352     events.Append( PNS_PEP_STATUS_IND );
       
   353 
   345 
   354 #ifndef NCP_COMMON_BRIDGE_FAMILY       
   346 #ifndef NCP_COMMON_BRIDGE_FAMILY       
   355     //name add ind
   347     //name add ind
   356     events.Append( PN_NAMESERVICE );
   348     events.Append( PN_NAMESERVICE );
   357     events.Append( PNS_NAME_ADD_IND );  
   349     events.Append( PNS_NAME_ADD_IND );  
   358     events.Append( PN_NAMESERVICE );
   350     events.Append( PN_NAMESERVICE );
   359     events.Append( PNS_NAME_REMOVE_IND );
   351     events.Append( PNS_NAME_REMOVE_IND );
       
   352     events.Append( PN_PIPE );
       
   353     events.Append( PNS_PEP_STATUS_IND );
   360 #else
   354 #else
   361     events.Append( 0 );
   355     events.Append( 0 );
   362     events.Append( 0 );  
   356     events.Append( 0 );  
   363     events.Append( 0 );
   357     events.Append( 0 );
   364     events.Append( 0 );
   358     events.Append( 0 );
       
   359     events.Append( 0 );
       
   360     events.Append( 0 );
   365 #endif
   361 #endif
   366     
   362     
   367     iIscApi->CustomFunction(EIscNokiaEventSubscribe,&events);
   363     iIscApi->CustomFunction(EIscNokiaEventSubscribe,&events);
   368     TBuf8<KObjectIdLength> objId;
   364     TBuf8<KObjectIdLength> objId;
   369     iIscApi->GetChannelInfo(EIscNokiaAtController, objId);
   365     iIscApi->GetChannelInfo(EIscNokiaAtController, objId);
   378 
   374 
   379 void CModemAtHandler::HandleATResponse( const TIsiReceiveC& aMessage )
   375 void CModemAtHandler::HandleATResponse( const TIsiReceiveC& aMessage )
   380     {
   376     {
   381     C_TRACE (( _T("CModemAtHandler::HandleATResponse()") ));
   377     C_TRACE (( _T("CModemAtHandler::HandleATResponse()") ));
   382     
   378     
   383     TInt dteId = aMessage.Get8bit( ISI_HEADER_SIZE+ AT_MODEM_CMD_RESP_OFFSET_DTEID ) ;
   379     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_DTEID ) ;
   384     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   380     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   385     TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   381     TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   386     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE+AT_MODEM_CMD_RESP_OFFSET_LENGTH );
   382     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE+AT_MODEM_CMD_RESP_OFFSET_LENGTH );
   387     C_TRACE(( _L("DteId: %d AT (0) or nvram command (1): %d Response length %d"), dteId, command, length ));
   383     C_TRACE(( _L("DteId: %d AT (0) or nvram command (1): %d Response length %d"), dteId, command, length ));
   388 
   384 
   413     iServer.HandleATResponse( iDteId, replyEmulated, 0 /* 0 = AT-cmd, 1 = nvram */);
   409     iServer.HandleATResponse( iDteId, replyEmulated, 0 /* 0 = AT-cmd, 1 = nvram */);
   414     }
   410     }
   415 #endif
   411 #endif
   416 
   412 
   417     
   413     
   418 TInt CModemAtHandler::Connect(const TUint8 aDteId)
   414 TInt CModemAtHandler::Connect( const TUint8 aDteId )
   419     {
   415     {
   420     C_TRACE (( _T("CModemAtHandler::Connect()") ));
   416     C_TRACE (( _T("CModemAtHandler::Connect()") ));
   421 
   417 
   422     if( !iModemAtExistInCmt )
   418     if( !iModemAtExistInCmt )
   423         {
   419         {
   424         C_TRACE((_T("Connection failed, PN_AT_MODEM is not in CMT")));
   420         C_TRACE((_T("Connection failed, PN_AT_MODEM is not in CMT")));
   425         TRACE_ASSERT_ALWAYS;
   421         TRACE_ASSERT_ALWAYS;
   426         return KErrNotFound;
   422         return KErrNotFound;
   427         }
   423         }
   428 
       
   429     C_TRACE((_L("Connecting with dteid:%d "), aDteId));
       
   430     SetDisconnected( EFalse );
   424     SetDisconnected( EFalse );
   431     
   425 
   432     #ifdef __WINSCW__ //emulate, modem is connected
   426 #ifdef __WINSCW__
   433     iServer.BroadcastModemConnected( aDteId, KErrNone );
       
   434     iDteId = aDteId;
       
   435     return KErrNone;
   427     return KErrNone;
   436     #endif
   428 #endif
       
   429 
       
   430     TInt err( KErrNone );
       
   431 	TUint8 pipeHandle( KInvalidPipeHandle );
       
   432 
   437 #ifndef NCP_COMMON_BRIDGE_FAMILY
   433 #ifndef NCP_COMMON_BRIDGE_FAMILY
   438     iPipeController->LinkDteIdToPipe( aDteId );
   434     pipeHandle = iPipeController->GetPipeHandle();
   439 #endif
   435 #endif
   440     TInt size = ISI_HEADER_SIZE + SIZE_AT_MODEM_CONNECT_REQ;
   436 
   441     
   437     if( pipeHandle == KInvalidPipeHandle )
   442     HBufC8* message = HBufC8::New( size );
   438         {
   443     TRACE_ASSERT( message );
   439         C_TRACE(( _L("Connecting with dteId %d. (RComm was not used before connecting the plug-ins)."), aDteId ));
   444     TPtr8 messageptr = message->Des();
   440         err = SendAtModemConnectReq( aDteId );
   445     TIsiSend isimessage( messageptr, size );
   441         }
   446     isimessage.Set8bit(ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM); 
   442     else
   447     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_TID, KDefaultTId);
   443         {
   448     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_MESSAGEID, AT_MODEM_CONNECT_REQ);
   444         C_TRACE(( _L("Connecting with pipehandle %d."), pipeHandle ));
   449     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_DTEID, aDteId);
   445         err = SendAtModemConnectReq( pipeHandle );
   450     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_FILLERBYTE1, KFiller);
   446         }
   451     isimessage.Complete();
   447    
   452 
   448    if( err != KErrNone )
   453     DUMP_MESSAGE( messageptr );
   449        {
   454     TInt err = iIscApi->Send( messageptr );
   450        TRACE_ASSERT_ALWAYS;
   455     TRACE_ASSERT( err == KErrNone );
   451        return KErrNotFound;
   456     delete message;
   452        }
   457     message = NULL;
   453 
   458     return err;
   454     return KErrNone;
   459     }
   455     }
   460 
   456 
   461 void CModemAtHandler::SetDisconnected( TBool aIsDisconnected )
   457 void CModemAtHandler::SetDisconnected( TBool aIsDisconnected )
   462     {
   458     {
   463     C_TRACE (( _T("CModemAtHandler::SetDisconnected(%d)"),aIsDisconnected ));
   459     C_TRACE (( _T("CModemAtHandler::SetDisconnected(%d)"),aIsDisconnected ));
   516 
   512 
   517 
   513 
   518 void CModemAtHandler::HandleModemConnectResp( const TIsiReceiveC& aMessage )
   514 void CModemAtHandler::HandleModemConnectResp( const TIsiReceiveC& aMessage )
   519     {
   515     {
   520     C_TRACE (( _T("CModemAtHandler::HandleModemConnectResp()") ));
   516     C_TRACE (( _T("CModemAtHandler::HandleModemConnectResp()") ));
   521     TInt dteId= aMessage.Get8bit(ISI_HEADER_SIZE+ AT_MODEM_CONNECT_RESP_OFFSET_DTEID);
   517     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CONNECT_RESP_OFFSET_DTEID );
   522     TInt status = aMessage.Get8bit(ISI_HEADER_SIZE+ AT_MODEM_CONNECT_RESP_OFFSET_RESULT);
   518     TInt status = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CONNECT_RESP_OFFSET_RESULT );
   523     TInt err = KErrGeneral;
   519     TInt err = KErrGeneral;
   524     if( status == AT_MODEM_RESULT_OK )
   520     if( status == AT_MODEM_RESULT_OK )
   525         {
   521         {
   526         C_TRACE(_L("Connected ok, AT_MODEM_RESULT_OK received"));
   522         C_TRACE(_L("Connected ok, AT_MODEM_RESULT_OK received"));
   527         err = KErrNone;
   523         err = KErrNone;
   528         }   
   524         }
   529     else 
   525     else
   530         {
   526         {
   531         C_TRACE((_L("Connection failed, AT_MODEM_RESULT_ERROR received (%d)"),status));
   527         C_TRACE((_L("Connection failed, AT_MODEM_RESULT_ERROR received (%d)"), status));
   532         TRACE_ASSERT_ALWAYS;
   528         TRACE_ASSERT_ALWAYS;
   533         }
   529         }
   534 
   530 
   535     iServer.BroadcastModemConnected( dteId, err );
   531     iServer.SetDteIdAndConnect( dteId, err );
   536     }
   532     }
   537 
   533 
   538 
   534 
   539 void CModemAtHandler::HandleSignalInd( const TIsiReceiveC& aMessage )
   535 void CModemAtHandler::HandleSignalInd( const TIsiReceiveC& aMessage )
   540     {
   536     {
   541     C_TRACE (( _T("CModemAtHandler::HandleSignalInd()") ));
   537     C_TRACE (( _T("CModemAtHandler::HandleSignalInd()") ));
   542     TInt dteId = aMessage.Get8bit(ISI_HEADER_SIZE+ AT_MODEM_SIGNAL_IND_OFFSET_DTEID);
   538     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_IND_OFFSET_DTEID );
   543     iServer.HandleSignalInd( dteId );
   539     iServer.HandleSignalInd( dteId );
   544     }
   540     }
   545 
   541 
   546 void CModemAtHandler::HandleUnsolicitedData( const TIsiReceiveC& aMessage )
   542 void CModemAtHandler::HandleUnsolicitedData( const TIsiReceiveC& aMessage )
   547     {
   543     {
   548     C_TRACE (( _T("CModemAtHandler::HandleUnsolicitedData()") ));
   544     C_TRACE (( _T("CModemAtHandler::HandleUnsolicitedData()") ));
   549     TInt dteId = aMessage.Get8bit( ISI_HEADER_SIZE+ AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_LENGTH );
   545     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE+ AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_LENGTH );
   550     TInt length = aMessage.Get16bit( 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 );
   551     
   547     
   552     iServer.HandleUnsolicitedData( dteId,
   548     iServer.HandleUnsolicitedData( dteId,
   553       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_UNSOLICITEDDATABUFFER,
   549       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_UNSOLICITED_DATA_IND_OFFSET_UNSOLICITEDDATABUFFER,
   554       length ) );
   550       length ) );
   556 
   552 
   557 
   553 
   558 void CModemAtHandler::HandleIntermediateDataInd( const TIsiReceiveC& aMessage )
   554 void CModemAtHandler::HandleIntermediateDataInd( const TIsiReceiveC& aMessage )
   559     {
   555     {
   560     C_TRACE (( _T("CModemAtHandler::HandleIntermediateDataInd()") ));
   556     C_TRACE (( _T("CModemAtHandler::HandleIntermediateDataInd()") ));
   561     TInt dteId = aMessage.Get8bit( ISI_HEADER_SIZE+ AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_DTEID );
   557     TUint8 dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_DTEID );
   562     TInt length= aMessage.Get16bit( ISI_HEADER_SIZE+AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_LENGTH );
   558     TInt length = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_LENGTH );
   563      
   559      
   564     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE+ AT_MODEM_CMD_RESP_OFFSET_TID );
   560     TUint transactionId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_CMD_RESP_OFFSET_TID );
   565     transactionId = iLastTransactionId[ dteId ];
   561     
   566     TUint8 command = transactionId & KCommandBits;
   562     C_TRACE((_L("transactionId from %d"), transactionId));
       
   563     transactionId = iLastTransactionId;
       
   564     C_TRACE((_L("transactionId after setting it to iLastTransactionId: %d"), transactionId));
       
   565     
       
   566     TUint8 command = transactionId & KCommandBits; //normal AT-cmd or Nvram-query
   567     TUint8 pluginType = transactionId >> KTransactionIdBitsShift;
   567     TUint8 pluginType = transactionId >> KTransactionIdBitsShift;
   568     C_TRACE((_L("dteid %d iLastrid[dteid] = %d trid %d"), dteId, iLastTransactionId[dteId], transactionId));
   568     C_TRACE((_L("dteId %d, command %d (AT=0,NVRAM=1), pluginType = %d (atext=0,common=1)"), dteId, command, pluginType));
   569     
   569     
   570     iServer.HandleIntermediateDataInd( dteId,
   570     iServer.HandleIntermediateDataInd( dteId,
   571       (TATPluginInterface) pluginType,
   571       (TATPluginInterface) pluginType,
   572       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_INTERMEDIATEDATABUFFER,
   572       aMessage.GetData( ISI_HEADER_SIZE + AT_MODEM_INTERMEDIATE_DATA_IND_OFFSET_INTERMEDIATEDATABUFFER,
   573       length),
   573       length),
   577 
   577 
   578 void CModemAtHandler::HandleRedirectInd( const TIsiReceiveC& aMessage ) 
   578 void CModemAtHandler::HandleRedirectInd( const TIsiReceiveC& aMessage ) 
   579     {
   579     {
   580     C_TRACE (( _T("CModemAtHandler::HandleRedirectInd()") ));
   580     C_TRACE (( _T("CModemAtHandler::HandleRedirectInd()") ));
   581   
   581   
   582     TInt dteId = aMessage.Get8bit( ISI_HEADER_SIZE+  AT_MODEM_DATA_REDIRECT_IND_OFFSET_DTEID );
   582     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 );
   583     TInt newSecondDevId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_DEVICEID );
   584     TInt newSecondObjId = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_SERVERID );
   584     TInt newSecondObjId = aMessage.Get16bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_IND_OFFSET_SERVERID );
   585 #ifndef NCP_COMMON_BRIDGE_FAMILY
   585 #ifndef NCP_COMMON_BRIDGE_FAMILY
   586     iPipeController->RedirectPipe( dteId, newSecondDevId, newSecondObjId ); 
   586     iPipeController->RedirectPipe( dteId, newSecondDevId, newSecondObjId ); 
   587 #endif
   587 #endif
   588     }
   588     }
   617 
   617 
   618 
   618 
   619 void CModemAtHandler::HandleRedirectResultResp(const TIsiReceiveC& aMessage)
   619 void CModemAtHandler::HandleRedirectResultResp(const TIsiReceiveC& aMessage)
   620     {
   620     {
   621     C_TRACE (( _T("CModemAtHandler::HandleRedirectResultResp()") ));
   621     C_TRACE (( _T("CModemAtHandler::HandleRedirectResultResp()") ));
   622     TInt dteId = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_RESP_OFFSET_DTEID );
   622     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 );
   623     TInt error = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_DATA_REDIRECT_RESULT_RESP_OFFSET_RESULT );
   624     C_TRACE((_L("CModemAtHandler::HandleRedirectResultResp() dte %d"), dteId));
   624     C_TRACE((_L("CModemAtHandler::HandleRedirectResultResp() dte %d"), dteId));
   625     
   625     
   626     if( error == AT_MODEM_RESULT_ERROR ) 
   626     if( error == AT_MODEM_RESULT_ERROR ) 
   627         {
   627         {
   632         {
   632         {
   633         C_TRACE(_L("CModemAtHandler::HandleRedirectResultResp() redirect OK"));
   633         C_TRACE(_L("CModemAtHandler::HandleRedirectResultResp() redirect OK"));
   634         }
   634         }
   635     
   635     
   636     }
   636     }
   637 void CModemAtHandler::HandleCommandModeChange( TInt aDteId, TCommandMode aMode )
   637 void CModemAtHandler::HandleCommandModeChange( TCommandMode aMode )
   638     {
   638     {
   639     C_TRACE(( _T("CModemAtHandler::HandleCommandModeChange() aDteId: %d aMode: %d"),aDteId, (TInt) aMode ));
   639     C_TRACE(( _T("CModemAtHandler::HandleCommandModeChange() aMode: %d"), (TInt) aMode ));
   640     iServer.HandleCommandModeChange( aDteId, aMode );
   640     iServer.HandleCommandModeChange( aMode );
   641     }
   641     }
   642 
   642 
   643 TInt CModemAtHandler::SendEscapeSignalDetection( const TUint8 aDteId )
   643 TInt CModemAtHandler::SendEscapeSignalDetection( const TUint8 aDteId )
   644     {
   644     {
   645     C_TRACE((_T("CModemAtHandler::SendEscapeSignalDetection(%d)"), aDteId));
   645     C_TRACE((_T("CModemAtHandler::SendEscapeSignalDetection(%d)"), aDteId));
   646     #ifdef __WINSCW__
   646 #ifdef __WINSCW__
   647     iDteId = aDteId;
   647     iDteId = aDteId;
   648     return KErrNone;
   648     return KErrNone;
   649     #endif
   649 #endif
   650   
   650   
   651     TInt error( KErrGeneral );  
   651     TInt error( KErrGeneral );  
   652     TUint msgSize( ISI_HEADER_SIZE + SIZE_AT_MODEM_SIGNAL_DETECTED_REQ );
   652     TUint msgSize( ISI_HEADER_SIZE + SIZE_AT_MODEM_SIGNAL_DETECTED_REQ );
   653     TUint size( msgSize + SIZE_AT_MODEM_SB_SIGNAL_DETECTED ); 
   653     TUint size( msgSize + SIZE_AT_MODEM_SB_SIGNAL_DETECTED ); 
   654     HBufC8* message = HBufC8::New( size );
   654     HBufC8* message = HBufC8::New( size );
   669       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_TYPEOFSIGNALDETECTED,
   669       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_TYPEOFSIGNALDETECTED,
   670         AT_MODEM_SIGNAL_ESCAPE_DETECTED );
   670         AT_MODEM_SIGNAL_ESCAPE_DETECTED );
   671       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_FILLERBYTE1, 0x00 );
   671       isimessage.Set8bit( msgSize + AT_MODEM_SB_SIGNAL_DETECTED_OFFSET_FILLERBYTE1, 0x00 );
   672       isimessage.Complete();
   672       isimessage.Complete();
   673       error = iIscApi->Send(messageptr);
   673       error = iIscApi->Send(messageptr);
   674         C_TRACE((_L("escape send result %d"), error ));
   674       C_TRACE((_L("escape send result %d"), error ));
   675       delete message;
   675       delete message;
   676       message = NULL;
   676       message = NULL;
   677       }
   677       }
   678     else
   678     else
   679       {
   679       {
   685 
   685 
   686 
   686 
   687 void CModemAtHandler::HandleSignalDetectedResp( const TIsiReceiveC& aMessage )
   687 void CModemAtHandler::HandleSignalDetectedResp( const TIsiReceiveC& aMessage )
   688     {
   688     {
   689     C_TRACE (( _T("CModemAtHandler::HandleSignalDetectedResp() escape sequence detect response received from cellmo") ));
   689     C_TRACE (( _T("CModemAtHandler::HandleSignalDetectedResp() escape sequence detect response received from cellmo") ));
   690     TInt dteId( aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_DTEID ) );
   690     TUint8 dteId( aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_DTEID ) );
   691     TRACE_ASSERT( dteId < KMaxDteIdCount );
       
   692     TInt result = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_RESULT );
   691     TInt result = aMessage.Get8bit( ISI_HEADER_SIZE + AT_MODEM_SIGNAL_DETECTED_RESP_OFFSET_RESULT );
   693     C_TRACE((_L("CModemAtHandler::HandleSignalDetectedResp() dteId %d"), dteId));
   692     C_TRACE((_L("CModemAtHandler::HandleSignalDetectedResp() dteId %d"), dteId));
   694     TRACE_ASSERT( result == AT_MODEM_RESULT_OK );
   693     TRACE_ASSERT( result == AT_MODEM_RESULT_OK );
   695     }
   694     }
   696 
   695 
   698     {
   697     {
   699     C_TRACE((_T("CModemAtHandler::SetModemAtExistsInCmt(%d)"), (TInt)aModemAtExistsInCmt));
   698     C_TRACE((_T("CModemAtHandler::SetModemAtExistsInCmt(%d)"), (TInt)aModemAtExistsInCmt));
   700     iModemAtExistInCmt = aModemAtExistsInCmt;
   699     iModemAtExistInCmt = aModemAtExistsInCmt;
   701     }
   700     }
   702 
   701 
       
   702 TInt CModemAtHandler::SendAtModemConnectReq( const TUint8 aDteId )
       
   703     {
       
   704     C_TRACE (( _T("CModemAtHandler::SendAtModemConnectReq()") ));
       
   705     TInt size = ISI_HEADER_SIZE + SIZE_AT_MODEM_CONNECT_REQ;
       
   706     HBufC8* message = HBufC8::New( size );
       
   707     TRACE_ASSERT( message );
       
   708     TPtr8 messageptr = message->Des();
       
   709     TIsiSend isimessage( messageptr, size );
       
   710     isimessage.Set8bit(ISI_HEADER_OFFSET_RESOURCEID, PN_AT_MODEM); 
       
   711     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);
       
   713     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_DTEID, aDteId);
       
   714     isimessage.Set8bit(ISI_HEADER_SIZE + AT_MODEM_CONNECT_REQ_OFFSET_FILLERBYTE1, KFiller);
       
   715     isimessage.Complete();
       
   716     DUMP_MESSAGE( messageptr );
       
   717     TInt err = iIscApi->Send( messageptr );
       
   718     TRACE_ASSERT( err == KErrNone );
       
   719     delete message;
       
   720     message = NULL;
       
   721     C_TRACE (( _T("CModemAtHandler::SendAtModemConnectReq()<< returned: %d"), err ));
       
   722     return err;
       
   723     }
       
   724