adaptationlayer/modematadaptation/modematcontroller_exe/src/cmodematsrv.cpp
changeset 9 8486d82aef45
parent 8 6295dc2169f3
equal deleted inserted replaced
8:6295dc2169f3 9:8486d82aef45
    13 * 
    13 * 
    14 * Description: 
    14 * Description: 
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 #include <pn_const.h>
    19 
    19 #include <iscnokiadefinitions.h>
    20 #include "cmodematsrv.h"
    20 #include "cmodematsrv.h"
    21 #include "modematclientsrv.h"
    21 #include "modematclientsrv.h"
    22 #include "modematsecpolicy.h"
    22 #include "modematsecpolicy.h"
    23 #include "cmodematsession.h"
    23 #include "cmodematsession.h"
    24 #include "cmodemathandler.h"
    24 #include "cmodemathandler.h"
    25 #include "modemattrace.h"
    25 #include "modemattrace.h"
    26 #include "catmessage.h"
    26 #include "catmessage.h"
    27 
    27 #include "cmodematpipecontroller.h"
       
    28 #include "OstTraceDefinitions.h"
       
    29 #ifdef OST_TRACE_COMPILER_IN_USE
       
    30 #include "cmodematsrvTraces.h"
       
    31 #endif
       
    32 
       
    33 _LIT8( KCursor, ">" );
       
    34 _LIT8( KOkResponse, "OK" );
       
    35 _LIT8( KErrorResponse, "ERROR" );
       
    36 _LIT8( KOkResponseNoVerbose, "0" );
       
    37 _LIT8( KErrorResponseNoVerbose, "4" );
       
    38 
       
    39 _LIT8( KAtv, "ATV" );
       
    40 _LIT8( KAtv1, "ATV1" );
       
    41 _LIT8( KAtv0, "ATV0" );
       
    42 _LIT8( KAtq, "ATQ" );
       
    43 _LIT8( KAtq1, "ATQ1" );
       
    44 _LIT8( KAtq0, "ATQ0" );
       
    45 _LIT8( KAte, "ATE" );
       
    46 _LIT8( KAte1, "ATE1" );
       
    47 _LIT8( KAte0, "ATE0" );
       
    48 
       
    49 _LIT8( KCmgs, "+CMGS" );
       
    50 _LIT8( KCmgc, "+CMGC" );
       
    51 _LIT8( KCmgsQuery, "+CMGS=?" );
       
    52 _LIT8( KCmgcQuery, "+CMGC=?" );
       
    53 
       
    54 // Carriage return needs to be checked from ATS3, or the following AT&V
       
    55 // fails, because its not yet informed to upper layers.
       
    56 _LIT8( KAts3, "ATS3=" );
       
    57 const TUint8 KDefaultCarriageChar( 0xd );  // 13
       
    58 
       
    59 const TUint8 KOff( 0x00 );
       
    60 const TUint8 KOn( 0x01 );
       
    61 
       
    62 const TInt KEchoOn( 1 );
       
    63 const TInt KEchoOff( 2 );
       
    64 const TInt KVerboseOn( 3 );
       
    65 const TInt KVerboseOff( 4 );
       
    66 const TInt KQuietOn( 5 );
       
    67 const TInt KQuietOff( 6 );
       
    68 const TInt KReplyTypeEditorStart( 1 );
       
    69 const TInt KReplyTypeEditorEnd( 2 );
    28 
    70 
    29 CModemAtSrv::CModemAtSrv( TInt aPriority ) :
    71 CModemAtSrv::CModemAtSrv( TInt aPriority ) :
    30     CPolicyServer( aPriority, KSrvPolicy ),
    72     CPolicyServer( aPriority, KSrvPolicy ),
    31     iHandler(NULL),
    73     iHandler(NULL),
    32     iDteId( 0 )  // iDteId defaults to 0 and it is updated by PNS_PIPE_CREATE_RESP
    74     iEcho( KOn ),
    33     {
    75     iEchoNotified( KInitialValue ),
       
    76     iEchoQueryIsOngoing( EFalse ),
       
    77     iVerbose( KOff ),
       
    78     iVerboseNotified( KInitialValue ),
       
    79     iVerboseQueryIsOngoing( EFalse ),
       
    80     iQuiet( KOff ),
       
    81     iQuietNotified( KInitialValue ),
       
    82     iQuietQueryIsOngoing( EFalse ),
       
    83     iCarriageReturn( KDefaultCarriageChar ),
       
    84     iCarriageReturnFound( EFalse )
       
    85     {
       
    86     OstTrace0( TRACE_NORMAL, CMODEMATSRV_CMODEMATSRV, "CModemAtSrv::CModemAtSrv" );
    34     }
    87     }
    35 
    88 
    36 CModemAtSrv::~CModemAtSrv()
    89 CModemAtSrv::~CModemAtSrv()
    37     {
    90     {
       
    91     OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_CMODEMATSRV, "CModemAtSrv::~CModemAtSrv" );
    38     C_TRACE (( _L(">>CModemAtSrv::~CModemAtSrv()") ));
    92     C_TRACE (( _L(">>CModemAtSrv::~CModemAtSrv()") ));
    39     iAtMessageArray.ResetAndDestroy();
    93     iAtMessageArray.ResetAndDestroy();
    40     iAtMessageArray.Close();
    94     iAtMessageArray.Close();
    41     C_TRACE (( _L("<<CModemAtSrv::~CModemAtSrv()") ));
    95     C_TRACE (( _L("<<CModemAtSrv::~CModemAtSrv()") ));
    42     }
    96     }
    43 
    97 
    44 CModemAtSrv* CModemAtSrv::NewLC()
    98 CModemAtSrv* CModemAtSrv::NewLC()
    45     {
    99     {
       
   100     OstTrace0( TRACE_NORMAL, CMODEMATSRV_NEWLC, "CModemAtSrv::NewLC" );
    46     CModemAtSrv* self = new (ELeave) CModemAtSrv( EPriorityNormal );
   101     CModemAtSrv* self = new (ELeave) CModemAtSrv( EPriorityNormal );
    47     CleanupStack::PushL( self );
   102     CleanupStack::PushL( self );
    48     self->ConstructL();
   103     self->ConstructL();
    49     self->StartL( KATExtSrvName );
   104     self->StartL( KATExtSrvName );
    50     RThread().SetPriority( EPriorityNormal );
   105     RThread().SetPriority( EPriorityNormal );
    51     return self;
   106     return self;
    52     }
   107     }
    53 
   108 
    54 void CModemAtSrv::RemovePipe()
   109 void CModemAtSrv::RemovePipe( CModemAtHandler* aHandler )
    55     {
   110     {
       
   111     OstTrace0( TRACE_NORMAL, CMODEMATSRV_REMOVEPIPE, "CModemAtSrv::RemovePipe" );
    56     C_TRACE((_L("CModemAtSrv::RemovePipe()") ));
   112     C_TRACE((_L("CModemAtSrv::RemovePipe()") ));
    57     iHandler->RemovePipe( iDteId );
   113     ASSERT_PANIC_ALWAYS( NULL != aHandler );
       
   114     aHandler->RemovePipe();
    58     }
   115     }
    59 
   116 
    60 void CModemAtSrv::ClientClosed( CModemAtSession* aSession )
   117 void CModemAtSrv::ClientClosed( CModemAtSession* aSession )
    61     {
   118     {
    62     C_TRACE (( _L("CModemAtSrv::ClientClosed()") ));
   119     OstTrace0( TRACE_NORMAL, CMODEMATSRV_CLIENTCLOSED, "CModemAtSrv::ClientClosed" );
       
   120     C_TRACE (( _L(">>CModemAtSrv::ClientClosed()") ));
    63     TInt index = iSessions.Find( aSession );
   121     TInt index = iSessions.Find( aSession );
    64     if( index >= 0 )
   122     if( index >= 0 )
    65         {
   123         {
    66         
   124         OstTrace1( TRACE_NORMAL, DUP1_CMODEMATSRV_CLIENTCLOSED, "CModemAtSrv::ClientClosed - Removing session;iSessions[index]->GetPluginType()=%d", iSessions[index]->GetPluginType() );
    67         if( iSessions.Count() == 1 )
       
    68             {
       
    69             C_TRACE((_L("Disconnecting ISI message handler ") ));
       
    70             iHandler->Disconnect( iDteId );
       
    71             }
       
    72 
       
    73         C_TRACE((_L("Removing session (plugin type %d)"), iSessions[index]->GetPluginType() ));
   125         C_TRACE((_L("Removing session (plugin type %d)"), iSessions[index]->GetPluginType() ));
    74         iSessions.Remove( index );
   126         iSessions.Remove( index );
       
   127 
       
   128         if( ECommonPlugin == aSession->GetPluginType() )
       
   129             {
       
   130             OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_CLIENTCLOSED, "CModemAtSrv::ClientClosed - Disconnecting ISI message handler" );
       
   131             C_TRACE((_L("Disconnecting ISI message handler ") ));
       
   132             aSession->GetHandler()->Disconnect();
       
   133             }
       
   134 
       
   135         for( int i = 0; i < iDteInfo.Count(); i++ )
       
   136             {
       
   137             if( aSession == iDteInfo[i].iSession )
       
   138                 {
       
   139                 OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_CLIENTCLOSED, "CModemAtSrv::ClientClosed - removing dte info" );
       
   140                 C_TRACE((_T("CModemAtSrv::ClientClosed() removing dte info") ));
       
   141                 iDteInfo.Remove( i );
       
   142                 }
       
   143             }
       
   144 
       
   145         TBool pluginsFound( EFalse );       
       
   146         for( int i = 0; i < iSessions.Count(); i++ )
       
   147             {
       
   148             if( 0 == iSessions[i]->GetName().Compare( aSession->GetName() ) )
       
   149                 {
       
   150                 pluginsFound = ETrue;
       
   151                 break;
       
   152                 }
       
   153             }
       
   154 
       
   155         if( !pluginsFound &&
       
   156             iHandler != aSession->GetHandler() )
       
   157             {
       
   158             OstTrace0( TRACE_NORMAL, DUP4_CMODEMATSRV_CLIENTCLOSED, "CModemAtSrv::ClientClosed - Deleting handler" );
       
   159             C_TRACE((_L("Deleting handler") ));
       
   160             iFreeChannels.Append( aSession->GetHandler()->GetChannelId() );
       
   161             delete aSession->GetHandler();
       
   162             }
    75 
   163 
    76         C_TRACE((_T("<<CModemAtSrv::ClientClosed()") ));
   164         C_TRACE((_T("<<CModemAtSrv::ClientClosed()") ));
    77         }
   165         }
    78     }
   166     }
    79  
   167  
    80 CSession2* CModemAtSrv::NewSessionL( const TVersion& aVersion,
   168 CSession2* CModemAtSrv::NewSessionL( const TVersion& aVersion,
    81                                    const RMessage2& /*aMessage*/ ) const
   169                                    const RMessage2& /*aMessage*/ ) const
    82     {
   170     {
       
   171     OstTrace0( TRACE_NORMAL, CMODEMATSRV_NEWSESSIONL, "CModemAtSrv::NewSessionL" );
    83     C_TRACE (( _T("CModemAtSrv::NewSessionL()") ));
   172     C_TRACE (( _T("CModemAtSrv::NewSessionL()") ));
    84     CModemAtSrv& thisServer = const_cast<CModemAtSrv&>( *this );
   173     CModemAtSrv& thisServer = const_cast<CModemAtSrv&>( *this );
    85     CModemAtSession* session = CModemAtSession::NewL( thisServer, aVersion );
   174     CModemAtSession* session = CModemAtSession::NewL( thisServer, aVersion );
    86     CleanupStack::PushL( session );
   175     CleanupStack::PushL( session );
    87     thisServer.iSessions.AppendL( session );
   176     thisServer.iSessions.AppendL( session );
    89     return session;
   178     return session;
    90     }
   179     }
    91 
   180 
    92 void CModemAtSrv::ConstructL()
   181 void CModemAtSrv::ConstructL()
    93     {
   182     {
       
   183     OstTrace0( TRACE_NORMAL, CMODEMATSRV_CONSTRUCTL, "CModemAtSrv::ConstructL" );
    94     C_TRACE (( _T("CModemAtSrv::ConstructL()") ));
   184     C_TRACE (( _T("CModemAtSrv::ConstructL()") ));
    95     iHandler = CModemAtHandler::NewL( *this );
   185     iHandler = CModemAtHandler::NewL( *this, EIscNokiaAtController );
    96     } 
   186 
    97 
   187     iFreeChannels.Append( EIscNokiaAtController2 );
    98 void CModemAtSrv::HandleSignalInd( const TUint8 aDteId )
   188     iFreeChannels.Append( EIscNokiaAtController3 );
    99     {
   189     }
   100     C_TRACE ((_T("CModemAtSrv::HandleSignalInd aDteId = %d sessions = %d"), aDteId, iSessions.Count() ));
   190 
       
   191 void CModemAtSrv::HandleSignalInd( const TUint8 aDteId, const TInt aCompleteCode )
       
   192     {
       
   193     C_TRACE((_T("CModemAtSrv::HandleSignalInd aDteId = %d sessions = %d, code = %d"), aDteId, iSessions.Count(), aCompleteCode ));
   101     for( TInt i = 0; i < iSessions.Count(); i++ )
   194     for( TInt i = 0; i < iSessions.Count(); i++ )
   102         {
   195         {
   103         if( iDteId == aDteId  && iSessions[i]->IsSignalIndReqActive() )
   196         if( iSessions[i]->GetDteId() == aDteId && iSessions[i]->IsSignalIndReqActive() )
   104             {
   197             {
   105             C_TRACE (( _T("CModemAtSrv::HandleSignalInd() session found") ));
   198             C_TRACE (( _T("CModemAtSrv::HandleSignalInd() session found") ));
   106             iSessions[i]->SignalIndReceived();
   199             iSessions[i]->SignalIndReceived( aCompleteCode );
   107             }
   200             }
   108         }
   201         }
   109     }
   202     }
   110 
   203 
   111 void CModemAtSrv::HandleUnsolicitedData( const TUint8 aDteId, const TDesC8& aData )
   204 void CModemAtSrv::HandleUnsolicitedData( const TUint8 aDteId, const TDesC8& aData )
   112     {
   205     {
       
   206     OstTraceExt2( TRACE_NORMAL, CMODEMATSRV_HANDLEUNSOLICITEDDATA, "CModemAtSrv::HandleUnsolicitedData;aDteId=%d;iSessions.Count()=%d", aDteId, iSessions.Count() );
   113     C_TRACE ((_T("CModemAtSrv::HandleUnsolicitedData aDteId = %d sessions = %d"), aDteId, iSessions.Count() ));
   207     C_TRACE ((_T("CModemAtSrv::HandleUnsolicitedData aDteId = %d sessions = %d"), aDteId, iSessions.Count() ));
       
   208     TBool unsolicitedDataHandled( EFalse );
       
   209 
       
   210     _LIT8( KNoCarrier, "NO CARRIER" );
       
   211     if( aData.Find( KNoCarrier ) != KErrNotFound )
       
   212         {
       
   213         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_HANDLEUNSOLICITEDDATA, "CModemAtSrv::HandleUnsolicitedData - NO CARRIER -> COMMAND MODE" );
       
   214         C_TRACE(_L("NO CARRIER -> COMMAND MODE"));
       
   215         HandleCommandModeChange( aDteId, ECommandMode );
       
   216         }
       
   217 
   114     for( TInt i = 0; i < iSessions.Count(); i++ )
   218     for( TInt i = 0; i < iSessions.Count(); i++ )
   115         {
   219         {
   116         if( ( iDteId == aDteId || aDteId == KUnsolicitedDataDteId )&&
   220         if( ( iSessions[i]->GetDteId() == aDteId || aDteId == KUnsolicitedDataDteId )&&
   117             iSessions[i]->IsUnsolicitedDataReqActive() &&
   221             iSessions[i]->IsUnsolicitedDataReqActive() &&
   118             iSessions[i]->GetPluginType() == EATExtPlugin )
   222             iSessions[i]->GetPluginType() == EATExtPlugin )
   119             {
   223             {
       
   224             OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_HANDLEUNSOLICITEDDATA, "CModemAtSrv::HandleUnsolicitedData - session found" );
   120             C_TRACE (( _T("CModemAtSrv::HandleUnsolicitedData() session found") ));
   225             C_TRACE (( _T("CModemAtSrv::HandleUnsolicitedData() session found") ));
   121             iSessions[i]->UnsolicitedData( aData );
   226             iSessions[i]->UnsolicitedData( aData );
   122             }
   227             unsolicitedDataHandled = ETrue;
   123         }
   228             return;
   124     }
   229             }
   125 
   230         }
   126 void CModemAtSrv::HandleCommandModeChange( TCommandMode aMode )
   231     if( ! unsolicitedDataHandled )
   127     {
   232         {
       
   233         OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_HANDLEUNSOLICITEDDATA, "CModemAtSrv::HandleUnsolicitedData - request is not active yet so save message to the server" );
       
   234         C_TRACE (( _T("CModemAtSrv::HandleSignalInd() request is not active yet so save message to the server") ));
       
   235         
       
   236         // Note: If call is received with unsolicited "RING", it will not be sent, because request is not active in data mode.
       
   237         // After that "NO CARRIER" will copy over the "RING", and it will be sent, when returning to command mode.
       
   238         iTemporaryUnsolicitedData = aData;
       
   239         }
       
   240     }
       
   241 
       
   242 TBool CModemAtSrv::IsUnsolicitedDataInBuffer()
       
   243     {
       
   244     OstTrace1( TRACE_NORMAL, CMODEMATSRV_ISUNSOLICITEDDATAINBUFFER, "CModemAtSrv::IsUnsolicitedDataInBuffer;%d", (TInt) iTemporaryUnsolicitedData.Length() );
       
   245     C_TRACE ((_T("CModemAtSrv::IsUnsolicitedDataInBuffer %d"), (TInt) iTemporaryUnsolicitedData.Length() ));
       
   246     if( iTemporaryUnsolicitedData.Length() > 0)
       
   247         {
       
   248         return ETrue;
       
   249         }
       
   250     else
       
   251         {
       
   252         return EFalse;
       
   253         }
       
   254     }
       
   255 
       
   256 void CModemAtSrv::ResetUnsolicitedDataInBuffer()
       
   257     {
       
   258     OstTrace0( TRACE_NORMAL, CMODEMATSRV_RESETUNSOLICITEDDATAINBUFFER, "CModemAtSrv::ResetUnsolicitedDataInBuffer" );
       
   259     C_TRACE (( _T("CModemAtSrv::ResetUnsolicitedDataInBuffer()") ));
       
   260     iTemporaryUnsolicitedData.Zero();
       
   261     }
       
   262 
       
   263 void CModemAtSrv::GetUnsolicitedDataInBuffer( TDes8& aData )
       
   264     {
       
   265     OstTrace0( TRACE_NORMAL, CMODEMATSRV_GETUNSOLICITEDDATAINBUFFER, "CModemAtSrv::GetUnsolicitedDataInBuffer" );
       
   266     C_TRACE (( _T("CModemAtSrv::GetUnsolicitedDataInBuffer()") ));
       
   267     aData.Copy( iTemporaryUnsolicitedData );
       
   268     }
       
   269 
       
   270 
       
   271 void CModemAtSrv::HandleCommandModeChange( TUint8 aDteId, TCommandMode aMode )
       
   272     {
       
   273     OstTraceExt2( TRACE_NORMAL, CMODEMATSRV_HANDLECOMMANDMODECHANGE, "CModemAtSrv::HandleCommandModeChange;iSessions.Count()=%d;aMode=%d", iSessions.Count(), (TInt)aMode );
   128     C_TRACE ((_T("CModemAtSrv::HandleCommandModeChange sessions = %d mode = %d"), iSessions.Count(), (TInt) aMode ));
   274     C_TRACE ((_T("CModemAtSrv::HandleCommandModeChange sessions = %d mode = %d"), iSessions.Count(), (TInt) aMode ));
   129     for( TInt i = 0; i < iSessions.Count(); i++ )
   275     for( TInt i = 0; i < iSessions.Count(); i++ )
   130         {
   276         {
   131         if( iSessions[i]->IsCommandModeReqActive() &&
   277         if( iSessions[i]->IsCommandModeReqActive() &&
   132             iSessions[i]->GetPluginType() == ECommonPlugin )
   278             ECommonPlugin == iSessions[i]->GetPluginType() &&
   133             {
   279             aDteId == iSessions[i]->GetDteId() )
       
   280             {
       
   281             OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_HANDLECOMMANDMODECHANGE, "CModemAtSrv::HandleCommandModeChange - session found" );
   134             C_TRACE (( _T("CModemAtSrv::HandleCommandModeChange() session found") ));
   282             C_TRACE (( _T("CModemAtSrv::HandleCommandModeChange() session found") ));
   135             iSessions[i]->CommandModeChanged( aMode );
   283             iSessions[i]->CommandModeChanged( aMode );
   136             }
   284             }
   137         }
   285         }
   138     }
   286     }
   140 void CModemAtSrv::HandleIntermediateDataInd( const TUint8 aDteId,
   288 void CModemAtSrv::HandleIntermediateDataInd( const TUint8 aDteId,
   141     const TATPluginInterface aPluginType,
   289     const TATPluginInterface aPluginType,
   142     const TDesC8& aResponse,
   290     const TDesC8& aResponse,
   143     const TUint8 aCommand )
   291     const TUint8 aCommand )
   144     {
   292     {
       
   293     OstTraceExt2( TRACE_NORMAL, CMODEMATSRV_HANDLEINTERMEDIATEDATAIND, "CModemAtSrv::HandleIntermediateDataInd;aDteId=%d;iSessions.Count()=%d", aDteId, iSessions.Count() );
   145     C_TRACE ((_T("CModemAtSrv::HandleIntermediateDataInd aDteId = %d sessions = %d "), aDteId, iSessions.Count() ));
   294     C_TRACE ((_T("CModemAtSrv::HandleIntermediateDataInd aDteId = %d sessions = %d "), aDteId, iSessions.Count() ));
   146     C_TRACE ((_T("plugintype = %d command = %d"), (TInt)aPluginType, aCommand ));
   295     C_TRACE ((_T("plugintype = %d command = %d"), (TInt)aPluginType, aCommand ));
   147     
   296     
   148     if ( iAtMessageArray.Count() > 0 )
   297     if ( iAtMessageArray.Count() > 0 )
   149         {
   298         {
       
   299         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_HANDLEINTERMEDIATEDATAIND, "CModemAtSrv::HandleIntermediateDataInd - iAtMessageArray[0]->ReceiveATResponse Intermediate data" );
   150         C_TRACE((_L("iAtMessageArray[0]->ReceiveATResponse Intermediate data")));
   300         C_TRACE((_L("iAtMessageArray[0]->ReceiveATResponse Intermediate data")));
   151         iAtMessageArray[0]->ReceiveATResponse( aResponse, EFalse );
   301         iAtMessageArray[0]->ReceiveATResponse( aResponse, EFalse, KErrNone );
   152         }
   302         }
   153     else
   303     else
   154         {
   304         {
       
   305         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_HANDLEINTERMEDIATEDATAIND, "CModemAtSrv::HandleIntermediateDataInd - INTERMEDIATE DATA received but no request active" );
   155         C_TRACE ((_T("CModemAtSrv::HandleIntermediateDataInd INTERMEDIATE DATA received but no request active") ));
   306         C_TRACE ((_T("CModemAtSrv::HandleIntermediateDataInd INTERMEDIATE DATA received but no request active") ));
   156         }
   307         HandleUnsolicitedData( aDteId, aResponse);
   157     }
   308         }
   158 
   309     }
   159 void CModemAtSrv::HandleATResponse( const TUint8 aDteId, const TDesC8& aResponse, const TUint8 aCommand )
   310 
   160     {
   311 void CModemAtSrv::HandleATResponse( 
       
   312     const TUint8 aDteId, 
       
   313     CModemAtHandler* aHandler,
       
   314     const TDesC8& aResponse, 
       
   315     const TUint8 aCommand )
       
   316     {
       
   317     OstTraceExt2( TRACE_NORMAL, CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse;aDteId=%d;iSessions.Count()=%d", aDteId, iSessions.Count() );
   161     C_TRACE ((_T(">>CModemAtSrv::HandleATResponse aDteId = %d sessions = %d "), aDteId, iSessions.Count() ));
   318     C_TRACE ((_T(">>CModemAtSrv::HandleATResponse aDteId = %d sessions = %d "), aDteId, iSessions.Count() ));
   162     C_TRACE ((_T("CModemAtSrv::HandleATResponse command = %d"), aCommand ));
   319     C_TRACE ((_T("CModemAtSrv::HandleATResponse command = %d"), aCommand ));
   163     
   320     TRACE_ASSERT( NULL != aHandler )
       
   321     TInt completeCode( KErrNone );
       
   322     if( IsTextMessageMode( aHandler ) )
       
   323         {
       
   324         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Text message mode is on" );
       
   325         C_TRACE(_L("Text message mode is on"));
       
   326         if( aResponse.Find( KCursor ) != KErrNotFound )
       
   327             {
       
   328             OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - detected during text message mode" );
       
   329             C_TRACE(_L("> detected during text message mode"));
       
   330             completeCode = KReplyTypeEditorStart; // replace later with EReplyTypeEditorStart
       
   331             }
       
   332         else if( aResponse.Find( KOkResponse ) != KErrNotFound ||
       
   333         	  aResponse.Find( KErrorResponse ) != KErrNotFound ||
       
   334         	  aResponse.Find( KOkResponseNoVerbose ) != KErrNotFound ||
       
   335         	  aResponse.Find( KErrorResponseNoVerbose ) != KErrNotFound )
       
   336             {
       
   337             OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Response detected after text message mode" );
       
   338             C_TRACE(_L("Response detected after text message mode"));
       
   339             aHandler->SetTextMessageMode( EFalse );
       
   340             completeCode = KReplyTypeEditorEnd; // replace later with EReplyTypeEditorEnd
       
   341             }
       
   342         if( completeCode == KErrNone )
       
   343             {
       
   344             OstTrace0( TRACE_NORMAL, DUP4_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Response detected after text message mode (quiet mode)" );
       
   345             C_TRACE(_L("Response detected after text message mode (quiet mode)"));
       
   346             aHandler->SetTextMessageMode( EFalse );
       
   347             completeCode = KReplyTypeEditorEnd;
       
   348             }
       
   349         }
       
   350 
       
   351     if( iEchoQueryIsOngoing )
       
   352         {
       
   353         OstTraceExt2( TRACE_NORMAL, DUP5_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Echo query ongoing.;iEcho=%d;iEchoNitified=%d", iEcho, iEchoNotified );
       
   354         C_TRACE((_L("Echo query ongoing. current: %d, notified %d"), iEcho, iEchoNotified ));
       
   355         if( iEcho == KOff && iEchoNotified != KOff )
       
   356             {
       
   357             OstTrace0( TRACE_NORMAL, DUP7_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Echo off, notify common plug-in." );
       
   358             C_TRACE(_L("Echo off, notify common plug-in."));
       
   359             HandleSignalInd( aDteId, KEchoOff );
       
   360             iEchoNotified = KOff;
       
   361             }
       
   362         else if( iEcho == KOn && iEchoNotified != KOn )
       
   363             {
       
   364             OstTrace0( TRACE_NORMAL, DUP8_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Echo on, notify common plug-in." );
       
   365             C_TRACE(_L("Echo on, notify common plug-in."));
       
   366             HandleSignalInd( aDteId, KEchoOn );
       
   367             iEchoNotified = KOn;
       
   368             }
       
   369         iEchoQueryIsOngoing = EFalse;
       
   370         }
       
   371     else if( iVerboseQueryIsOngoing )
       
   372         {
       
   373         OstTraceExt2( TRACE_NORMAL, DUP9_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Verbose query ongoing.;iVerbose=%d;iVerboseNotified=%d", iVerbose, iVerboseNotified );
       
   374         C_TRACE((_L("Verbose query ongoing. current: %d, notified %d"), iVerbose, iVerboseNotified ));
       
   375         if( iVerbose == KOff && iVerboseNotified != KOff )
       
   376             {
       
   377             OstTrace0( TRACE_NORMAL, DUP10_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Verbose off received, notify common plug-in." );
       
   378             C_TRACE(_L("Verbose off received, notify common plug-in."));
       
   379             HandleSignalInd( aDteId, KVerboseOff );
       
   380             iVerboseNotified = KOff;
       
   381             }
       
   382         else if( iVerbose == KOn && iVerboseNotified != KOn )
       
   383             {
       
   384             OstTrace0( TRACE_NORMAL, DUP11_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Verbose on received, notify common plug-in." );
       
   385             C_TRACE(_L("Verbose on received, notify common plug-in."));
       
   386             HandleSignalInd( aDteId, KVerboseOn );
       
   387             iVerboseNotified = KOn;
       
   388             }
       
   389         iVerboseQueryIsOngoing = EFalse;
       
   390         }
       
   391     else if( iQuietQueryIsOngoing )
       
   392         {
       
   393         OstTraceExt2( TRACE_NORMAL, DUP12_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Quiet query ongoing.;iQuiet=%d;iQuietNotified=%d", iQuiet, iQuietNotified );
       
   394         C_TRACE((_L("Quiet query ongoing. current: %d, notified %d"), iQuiet, iQuietNotified ));
       
   395         if( iQuiet == KOff && iQuietNotified != KOff )
       
   396             {
       
   397             OstTrace0( TRACE_NORMAL, DUP13_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Quiet off, notify common plug-in." );
       
   398             C_TRACE(_L("Quiet off, notify common plug-in."));
       
   399             HandleSignalInd( aDteId, KQuietOff );
       
   400             iQuietNotified = KOff;
       
   401             }
       
   402         else if( iQuiet == KOn && iQuietNotified != KOn )
       
   403             {
       
   404             OstTrace0( TRACE_NORMAL, DUP14_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Quiet on, notify common plug-in." );
       
   405             C_TRACE(_L("Quiet on, notify common plug-in."));
       
   406             HandleSignalInd( aDteId, KQuietOn );
       
   407             iQuietNotified = KOn;
       
   408             }
       
   409         iQuietQueryIsOngoing = EFalse;
       
   410         }
       
   411 
   164     if ( iAtMessageArray.Count() > 0 )
   412     if ( iAtMessageArray.Count() > 0 )
   165         {
   413         {
   166         CAtMessage* tmp = iAtMessageArray[0];
   414         CAtMessage* tmp = iAtMessageArray[0];
       
   415         OstTrace1( TRACE_NORMAL, DUP15_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - iAtMessageArray[0]->ReceiveATResponse;tmp=%x", tmp );
   167         C_TRACE((_L("iAtMessageArray[0]->ReceiveATResponse 0x%x"), tmp ));
   416         C_TRACE((_L("iAtMessageArray[0]->ReceiveATResponse 0x%x"), tmp ));
   168         tmp->ReceiveATResponse( aResponse, ETrue );
   417         tmp->ReceiveATResponse( aResponse, ETrue, completeCode );
       
   418         OstTrace0( TRACE_NORMAL, DUP16_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - Remove the first message in Fifo" );
   169         C_TRACE((_L("CModemAtSrv::HandleATResponse Remove the first message in Fifo")));
   419         C_TRACE((_L("CModemAtSrv::HandleATResponse Remove the first message in Fifo")));
   170         RemoveFirstFromSendFifo();
   420         RemoveFirstFromSendFifo();
       
   421         OstTrace0( TRACE_NORMAL, DUP17_CMODEMATSRV_HANDLEATRESPONSE, "CModemAtSrv::HandleATResponse - SendNextFromFifo" );
   171         C_TRACE((_L("CModemAtSrv::HandleATResponse SendNextFromFifo")));
   422         C_TRACE((_L("CModemAtSrv::HandleATResponse SendNextFromFifo")));
   172         SendNextFromFifo();
   423         SendNextFromFifo();
   173         }
   424         }
   174     else
   425     else
   175         {
   426         {
   176         HandleUnsolicitedData( aDteId, aResponse);
   427         HandleUnsolicitedData( aDteId, aResponse);
   177         }
   428         }
   178     C_TRACE ((_T("<<CModemAtSrv::HandleATResponse()") ));
   429     C_TRACE ((_T("<<CModemAtSrv::HandleATResponse()") ));
   179     }
   430     }
   180 
   431 
   181 TInt CModemAtSrv::ConnectToModem( CModemAtSession* aSession, TATPluginInterface aPluginType ) 
   432 TInt CModemAtSrv::ConnectToModemL( CModemAtSession* aSession, TATPluginInterface aPluginType ) 
   182     {
   433     {
       
   434     OstTrace1( TRACE_NORMAL, CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL;aSession=%x", aSession );
   183     C_TRACE ((_T(">>CModemAtSrv::ConnectToModem 0x%x"), aSession));
   435     C_TRACE ((_T(">>CModemAtSrv::ConnectToModem 0x%x"), aSession));
   184 
   436 
       
   437     OstTraceExt2( TRACE_NORMAL, DUP1_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL;iSessions.Count()=%d;aPluginType=%d", iSessions.Count(), (TInt)aPluginType );
   185     C_TRACE(( _L("session count: %d, type: %d"), iSessions.Count(), (TInt) aPluginType ));
   438     C_TRACE(( _L("session count: %d, type: %d"), iSessions.Count(), (TInt) aPluginType ));
   186 
   439 
   187     if( aPluginType == ECommonPlugin )
   440     if( aPluginType == ECommonPlugin )
   188         {
   441         {
       
   442         OstTrace1( TRACE_NORMAL, DUP2_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Common plug-in connecting;aSession=%x", aSession );
   189         C_TRACE ((_T("Common plug-in connecting")));
   443         C_TRACE ((_T("Common plug-in connecting")));
   190         C_TRACE ((_T("<<CModemAtSrv::ConnectToModem iDteId: %d, session: 0x%x"), iDteId, aSession));
   444         C_TRACE ((_T("<<CModemAtSrv::ConnectToModem session: 0x%x"), aSession));
   191         return iHandler->Connect( iDteId );
   445         
       
   446         if( KMaxDteCount >= GetDteCount() )
       
   447             {
       
   448             TBool handlerAttached( EFalse );
       
   449             for( TInt i = 0; i < iSessions.Count(); i++ )
       
   450                 {
       
   451                 if( iHandler == iSessions[i]->GetHandler() )
       
   452                     {
       
   453                     handlerAttached = ETrue;
       
   454                     break;
       
   455                     }
       
   456                 }
       
   457 
       
   458             TUint8 devId( 0 );
       
   459             TUint8 objId( 0 );
       
   460             TBool dteFound( EFalse );
       
   461             OstTrace1( TRACE_NORMAL, DUP3_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL;iDteInfo.Count()=%d", iDteInfo.Count() );
       
   462             C_TRACE ((_T("iDteInfo.Count(): %d"), iDteInfo.Count()));
       
   463             for( TInt j = 0; j < iDteInfo.Count(); j++ )
       
   464                 {
       
   465                 if( NULL == iDteInfo[j].iSession )
       
   466                     {
       
   467                     dteFound = ETrue;
       
   468                     CModemAtHandler* handler( NULL );
       
   469                     devId = iDteInfo[j].iDevId;
       
   470                     objId = iDteInfo[j].iObjId;
       
   471                     if( handlerAttached )
       
   472                         {
       
   473                         OstTrace0( TRACE_NORMAL, DUP4_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Creating new handler" );
       
   474                         C_TRACE ((_T("Creating new handler")));
       
   475                         TUint8 channelId( 0 );
       
   476                         if( KErrNone == GetFreeChannelId( channelId ) )
       
   477                             {
       
   478                             handler = CModemAtHandler::NewL(
       
   479                                 *this,
       
   480                                 channelId );
       
   481                             iDteInfo[j].iSession = aSession;
       
   482                             aSession->SetHandler( handler );
       
   483                             }
       
   484                         else
       
   485                             {
       
   486                             TRACE_ASSERT_ALWAYS;
       
   487                             aSession->ModemConnected( KErrGeneral );
       
   488                             OstTrace0( TRACE_NORMAL, DUP14_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL No free channel id" );
       
   489                             C_TRACE ((_T("No free channel id")));
       
   490                             return KErrGeneral;
       
   491                             }
       
   492                         }
       
   493                     else
       
   494                         {
       
   495                         OstTrace0( TRACE_NORMAL, DUP5_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Using already created handler" );
       
   496                         C_TRACE ((_T("Using already created handler")));
       
   497                         iDteInfo[j].iSession = aSession;
       
   498                         aSession->SetHandler( iHandler );
       
   499                         }
       
   500                     break;
       
   501                     }
       
   502                 }
       
   503             if( dteFound )
       
   504                 {
       
   505                 return aSession->GetHandler()->Connect( devId, objId );
       
   506                 }
       
   507             else
       
   508                 {
       
   509                 OstTrace0( TRACE_NORMAL, DUP6_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - No dte info found. Possibly PNS_NAME_ADD_IND not received -> creating default pipe." );
       
   510                 C_TRACE ((_T("No dte info found. Possibly PNS_NAME_ADD_IND not received -> creating default pipe.")));
       
   511                 
       
   512                 CModemAtHandler* handler( NULL );
       
   513                 
       
   514                 TUint KInitialDpObjId( 0x2f );
       
   515                 TUint dataportObjectid( KInitialDpObjId );
       
   516                 TBool found( EFalse );
       
   517                     
       
   518                 if( !handlerAttached )
       
   519                     {
       
   520                     OstTrace0( TRACE_NORMAL, DUP7_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Using already created handler" );
       
   521                     C_TRACE ((_T("Using already created handler")));
       
   522                     aSession->SetHandler( iHandler );
       
   523 
       
   524                     OstTrace0( TRACE_NORMAL, DUP8_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Calling GetDataportObjectId()" );
       
   525                     C_TRACE ((_T("Calling GetDataportObjectId()")));
       
   526                     aSession->GetHandler()->GetDataportObjectId( dataportObjectid );
       
   527                     
       
   528                     OstTrace0( TRACE_NORMAL, DUP9_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Calling AddDevice()" );
       
   529                     C_TRACE ((_T("Calling AddDevice()")));
       
   530                     AddDevice( THIS_DEVICE, (TUint8)dataportObjectid );
       
   531                     
       
   532                     OstTrace0( TRACE_NORMAL, DUP10_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Set session to this device" );
       
   533                     C_TRACE ((_T("Set session to this device")));
       
   534                     for( TInt j = 0; j < iDteInfo.Count(); j++ )
       
   535                         {
       
   536                         if( NULL == iDteInfo[j].iSession ) // if iSession is NULL, the device handler is not attached
       
   537                             {
       
   538                             OstTrace0( TRACE_NORMAL, DUP11_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Device session found" );
       
   539                             C_TRACE ((_T("Device session found")));
       
   540                             iDteInfo[j].iSession = aSession;
       
   541                             found = ETrue;
       
   542                             }
       
   543                         }
       
   544                     if( !found )
       
   545                         {
       
   546                         OstTrace0( TRACE_NORMAL, DUP12_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Device session not found" );
       
   547                         C_TRACE ((_T("Device session not found")));
       
   548                         if( iDteInfo.Count() == 1 )
       
   549                             {
       
   550                             OstTrace0( TRACE_NORMAL, DUP13_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Set session to first device" );
       
   551                             C_TRACE ((_T("Set session to first device")));
       
   552                             iDteInfo[0].iSession = aSession;
       
   553                             }
       
   554                         }
       
   555                     }
       
   556                 else
       
   557                     {
       
   558                     // NOTE: It might be possible to have second device attached and then no pipe has been created
       
   559                     // before this, EIscNokiaDataport2 has been used with first device. Now we need use
       
   560                     // EIscNokiaDataport4. EIscNokiaDataport5 is not currently supported without PNS_NAME_ADD_IND.
       
   561                     TUint8 channelId( 0 );
       
   562                     if( KErrNone == GetFreeChannelId( channelId ) )
       
   563                         {
       
   564                         C_TRACE ((_T("Creating new handler")));
       
   565                         handler = CModemAtHandler::NewL(
       
   566                             *this,
       
   567                             channelId );
       
   568                         OstTrace0( TRACE_NORMAL, DUP15_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Using just created handler" );
       
   569                         C_TRACE ((_T("Using just created handler")));
       
   570                         aSession->SetHandler( handler );
       
   571 
       
   572                         OstTrace0( TRACE_NORMAL, DUP16_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Calling GetDataportObjectId()" );
       
   573                         C_TRACE ((_T("Calling GetDataportObjectId()")));
       
   574 
       
   575                         // Get dataport 4 
       
   576                         aSession->GetHandler()->GetSecondaryDataportObjectId( dataportObjectid );
       
   577 
       
   578                         OstTrace0( TRACE_NORMAL, DUP17_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Calling AddDevice()" );
       
   579                         C_TRACE ((_T("Calling AddDevice()")));
       
   580                         AddDevice( THIS_DEVICE, (TUint8)dataportObjectid );
       
   581 
       
   582 
       
   583                         OstTrace0( TRACE_NORMAL, DUP18_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Set session to the second device" );
       
   584                         C_TRACE ((_T("Set session to the second device")));
       
   585 
       
   586                         for( TInt j = 0; j < iDteInfo.Count(); j++ )
       
   587                             {
       
   588                             if( NULL == iDteInfo[j].iSession )
       
   589                                 {
       
   590                                 OstTrace0( TRACE_NORMAL, DUP19_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Device session found" );
       
   591                                 C_TRACE ((_T("Device session found")));
       
   592                                 iDteInfo[j].iSession = aSession;
       
   593                                 found = ETrue;
       
   594                                 }
       
   595                             }
       
   596                         if( !found )
       
   597                             {
       
   598                             OstTrace0( TRACE_NORMAL, DUP20_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Device 2 session not found" );
       
   599                             C_TRACE ((_T("Device 2 session not found")));
       
   600                             if( iDteInfo.Count() == 2 )
       
   601                                 {
       
   602                                 OstTrace0( TRACE_NORMAL, DUP21_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Set session to second device" );
       
   603                                 C_TRACE ((_T("Set session to second device")));
       
   604                                 iDteInfo[1].iSession = aSession;
       
   605                                 }
       
   606                             }
       
   607                         }
       
   608                     else
       
   609                         {	
       
   610                         TRACE_ASSERT_ALWAYS;
       
   611                         aSession->ModemConnected( KErrGeneral );
       
   612                         OstTrace0( TRACE_NORMAL, DUP26_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL No free channel id" );
       
   613                         C_TRACE ((_T("No free channel id")));
       
   614                         }
       
   615                     }
       
   616                 if( found )
       
   617                     {
       
   618                     OstTrace0( TRACE_NORMAL, DUP22_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Calling Connect( THIS_DEVICE, dataportObjectid )" );
       
   619                     C_TRACE ((_T("Calling Connect( THIS_DEVICE, dataportObjectid )")));
       
   620                     return aSession->GetHandler()->Connect( THIS_DEVICE, dataportObjectid );
       
   621                     }
       
   622                 else
       
   623                     {
       
   624                     C_TRACE ((_T("no dte info found, connect failed")));
       
   625                     OstTrace0( TRACE_NORMAL, DUP27_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL no dte info found, connect failed" );
       
   626                     aSession->ModemConnected( KErrGeneral );
       
   627                     }
       
   628                 }
       
   629             }
       
   630         else
       
   631             {
       
   632             OstTrace0( TRACE_NORMAL, DUP23_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Too many connections, connect failed" );
       
   633             C_TRACE ((_T("Too many connections, connect failed")));
       
   634             aSession->ModemConnected( KErrGeneral );
       
   635             }
   192         }
   636         }
   193     else
   637     else
   194         {
   638         {
       
   639         OstTrace0( TRACE_NORMAL, DUP24_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL - Atext plug-in connecting" );
   195         C_TRACE ((_T("Atext plug-in connecting")));
   640         C_TRACE ((_T("Atext plug-in connecting")));
   196 
   641 
       
   642         for( TInt i = 0; i < iSessions.Count(); i++ )
       
   643             {
       
   644             if( ECommonPlugin == iSessions[i]->GetPluginType() &&
       
   645                 0 == iSessions[i]->GetName().Compare( aSession->GetName() ) )
       
   646                 {
       
   647                 aSession->SetDteId( iSessions[i]->GetDteId() );
       
   648                 aSession->SetHandler( iSessions[i]->GetHandler() );
       
   649                 break;
       
   650                 }
       
   651             }
   197         aSession->ModemConnected( KErrNone );
   652         aSession->ModemConnected( KErrNone );
       
   653 
       
   654         OstTrace1( TRACE_NORMAL, DUP25_CMODEMATSRV_CONNECTTOMODEML, "CModemAtSrv::ConnectToModemL;aSession=%x", aSession );
   198         C_TRACE ((_T("<<CModemAtSrv::ConnectToModem 0x%x"), aSession));
   655         C_TRACE ((_T("<<CModemAtSrv::ConnectToModem 0x%x"), aSession));
   199         return KErrNone;
   656         }
   200         }
   657     return KErrNone;
   201 
       
   202     }
   658     }
   203 
   659 
   204 void CModemAtSrv::AddToSendFifo( const TATPluginInterface aPluginType, CAtMessage* aMessage )
   660 void CModemAtSrv::AddToSendFifo( const TATPluginInterface aPluginType, CAtMessage* aMessage )
   205     {
   661     {
       
   662     OstTraceExt2( TRACE_NORMAL, CMODEMATSRV_ADDTOSENDFIFO, "CModemAtSrv::AddToSendFifo;aPluginType=%d;aMessage=%p", (TInt)aPluginType, aMessage );
   206     C_TRACE (( _T("CModemAtSrv::AddToSendFifo( aPluginType: %d, aMessage: 0x%x)"), (TInt)aPluginType, aMessage));
   663     C_TRACE (( _T("CModemAtSrv::AddToSendFifo( aPluginType: %d, aMessage: 0x%x)"), (TInt)aPluginType, aMessage));
   207 
   664 
   208     iAtMessageArray.Append( aMessage ); // only one AT command at the time in modem
   665     iAtMessageArray.Append( aMessage ); // only one AT command at the time in modem
   209 
   666 
   210     if( iAtMessageArray.Count() == 1 ) //if empty Fifo send immediately
   667     if( iAtMessageArray.Count() == 1 ) //if empty Fifo send immediately
   211         {
   668         {
       
   669         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_ADDTOSENDFIFO, "CModemAtSrv::AddToSendFifo - Sending message immediately" );
   212         C_TRACE((_L("Sending message immediately")));
   670         C_TRACE((_L("Sending message immediately")));
   213         iHandler->SendATCommand( iDteId, 
   671         CModemAtSession* session = aMessage->GetSession();
   214            aPluginType,
   672         if( session )
   215            aMessage->GetMessageType(),
   673             {
   216            aMessage->GetBuffer() );
   674             CModemAtHandler* handler( session->GetHandler() );
       
   675             PeekAtCommand( handler, aMessage->GetBuffer() );
       
   676 
       
   677             handler->SendATCommand( 
       
   678                 aPluginType,
       
   679                 aMessage->GetMessageType(),
       
   680                 aMessage->GetBuffer() );
       
   681             }
       
   682         else
       
   683             {
       
   684             OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_ADDTOSENDFIFO, "CModemAtSrv::AddToSendFifo - Session NULL" );
       
   685             C_TRACE((_L("Session NULL")));
       
   686             TRACE_ASSERT_ALWAYS;
       
   687             }
   217         }
   688         }
   218     }
   689     }
   219 
   690 
   220 void CModemAtSrv::RemoveFirstFromSendFifo()
   691 void CModemAtSrv::RemoveFirstFromSendFifo()
   221     {
   692     {
       
   693     OstTrace1( TRACE_NORMAL, CMODEMATSRV_REMOVEFIRSTFROMSENDFIFO, "CModemAtSrv::RemoveFirstFromSendFifo;iAtMessageArray.Count()=%d", iAtMessageArray.Count() );
   222     C_TRACE(( _T("CModemAtSrv::RemoveFirstFromSendFifo iAtMessageArray.Count = %d"), iAtMessageArray.Count() ));
   694     C_TRACE(( _T("CModemAtSrv::RemoveFirstFromSendFifo iAtMessageArray.Count = %d"), iAtMessageArray.Count() ));
   223     if( iAtMessageArray.Count( ) > 0 )
   695     if( iAtMessageArray.Count( ) > 0 )
   224         {
   696         {
       
   697         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_REMOVEFIRSTFROMSENDFIFO, "CModemAtSrv::RemoveFirstFromSendFifo - 1" );
   225         C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 1") ));
   698         C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 1") ));
   226         CAtMessage* msg = iAtMessageArray[0];
   699         CAtMessage* msg = iAtMessageArray[0];
       
   700         OstTrace1( TRACE_NORMAL, DUP2_CMODEMATSRV_REMOVEFIRSTFROMSENDFIFO, "CModemAtSrv::RemoveFirstFromSendFifo - 2;msg=%x", msg );
   227         C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 2 0x%x"), msg ));
   701         C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 2 0x%x"), msg ));
   228         iAtMessageArray.Remove(0);
   702         iAtMessageArray.Remove(0);
   229         if( msg )
   703         if( msg )
   230             {
   704             {
       
   705             OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_REMOVEFIRSTFROMSENDFIFO, "CModemAtSrv::RemoveFirstFromSendFifo - 3" );
   231             C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 3") ));
   706             C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 3") ));
   232             delete msg;
   707             delete msg;
   233             }
   708             }
   234         else
   709         else
   235             {
   710             {
   236             TRACE_ASSERT_ALWAYS;
   711             TRACE_ASSERT_ALWAYS;
   237             }
   712             }
       
   713         OstTrace0( TRACE_NORMAL, DUP4_CMODEMATSRV_REMOVEFIRSTFROMSENDFIFO, "CModemAtSrv::RemoveFirstFromSendFifo - 4" );
   238         C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 4") ));
   714         C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 4") ));
   239         }
   715         }
       
   716     OstTrace0( TRACE_NORMAL, DUP5_CMODEMATSRV_REMOVEFIRSTFROMSENDFIFO, "CModemAtSrv::RemoveFirstFromSendFifo - 5" );
   240     C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 5") ));
   717     C_TRACE (( _T("CModemAtSrv::RemoveFirstFromSendFifo 5") ));
   241     }
   718     }
   242 
   719 
   243 void CModemAtSrv::SendNextFromFifo()
   720 void CModemAtSrv::SendNextFromFifo()
   244     {
   721     {
       
   722     OstTrace1( TRACE_NORMAL, CMODEMATSRV_SENDNEXTFROMFIFO, "CModemAtSrv::SendNextFromFifo - fifo message count;iAtMessageArray.Count()=%d", iAtMessageArray.Count() );
   245     C_TRACE ((_T("CModemAtSrv::SendNextFromFifo fifo has %d message(s)"), iAtMessageArray.Count() ));
   723     C_TRACE ((_T("CModemAtSrv::SendNextFromFifo fifo has %d message(s)"), iAtMessageArray.Count() ));
   246     
   724     
   247     TPtr8 ptr(0,0);
   725     TPtr8 ptr( 0, 0 );
   248     if( iAtMessageArray.Count() > 0 )
   726     if( iAtMessageArray.Count() > 0 )
   249         {
   727         {
       
   728         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_SENDNEXTFROMFIFO, "CModemAtSrv::SendNextFromFifo - Messages in buffer... Sending message" );
   250         C_TRACE((_L("Messages in buffer... Sending message")));
   729         C_TRACE((_L("Messages in buffer... Sending message")));
   251         ptr.Set( iAtMessageArray[0]->GetBuffer() );
   730         ptr.Set( iAtMessageArray[0]->GetBuffer() );
   252         
   731 
   253         C_TRACE (( _T("iHandler->SendATCommand()") ));
   732         CModemAtHandler* handler( iAtMessageArray[0]->GetSession()->GetHandler() );
   254         iHandler->SendATCommand( iDteId, 
   733         if( handler )
   255            iAtMessageArray[0]->GetSession()->GetPluginType(),
   734             {
   256            iAtMessageArray[0]->GetMessageType(),
   735             OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_SENDNEXTFROMFIFO, "CModemAtSrv::SendNextFromFifo - iHandler->SendATCommand()" );
   257            ptr );
   736             C_TRACE (( _T("iHandler->SendATCommand()") ));
       
   737             PeekAtCommand( handler, ptr );
       
   738             handler->SendATCommand( 
       
   739                 iAtMessageArray[0]->GetSession()->GetPluginType(),
       
   740                 iAtMessageArray[0]->GetMessageType(),
       
   741                 ptr );
       
   742             }
       
   743         else
       
   744             {
       
   745             OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_SENDNEXTFROMFIFO, "CModemAtSrv::SendNextFromFifo - Handler NULL" );
       
   746             C_TRACE((_L("Handler NULL")));
       
   747             TRACE_ASSERT_ALWAYS;
       
   748             }   
   258         }
   749         }
   259     }
   750     }
   260 
   751 
   261 void CModemAtSrv::CancelFifoRequests( const CModemAtSession* aSession )
   752 void CModemAtSrv::CancelFifoRequests( const CModemAtSession* aSession )
   262     {
   753     {
       
   754     OstTrace1( TRACE_NORMAL, CMODEMATSRV_CANCELFIFOREQUESTS, "CModemAtSrv::CancelFifoRequests;iAtMessageArray.Count()=%d", iAtMessageArray.Count() );
   263     C_TRACE((_T(">>CModemAtSrv::CancelFifoRequests count: %d"), iAtMessageArray.Count() ));
   755     C_TRACE((_T(">>CModemAtSrv::CancelFifoRequests count: %d"), iAtMessageArray.Count() ));
   264     TInt messageCount = iAtMessageArray.Count();
   756     TInt messageCount = iAtMessageArray.Count();
   265     for( TInt i = 0; i < messageCount; i++ )
   757     for( TInt i = 0; i < messageCount; i++ )
   266         {
   758         {
       
   759         OstTrace1( TRACE_NORMAL, DUP1_CMODEMATSRV_CANCELFIFOREQUESTS, "CModemAtSrv::CancelFifoRequests - ;i=%d", i );
   267         C_TRACE((_T("CancelFifoRequests %d"), i ));
   760         C_TRACE((_T("CancelFifoRequests %d"), i ));
   268         CAtMessage* msg = iAtMessageArray[ i ];
   761         CAtMessage* msg = iAtMessageArray[ i ];
   269         if( msg )
   762         if( msg )
   270             {
   763             {
       
   764             OstTrace1( TRACE_NORMAL, DUP2_CMODEMATSRV_CANCELFIFOREQUESTS, "CModemAtSrv::CancelFifoRequests - Found Request:;msg=%x", msg );
   271             C_TRACE((_T("Found Request: 0x%x"),msg ));
   765             C_TRACE((_T("Found Request: 0x%x"),msg ));
   272             if( msg->GetSession() == aSession)
   766             if( msg->GetSession() == aSession)
   273                 {
   767                 {
       
   768                 OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_CANCELFIFOREQUESTS, "CModemAtSrv::CancelFifoRequests - canceling request" );
   274                 C_TRACE((_T("CancelFifoRequests - canceling request") ));
   769                 C_TRACE((_T("CancelFifoRequests - canceling request") ));
   275                 msg->CancelRequest();
   770                 msg->CancelRequest();
       
   771                 OstTrace0( TRACE_NORMAL, DUP4_CMODEMATSRV_CANCELFIFOREQUESTS, "CModemAtSrv::CancelFifoRequests - delete msg" );
   276                 C_TRACE (( _T("CModemAtSrv::CancelFifoRequest delete msg") ));
   772                 C_TRACE (( _T("CModemAtSrv::CancelFifoRequest delete msg") ));
   277                 delete msg;
   773                 delete msg;
   278                 }
   774                 }
   279             }
   775             }
   280         }
   776         }
       
   777     OstTrace1( TRACE_NORMAL, DUP5_CMODEMATSRV_CANCELFIFOREQUESTS, "CModemAtSrv::CancelFifoRequests - iAtMessageArray.Remove;messageCount=%d", messageCount );
   281     C_TRACE (( _T("CModemAtSrv::CancelFifoRequest iAtMessageArray.Remove %d messages"), messageCount ));
   778     C_TRACE (( _T("CModemAtSrv::CancelFifoRequest iAtMessageArray.Remove %d messages"), messageCount ));
   282     for( TInt j = 0; j < messageCount && iAtMessageArray.Count() > 0; j++ )
   779     for( TInt j = 0; j < messageCount && iAtMessageArray.Count() > 0; j++ )
   283         {
   780         {
   284         iAtMessageArray.Remove( 0 );
   781         iAtMessageArray.Remove( 0 );
   285         }
   782         }
   286     C_TRACE(( _T("<<CModemAtSrv::CancelFifoRequests()") ));
   783     C_TRACE(( _T("<<CModemAtSrv::CancelFifoRequests()") ));
   287     }
   784     }
   288 
   785 
   289 TInt CModemAtSrv::SessionCount()
   786 TInt CModemAtSrv::SessionCount()
   290     {
   787     {
       
   788     OstTrace1( TRACE_NORMAL, CMODEMATSRV_SESSIONCOUNT, "CModemAtSrv::SessionCount;iSessions.Count()=%d", iSessions.Count() );
   291     C_TRACE(( _T("CModemAtSrv::SessionCount() %d"), iSessions.Count() ));
   789     C_TRACE(( _T("CModemAtSrv::SessionCount() %d"), iSessions.Count() ));
   292     return iSessions.Count();
   790     return iSessions.Count();
   293     }
   791     }
   294 
   792 
   295 void CModemAtSrv::SetDteIdAndConnect( const TUint8 aDteId, const TInt aConnectionError ) 
   793 void CModemAtSrv::SetDteIdAndConnect( const TUint8 aDteId, const TInt aConnectionError ) 
   296     {
   794     {
       
   795     OstTrace1( TRACE_NORMAL, CMODEMATSRV_SETDTEIDANDCONNECT, "CModemAtSrv::SetDteIdAndConnect;aDteId=%d", aDteId );
   297     C_TRACE(( _T("CModemAtSrv::SetDteIdAndConnect( %d )"), aDteId ));
   796     C_TRACE(( _T("CModemAtSrv::SetDteIdAndConnect( %d )"), aDteId ));
   298     iDteId = aDteId;
   797     OstTrace1( TRACE_NORMAL, DUP1_CMODEMATSRV_SETDTEIDANDCONNECT, "CModemAtSrv::SetDteIdAndConnect;iSessions.Count()=%d", iSessions.Count() );
   299 
       
   300     C_TRACE ((_T("sessions = %d"), iSessions.Count() ));
   798     C_TRACE ((_T("sessions = %d"), iSessions.Count() ));
       
   799 
   301     for( TInt i = 0; i < iSessions.Count(); i++ )
   800     for( TInt i = 0; i < iSessions.Count(); i++ )
   302         {
   801         {
   303         if( iSessions[i]->IsConnectReqActive() )
   802         if( iSessions[i]->IsConnectReqActive() )
   304             {
   803             {
       
   804             OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_SETDTEIDANDCONNECT, "CModemAtSrv::SetDteIdAndConnect - set sessions to connected" );
   305             C_TRACE (( _T("set sessions to connected") ));
   805             C_TRACE (( _T("set sessions to connected") ));
       
   806             iSessions[i]->SetDteId( aDteId );
   306             iSessions[i]->ModemConnected( aConnectionError );
   807             iSessions[i]->ModemConnected( aConnectionError );
   307             }
   808             }
   308         }
   809         }
   309     }
   810     }
   310 
   811 
       
   812 TBool CModemAtSrv::IsPipeInDataMode( CModemAtHandler* aHandler )
       
   813     {
       
   814     OstTrace1( TRACE_NORMAL, CMODEMATSRV_ISPIPEINDATAMODE, "CModemAtSrv::IsPipeInDataMode;aHandler=%x", aHandler );
       
   815     C_TRACE(( _T("CModemAtSrv::IsPipeInDataMode() handler: 0x%x"), aHandler ));
       
   816     TRACE_ASSERT( NULL != aHandler )
       
   817     return aHandler->IsPipeInDataMode();
       
   818     }
       
   819 
       
   820 TBool CModemAtSrv::IsTextMessageMode( CModemAtHandler* aHandler )
       
   821     {
       
   822     OstTrace1( TRACE_NORMAL, CMODEMATSRV_ISTEXTMESSAGEMODE, "CModemAtSrv::IsTextMessageMode;aHandler=%x", aHandler );
       
   823     C_TRACE(( _T("CModemAtSrv::IsTextMessageMode() handler: 0x%x"), aHandler ));
       
   824     TRACE_ASSERT( NULL != aHandler )
       
   825     return aHandler->IsTextMessageMode();
       
   826     }
       
   827 
       
   828 void CModemAtSrv::PeekAtCommand( CModemAtHandler* aHandler, TDes8& aCmd )
       
   829     {
       
   830     OstTrace1( TRACE_NORMAL, CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand;aHandler=%x", aHandler );
       
   831     C_TRACE(( _T("CModemAtSrv::PeekAtCommand() handler: 0x%x"), aHandler ));
       
   832     TRACE_ASSERT( NULL != aHandler )
       
   833 
       
   834     if( ( aCmd.Find( KCmgs ) != KErrNotFound || 
       
   835     	  aCmd.Find( KCmgc ) != KErrNotFound ) &&
       
   836     	  aCmd.Find( KCmgsQuery ) == KErrNotFound &&
       
   837     	  aCmd.Find( KCmgcQuery ) == KErrNotFound )
       
   838         {
       
   839         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - +CMGS or +CMGC detected. The indications after this will be ignored." );
       
   840         C_TRACE(_L("+CMGS or +CMGC detected. The indications after this will be ignored."));
       
   841         aHandler->SetTextMessageMode( ETrue );
       
   842         }
       
   843     // no else
       
   844 
       
   845     if( aCmd.Find( KAtv1 ) != KErrNotFound )
       
   846         {
       
   847         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATV1 received" );
       
   848         C_TRACE(( _T("ATV1 received") ));
       
   849         iVerbose = KOn;
       
   850         iVerboseQueryIsOngoing = ETrue;
       
   851         }
       
   852     else if( aCmd.Find( KAtv0 ) != KErrNotFound || 
       
   853     	  aCmd.Find( KAtv ) != KErrNotFound )
       
   854         {
       
   855         OstTrace0( TRACE_NORMAL, DUP3_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATV0 received" );
       
   856         C_TRACE(( _T("ATV(0) received") ));
       
   857         iVerbose = KOff;
       
   858         iVerboseQueryIsOngoing = ETrue;
       
   859         }
       
   860     else if( aCmd.Find( KAtq1 ) != KErrNotFound )
       
   861         {
       
   862         OstTrace0( TRACE_NORMAL, DUP4_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATQ1 received" );
       
   863         C_TRACE(( _T("ATQ1 received") ));
       
   864         iQuiet = KOn;
       
   865         iQuietQueryIsOngoing = ETrue;
       
   866         }
       
   867     else if( aCmd.Find( KAtq0 ) != KErrNotFound ||
       
   868     	  aCmd.Find( KAtq ) != KErrNotFound )
       
   869         {
       
   870         OstTrace0( TRACE_NORMAL, DUP5_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATQ0 received" );
       
   871         C_TRACE(( _T("ATQ(0) received") ));
       
   872         iQuiet = KOff;
       
   873         iQuietQueryIsOngoing = ETrue;
       
   874         }
       
   875     else if( aCmd.Find( KAte1 ) != KErrNotFound )
       
   876         {
       
   877         OstTrace0( TRACE_NORMAL, DUP6_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATE1 received" );
       
   878         C_TRACE(( _T("ATE(1) received") ));
       
   879         iEcho = KOn;
       
   880         iEchoQueryIsOngoing = ETrue;
       
   881         }
       
   882     else if( aCmd.Find( KAte0 ) != KErrNotFound ||
       
   883     	  aCmd.Find( KAte ) != KErrNotFound )
       
   884         {
       
   885         OstTrace0( TRACE_NORMAL, DUP7_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATE0 received" );
       
   886         C_TRACE(( _T("ATE(0) received") ));
       
   887         iEcho = KOff;
       
   888         iEchoQueryIsOngoing = ETrue;
       
   889         }
       
   890     else if( aCmd.Find( KAts3 ) != KErrNotFound )
       
   891         {
       
   892         OstTrace0( TRACE_NORMAL, DUP8_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATS3 received" );
       
   893         C_TRACE(( _T("ATS3= received, saving it for the next profile query") ));
       
   894 
       
   895         TInt valueLength = aCmd.Length() - KAts3().Length() - 1;
       
   896 		OstTrace1( TRACE_NORMAL, DUP9_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand;valueLength=%d", valueLength );
       
   897 		OstTrace1( TRACE_NORMAL, DUP10_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand;KAts3Length=%d", KAts3().Length() );
       
   898         C_TRACE(( _T("Reading %d char's starting from %d."), valueLength, KAts3().Length() ));
       
   899         if( valueLength > 0 )
       
   900             {
       
   901             TLex8 lex( aCmd.Mid( KAts3().Length(), valueLength ) );
       
   902             TInt value;
       
   903             if( lex.Val(value) == KErrNone )
       
   904                 {
       
   905                 C_TRACE(( _T("iCarriageReturn 0x%x "), value ));
       
   906                 iCarriageReturn = (TUint8)value;
       
   907                 iCarriageReturnFound = ETrue;
       
   908                 }
       
   909             }
       
   910         // no else
       
   911         }
       
   912 
       
   913     if( aCmd.Find( KAts3 ) == KErrNotFound &&
       
   914     	  iCarriageReturnFound )
       
   915         {
       
   916         OstTrace0( TRACE_NORMAL, DUP11_CMODEMATSRV_PEEKATCOMMAND, "CModemAtSrv::PeekAtCommand - ATE=? received" );
       
   917         C_TRACE(( _T("ATS3 has set the carriage return, using it once for profile query that will notify it to upper layers") ));
       
   918         aCmd.Copy( aCmd.Mid( 0, aCmd.Length() - 1 ) );
       
   919         aCmd.Append( iCarriageReturn );
       
   920         iCarriageReturnFound = EFalse;
       
   921         }
       
   922 
       
   923     }
       
   924 
       
   925 TBool CModemAtSrv::IsEchoNotified( const TUint8 aEchoValue )
       
   926     {
       
   927     OstTrace1( TRACE_NORMAL, CMODEMATSRV_ISECHONOTIFIED, "CModemAtSrv::IsEchoNotified;aEchoValue=%d", aEchoValue );
       
   928     C_TRACE(( _T("CModemAtSrv::IsEchoNotified( %d )"), aEchoValue ));
       
   929     if( aEchoValue != iEchoNotified )
       
   930         {
       
   931         OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_ISECHONOTIFIED, "CModemAtSrv::IsEchoNotified - Echo value is not notified yet." );
       
   932         C_TRACE(( _T("Echo value is not notified yet.") ));
       
   933         return EFalse;
       
   934         }
       
   935     else
       
   936         {
       
   937         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_ISECHONOTIFIED, "CModemAtSrv::IsEchoNotified - Echo value is the same as before" );
       
   938         C_TRACE(( _T("Echo value is the same as before") ));
       
   939         return ETrue;
       
   940         }
       
   941     }
       
   942 
       
   943 TBool CModemAtSrv::IsSettingQueryOngoing()
       
   944     {
       
   945     OstTrace0( TRACE_NORMAL, CMODEMATSRV_ISSETTINGQUERYONGOING, "CModemAtSrv::IsSettingQueryOngoing" );
       
   946     C_TRACE(( _T("CModemAtSrv::IsSettingQueryOngoing()") ));
       
   947     if ( iEchoQueryIsOngoing || iVerboseQueryIsOngoing || iQuietQueryIsOngoing )
       
   948         {
       
   949         return ETrue;
       
   950         }
       
   951     else
       
   952         {
       
   953         return EFalse;
       
   954         }
       
   955     }
       
   956 
       
   957 
       
   958 void CModemAtSrv::AddDevice( TUint8 aDevId, TUint8 aObjId )
       
   959     {
       
   960     OstTrace0( TRACE_NORMAL, CMODEMATSRV_ADDDEVICE, "CModemAtSrv::AddDevice" );
       
   961     C_TRACE(( _T("CModemAtSrv::AddDevice()") ));
       
   962     TBool alreadyFound( EFalse );
       
   963     
       
   964     for( int i = 0; i < iDteInfo.Count(); i++ )
       
   965         {
       
   966         if( aDevId == iDteInfo[i].iDevId && aObjId == iDteInfo[i].iObjId )
       
   967             {
       
   968             OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_ADDDEVICE, "CModemAtSrv::AddDevice - dte already found" );
       
   969             C_TRACE(( _T("CModemAtSrv::AddDevice() dte already found") ));
       
   970             alreadyFound = ETrue;
       
   971             break;
       
   972             }
       
   973         }
       
   974     if( !alreadyFound )
       
   975         {
       
   976         OstTrace0( TRACE_NORMAL, DUP2_CMODEMATSRV_ADDDEVICE, "CModemAtSrv::AddDevice - adding dte" );
       
   977         C_TRACE(( _T("CModemAtSrv::AddDevice() adding dte") ));
       
   978         TDteInfo devInfo;
       
   979         devInfo.iDevId = aDevId;
       
   980         devInfo.iObjId = aObjId;
       
   981         devInfo.iSession = NULL;
       
   982         iDteInfo.Append( devInfo );
       
   983         }
       
   984     }
       
   985 
       
   986 
       
   987 void CModemAtSrv::RemoveDevice( TUint8 aDevId, TUint8 aObjId )
       
   988     {
       
   989     OstTrace0( TRACE_NORMAL, CMODEMATSRV_REMOVEDEVICE, "CModemAtSrv::RemoveDevice" );
       
   990     C_TRACE(( _T("CModemAtSrv::RemoveDevice()") ));
       
   991 
       
   992     for( int i = 0; i < iDteInfo.Count(); i++ )
       
   993         {
       
   994         if( aDevId == iDteInfo[i].iDevId && aObjId == iDteInfo[i].iObjId )
       
   995             {
       
   996             OstTrace0( TRACE_NORMAL, DUP1_CMODEMATSRV_REMOVEDEVICE, "CModemAtSrv::RemoveDevice - CModemAtSrv::RemoveDevice() device found" );
       
   997             C_TRACE(( _T("CModemAtSrv::RemoveDevice() device found") ));
       
   998             iDteInfo.Remove( i );
       
   999             break;
       
  1000             }
       
  1001         }
       
  1002     }
       
  1003 
       
  1004 TUint8 CModemAtSrv::GetDteCount()
       
  1005     {
       
  1006     OstTrace0( TRACE_NORMAL, CMODEMATSRV_GETDTECOUNT, "CModemAtSrv::GetDteCount" );
       
  1007     C_TRACE(( _T("CModemAtSrv::GetDteCount()") ));
       
  1008     TUint8 count( 0 );
       
  1009     for( int i = 0; i < iSessions.Count(); i++ )
       
  1010         {
       
  1011         if( ECommonPlugin == iSessions[i]->GetPluginType() )
       
  1012             {
       
  1013             count++;
       
  1014             }
       
  1015         }
       
  1016     return count;
       
  1017     }
       
  1018 
       
  1019 // -----------------------------------------------------------------------------
       
  1020 // CModemAtSrv::GetFreeChannelId
       
  1021 // Gets free ISC channel id for new connection
       
  1022 // -----------------------------------------------------------------------------
       
  1023 //
       
  1024 TInt CModemAtSrv::GetFreeChannelId( TUint8& aChannel )
       
  1025     {
       
  1026     OstTrace0( TRACE_NORMAL, CMODEMATSRV_GETFREECHANNELID, "CModemAtSrv::GetFreeChannelId" );
       
  1027     C_TRACE(( _T("CModemAtSrv::GetFreeChannelId()") ));
       
  1028     TInt ret( KErrNotFound );
       
  1029 
       
  1030     if( 0 < iFreeChannels.Size() )
       
  1031         {
       
  1032         ret = KErrNone;
       
  1033         aChannel = iFreeChannels[0];
       
  1034         iFreeChannels.Delete( 0, 1 );
       
  1035         OstTrace1( TRACE_NORMAL, DUP1_CMODEMATSRV_GETFREECHANNELID, "CModemAtSrv::GetFreeChannelId  free channel found: 0x%x", aChannel );
       
  1036         C_TRACE(( _T("CModemAtSrv::GetFreeChannelId: free channel found: 0x%x"), aChannel ));
       
  1037         }
       
  1038     return ret;
       
  1039     }