adaptationlayer/tsy/nokiatsy_dll/src/cmmsupplservmesshandler.cpp
changeset 9 8486d82aef45
parent 7 fa67e03b87df
equal deleted inserted replaced
8:6295dc2169f3 9:8486d82aef45
     1 /*
     1 /*
     2 * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
     3 * All rights reserved.
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     4 * This component and the accompanying materials are made available
     5 * under the terms of the License "Eclipse Public License v1.0"
     5 * under the terms of the License "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
    36 #include "cmmphonetsender.h"
    36 #include "cmmphonetsender.h"
    37 #include "cmmstaticutility.h" // utility functions
    37 #include "cmmstaticutility.h" // utility functions
    38 #include "cmmsupplservmesshandler.h"
    38 #include "cmmsupplservmesshandler.h"
    39 #include "tssparser.h" // for parsing service string
    39 #include "tssparser.h" // for parsing service string
    40 #include "tsylogger.h"
    40 #include "tsylogger.h"
    41 #include "OstTraceDefinitions.h"
       
    42 #include "cmmuiccmesshandler.h"
    41 #include "cmmuiccmesshandler.h"
    43 #include "cmmphonemesshandler.h"  // for CallForwFlagsCachingCompleted
    42 #include "cmmphonemesshandler.h"  // for CallForwFlagsCachingCompleted
       
    43 #include <satcs.h>
       
    44 
       
    45 #include "OstTraceDefinitions.h"
    44 #ifdef OST_TRACE_COMPILER_IN_USE
    46 #ifdef OST_TRACE_COMPILER_IN_USE
    45 #include "cmmsupplservmesshandlerTraces.h"
    47 #include "cmmsupplservmesshandlerTraces.h"
    46 #endif
    48 #endif
    47  // logging
       
    48 #include <satcs.h>
       
    49 
    49 
    50 // EXTERNAL DATA STRUCTURES
    50 // EXTERNAL DATA STRUCTURES
    51     //None
    51     //None
    52 
    52 
    53 // EXTERNAL FUNCTION PROTOTYPES
    53 // EXTERNAL FUNCTION PROTOTYPES
    67 
    67 
    68 // LOCAL CONSTANTS AND MACROS
    68 // LOCAL CONSTANTS AND MACROS
    69     //None
    69     //None
    70 
    70 
    71 // MODULE DATA STRUCTURES
    71 // MODULE DATA STRUCTURES
    72     //None
    72 enum TCphsCallForwardingFlagStatus
       
    73     {
       
    74     ECphsCallForwardingUnknown  = 0x0,
       
    75     ECphsCallForwardingActive   = 0xA,
       
    76     ECphsCallForwardingInactive = 0x5
       
    77     };
    73 
    78 
    74 // LOCAL FUNCTION PROTOTYPES
    79 // LOCAL FUNCTION PROTOTYPES
    75     //None
    80     //None
    76 
    81 
    77 // -----------------------------------------------------------------------------
    82 // -----------------------------------------------------------------------------
    83     (
    88     (
    84     //none
    89     //none
    85     )
    90     )
    86     {
    91     {
    87 TFLOGSTRING( "TSY: CMmSupplServMessHandler::CMmSupplServMessHandler - Start" );
    92 TFLOGSTRING( "TSY: CMmSupplServMessHandler::CMmSupplServMessHandler - Start" );
    88 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_CMMSUPPLSERVMESSHANDLER, "CMmSupplServMessHandler::CMmSupplServMessHandler" );
    93 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_CMMSUPPLSERVMESSHANDLER_TD, "CMmSupplServMessHandler::CMmSupplServMessHandler" );
    89     //none
    94     //none
    90     }
    95     }
    91 
    96 
    92 // -----------------------------------------------------------------------------
    97 // -----------------------------------------------------------------------------
    93 // CMmSupplServMessHandler::NewL
    98 // CMmSupplServMessHandler::NewL
   101     CMmMessageRouter* aMessageRouter, // pointer to the message router
   106     CMmMessageRouter* aMessageRouter, // pointer to the message router
   102     CMmUiccMessHandler* aUiccMessHandler
   107     CMmUiccMessHandler* aUiccMessHandler
   103     )
   108     )
   104     {
   109     {
   105 TFLOGSTRING( "TSY: CMmSupplServMessHandler::NewL" );
   110 TFLOGSTRING( "TSY: CMmSupplServMessHandler::NewL" );
   106 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_NEWL, "CMmSupplServMessHandler::NewL" );
   111 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_NEWL_TD, "CMmSupplServMessHandler::NewL" );
   107 
   112 
   108     CMmSupplServMessHandler* supplServMessHandler =
   113     CMmSupplServMessHandler* supplServMessHandler =
   109         new ( ELeave ) CMmSupplServMessHandler();
   114         new ( ELeave ) CMmSupplServMessHandler();
   110 
   115 
   111     CleanupStack::PushL( supplServMessHandler );
   116     CleanupStack::PushL( supplServMessHandler );
   155     (
   160     (
   156     //none
   161     //none
   157     )
   162     )
   158     {
   163     {
   159 TFLOGSTRING( "TSY: CMmSupplServMessHandler::ConstructL" );
   164 TFLOGSTRING( "TSY: CMmSupplServMessHandler::ConstructL" );
   160 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_CONSTRUCTL, "CMmSupplServMessHandler::ConstructL" );
   165 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_CONSTRUCTL_TD, "CMmSupplServMessHandler::ConstructL" );
   161 
   166 
   162     iVoiceServiceMappedToTelephony = EFalse;
   167     iVoiceServiceMappedToTelephony = EFalse;
   163     iCircuitServiceMappedToAllBearer = EFalse;
   168     iCircuitServiceMappedToAllBearer = EFalse;
   164     iGetCallForwardingNumber = EFalse;
   169     iGetCallForwardingNumber = EFalse;
   165     iAlsLine = RMobilePhone::EAlternateLineUnknown;
   170     iAlsLine = RMobilePhone::EAlternateLineUnknown;
   183     (
   188     (
   184     //none
   189     //none
   185     )
   190     )
   186     {
   191     {
   187 TFLOGSTRING( "TSY: CMmSupplServMessHandler::~CMmSupplServMessHandler" );
   192 TFLOGSTRING( "TSY: CMmSupplServMessHandler::~CMmSupplServMessHandler" );
   188 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_CMMSUPPLSERVMESSHANDLER, "CMmSupplServMessHandler::~CMmSupplServMessHandler" );
   193 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_CMMSUPPLSERVMESSHANDLER_TD, "CMmSupplServMessHandler::~CMmSupplServMessHandler" );
   189 
   194 
   190     delete iCFResults;
   195     delete iCFResults;
   191     delete iCBResults;
   196     delete iCBResults;
   192     delete iCWResults;
   197     delete iCWResults;
   193     }
   198     }
   203     TInt aIpc,
   208     TInt aIpc,
   204     const CMmDataPackage* aDataPackage
   209     const CMmDataPackage* aDataPackage
   205     )
   210     )
   206     {
   211     {
   207 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL: IPC: %d", aIpc);
   212 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL: IPC: %d", aIpc);
   208 OstTrace1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_EXTFUNCL, "CMmSupplServMessHandler::ExtFuncL;aIpc=%d", aIpc );
   213 OstTrace1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_EXTFUNCL_TD, "CMmSupplServMessHandler::ExtFuncL;aIpc=%d", aIpc );
   209 
   214 
   210     //*************************************************************//
   215     //*************************************************************//
   211     // NOTE
   216     // NOTE
   212     //
   217     //
   213     // LICENSEE SPECIFIC MESSAGE HANDLER IMPLEMENTATION STARTS HERE
   218     // LICENSEE SPECIFIC MESSAGE HANDLER IMPLEMENTATION STARTS HERE
   285             iMmCFCondition = conditionETel;
   290             iMmCFCondition = conditionETel;
   286             iMobileService = changeInfo->iServiceGroup;
   291             iMobileService = changeInfo->iServiceGroup;
   287             iCFAddress = changeInfo->iNumber;
   292             iCFAddress = changeInfo->iNumber;
   288 
   293 
   289 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - EMobilePhoneSetCallForwardingStatus - Number: %S", &iCFAddress.iTelNumber);
   294 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - EMobilePhoneSetCallForwardingStatus - Number: %S", &iCFAddress.iTelNumber);
   290 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_EXTFUNCL, "CMmSupplServMessHandler::ExtFuncL;EMobilePhoneSetCallForwardingStatus iCFTelNumber=%S", iCFAddress.iTelNumber );
   295 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_EXTFUNCL_TD, "CMmSupplServMessHandler::ExtFuncL;EMobilePhoneSetCallForwardingStatus iCFTelNumber=%S", iCFAddress.iTelNumber );
   291 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - EMobilePhoneSetCallForwardingStatus - MobileService: %d", iMobileService);
   296 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - EMobilePhoneSetCallForwardingStatus - MobileService: %d", iMobileService);
   292 OstTrace1( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_EXTFUNCL, "CMmSupplServMessHandler::ExtFuncL;EMobilePhoneSetCallForwardingStatus iMobileService=%d", iMobileService );
   297 OstTrace1( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_EXTFUNCL_TD, "CMmSupplServMessHandler::ExtFuncL;EMobilePhoneSetCallForwardingStatus iMobileService=%d", iMobileService );
   293 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - EMobilePhoneSetCallForwardingStatus - Condition: %d", iMmCFCondition);
   298 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - EMobilePhoneSetCallForwardingStatus - Condition: %d", iMmCFCondition);
   294 OstTrace1( TRACE_NORMAL, DUP3_CMMSUPPLSERVMESSHANDLER_EXTFUNCL, "CMmSupplServMessHandler::ExtFuncL;EMobilePhoneSetCallForwardingStatus iMmCFCondition=%d", iMmCFCondition );
   299 OstTrace1( TRACE_NORMAL,  DUP3_CMMSUPPLSERVMESSHANDLER_EXTFUNCL_TD, "CMmSupplServMessHandler::ExtFuncL;EMobilePhoneSetCallForwardingStatus iMmCFCondition=%d", iMmCFCondition );
   295 
   300 
   296             //map operation
   301             //map operation
   297             ret = MapOperationMmToIsi( changeInfo->iAction, &operation );
   302             ret = MapOperationMmToIsi( changeInfo->iAction, &operation );
   298 
   303 
   299             if ( KErrNone == ret )
   304             if ( KErrNone == ret )
   543                     operation,
   548                     operation,
   544                     serviceCode,
   549                     serviceCode,
   545                     ssInfoA,
   550                     ssInfoA,
   546                     ssInfoB,
   551                     ssInfoB,
   547                     ssInfoC );
   552                     ssInfoC );
       
   553                     
       
   554                 if( KErrNone != ret )
       
   555                     {                   
       
   556                     TUint srcByteCount( 0 );
       
   557                     // max length of ussd string is 161
       
   558                     TBuf8<KMaxLengthOfUssdMessage> packedString;
       
   559                     // max length of ussd string is 161
       
   560                     TBuf8<KMaxLengthOfUssdMessage> srcString;
       
   561 
       
   562                     // 16 byte descriptor is appended to 8 byte descriptor as single bytes,
       
   563                     // therefore length can be the same in both descriptors
       
   564                     srcString.Append( serviceString->Left( serviceString->Length() ) );
       
   565                     srcByteCount = srcString.Length();
       
   566                     // pack string
       
   567                     GsmLibSmsPackMessage( 
       
   568                         packedString,
       
   569                         srcString, 
       
   570                         srcByteCount );
       
   571 
       
   572                     // send ussd request
       
   573                     ret = SsGsmUssdSendReq( trId, &packedString );
       
   574                     }
   548                 }
   575                 }
   549             else
   576             else
   550                 {
   577                 {
   551 TFLOGSTRING( "TSY: CMmSupplServMessHandler::ExtFuncL: parsing of \
   578 TFLOGSTRING( "TSY: CMmSupplServMessHandler::ExtFuncL: parsing of \
   552               service string failed!" );
   579               service string failed!" );
   553 OstTrace0( TRACE_NORMAL, DUP4_CMMSUPPLSERVMESSHANDLER_EXTFUNCL, "CMmSupplServMessHandler::ExtFuncL, parsing of service string failed!" );
   580 OstTrace0( TRACE_NORMAL,  DUP4_CMMSUPPLSERVMESSHANDLER_EXTFUNCL_TD, "CMmSupplServMessHandler::ExtFuncL, parsing of service string failed!" );
   554                 ret = KErrArgument;
   581                 ret = KErrArgument;
   555                 }
   582                 }
   556 
   583 
   557             // initialize flags back to "normal" state
   584             // initialize flags back to "normal" state
   558             iFdnCheck = EFalse;
   585             iFdnCheck = EFalse;
   616         default:
   643         default:
   617             {
   644             {
   618             // this method should only be called for SS cases
   645             // this method should only be called for SS cases
   619 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - Unknown IPC: %d",
   646 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ExtFuncL - Unknown IPC: %d",
   620               aIpc);
   647               aIpc);
   621 OstTrace1( TRACE_NORMAL, DUP5_CMMSUPPLSERVMESSHANDLER_EXTFUNCL, "CMmSupplServMessHandler::ExtFuncL;Unknown aIpc=%d", aIpc );
   648 OstTrace1( TRACE_NORMAL,  DUP5_CMMSUPPLSERVMESSHANDLER_EXTFUNCL_TD, "CMmSupplServMessHandler::ExtFuncL;Unknown aIpc=%d", aIpc );
   622             ret = KErrArgument;
   649             ret = KErrArgument;
   623             break;
   650             break;
   624             }
   651             }
   625         }
   652         }
   626 
   653 
   637     TInt aStatus,
   664     TInt aStatus,
   638     TUint8 /*aDetails*/,
   665     TUint8 /*aDetails*/,
   639     const TDesC8& aFileData )
   666     const TDesC8& aFileData )
   640     {
   667     {
   641 TFLOGSTRING3("TSY: CMmSupplServMessHandler::ProcessUiccMsg, transaction ID: %d, status: %d", aTraId, aStatus );
   668 TFLOGSTRING3("TSY: CMmSupplServMessHandler::ProcessUiccMsg, transaction ID: %d, status: %d", aTraId, aStatus );
   642 OstTraceExt2( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSUICCMSG, "CMmSupplServMessHandler::ProcessUiccMsg;aTraId=%d;aStatus=%d", aTraId, aStatus );
   669 OstTraceExt2( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSUICCMSG_TD, "CMmSupplServMessHandler::ProcessUiccMsg;aTraId=%d;aStatus=%d", aTraId, aStatus );
   643 
   670 
   644 switch( aTraId )
   671 switch( aTraId )
   645         {
   672         {
   646         case ETrIdReadCallFwdFlagsRel4:
   673         case ETrIdReadCallFwdFlagsRel4:
   647             {
   674             {
   736              break;
   763              break;
   737              }
   764              }
   738         default:
   765         default:
   739             {
   766             {
   740 TFLOGSTRING("TSY: CMmSupplServMessHandler::ProcessUiccMsg - unknown transaction ID" );
   767 TFLOGSTRING("TSY: CMmSupplServMessHandler::ProcessUiccMsg - unknown transaction ID" );
   741 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_PROCESSUICCMSG, "CMmSupplServMessHandler::ProcessUiccMsg - unknown transaction ID" );
   768 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_PROCESSUICCMSG_TD, "CMmSupplServMessHandler::ProcessUiccMsg - unknown transaction ID" );
   742             break;
   769             break;
   743             }
   770             }
   744         }
   771         }
   745     return KErrNone;
   772     return KErrNone;
   746     }
   773     }
   758     TInt resource (aIsiMessage.Get8bit(ISI_HEADER_OFFSET_RESOURCEID) );
   785     TInt resource (aIsiMessage.Get8bit(ISI_HEADER_OFFSET_RESOURCEID) );
   759     TInt messageId (aIsiMessage.Get8bit(ISI_HEADER_OFFSET_MESSAGEID) );
   786     TInt messageId (aIsiMessage.Get8bit(ISI_HEADER_OFFSET_MESSAGEID) );
   760 
   787 
   761 TFLOGSTRING3("TSY: CMmSupplServMessHandler::ReceiveMessageL - resource: %d, \
   788 TFLOGSTRING3("TSY: CMmSupplServMessHandler::ReceiveMessageL - resource: %d, \
   762               messageId: %d", resource, messageId);
   789               messageId: %d", resource, messageId);
   763 OstTraceExt2( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_RECEIVEMESSAGEL, "CMmSupplServMessHandler::ReceiveMessageL;resource=%d;messageId=%d", resource, messageId );
   790 OstTraceExt2( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmSupplServMessHandler::ReceiveMessageL;resource=%d;messageId=%d", resource, messageId );
   764 
   791 
   765     switch ( resource )
   792     switch ( resource )
   766         {
   793         {
   767         case PN_SS:
   794         case PN_SS:
   768             {
   795             {
   800                     }
   827                     }
   801                 default:
   828                 default:
   802                     {
   829                     {
   803 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::ReceiveMessageL - \
   830 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::ReceiveMessageL - \
   804                PN_SS - unknown msgId: %d", messageId );
   831                PN_SS - unknown msgId: %d", messageId );
   805 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_RECEIVEMESSAGEL, "CMmSupplServMessHandler::ReceiveMessageL;PN_SS - unknown msgId=%d", messageId );
   832 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmSupplServMessHandler::ReceiveMessageL;PN_SS - unknown msgId=%d", messageId );
   806                     break;
   833                     break;
   807                     }
   834                     }
   808                 } // switch( messageId )
   835                 } // switch( messageId )
   809             break;
   836             break;
   810             }
   837             }
   811         default:
   838         default:
   812             {
   839             {
   813 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ReceiveMessageL - unknown \
   840 TFLOGSTRING2("TSY: CMmSupplServMessHandler::ReceiveMessageL - unknown \
   814               resource: %d", resource);
   841               resource: %d", resource);
   815 OstTrace1( TRACE_NORMAL, DUP3_CMMSUPPLSERVMESSHANDLER_RECEIVEMESSAGEL, "CMmSupplServMessHandler::ReceiveMessageL;unknown resource=%d", resource );
   842 OstTrace1( TRACE_NORMAL,  DUP3_CMMSUPPLSERVMESSHANDLER_RECEIVEMESSAGEL_TD, "CMmSupplServMessHandler::ReceiveMessageL;unknown resource=%d", resource );
   816             break;
   843             break;
   817             }
   844             }
   818         } // switch( resource )
   845         } // switch( resource )
   819     }
   846     }
   820 
   847 
   832     const TDesC& ssInfoA,            // SS info A
   859     const TDesC& ssInfoA,            // SS info A
   833     const TDesC& ssInfoB,            // SS info B
   860     const TDesC& ssInfoB,            // SS info B
   834     const TDesC& ssInfoC )           // SS info C
   861     const TDesC& ssInfoC )           // SS info C
   835     {
   862     {
   836 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated" );
   863 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated" );
   837 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED, "CMmSupplServMessHandler::SsServiceReqSatOriginated" );
   864 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED_TD, "CMmSupplServMessHandler::SsServiceReqSatOriginated" );
   838 
   865 
   839     TInt ret( KErrNone );
   866     TInt ret( KErrNone );
   840     TUint8 basicServiceCode( SS_ALL_TELE_AND_BEARER );
   867     TUint8 basicServiceCode( SS_ALL_TELE_AND_BEARER );
   841     TSsParser parser;
   868     TSsParser parser;
   842 
   869 
   850         case SS_GSM_FORW_NO_REPLY:
   877         case SS_GSM_FORW_NO_REPLY:
   851         case SS_GSM_FORW_NO_REACH:
   878         case SS_GSM_FORW_NO_REACH:
   852             {
   879             {
   853 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   880 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   854               call forwarding" );
   881               call forwarding" );
   855 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED, "CMmSupplServMessHandler::SsServiceReqSatOriginated, call forwarding" );
   882 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED_TD, "CMmSupplServMessHandler::SsServiceReqSatOriginated, call forwarding" );
   856 
   883 
   857             TUint8 numberType ( SS_NBR_TYPE_UNKNOWN );
   884             TUint8 numberType ( SS_NBR_TYPE_UNKNOWN );
   858             TUint8 numberPlan ( SS_NBR_PLAN_ISDN_TELEPHONY );
   885             TUint8 numberPlan ( SS_NBR_PLAN_ISDN_TELEPHONY );
   859             TInt noReplyTime ( SS_UNDEFINED_TIME );
   886             TInt noReplyTime ( SS_UNDEFINED_TIME );
   860 
   887 
   915         case SS_GSM_OUTGOING_BARR_SERV:
   942         case SS_GSM_OUTGOING_BARR_SERV:
   916         case SS_GSM_INCOMING_BARR_SERV:
   943         case SS_GSM_INCOMING_BARR_SERV:
   917             {
   944             {
   918 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   945 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   919               call barring" );
   946               call barring" );
   920 OstTrace0( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED, "CMmSupplServMessHandler::SsServiceReqSatOriginated, call barring" );
   947 OstTrace0( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED_TD, "CMmSupplServMessHandler::SsServiceReqSatOriginated, call barring" );
   921 
   948 
   922             // basic service code is in ssInfoB, must be converted to TUint8
   949             // basic service code is in ssInfoB, must be converted to TUint8
   923             basicServiceCode = ( TUint8 )parser.GetInt( ssInfoB );
   950             basicServiceCode = ( TUint8 )parser.GetInt( ssInfoB );
   924 
   951 
   925             // if ssInfoA is empty - no password subblock is added
   952             // if ssInfoA is empty - no password subblock is added
   938 
   965 
   939         case SS_GSM_CALL_WAITING:
   966         case SS_GSM_CALL_WAITING:
   940             {
   967             {
   941 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   968 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   942               call waiting" );
   969               call waiting" );
   943 OstTrace0( TRACE_NORMAL, DUP3_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED, "CMmSupplServMessHandler::SsServiceReqSatOriginated, call waiting" );
   970 OstTrace0( TRACE_NORMAL,  DUP3_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED_TD, "CMmSupplServMessHandler::SsServiceReqSatOriginated, call waiting" );
   944             // basic service code is in ssInfoA, must be converted to TUint8
   971             // basic service code is in ssInfoA, must be converted to TUint8
   945             basicServiceCode = ( TUint8 )parser.GetInt( ssInfoA );
   972             basicServiceCode = ( TUint8 )parser.GetInt( ssInfoA );
   946             ret = CreateServiceReqWithCheckInfo(
   973             ret = CreateServiceReqWithCheckInfo(
   947                 aTrId,
   974                 aTrId,
   948                 aOperation,
   975                 aOperation,
   959         case SS_GSM_ECT:
   986         case SS_GSM_ECT:
   960         case SS_GSM_CNAP:
   987         case SS_GSM_CNAP:
   961             {
   988             {
   962 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   989 TFLOGSTRING( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   963               other ss codes" );
   990               other ss codes" );
   964 OstTrace0( TRACE_NORMAL, DUP6_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED, "CMmSupplServMessHandler::SsServiceReqSatOriginated, other ss codes" );
   991 OstTrace0( TRACE_NORMAL,  DUP6_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED_TD, "CMmSupplServMessHandler::SsServiceReqSatOriginated, other ss codes" );
   965             ret = CreateServiceReqWithCheckInfo(
   992             ret = CreateServiceReqWithCheckInfo(
   966                 aTrId,
   993                 aTrId,
   967                 aOperation,
   994                 aOperation,
   968                 aServiceCode,
   995                 aServiceCode,
   969                 basicServiceCode );
   996                 basicServiceCode );
   973 
  1000 
   974         default:
  1001         default:
   975             {
  1002             {
   976 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
  1003 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::SsServiceReqSatOriginated, \
   977                error: unknown ss service: %d", aServiceCode );
  1004                error: unknown ss service: %d", aServiceCode );
   978 OstTraceExt1( TRACE_NORMAL, DUP7_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED, "CMmSupplServMessHandler::SsServiceReqSatOriginated;ERROR: unknown ss service=%hu", aServiceCode );
  1005 OstTraceExt1( TRACE_NORMAL,  DUP7_CMMSUPPLSERVMESSHANDLER_SSSERVICEREQSATORIGINATED_TD, "CMmSupplServMessHandler::SsServiceReqSatOriginated;ERROR: unknown ss service=%hu", aServiceCode );
   979             ret = KErrArgument;
  1006             ret = KErrArgument;
   980             break;
  1007             break;
   981             }
  1008             }
   982         }
  1009         }
   983     return ret;
  1010     return ret;
   996     const TUint8 aOperation,
  1023     const TUint8 aOperation,
   997     const TUint16 aServiceCode,
  1024     const TUint16 aServiceCode,
   998     const TUint8 aBasicServiceCode )
  1025     const TUint8 aBasicServiceCode )
   999     {
  1026     {
  1000 TFLOGSTRING( "TSY: CMmSupplServMessHandler::CreateServiceReqWithCheckInfo" );
  1027 TFLOGSTRING( "TSY: CMmSupplServMessHandler::CreateServiceReqWithCheckInfo" );
  1001 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_CREATESERVICEREQWITHCHECKINFO, "CMmSupplServMessHandler::CreateServiceReqWithCheckInfo" );
  1028 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_CREATESERVICEREQWITHCHECKINFO_TD, "CMmSupplServMessHandler::CreateServiceReqWithCheckInfo" );
  1002     TInt ret( KErrNone );
  1029     TInt ret( KErrNone );
  1003     TUint8 numOfSubblocks( 1 );
  1030     TUint8 numOfSubblocks( 1 );
  1004 
  1031 
  1005     // create ss service request message and set it to point send buffer
  1032     // create ss service request message and set it to point send buffer
  1006     TIsiSend isimsg( iPhoNetSender->SendBufferDes( ) );
  1033     TIsiSend isimsg( iPhoNetSender->SendBufferDes( ) );
  1081     TDesC16 const* aForwToNumber, //forwarded to number
  1108     TDesC16 const* aForwToNumber, //forwarded to number
  1082     TUint8 aMmiBasicServiceCode    //MMI basic service code
  1109     TUint8 aMmiBasicServiceCode    //MMI basic service code
  1083     )
  1110     )
  1084     {
  1111     {
  1085 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsCallForwServiceReq");
  1112 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsCallForwServiceReq");
  1086 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSCALLFORWSERVICEREQ, "CMmSupplServMessHandler::SsCallForwServiceReq" );
  1113 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSCALLFORWSERVICEREQ_TD, "CMmSupplServMessHandler::SsCallForwServiceReq" );
  1087 
  1114 
  1088     TUint8 numOfSubblocks( 0 );
  1115     TUint8 numOfSubblocks( 0 );
  1089     TBuf<RMobilePhone::KMaxMobileTelNumberSize> number( 0 );
  1116     TBuf<RMobilePhone::KMaxMobileTelNumberSize> number( 0 );
  1090     //number can contain character '+'
  1117     //number can contain character '+'
  1091     if ( 0 < aForwToNumber->Length() )
  1118     if ( 0 < aForwToNumber->Length() )
  1280     response.iBasicService =  aIsiMessage.Get8bit(
  1307     response.iBasicService =  aIsiMessage.Get8bit(
  1281             ISI_HEADER_SIZE + SS_SERVICE_COMPLETED_RESP_OFFSET_BASICSERVICECODE );
  1308             ISI_HEADER_SIZE + SS_SERVICE_COMPLETED_RESP_OFFSET_BASICSERVICECODE );
  1282 
  1309 
  1283 TFLOGSTRING3("TSY: CMmSupplServMessHandler::SsServiceCompletedRespL number \
  1310 TFLOGSTRING3("TSY: CMmSupplServMessHandler::SsServiceCompletedRespL number \
  1284               of sub blocks: %d, operation: %d", response.iNumSubBlocks, response.iOperation );
  1311               of sub blocks: %d, operation: %d", response.iNumSubBlocks, response.iOperation );
  1285 OstTraceExt2( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSSERVICECOMPLETEDRESPL, "CMmSupplServMessHandler::SsServiceCompletedRespL;numSubBlocks=%hhu;operation=%hhu", response.iNumSubBlocks, response.iOperation );
  1312 OstTraceExt2( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSSERVICECOMPLETEDRESPL_TD, "CMmSupplServMessHandler::SsServiceCompletedRespL;numSubBlocks=%hhu;operation=%hhu", response.iNumSubBlocks, response.iOperation );
  1286 TFLOGSTRING3("TSY: CMmSupplServMessHandler::SsServiceCompletedRespL ssCode: \
  1313 TFLOGSTRING3("TSY: CMmSupplServMessHandler::SsServiceCompletedRespL ssCode: \
  1287               %d, basicService: %d", response.iSsCode, response.iBasicService );
  1314               %d, basicService: %d", response.iSsCode, response.iBasicService );
  1288 OstTraceExt2( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_SSSERVICECOMPLETEDRESPL, "CMmSupplServMessHandler::SsServiceCompletedRespL;ssCode=%hu;basicService=%hhu", response.iSsCode, response.iBasicService );
  1315 OstTraceExt2( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_SSSERVICECOMPLETEDRESPL_TD, "CMmSupplServMessHandler::SsServiceCompletedRespL;ssCode=%hu;basicService=%hhu", response.iSsCode, response.iBasicService );
  1289 
  1316 
  1290     if (
  1317     if (
  1291        ProcessIfSsRequestChanged( response ) ||         // original SS request is changed, or initiated by Call Control
  1318        ProcessIfSsRequestChanged( response ) ||         // original SS request is changed, or initiated by Call Control
  1292        ProcessSsGsmPasswordRegistration( response ) ||  // password changed successfully
  1319        ProcessSsGsmPasswordRegistration( response ) ||  // password changed successfully
  1293        ProcessIfSimpleCompletionPossible( response ) ||
  1320        ProcessIfSimpleCompletionPossible( response ) ||
  1302         }
  1329         }
  1303     else
  1330     else
  1304         {
  1331         {
  1305         TFLOGSTRING2("TSY: CMmSupplServMessHandler::SsServiceCompletedRespL \
  1332         TFLOGSTRING2("TSY: CMmSupplServMessHandler::SsServiceCompletedRespL \
  1306                       - unknown ssCode: %d", response.iSsCode );
  1333                       - unknown ssCode: %d", response.iSsCode );
  1307 OstTraceExt1( TRACE_NORMAL, DUP5_CMMSUPPLSERVMESSHANDLER_SSSERVICECOMPLETEDRESPL, "CMmSupplServMessHandler::SsServiceCompletedRespL;ssCode=%hu", response.iSsCode );
  1334 OstTraceExt1( TRACE_NORMAL,  DUP5_CMMSUPPLSERVMESSHANDLER_SSSERVICECOMPLETEDRESPL_TD, "CMmSupplServMessHandler::SsServiceCompletedRespL;ssCode=%hu", response.iSsCode );
  1308         }
  1335         }
  1309     }
  1336     }
  1310 
  1337 
  1311 // -----------------------------------------------------------------------------
  1338 // -----------------------------------------------------------------------------
  1312 // CMmSupplServMessHandler::HandleSsGsmForwardingSubBlockL
  1339 // CMmSupplServMessHandler::HandleSsGsmForwardingSubBlockL
  1320     TUint16 aSsCode                 //SS condition
  1347     TUint16 aSsCode                 //SS condition
  1321     )
  1348     )
  1322     {
  1349     {
  1323 TFLOGSTRING2("TSY: CMmSupplServMessHandler::HandleSsGsmForwardingSubBlockL - \
  1350 TFLOGSTRING2("TSY: CMmSupplServMessHandler::HandleSsGsmForwardingSubBlockL - \
  1324               SS condition: %d", aSsCode);
  1351               SS condition: %d", aSsCode);
  1325 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_HANDLESSGSMFORWARDINGSUBBLOCKL, "CMmSupplServMessHandler::HandleSsGsmForwardingSubBlockL;aSsCode=%hu", aSsCode );
  1352 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_HANDLESSGSMFORWARDINGSUBBLOCKL_TD, "CMmSupplServMessHandler::HandleSsGsmForwardingSubBlockL;aSsCode=%hu", aSsCode );
  1326 
  1353 
  1327     TUint sbStartOffset( aSbStartOffset );
  1354     TUint sbStartOffset( aSbStartOffset );
  1328 
  1355 
  1329     // get number of SS_GSM_FORWARDING_FEATURE sub blocks in this
  1356     // get number of SS_GSM_FORWARDING_FEATURE sub blocks in this
  1330     // SS_GSM_FORWARDING_INFO sub block
  1357     // SS_GSM_FORWARDING_INFO sub block
  1427         TUint16 aSsCode         // service code (barring condition)
  1454         TUint16 aSsCode         // service code (barring condition)
  1428         )
  1455         )
  1429     {
  1456     {
  1430 TFLOGSTRING2("TSY: CMmSupplServMessHandler::HandleBarringSsGsmBscInfoSubBlockL \
  1457 TFLOGSTRING2("TSY: CMmSupplServMessHandler::HandleBarringSsGsmBscInfoSubBlockL \
  1431               - service code: %d", aSsCode);
  1458               - service code: %d", aSsCode);
  1432 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_HANDLEBARRINGSSGSMBSCINFOSUBBLOCKL, "CMmSupplServMessHandler::HandleBarringSsGsmBscInfoSubBlockL;aSsCode=%hu", aSsCode );
  1459 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_HANDLEBARRINGSSGSMBSCINFOSUBBLOCKL_TD, "CMmSupplServMessHandler::HandleBarringSsGsmBscInfoSubBlockL;aSsCode=%hu", aSsCode );
  1433 
  1460 
  1434     //get number of basic service codes in this SS_GSM_BSC_INFO sub block
  1461     //get number of basic service codes in this SS_GSM_BSC_INFO sub block
  1435     TUint8 numBsc( aIsiMessage.Get8bit(
  1462     TUint8 numBsc( aIsiMessage.Get8bit(
  1436         aSbStartOffset + SS_GSM_BSC_INFO_OFFSET_NUMBEROFBSC ));
  1463         aSbStartOffset + SS_GSM_BSC_INFO_OFFSET_NUMBEROFBSC ));
  1437 
  1464 
  1460             TInt ret = MapBasicServiceCodeIsiToMm( bsc, &infoEntry.iServiceGroup );
  1487             TInt ret = MapBasicServiceCodeIsiToMm( bsc, &infoEntry.iServiceGroup );
  1461             if ( KErrNone != ret )
  1488             if ( KErrNone != ret )
  1462                 {
  1489                 {
  1463 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::HandleSsGsmBscInfoSubBlockL: \
  1490 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::HandleSsGsmBscInfoSubBlockL: \
  1464                Unknown Basic Service Group = %d received. Skipping this entry.", bsc );
  1491                Unknown Basic Service Group = %d received. Skipping this entry.", bsc );
  1465 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_HANDLEBARRINGSSGSMBSCINFOSUBBLOCKL, "CMmSupplServMessHandler::HandleBarringSsGsmBscInfoSubBlockL;Unknown Basic Service Group=%hhu", bsc );
  1492 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_HANDLEBARRINGSSGSMBSCINFOSUBBLOCKL_TD, "CMmSupplServMessHandler::HandleBarringSsGsmBscInfoSubBlockL;Unknown Basic Service Group=%hhu", bsc );
  1466                 continue; // ignore this entry and go to the next one
  1493                 continue; // ignore this entry and go to the next one
  1467                 }
  1494                 }
  1468 
  1495 
  1469             // Save this entry
  1496             // Save this entry
  1470             iCBResults->AddEntryL( infoEntry );
  1497             iCBResults->AddEntryL( infoEntry );
  1487     const TIsiReceiveC &aIsiMessage,  //received isi message
  1514     const TIsiReceiveC &aIsiMessage,  //received isi message
  1488     TUint aSbStartOffset            //Ss Gsm Bsc info sub block offset
  1515     TUint aSbStartOffset            //Ss Gsm Bsc info sub block offset
  1489     )
  1516     )
  1490     {
  1517     {
  1491 TFLOGSTRING("TSY: CMmSupplServMessHandler::HandleWaitingSsGsmBscInfoSubBlockL");
  1518 TFLOGSTRING("TSY: CMmSupplServMessHandler::HandleWaitingSsGsmBscInfoSubBlockL");
  1492 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_HANDLEWAITINGSSGSMBSCINFOSUBBLOCKL, "CMmSupplServMessHandler::HandleWaitingSsGsmBscInfoSubBlockL" );
  1519 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_HANDLEWAITINGSSGSMBSCINFOSUBBLOCKL_TD, "CMmSupplServMessHandler::HandleWaitingSsGsmBscInfoSubBlockL" );
  1493 
  1520 
  1494     //get number of basic service codes in this SS_GSM_BSC_INFO sub block
  1521     //get number of basic service codes in this SS_GSM_BSC_INFO sub block
  1495     TUint8 numBsc( aIsiMessage.Get8bit(
  1522     TUint8 numBsc( aIsiMessage.Get8bit(
  1496         aSbStartOffset + SS_GSM_BSC_INFO_OFFSET_NUMBEROFBSC ));
  1523         aSbStartOffset + SS_GSM_BSC_INFO_OFFSET_NUMBEROFBSC ));
  1497 
  1524 
  1519             TInt ret = MapBasicServiceCodeIsiToMm( bsc, &infoEntry.iServiceGroup );
  1546             TInt ret = MapBasicServiceCodeIsiToMm( bsc, &infoEntry.iServiceGroup );
  1520             if ( KErrNone != ret )
  1547             if ( KErrNone != ret )
  1521                 {
  1548                 {
  1522 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::HandleSsGsmDataSubBlockL: \
  1549 TFLOGSTRING2( "TSY: CMmSupplServMessHandler::HandleSsGsmDataSubBlockL: \
  1523                Unknown Basic Service Group = %d received. Skipping this entry.", bsc );
  1550                Unknown Basic Service Group = %d received. Skipping this entry.", bsc );
  1524 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_HANDLEWAITINGSSGSMBSCINFOSUBBLOCKL, "CMmSupplServMessHandler::HandleWaitingSsGsmBscInfoSubBlockL;Unknown Basic Service Group=%hhu", bsc );
  1551 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_HANDLEWAITINGSSGSMBSCINFOSUBBLOCKL_TD, "CMmSupplServMessHandler::HandleWaitingSsGsmBscInfoSubBlockL;Unknown Basic Service Group=%hhu", bsc );
  1525                 continue; // ignore this entry and go to the next one
  1552                 continue; // ignore this entry and go to the next one
  1526                 }
  1553                 }
  1527             // Save this entry
  1554             // Save this entry
  1528             iCWResults->AddEntryL( infoEntry );
  1555             iCWResults->AddEntryL( infoEntry );
  1529             }
  1556             }
  1543     (
  1570     (
  1544     const TIsiReceiveC &aIsiMessage //received isi message
  1571     const TIsiReceiveC &aIsiMessage //received isi message
  1545     )
  1572     )
  1546     {
  1573     {
  1547 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsServiceFailedResp");
  1574 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsServiceFailedResp");
  1548 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP, "CMmSupplServMessHandler::SsServiceFailedResp" );
  1575 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmSupplServMessHandler::SsServiceFailedResp" );
  1549 
  1576 
  1550     TInt errorToClient( KErrGeneral );
  1577     TInt errorToClient( KErrGeneral );
  1551 
  1578 
  1552     //sub block start offset
  1579     //sub block start offset
  1553     TUint sbStartOffset( 0 );
  1580     TUint sbStartOffset( 0 );
  1560         sbStartOffset ) )
  1587         sbStartOffset ) )
  1561         {
  1588         {
  1562         TUint8 subBlockId = aIsiMessage.Get8bit( sbStartOffset );
  1589         TUint8 subBlockId = aIsiMessage.Get8bit( sbStartOffset );
  1563 TFLOGSTRING2("TSY: CMmSupplServMessHandler::SsServiceFailedResp - \
  1590 TFLOGSTRING2("TSY: CMmSupplServMessHandler::SsServiceFailedResp - \
  1564               sub block Id: %d", subBlockId);
  1591               sub block Id: %d", subBlockId);
  1565 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP, "CMmSupplServMessHandler::SsServiceFailedResp;subBlockId=%hhu", subBlockId );
  1592 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmSupplServMessHandler::SsServiceFailedResp;subBlockId=%hhu", subBlockId );
  1566         switch ( subBlockId )
  1593         switch ( subBlockId )
  1567             {
  1594             {
  1568             case SS_GSM_INDICATE_PASSWORD_ERROR:
  1595             case SS_GSM_INDICATE_PASSWORD_ERROR:
  1569                 {
  1596                 {
  1570                 errorToClient = CMmStaticUtility::CSCauseToEpocError(
  1597                 errorToClient = CMmStaticUtility::CSCauseToEpocError(
  1614                     errorToClient = CMmStaticUtility::EpocErrorCode(
  1641                     errorToClient = CMmStaticUtility::EpocErrorCode(
  1615                         KErrCouldNotConnect,
  1642                         KErrCouldNotConnect,
  1616                         KErrGsmSMSNoNetworkService );
  1643                         KErrGsmSMSNoNetworkService );
  1617 TFLOGSTRING("CMmSupplServMessHandler::SsServiceFailedRespL. \
  1644 TFLOGSTRING("CMmSupplServMessHandler::SsServiceFailedRespL. \
  1618              Cause: KSsGsmSsNotAvailable => No network coverage." );
  1645              Cause: KSsGsmSsNotAvailable => No network coverage." );
  1619 OstTrace0( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP, "CMmSupplServMessHandler::SsServiceFailedResp, Cause: KSsGsmSsNotAvailable => No network coverage" );
  1646 OstTrace0( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmSupplServMessHandler::SsServiceFailedResp, Cause: KSsGsmSsNotAvailable => No network coverage" );
  1620                     }
  1647                     }
  1621                 else if( SS_RESOURCE_CONTROL_DENIED == errorCode )
  1648                 else if( SS_RESOURCE_CONTROL_DENIED == errorCode )
  1622                     {
  1649                     {
  1623                      if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
  1650                      if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
  1624                          ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
  1651                          ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
  1635                          // sw1, sw2 and result is inserted to SS_SB_RESOURCE_CONTROL_INFO
  1662                          // sw1, sw2 and result is inserted to SS_SB_RESOURCE_CONTROL_INFO
  1636                          // by simatktsy and ther order from first byte is: sw1, sw2 and result
  1663                          // by simatktsy and ther order from first byte is: sw1, sw2 and result
  1637                          TUint8 sw1 = data[KSw1Index];
  1664                          TUint8 sw1 = data[KSw1Index];
  1638                          TUint8 sw2 = data[KSw2Index];
  1665                          TUint8 sw2 = data[KSw2Index];
  1639                          TUint8 result = data[KResultIndex];
  1666                          TUint8 result = data[KResultIndex];
  1640                          errorToClient = CMmStaticUtility::MapSw1Sw2ToEpocError( 
  1667                          errorToClient = CMmStaticUtility::MapSw1Sw2ToEpocError(
  1641                              sw1, 
  1668                              sw1,
  1642                              sw2, 
  1669                              sw2,
  1643                              result );
  1670                              result );
  1644                          }
  1671                          }
  1645                      else
  1672                      else
  1646                          {
  1673                          {
  1647                          errorToClient = CMmStaticUtility::CSCauseToEpocError(
  1674                          errorToClient = CMmStaticUtility::CSCauseToEpocError(
  1663                 }
  1690                 }
  1664             default:
  1691             default:
  1665                 {
  1692                 {
  1666 TFLOGSTRING2("TSY: CMmSupplServMessHandler::SsServiceFailedResp \
  1693 TFLOGSTRING2("TSY: CMmSupplServMessHandler::SsServiceFailedResp \
  1667               - unknown sub block Id: %d", subBlockId);
  1694               - unknown sub block Id: %d", subBlockId);
  1668 OstTraceExt1( TRACE_NORMAL, DUP3_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP, "CMmSupplServMessHandler::SsServiceFailedResp;unknown subBlockId=%hhu", subBlockId );
  1695 OstTraceExt1( TRACE_NORMAL,  DUP3_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP_TD, "CMmSupplServMessHandler::SsServiceFailedResp;unknown subBlockId=%hhu", subBlockId );
  1669                 // unknown error sub block
  1696                 // unknown error sub block
  1670                 errorToClient = KErrGeneral;
  1697                 errorToClient = KErrGeneral;
  1671                 break;
  1698                 break;
  1672                 }
  1699                 }
  1673             }
  1700             }
  1688     (
  1715     (
  1689     const TIsiReceiveC &aIsiMessage //received isi message
  1716     const TIsiReceiveC &aIsiMessage //received isi message
  1690     )
  1717     )
  1691     {
  1718     {
  1692 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsServiceNotSupportedResp");
  1719 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsServiceNotSupportedResp");
  1693 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSSERVICENOTSUPPORTEDRESP, "CMmSupplServMessHandler::SsServiceNotSupportedResp" );
  1720 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSSERVICENOTSUPPORTEDRESP_TD, "CMmSupplServMessHandler::SsServiceNotSupportedResp" );
  1694 
  1721 
  1695     //create ss service not supported response message
  1722     //create ss service not supported response message
  1696     // complete to SOS layer
  1723     // complete to SOS layer
  1697     CompleteFailedSSRequest( aIsiMessage.Get8bit(
  1724     CompleteFailedSSRequest( aIsiMessage.Get8bit(
  1698         ISI_HEADER_SIZE + SS_SERVICE_NOT_SUPPORTED_RESP_OFFSET_TRANSID ),
  1725         ISI_HEADER_SIZE + SS_SERVICE_NOT_SUPPORTED_RESP_OFFSET_TRANSID ),
  1712     TInt aError            // Symbian error code
  1739     TInt aError            // Symbian error code
  1713     )
  1740     )
  1714     {
  1741     {
  1715 TFLOGSTRING3("TSY: CMmSupplServMessHandler::CompleteFailedSSRequest - \
  1742 TFLOGSTRING3("TSY: CMmSupplServMessHandler::CompleteFailedSSRequest - \
  1716               traId: %d, error code: %d", aTransactionId, aError);
  1743               traId: %d, error code: %d", aTransactionId, aError);
  1717 OstTraceExt2( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_COMPLETEFAILEDSSREQUEST, "CMmSupplServMessHandler::CompleteFailedSSRequest;aTransactionId=%hhu;aError=%d", aTransactionId, aError );
  1744 OstTraceExt2( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_COMPLETEFAILEDSSREQUEST_TD, "CMmSupplServMessHandler::CompleteFailedSSRequest;aTransactionId=%hhu;aError=%d", aTransactionId, aError );
  1718 
  1745 
  1719     TBool isExpectedMessage = ETrue;
  1746     TBool isExpectedMessage = ETrue;
  1720     switch ( aTransactionId )
  1747     switch ( aTransactionId )
  1721         {
  1748         {
  1722         case ESSOperationTypeGetCallForwardingStatus:
  1749         case ESSOperationTypeGetCallForwardingStatus:
  1791             }
  1818             }
  1792         default:
  1819         default:
  1793             {
  1820             {
  1794 TFLOGSTRING2("TSY: CMmSupplServMessHandler::CompleteFailedSSRequest \
  1821 TFLOGSTRING2("TSY: CMmSupplServMessHandler::CompleteFailedSSRequest \
  1795               - unknown traId: %d", aTransactionId );
  1822               - unknown traId: %d", aTransactionId );
  1796 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_COMPLETEFAILEDSSREQUEST, "CMmSupplServMessHandler::CompleteFailedSSRequest;aTransactionId=%hhu", aTransactionId );
  1823 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_COMPLETEFAILEDSSREQUEST_TD, "CMmSupplServMessHandler::CompleteFailedSSRequest;aTransactionId=%hhu", aTransactionId );
  1797             // ignore unknown response; do nothing
  1824             // ignore unknown response; do nothing
  1798             isExpectedMessage = EFalse;
  1825             isExpectedMessage = EFalse;
  1799             break;
  1826             break;
  1800             }
  1827             }
  1801         }
  1828         }
  1822     TDesC16 const& aVerifyPassword,   //new password for verification
  1849     TDesC16 const& aVerifyPassword,   //new password for verification
  1823     TUint8 aMmiBasicServiceCode       //MMI basic service code
  1850     TUint8 aMmiBasicServiceCode       //MMI basic service code
  1824     )
  1851     )
  1825     {
  1852     {
  1826 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmBarringReq");
  1853 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmBarringReq");
  1827 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSGSMBARRINGREQ, "CMmSupplServMessHandler::SsGsmBarringReq" );
  1854 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSGSMBARRINGREQ_TD, "CMmSupplServMessHandler::SsGsmBarringReq" );
  1828 
  1855 
  1829     TUint8 numOfSubblocks( 0 );
  1856     TUint8 numOfSubblocks( 0 );
  1830     TInt subblockStart = ISI_HEADER_SIZE + SIZE_SS_SERVICE_REQ;
  1857     TInt subblockStart = ISI_HEADER_SIZE + SIZE_SS_SERVICE_REQ;
  1831 
  1858 
  1832     //create ss service request message and set it to point send buffer
  1859     //create ss service request message and set it to point send buffer
  1980     TUint16 aMmiSsCode,         //MMI ss code
  2007     TUint16 aMmiSsCode,         //MMI ss code
  1981     TUint8 aMmiBasicServiceCode //MMI basic service code
  2008     TUint8 aMmiBasicServiceCode //MMI basic service code
  1982     )
  2009     )
  1983     {
  2010     {
  1984 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmWaitingReq");
  2011 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmWaitingReq");
  1985 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSGSMWAITINGREQ, "CMmSupplServMessHandler::SsGsmWaitingReq" );
  2012 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSGSMWAITINGREQ_TD, "CMmSupplServMessHandler::SsGsmWaitingReq" );
  1986 
  2013 
  1987     TUint8 numOfSubblocks( 0 );
  2014     TUint8 numOfSubblocks( 0 );
  1988     TBuf8<8> data( 0 );
  2015     TBuf8<8> data( 0 );
  1989     data.Append( aTransactionId );
  2016     data.Append( aTransactionId );
  1990     data.Append( SS_SERVICE_REQ );
  2017     data.Append( SS_SERVICE_REQ );
  2062     TUint8 aTransactionId,    //transaction id
  2089     TUint8 aTransactionId,    //transaction id
  2063     TUint16 aMmiSsCode        //MMI ss code
  2090     TUint16 aMmiSsCode        //MMI ss code
  2064     )
  2091     )
  2065     {
  2092     {
  2066 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsIdentityServiceReq");
  2093 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsIdentityServiceReq");
  2067 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSIDENTITYSERVICEREQ, "CMmSupplServMessHandler::SsIdentityServiceReq" );
  2094 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSIDENTITYSERVICEREQ_TD, "CMmSupplServMessHandler::SsIdentityServiceReq" );
  2068 
  2095 
  2069     //create ss service request message and set it to point send buffer
  2096     //create ss service request message and set it to point send buffer
  2070     TIsiSend isimsg( iPhoNetSender->SendBufferDes() );
  2097     TIsiSend isimsg( iPhoNetSender->SendBufferDes() );
  2071 
  2098 
  2072     TUint8 numOfSubblocks( 0 );
  2099     TUint8 numOfSubblocks( 0 );
  2149     TUint8 aTransactionId,  //transaction id
  2176     TUint8 aTransactionId,  //transaction id
  2150     TDesC8* aString         //USSD string
  2177     TDesC8* aString         //USSD string
  2151     )
  2178     )
  2152     {
  2179     {
  2153 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmUssdSendReq");
  2180 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmUssdSendReq");
  2154 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSGSMUSSDSENDREQ, "CMmSupplServMessHandler::SsGsmUssdSendReq" );
  2181 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSGSMUSSDSENDREQ_TD, "CMmSupplServMessHandler::SsGsmUssdSendReq" );
  2155 
  2182 
  2156     //create ss service request message
  2183     //create ss service request message
  2157     TBuf8<4> data( 0 ); //allocate memory for data
  2184     TBuf8<4> data( 0 ); //allocate memory for data
  2158     data.Append( aTransactionId );
  2185     data.Append( aTransactionId );
  2159 
  2186 
  2200     (
  2227     (
  2201     const TIsiReceiveC &aIsiMessage //received isi message
  2228     const TIsiReceiveC &aIsiMessage //received isi message
  2202     )
  2229     )
  2203     {
  2230     {
  2204 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmUssdSendResp");
  2231 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsGsmUssdSendResp");
  2205 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSGSMUSSDSENDRESP, "CMmSupplServMessHandler::SsGsmUssdSendResp" );
  2232 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSGSMUSSDSENDRESP_TD, "CMmSupplServMessHandler::SsGsmUssdSendResp" );
  2206 
  2233 
  2207     if ( ESSOperationTypeSendNetworkServiceRequest == aIsiMessage.Get8bit(
  2234     TUint8 trId( aIsiMessage.Get8bit( ISI_HEADER_SIZE + SS_GSM_USSD_SEND_RESP_OFFSET_TRANSID ) );
  2208         ISI_HEADER_SIZE + SS_GSM_USSD_SEND_RESP_OFFSET_TRANSID ) )
  2235 
       
  2236     if ( ESSOperationTypeSendNetworkServiceRequest == trId )
  2209         {
  2237         {
  2210         // complete (no packed parameter)
  2238         // complete (no packed parameter)
  2211         iMessageRouter->Complete(
  2239         iMessageRouter->Complete(
  2212             EMobilePhoneSendNetworkServiceRequest,
  2240             EMobilePhoneSendNetworkServiceRequest,
  2213             KErrNone );
  2241             KErrNone );
  2214         }
  2242         }
  2215 
  2243     else if( ESSOperationTypeSendNetworkServiceRequestNoFdnCheck == trId )
       
  2244         {
       
  2245         // complete (no packed parameter)
       
  2246         iMessageRouter->Complete(
       
  2247             EMobilePhoneSendNetworkServiceRequestNoFdnCheck,
       
  2248             KErrNone );
       
  2249         }
  2216     }
  2250     }
  2217 
  2251 
  2218 // -----------------------------------------------------------------------------
  2252 // -----------------------------------------------------------------------------
  2219 // CMmSupplServMessHandler::SsStatusInd
  2253 // CMmSupplServMessHandler::SsStatusInd
  2220 // Breaks a SS_STATUS_IND ISI message. Completes Send Network Service
  2254 // Breaks a SS_STATUS_IND ISI message. Completes Send Network Service
  2225     (
  2259     (
  2226     const TIsiReceiveC &aIsiMessage //received isi message
  2260     const TIsiReceiveC &aIsiMessage //received isi message
  2227     )
  2261     )
  2228     {
  2262     {
  2229 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsStatusInd");
  2263 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsStatusInd");
  2230 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSSTATUSIND, "CMmSupplServMessHandler::SsStatusInd" );
  2264 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSSTATUSIND_TD, "CMmSupplServMessHandler::SsStatusInd" );
  2231 
  2265 
  2232     // Get number of subblocks
  2266     // Get number of subblocks
  2233     TInt numOfSubBlocks( 0 );
  2267     TInt numOfSubBlocks( 0 );
  2234     numOfSubBlocks = aIsiMessage.Get8bit(
  2268     numOfSubBlocks = aIsiMessage.Get8bit(
  2235         ISI_HEADER_SIZE + SS_STATUS_IND_OFFSET_SUBBLOCKCOUNT );
  2269         ISI_HEADER_SIZE + SS_STATUS_IND_OFFSET_SUBBLOCKCOUNT );
  2357     (
  2391     (
  2358     const TIsiReceiveC &aIsiMessage //received isi message
  2392     const TIsiReceiveC &aIsiMessage //received isi message
  2359     )
  2393     )
  2360     {
  2394     {
  2361 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsCompleteInd");
  2395 TFLOGSTRING("TSY: CMmSupplServMessHandler::SsCompleteInd");
  2362 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SSCOMPLETEIND, "CMmSupplServMessHandler::SsCompleteInd" );
  2396 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SSCOMPLETEIND_TD, "CMmSupplServMessHandler::SsCompleteInd" );
  2363 
  2397 
  2364     TUint sbStartOffSet( 0 );
  2398     TUint sbStartOffSet( 0 );
  2365     RMobilePhone::TMobilePhoneSendSSRequestV3 returnResult;
  2399     RMobilePhone::TMobilePhoneSendSSRequestV3 returnResult;
  2366 
  2400 
  2367     returnResult.iOpCode = KErrNone;
  2401     returnResult.iOpCode = KErrNone;
  2434     TUint8* aIsiBasicServiceCode // isi basic service code
  2468     TUint8* aIsiBasicServiceCode // isi basic service code
  2435     )
  2469     )
  2436     {
  2470     {
  2437 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi \
  2471 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi \
  2438               - basic service code: %d", aIsiBasicServiceCode);
  2472               - basic service code: %d", aIsiBasicServiceCode);
  2439 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPMOBILESERVICETOBASICSERVICECODEISI, "CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi;aIsiBasicServiceCode=%hhu", *aIsiBasicServiceCode );
  2473 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPMOBILESERVICETOBASICSERVICECODEISI_TD, "CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi;aIsiBasicServiceCode=%hhu", *aIsiBasicServiceCode );
  2440 
  2474 
  2441     TInt ret ( KErrNone );
  2475     TInt ret ( KErrNone );
  2442     //get the right mobile service
  2476     //get the right mobile service
  2443     switch ( aMobileService )
  2477     switch ( aMobileService )
  2444         {
  2478         {
  2610             break;
  2644             break;
  2611         default:
  2645         default:
  2612             // not expected.
  2646             // not expected.
  2613 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi \
  2647 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi \
  2614               - unknown mobile service: %d", aMobileService);
  2648               - unknown mobile service: %d", aMobileService);
  2615 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPMOBILESERVICETOBASICSERVICECODEISI, "CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi;aMobileService=%d", aMobileService );
  2649 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPMOBILESERVICETOBASICSERVICECODEISI_TD, "CMmSupplServMessHandler::MapMobileServiceToBasicServiceCodeIsi;aMobileService=%d", aMobileService );
  2616             ret = KErrArgument;
  2650             ret = KErrArgument;
  2617             break;
  2651             break;
  2618         }
  2652         }
  2619 
  2653 
  2620     return ret;
  2654     return ret;
  2632     // multimode api call forw. condition
  2666     // multimode api call forw. condition
  2633     TUint16* aCFCondition // isi call forw. condition
  2667     TUint16* aCFCondition // isi call forw. condition
  2634     )
  2668     )
  2635     {
  2669     {
  2636 TFLOGSTRING("TSY: CMmSupplServMessHandler::MapCFConditionMmToIsi");
  2670 TFLOGSTRING("TSY: CMmSupplServMessHandler::MapCFConditionMmToIsi");
  2637 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONMMTOISI, "CMmSupplServMessHandler::MapCFConditionMmToIsi" );
  2671 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONMMTOISI_TD, "CMmSupplServMessHandler::MapCFConditionMmToIsi" );
  2638     TInt retVal( KErrNone );
  2672     TInt retVal( KErrNone );
  2639 
  2673 
  2640     switch ( aMmCFCondition )
  2674     switch ( aMmCFCondition )
  2641         {
  2675         {
  2642         case RMobilePhone::ECallForwardingUnconditional:
  2676         case RMobilePhone::ECallForwardingUnconditional:
  2659             break;
  2693             break;
  2660         case RMobilePhone::ECallForwardingUnspecified:
  2694         case RMobilePhone::ECallForwardingUnspecified:
  2661         default:
  2695         default:
  2662 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFConditionMmToIsi - \
  2696 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFConditionMmToIsi - \
  2663               unknown call forward condition: %d", aCFCondition);
  2697               unknown call forward condition: %d", aCFCondition);
  2664 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONMMTOISI, "CMmSupplServMessHandler::MapCFConditionMmToIsi;aCFCondition=%hu", *aCFCondition );
  2698 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONMMTOISI_TD, "CMmSupplServMessHandler::MapCFConditionMmToIsi;aCFCondition=%hu", *aCFCondition );
  2665             retVal = KErrNotSupported;
  2699             retVal = KErrNotSupported;
  2666             break;
  2700             break;
  2667         }
  2701         }
  2668 
  2702 
  2669     return retVal;
  2703     return retVal;
  2681     RMobilePhone::TMobileTON* aMmTypeOfNumber, // number type
  2715     RMobilePhone::TMobileTON* aMmTypeOfNumber, // number type
  2682     RMobilePhone::TMobileNPI* aMmNumberingPlan // numbering plan
  2716     RMobilePhone::TMobileNPI* aMmNumberingPlan // numbering plan
  2683     )
  2717     )
  2684     {
  2718     {
  2685 TFLOGSTRING("TSY: CMmSupplServMessHandler::MapTypeOfNumberIsiToMm");
  2719 TFLOGSTRING("TSY: CMmSupplServMessHandler::MapTypeOfNumberIsiToMm");
  2686 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERISITOMM, "CMmSupplServMessHandler::MapTypeOfNumberIsiToMm" );
  2720 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERISITOMM_TD, "CMmSupplServMessHandler::MapTypeOfNumberIsiToMm" );
  2687 
  2721 
  2688     TInt retVal( KErrNone );
  2722     TInt retVal( KErrNone );
  2689     //get the right numbering plan
  2723     //get the right numbering plan
  2690     switch ( aIsiTypeOfNumber & 0xF )
  2724     switch ( aIsiTypeOfNumber & 0xF )
  2691         // 0xF = 1111, above switch case checks four least significant bits
  2725         // 0xF = 1111, above switch case checks four least significant bits
  2713               unknown number plan: %d", ( aIsiTypeOfNumber & 0xF ) );
  2747               unknown number plan: %d", ( aIsiTypeOfNumber & 0xF ) );
  2714 #ifdef OST_TRACE_COMPILER_IN_USE // following lines flagged out just get rid of
  2748 #ifdef OST_TRACE_COMPILER_IN_USE // following lines flagged out just get rid of
  2715                                  // compiler warning when trace compiler is not
  2749                                  // compiler warning when trace compiler is not
  2716                                  // in use.
  2750                                  // in use.
  2717          TUint8 tOn = aIsiTypeOfNumber & 0x0F; // parameter made just for tracing.
  2751          TUint8 tOn = aIsiTypeOfNumber & 0x0F; // parameter made just for tracing.
  2718 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERISITOMM, "CMmSupplServMessHandler::MapTypeOfNumberIsiToMm;aIsiTypeOfNumber=%hhu", tOn );
  2752 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERISITOMM_TD, "CMmSupplServMessHandler::MapTypeOfNumberIsiToMm;aIsiTypeOfNumber=%hhu", tOn );
  2719 #endif
  2753 #endif
  2720             retVal = KErrArgument;
  2754             retVal = KErrArgument;
  2721             break;
  2755             break;
  2722         }
  2756         }
  2723 
  2757 
  2751               unknown number type: %d", ( ( aIsiTypeOfNumber & 0x70  ) >> 4 ) );
  2785               unknown number type: %d", ( ( aIsiTypeOfNumber & 0x70  ) >> 4 ) );
  2752 #ifdef OST_TRACE_COMPILER_IN_USE // following lines flagged out just get rid of
  2786 #ifdef OST_TRACE_COMPILER_IN_USE // following lines flagged out just get rid of
  2753                                  // compiler warning when trace compiler is not
  2787                                  // compiler warning when trace compiler is not
  2754                                  // in use.
  2788                                  // in use.
  2755             TUint8 tOn = ( ( aIsiTypeOfNumber & 0x70  ) >> 4 ); // Parameter just for tracing.
  2789             TUint8 tOn = ( ( aIsiTypeOfNumber & 0x70  ) >> 4 ); // Parameter just for tracing.
  2756 OstTraceExt1( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERISITOMM, "CMmSupplServMessHandler::MapTypeOfNumberIsiToMm;tOn=%hhu", tOn );
  2790 OstTraceExt1( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERISITOMM_TD, "CMmSupplServMessHandler::MapTypeOfNumberIsiToMm;tOn=%hhu", tOn );
  2757 #endif
  2791 #endif
  2758             retVal =  KErrArgument;
  2792             retVal =  KErrArgument;
  2759             break;
  2793             break;
  2760         }
  2794         }
  2761 
  2795 
  2773     RMobilePhone::TMobilePhoneCFStatus* aMmCFStatus // call forw. status
  2807     RMobilePhone::TMobilePhoneCFStatus* aMmCFStatus // call forw. status
  2774     )
  2808     )
  2775     {
  2809     {
  2776 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFStatusIsiToMm - SS status: %d",
  2810 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFStatusIsiToMm - SS status: %d",
  2777               aIsiSsStatus);
  2811               aIsiSsStatus);
  2778 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCFSTATUSISITOMM, "CMmSupplServMessHandler::MapCFStatusIsiToMm;aIsiSsStatus=%hhu", aIsiSsStatus );
  2812 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCFSTATUSISITOMM_TD, "CMmSupplServMessHandler::MapCFStatusIsiToMm;aIsiSsStatus=%hhu", aIsiSsStatus );
  2779 
  2813 
  2780     if ( ( 0 == ( aIsiSsStatus & ( SS_GSM_ACTIVE + SS_GSM_REGISTERED +
  2814     if ( ( 0 == ( aIsiSsStatus & ( SS_GSM_ACTIVE + SS_GSM_REGISTERED +
  2781         SS_GSM_PROVISIONED + SS_GSM_QUIESCENT ) ) ) &&
  2815         SS_GSM_PROVISIONED + SS_GSM_QUIESCENT ) ) ) &&
  2782         ( 0 < aIsiSsStatus ) )
  2816         ( 0 < aIsiSsStatus ) )
  2783         // no valid status code found
  2817         // no valid status code found
  2817     TUint8 aIsiSsStatus, // SS Status
  2851     TUint8 aIsiSsStatus, // SS Status
  2818     RMobilePhone::TMobilePhoneCWStatus* aMmCWStatus // call waiting status
  2852     RMobilePhone::TMobilePhoneCWStatus* aMmCWStatus // call waiting status
  2819     )
  2853     )
  2820     {
  2854     {
  2821 TFLOGSTRING("TSY: CMmSupplServMessHandler::MapCWStatusIsiToMm");
  2855 TFLOGSTRING("TSY: CMmSupplServMessHandler::MapCWStatusIsiToMm");
  2822 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCWSTATUSISITOMM, "CMmSupplServMessHandler::MapCWStatusIsiToMm" );
  2856 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCWSTATUSISITOMM_TD, "CMmSupplServMessHandler::MapCWStatusIsiToMm" );
  2823 
  2857 
  2824     if ( ( 0 == ( aIsiSsStatus & ( SS_GSM_ACTIVE + SS_GSM_REGISTERED +
  2858     if ( ( 0 == ( aIsiSsStatus & ( SS_GSM_ACTIVE + SS_GSM_REGISTERED +
  2825         SS_GSM_PROVISIONED + SS_GSM_QUIESCENT ) ) ) &&
  2859         SS_GSM_PROVISIONED + SS_GSM_QUIESCENT ) ) ) &&
  2826         ( 0 < aIsiSsStatus ) )
  2860         ( 0 < aIsiSsStatus ) )
  2827         // no valid status code found
  2861         // no valid status code found
  2864     // multimode api basic service code
  2898     // multimode api basic service code
  2865     )
  2899     )
  2866     {
  2900     {
  2867 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm - \
  2901 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm - \
  2868               isi basic service code: %d", aIsiBasicServiceCode);
  2902               isi basic service code: %d", aIsiBasicServiceCode);
  2869 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPBASICSERVICECODEISITOMM, "CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm;aIsiBasicServiceCode=%hhu", aIsiBasicServiceCode );
  2903 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPBASICSERVICECODEISITOMM_TD, "CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm;aIsiBasicServiceCode=%hhu", aIsiBasicServiceCode );
  2870 
  2904 
  2871     TInt ret( KErrNone );
  2905     TInt ret( KErrNone );
  2872 
  2906 
  2873     switch ( aIsiBasicServiceCode )
  2907     switch ( aIsiBasicServiceCode )
  2874         {
  2908         {
  3036             *aMmBasicServiceCode = RMobilePhone::EServiceUnspecified;
  3070             *aMmBasicServiceCode = RMobilePhone::EServiceUnspecified;
  3037             break;
  3071             break;
  3038         default:
  3072         default:
  3039 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm \
  3073 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm \
  3040               - unknown isi basic service code: %d", aIsiBasicServiceCode);
  3074               - unknown isi basic service code: %d", aIsiBasicServiceCode);
  3041 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPBASICSERVICECODEISITOMM, "CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm;unknown isi basic service code=%hhu", aIsiBasicServiceCode );
  3075 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPBASICSERVICECODEISITOMM_TD, "CMmSupplServMessHandler::MapBasicServiceCodeIsiToMm;unknown isi basic service code=%hhu", aIsiBasicServiceCode );
  3042             ret = KErrGeneral; // this can't be KErrArgument because basic
  3076             ret = KErrGeneral; // this can't be KErrArgument because basic
  3043                             // service code isn't usually given as argument
  3077                             // service code isn't usually given as argument
  3044             break;
  3078             break;
  3045         }
  3079         }
  3046     return ret;
  3080     return ret;
  3058     // multimode api call forw. condition
  3092     // multimode api call forw. condition
  3059     )
  3093     )
  3060     {
  3094     {
  3061 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFConditionIsiToMm - isi call \
  3095 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFConditionIsiToMm - isi call \
  3062               forward condition: %d", aCFCondition);
  3096               forward condition: %d", aCFCondition);
  3063 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONISITOMM, "CMmSupplServMessHandler::MapCFConditionIsiToMm;aCFCondition=%hu", aCFCondition );
  3097 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONISITOMM_TD, "CMmSupplServMessHandler::MapCFConditionIsiToMm;aCFCondition=%hu", aCFCondition );
  3064 
  3098 
  3065     //get the right condition code
  3099     //get the right condition code
  3066     switch ( aCFCondition )
  3100     switch ( aCFCondition )
  3067         {
  3101         {
  3068         case SS_GSM_FORW_UNCONDITIONAL:
  3102         case SS_GSM_FORW_UNCONDITIONAL:
  3083         case SS_GSM_ALL_FORWARDINGS:
  3117         case SS_GSM_ALL_FORWARDINGS:
  3084             *aMmCFCondition = RMobilePhone::ECallForwardingAllCases;
  3118             *aMmCFCondition = RMobilePhone::ECallForwardingAllCases;
  3085             break;
  3119             break;
  3086         default:
  3120         default:
  3087 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFConditionIsiToMm - unknown isi call forward condition: %d", aCFCondition);
  3121 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCFConditionIsiToMm - unknown isi call forward condition: %d", aCFCondition);
  3088 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONISITOMM, "CMmSupplServMessHandler::MapCFConditionIsiToMm;unknown isi call forward condition=%hu", aCFCondition );
  3122 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPCFCONDITIONISITOMM_TD, "CMmSupplServMessHandler::MapCFConditionIsiToMm;unknown isi call forward condition=%hu", aCFCondition );
  3089             *aMmCFCondition = RMobilePhone::ECallForwardingUnspecified;
  3123             *aMmCFCondition = RMobilePhone::ECallForwardingUnspecified;
  3090             break;
  3124             break;
  3091         }
  3125         }
  3092     }
  3126     }
  3093 
  3127 
  3102     TInt* aMmTimeout // multimode api timeout
  3136     TInt* aMmTimeout // multimode api timeout
  3103     )
  3137     )
  3104     {
  3138     {
  3105 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapTimeoutIsiToMm - isi timeout: %d",
  3139 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapTimeoutIsiToMm - isi timeout: %d",
  3106               aISITimeout);
  3140               aISITimeout);
  3107 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPTIMEOUTISITOMM, "CMmSupplServMessHandler::MapTimeoutIsiToMm;aISITimeout=%hhu", aISITimeout );
  3141 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPTIMEOUTISITOMM_TD, "CMmSupplServMessHandler::MapTimeoutIsiToMm;aISITimeout=%hhu", aISITimeout );
  3108 
  3142 
  3109     if ( SS_UNDEFINED_TIME == aISITimeout )
  3143     if ( SS_UNDEFINED_TIME == aISITimeout )
  3110         {
  3144         {
  3111         *aMmTimeout = -1;
  3145         *aMmTimeout = -1;
  3112         }
  3146         }
  3129     TUint8* aIsiOperation // isi operation
  3163     TUint8* aIsiOperation // isi operation
  3130     )
  3164     )
  3131     {
  3165     {
  3132 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapOperationMmToIsi - multimode \
  3166 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapOperationMmToIsi - multimode \
  3133               api service action: %d", aMmOperation);
  3167               api service action: %d", aMmOperation);
  3134 OstTrace1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPOPERATIONMMTOISI, "CMmSupplServMessHandler::MapOperationMmToIsi;aMmOperation=%d", aMmOperation );
  3168 OstTrace1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPOPERATIONMMTOISI_TD, "CMmSupplServMessHandler::MapOperationMmToIsi;aMmOperation=%d", aMmOperation );
  3135 
  3169 
  3136     TInt ret( KErrNone );
  3170     TInt ret( KErrNone );
  3137 
  3171 
  3138     //get the right operation code
  3172     //get the right operation code
  3139     switch ( aMmOperation )
  3173     switch ( aMmOperation )
  3153         case RMobilePhone::EServiceActionUnspecified:
  3187         case RMobilePhone::EServiceActionUnspecified:
  3154         case RMobilePhone::EServiceActionInvoke:
  3188         case RMobilePhone::EServiceActionInvoke:
  3155         default:
  3189         default:
  3156 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapOperationMmToIsi - \
  3190 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapOperationMmToIsi - \
  3157               unknown multimode api service action: %d", aMmOperation);
  3191               unknown multimode api service action: %d", aMmOperation);
  3158 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPOPERATIONMMTOISI, "CMmSupplServMessHandler::MapOperationMmToIsi;unknown multimode api service action=%d", aMmOperation );
  3192 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPOPERATIONMMTOISI_TD, "CMmSupplServMessHandler::MapOperationMmToIsi;unknown multimode api service action=%d", aMmOperation );
  3159             ret = KErrArgument;
  3193             ret = KErrArgument;
  3160             break;
  3194             break;
  3161         }
  3195         }
  3162     return ret;
  3196     return ret;
  3163     }
  3197     }
  3174     // multimode api call barring condition
  3208     // multimode api call barring condition
  3175     )
  3209     )
  3176     {
  3210     {
  3177 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionIsiToMm - isi call \
  3211 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionIsiToMm - isi call \
  3178               barring condition: %d", aCBCondition);
  3212               barring condition: %d", aCBCondition);
  3179 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONISITOMM, "CMmSupplServMessHandler::MapCBConditionIsiToMm;aCBCondition=%hu", aCBCondition );
  3213 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONISITOMM_TD, "CMmSupplServMessHandler::MapCBConditionIsiToMm;aCBCondition=%hu", aCBCondition );
  3180 
  3214 
  3181     //get the right condition code
  3215     //get the right condition code
  3182     switch ( aCBCondition )
  3216     switch ( aCBCondition )
  3183         {
  3217         {
  3184         case SS_GSM_BARR_ALL_IN:
  3218         case SS_GSM_BARR_ALL_IN:
  3205         case SS_GSM_INCOMING_BARR_SERV:
  3239         case SS_GSM_INCOMING_BARR_SERV:
  3206             *aMmCBCondition = RMobilePhone::EBarAllIncomingServices;
  3240             *aMmCBCondition = RMobilePhone::EBarAllIncomingServices;
  3207             break;
  3241             break;
  3208         default:
  3242         default:
  3209 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionIsiToMm - unknown isi call barring condition: %d", aCBCondition);
  3243 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionIsiToMm - unknown isi call barring condition: %d", aCBCondition);
  3210 OstTraceExt1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONISITOMM, "CMmSupplServMessHandler::MapCBConditionIsiToMm;unknown isi call barring condition=%hu", aCBCondition );
  3244 OstTraceExt1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONISITOMM_TD, "CMmSupplServMessHandler::MapCBConditionIsiToMm;unknown isi call barring condition=%hu", aCBCondition );
  3211             *aMmCBCondition = RMobilePhone::EBarUnspecified;
  3245             *aMmCBCondition = RMobilePhone::EBarUnspecified;
  3212             break;
  3246             break;
  3213         }
  3247         }
  3214     }
  3248     }
  3215 
  3249 
  3226     TUint16* aCBCondition // isi call barring condition
  3260     TUint16* aCBCondition // isi call barring condition
  3227     )
  3261     )
  3228     {
  3262     {
  3229 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionMmToIsi - multimode \
  3263 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionMmToIsi - multimode \
  3230               api call barring condition: %d", aMmCBCondition);
  3264               api call barring condition: %d", aMmCBCondition);
  3231 OstTrace1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONMMTOISI, "CMmSupplServMessHandler::MapCBConditionMmToIsi;aMmCBCondition=%d", aMmCBCondition );
  3265 OstTrace1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONMMTOISI_TD, "CMmSupplServMessHandler::MapCBConditionMmToIsi;aMmCBCondition=%d", aMmCBCondition );
  3232 
  3266 
  3233     TInt ret( KErrNone );
  3267     TInt ret( KErrNone );
  3234 
  3268 
  3235     switch ( aMmCBCondition )
  3269     switch ( aMmCBCondition )
  3236         {
  3270         {
  3260             break;
  3294             break;
  3261         case RMobilePhone::EBarUnspecified:
  3295         case RMobilePhone::EBarUnspecified:
  3262         default:
  3296         default:
  3263 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionMmToIsi - \
  3297 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBConditionMmToIsi - \
  3264               unknown multimode api call barring condition: %d", aMmCBCondition);
  3298               unknown multimode api call barring condition: %d", aMmCBCondition);
  3265 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONMMTOISI, "CMmSupplServMessHandler::MapCBConditionMmToIsi;unknown multimode api call barring condition=%d", aMmCBCondition );
  3299 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPCBCONDITIONMMTOISI_TD, "CMmSupplServMessHandler::MapCBConditionMmToIsi;unknown multimode api call barring condition=%d", aMmCBCondition );
  3266             ret = KErrNotSupported;
  3300             ret = KErrNotSupported;
  3267             break;
  3301             break;
  3268         }
  3302         }
  3269     return ret;
  3303     return ret;
  3270     }
  3304     }
  3280     RMobilePhone::TMobilePhoneCBStatus* aMmCBStatus // multimode api status
  3314     RMobilePhone::TMobilePhoneCBStatus* aMmCBStatus // multimode api status
  3281     )
  3315     )
  3282     {
  3316     {
  3283 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBStatusIsiToMm - isi status: %d",
  3317 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapCBStatusIsiToMm - isi status: %d",
  3284               aIsiSsStatus);
  3318               aIsiSsStatus);
  3285 OstTraceExt1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPCBSTATUSISITOMM, "CMmSupplServMessHandler::MapCBStatusIsiToMm;aIsiSsStatus=%hhu", aIsiSsStatus );
  3319 OstTraceExt1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPCBSTATUSISITOMM_TD, "CMmSupplServMessHandler::MapCBStatusIsiToMm;aIsiSsStatus=%hhu", aIsiSsStatus );
  3286 
  3320 
  3287     //get the right status code
  3321     //get the right status code
  3288    if ( ( 0 == ( aIsiSsStatus & ( SS_GSM_ACTIVE + SS_GSM_REGISTERED +
  3322    if ( ( 0 == ( aIsiSsStatus & ( SS_GSM_ACTIVE + SS_GSM_REGISTERED +
  3289         SS_GSM_PROVISIONED + SS_GSM_QUIESCENT ) ) ) &&
  3323         SS_GSM_PROVISIONED + SS_GSM_QUIESCENT ) ) ) &&
  3290         ( 0 < aIsiSsStatus ) )
  3324         ( 0 < aIsiSsStatus ) )
  3323     TUint16* aIdentityService // isi identity service
  3357     TUint16* aIdentityService // isi identity service
  3324     )
  3358     )
  3325     {
  3359     {
  3326 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapIdentityServiceMmToIsi - \
  3360 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapIdentityServiceMmToIsi - \
  3327               multimode api identity service: %d", aService);
  3361               multimode api identity service: %d", aService);
  3328 OstTrace1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPIDENTITYSERVICEMMTOISI, "CMmSupplServMessHandler::MapIdentityServiceMmToIsi;aService=%d", aService );
  3362 OstTrace1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPIDENTITYSERVICEMMTOISI_TD, "CMmSupplServMessHandler::MapIdentityServiceMmToIsi;aService=%d", aService );
  3329 
  3363 
  3330     TInt ret( KErrNone );
  3364     TInt ret( KErrNone );
  3331 
  3365 
  3332     //get the right operation code
  3366     //get the right operation code
  3333     switch ( aService )
  3367     switch ( aService )
  3350         case RMobilePhone::EIdServiceUnspecified:
  3384         case RMobilePhone::EIdServiceUnspecified:
  3351         case RMobilePhone::EIdServiceCalledPresentation:
  3385         case RMobilePhone::EIdServiceCalledPresentation:
  3352         default:
  3386         default:
  3353 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapIdentityServiceMmToIsi \
  3387 TFLOGSTRING2("TSY: CMmSupplServMessHandler::MapIdentityServiceMmToIsi \
  3354               - unknown multimode api identity service: %d", aService);
  3388               - unknown multimode api identity service: %d", aService);
  3355 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPIDENTITYSERVICEMMTOISI, "CMmSupplServMessHandler::MapIdentityServiceMmToIsi;unknown multimode api identity service=%d", aService );
  3389 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPIDENTITYSERVICEMMTOISI_TD, "CMmSupplServMessHandler::MapIdentityServiceMmToIsi;unknown multimode api identity service=%d", aService );
  3356             ret = KErrNotSupported;
  3390             ret = KErrNotSupported;
  3357             break;
  3391             break;
  3358         }
  3392         }
  3359     return ret;
  3393     return ret;
  3360     }
  3394     }
  3376     )
  3410     )
  3377     {
  3411     {
  3378 TFLOGSTRING3("TSY: CMmSupplServMessHandler::MapIdentityServiceStatusIsiToMm \
  3412 TFLOGSTRING3("TSY: CMmSupplServMessHandler::MapIdentityServiceStatusIsiToMm \
  3379               - isi id service status: %d, isi clir operation: %d",
  3413               - isi id service status: %d, isi clir operation: %d",
  3380               aIsiIdentityServiceStatus, aIsiClirOption);
  3414               aIsiIdentityServiceStatus, aIsiClirOption);
  3381 OstTraceExt2( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPIDENTITYSERVICESTATUSISITOMM, "CMmSupplServMessHandler::MapIdentityServiceStatusIsiToMm;aIsiIdentityServiceStatus=%hhu;aIsiClirOption=%hhu", aIsiIdentityServiceStatus, aIsiClirOption );
  3415 OstTraceExt2( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPIDENTITYSERVICESTATUSISITOMM_TD, "CMmSupplServMessHandler::MapIdentityServiceStatusIsiToMm;aIsiIdentityServiceStatus=%hhu;aIsiClirOption=%hhu", aIsiIdentityServiceStatus, aIsiClirOption );
  3382 
  3416 
  3383     if ( 0 == ( aIsiIdentityServiceStatus & SS_GSM_PROVISIONED ) )
  3417     if ( 0 == ( aIsiIdentityServiceStatus & SS_GSM_PROVISIONED ) )
  3384         {
  3418         {
  3385         // service not provisioned
  3419         // service not provisioned
  3386         *aMmIdentityServiceStatus = RMobilePhone::EIdServiceNotProvisioned;
  3420         *aMmIdentityServiceStatus = RMobilePhone::EIdServiceNotProvisioned;
  3432     TDes8& src,      // unpacked message
  3466     TDes8& src,      // unpacked message
  3433     TUint byte_count // the number of bytes in source
  3467     TUint byte_count // the number of bytes in source
  3434     )
  3468     )
  3435     {
  3469     {
  3436 TFLOGSTRING("TSY: CMmSupplServMessHandler::GsmLibSmsPackMessage");
  3470 TFLOGSTRING("TSY: CMmSupplServMessHandler::GsmLibSmsPackMessage");
  3437 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_GSMLIBSMSPACKMESSAGE, "CMmSupplServMessHandler::GsmLibSmsPackMessage" );
  3471 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_GSMLIBSMSPACKMESSAGE_TD, "CMmSupplServMessHandler::GsmLibSmsPackMessage" );
  3438 
  3472 
  3439     TUint16 si( 0 );
  3473     TUint16 si( 0 );
  3440     TUint16 di( 0 ); // Indexes
  3474     TUint16 di( 0 ); // Indexes
  3441     TInt tmp_modulo; // Temporary; to improve efficiency
  3475     TInt tmp_modulo; // Temporary; to improve efficiency
  3442 
  3476 
  3489     const TIsiReceiveC& /*aIsiMsg*/,    // Isi message
  3523     const TIsiReceiveC& /*aIsiMsg*/,    // Isi message
  3490     TInt /*aError*/    // Error code
  3524     TInt /*aError*/    // Error code
  3491     )
  3525     )
  3492     {
  3526     {
  3493 TFLOGSTRING("TSY: CMmSupplServMessHandler::HandleError");
  3527 TFLOGSTRING("TSY: CMmSupplServMessHandler::HandleError");
  3494 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_HANDLEERROR, "CMmSupplServMessHandler::HandleError" );
  3528 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_HANDLEERROR_TD, "CMmSupplServMessHandler::HandleError" );
  3495     //none
  3529     //none
  3496     }
  3530     }
  3497 
  3531 
  3498 // ----------------------------------------------------------------------------
  3532 // ----------------------------------------------------------------------------
  3499 // CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req
  3533 // CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req
  3500 // Write call forwarding flags REL4 to UICC
  3534 // Write call forwarding flags REL4 to UICC
  3501 // -----------------------------------------------------------------------------
  3535 // -----------------------------------------------------------------------------
  3502 //
  3536 //
  3503 TInt CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req()
  3537 TInt CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req
       
  3538     (
       
  3539     TUint8 aVoiceStatus,
       
  3540     TUint8 aFaxStatus,
       
  3541     TUint8 aDataStatus
       
  3542     )
  3504     {
  3543     {
  3505 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req");
  3544 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req");
  3506 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSREL4REQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req" );
  3545 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSREL4REQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req" );
  3507 
  3546 
  3508     TBuf<RMobilePhone::KMaxMobileTelNumberSize> telNumber( 0 );
  3547     TBuf<RMobilePhone::KMaxMobileTelNumberSize> telNumber( 0 );
  3509 
  3548 
  3510     TUint8 voiceStatus( iVoiceStatus );
       
  3511     TUint8 faxStatus( iFaxStatus );
       
  3512     TUint8 dataStatus( iDataStatus );
       
  3513     TUint8 numberLength( iCFAddress.iTelNumber.Length() );
  3549     TUint8 numberLength( iCFAddress.iTelNumber.Length() );
  3514     TUint8 status( 0 );
  3550     TUint8 status( 0 );
  3515 
  3551 
  3516     if ( 0 < numberLength )
  3552     if ( 0 < numberLength )
  3517         {
  3553         {
  3527         case RMobilePhone::EAllTele:
  3563         case RMobilePhone::EAllTele:
  3528             {
  3564             {
  3529             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3565             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3530                 {
  3566                 {
  3531                 telNumber.Copy( iCFAddress.iTelNumber );
  3567                 telNumber.Copy( iCFAddress.iTelNumber );
  3532                 voiceStatus = status;
  3568                 aVoiceStatus = status;
  3533                 faxStatus = status;
  3569                 aFaxStatus = status;
  3534                 }
  3570                 }
  3535             break;
  3571             break;
  3536             }
  3572             }
  3537         case RMobilePhone::ETelephony:
  3573         case RMobilePhone::ETelephony:
  3538             {
  3574             {
  3539             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3575             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3540                 {
  3576                 {
  3541                 telNumber.Copy( iCFAddress.iTelNumber );
  3577                 telNumber.Copy( iCFAddress.iTelNumber );
  3542                 voiceStatus = status;
  3578                 aVoiceStatus = status;
  3543                 }
  3579                 }
  3544             else
  3580             else
  3545                 {
  3581                 {
  3546                 telNumber.Copy( iCFTelNumberFromSim );
  3582                 telNumber.Copy( iCFTelNumberFromSim );
  3547                 numberLength = iCFTelNumberFromSim.Length();
  3583                 numberLength = iCFTelNumberFromSim.Length();
  3553             telNumber.Copy( iCFTelNumberFromSim );
  3589             telNumber.Copy( iCFTelNumberFromSim );
  3554             numberLength = iCFTelNumberFromSim.Length();
  3590             numberLength = iCFTelNumberFromSim.Length();
  3555 
  3591 
  3556             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3592             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3557                 {
  3593                 {
  3558                 dataStatus = status;
  3594                 aDataStatus = status;
  3559                 }
  3595                 }
  3560 
  3596 
  3561             break;
  3597             break;
  3562             }
  3598             }
  3563         case RMobilePhone::EFaxService:
  3599         case RMobilePhone::EFaxService:
  3565             telNumber.Copy( iCFTelNumberFromSim );
  3601             telNumber.Copy( iCFTelNumberFromSim );
  3566             numberLength = iCFTelNumberFromSim.Length();
  3602             numberLength = iCFTelNumberFromSim.Length();
  3567 
  3603 
  3568             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3604             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3569                 {
  3605                 {
  3570                 faxStatus = status;
  3606                 aFaxStatus = status;
  3571                 }
  3607                 }
  3572             break;
  3608             break;
  3573             }
  3609             }
  3574         case RMobilePhone::EAllServices: //cancel all diverts
  3610         case RMobilePhone::EAllServices: //cancel all diverts
  3575             {
  3611             {
  3576             if ( RMobilePhone::ECallForwardingAllCases == iMmCFCondition ||
  3612             if ( RMobilePhone::ECallForwardingAllCases == iMmCFCondition ||
  3577                 RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3613                 RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3578                 {
  3614                 {
  3579                 telNumber.Copy( iCFAddress.iTelNumber );
  3615                 telNumber.Copy( iCFAddress.iTelNumber );
  3580                 voiceStatus = status;
  3616                 aVoiceStatus = status;
  3581                 dataStatus = status;
  3617                 aDataStatus = status;
  3582                 faxStatus = status;
  3618                 aFaxStatus = status;
  3583                 }
  3619                 }
  3584             break;
  3620             break;
  3585             }
  3621             }
  3586         case RMobilePhone::EAllSync:
  3622         case RMobilePhone::EAllSync:
  3587             {
  3623             {
  3588             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3624             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3589                 {
  3625                 {
  3590                 telNumber.Copy( iCFAddress.iTelNumber );
  3626                 telNumber.Copy( iCFAddress.iTelNumber );
  3591                 dataStatus = status;
  3627                 aDataStatus = status;
  3592                 }
  3628                 }
  3593             break;
  3629             break;
  3594             }
  3630             }
  3595         case RMobilePhone::ESyncData:
  3631         case RMobilePhone::ESyncData:
  3596             {
  3632             {
  3597             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3633             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3598                 {
  3634                 {
  3599                 telNumber.Copy( iCFAddress.iTelNumber );
  3635                 telNumber.Copy( iCFAddress.iTelNumber );
  3600                 dataStatus = status;
  3636                 aDataStatus = status;
  3601                 }
  3637                 }
  3602             break;
  3638             break;
  3603             }
  3639             }
  3604         default:
  3640         default:
  3605             {
  3641             {
  3606 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req - unknown call service: %d", iMobileService);
  3642 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req - unknown call service: %d", iMobileService);
  3607 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSREL4REQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req;iMobileService=%d", iMobileService );
  3643 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSREL4REQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req;iMobileService=%d", iMobileService );
  3608             break;
  3644             break;
  3609             }
  3645             }
  3610         }
  3646         }
  3611 
  3647 
  3612 TFLOGSTRING3("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req -  Number: %S, length: %d", &telNumber, numberLength);
  3648 TFLOGSTRING3("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req -  Number: %S, length: %d", &telNumber, numberLength);
  3613 TFLOGSTRING4("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req - VoiceStatus: %d, FaxStatus: %d, DataStatus: %d", voiceStatus, faxStatus, dataStatus);
  3649 TFLOGSTRING4("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req - VoiceStatus: %d, FaxStatus: %d, DataStatus: %d", aVoiceStatus, aFaxStatus, aDataStatus);
  3614 OstTraceExt5( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSREL4REQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req;telNumber=%S;numberLength=%hhu;voiceStatus=%hhu;faxStatus=%hhu;dataStatus=%hhu", telNumber, numberLength, voiceStatus, faxStatus, dataStatus );
  3650 OstTraceExt5( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSREL4REQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsRel4Req;telNumber=%S;numberLength=%hhu;voiceStatus=%hhu;faxStatus=%hhu;dataStatus=%hhu", telNumber, numberLength, aVoiceStatus, aFaxStatus, aDataStatus );
  3615 
  3651 
  3616     // Status of the call forward unconditional indicator
  3652     // Status of the call forward unconditional indicator
  3617     TUint8 cfuIndicatorStatus( 0 );
  3653     TUint8 cfuIndicatorStatus( 0 );
  3618     cfuIndicatorStatus = voiceStatus; // 1st bit is for voice
  3654     cfuIndicatorStatus = aVoiceStatus; // 1st bit is for voice
  3619     // 2nd bit is for fax
  3655     // 2nd bit is for fax
  3620     cfuIndicatorStatus = cfuIndicatorStatus | ( faxStatus << 1 );
  3656     cfuIndicatorStatus = cfuIndicatorStatus | ( aFaxStatus << 1 );
  3621     // 3rd bit is for data
  3657     // 3rd bit is for data
  3622     cfuIndicatorStatus = cfuIndicatorStatus | ( dataStatus << 2 );
  3658     cfuIndicatorStatus = cfuIndicatorStatus | ( aDataStatus << 2 );
  3623 
  3659 
  3624     // Convert number to BCD format
  3660     // Convert number to BCD format
  3625     TBuf8<RMobilePhone::KMaxMobileTelNumberSize> bcdNumberToSim( 0 );
  3661     TBuf8<RMobilePhone::KMaxMobileTelNumberSize> bcdNumberToSim( 0 );
  3626     TUint8 length( telNumber.Length() );
  3662     TUint8 length( telNumber.Length() );
  3627     // Two byte are combined to on bytes, divide by 2
  3663     // Two byte are combined to on bytes, divide by 2
  3684 // ----------------------------------------------------------------------------
  3720 // ----------------------------------------------------------------------------
  3685 // CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq
  3721 // CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq
  3686 // Write call forwarding flags CPHS to UICC
  3722 // Write call forwarding flags CPHS to UICC
  3687 // -----------------------------------------------------------------------------
  3723 // -----------------------------------------------------------------------------
  3688 //
  3724 //
  3689 TInt CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq()
  3725 TInt CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq
       
  3726     (
       
  3727     TUint8 aVoiceLine1Status,
       
  3728     TUint8 aVoiceLine2Status,
       
  3729     TUint8 aFaxStatus,
       
  3730     TUint8 aDataStatus
       
  3731     )
  3690     {
  3732     {
  3691 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq");
  3733 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq");
  3692 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq" );
  3734 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq" );
  3693 
       
  3694     TUint8 voiceLine1( iVoiceLine1 );
       
  3695     TUint8 voiceLine2( iVoiceLine2 );
       
  3696     TUint8 faxFlag( iFax );
       
  3697     TUint8 dataFlag( iData );
       
  3698 
  3735 
  3699     TUint8 numberLength = iCFAddress.iTelNumber.Length();
  3736     TUint8 numberLength = iCFAddress.iTelNumber.Length();
  3700     TUint8 status( 0 );
  3737     TCphsCallForwardingFlagStatus status( 0 < numberLength ?
  3701 
  3738         ECphsCallForwardingActive : ECphsCallForwardingInactive );
  3702     if ( 0 < numberLength )
       
  3703         {
       
  3704         status = 0x0A; // set divert
       
  3705         }
       
  3706     else
       
  3707         {
       
  3708         status = 0x05; // cancel divert
       
  3709         }
       
  3710 
  3739 
  3711     switch ( iMobileService )
  3740     switch ( iMobileService )
  3712         {
  3741         {
  3713         case RMobilePhone::ETelephony:
  3742         case RMobilePhone::ETelephony:
  3714             {
  3743             {
  3715             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3744             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3716                 {
  3745                 {
  3717                 voiceLine1 = status;
  3746                 aVoiceLine1Status = status;
  3718                 }
  3747                 }
  3719             break;
  3748             break;
  3720             }
  3749             }
  3721         case RMobilePhone::EAllBearer:
  3750         case RMobilePhone::EAllBearer:
  3722             {
  3751             {
  3723             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3752             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3724                 {
  3753                 {
  3725                 dataFlag = status;
  3754                 aDataStatus = status;
  3726                 }
  3755                 }
  3727             break;
  3756             break;
  3728             }
  3757             }
  3729         case RMobilePhone::EFaxService:
  3758         case RMobilePhone::EFaxService:
  3730             {
  3759             {
  3731             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3760             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3732                 {
  3761                 {
  3733                 faxFlag = status;
  3762                 aFaxStatus = status;
  3734                 }
  3763                 }
  3735             break;
  3764             break;
  3736             }
  3765             }
  3737         case RMobilePhone::EAllServices:
  3766         case RMobilePhone::EAllServices:
  3738             {
  3767             {
  3739             if ( RMobilePhone::ECallForwardingAllCases == iMmCFCondition ||
  3768             if ( RMobilePhone::ECallForwardingAllCases == iMmCFCondition ||
  3740                 RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3769                 RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3741                 {
  3770                 {
  3742                 voiceLine1 = status;
  3771                 aVoiceLine1Status = status;
  3743                 dataFlag = status;
  3772                 aDataStatus = status;
  3744                 faxFlag = status;
  3773                 aFaxStatus = status;
  3745                 }
  3774                 }
  3746             break;
  3775             break;
  3747             }
  3776             }
  3748         case RMobilePhone::EAuxVoiceService:
  3777         case RMobilePhone::EAuxVoiceService:
  3749             {
  3778             {
  3750             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3779             if ( RMobilePhone::ECallForwardingUnconditional == iMmCFCondition )
  3751                 {
  3780                 {
  3752                 voiceLine2 = status;
  3781                 aVoiceLine2Status = status;
  3753                 }
  3782                 }
  3754             else if ( RMobilePhone::ECallForwardingAllCases == iMmCFCondition )
  3783             else if ( RMobilePhone::ECallForwardingAllCases == iMmCFCondition )
  3755                 {
  3784                 {
  3756                 voiceLine2 = status;
  3785                 aVoiceLine2Status = status;
  3757                 dataFlag = status;
  3786                 aDataStatus = status;
  3758                 faxFlag = status;
  3787                 aFaxStatus = status;
  3759                 }
  3788                 }
  3760             break;
  3789             break;
  3761             }
  3790             }
  3762         default:
  3791         default:
  3763             {
  3792             {
  3764 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - unknown call service: %d", iMobileService);
  3793 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - unknown call service: %d", iMobileService);
  3765 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq;iMobileService=%d", iMobileService );
  3794 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq;iMobileService=%d", iMobileService );
  3766             break;
  3795             break;
  3767             }
  3796             }
  3768         }
  3797         }
  3769 
  3798 
  3770 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - VoiceLine1: %d", voiceLine1);
  3799 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - VoiceLine1: %d", aVoiceLine1Status);
  3771 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - VoiceLine2: %d", voiceLine2);
  3800 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - VoiceLine2: %d", aVoiceLine2Status);
  3772 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - Fax: %d", faxFlag);
  3801 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - Fax: %d", aFaxStatus);
  3773 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - Data: %d", dataFlag);
  3802 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - Data: %d", aDataStatus);
  3774 OstTraceExt4( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq;voiceLine1=%hhu;voiceLine2=%hhu;faxFlag=%hhu;dataFlag=%hhu", voiceLine1, voiceLine2, faxFlag, dataFlag );
  3803 OstTraceExt4( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq;voiceLine1=%hhu;voiceLine2=%hhu;faxFlag=%hhu;dataFlag=%hhu", aVoiceLine1Status, aVoiceLine2Status, aFaxStatus, aDataStatus );
  3775 
  3804 
  3776     // Stores CPHS indicator values to be used in notify
  3805     // Stores CPHS indicator values to be used in notify
  3777     // ECustomNotifyIccCallForwardingStatusChangeIPC
  3806     // ECustomNotifyIccCallForwardingStatusChangeIPC
  3778     // Stores CAPI CF indicator values
  3807     // Stores CAPI CF indicator values
  3779     iTCFIndicators.iMultipleSubscriberProfileID = RMmCustomAPI::KProfileIdentityOne;
  3808     iTCFIndicators.iMultipleSubscriberProfileID = RMmCustomAPI::KProfileIdentityOne;
  3780     iTCFIndicators.iIndicator =
  3809     iTCFIndicators.iIndicator = aVoiceLine1Status == ECphsCallForwardingActive
  3781         ( voiceLine1 == 0x0A ? RMobilePhone::KCFUIndicatorVoice:
  3810         ? RMobilePhone::KCFUIndicatorVoice : RMobilePhone::KCFUIndicatorUnknown;
  3782         RMobilePhone::KCFUIndicatorUnknown );
  3811 
  3783 
  3812     iTCFIndicators.iIndicator |= aVoiceLine2Status == ECphsCallForwardingActive
  3784     iTCFIndicators.iIndicator |=
  3813         ? RMobilePhone::KCFUIndicatorAuxVoice : RMobilePhone::KCFUIndicatorUnknown;
  3785         ( voiceLine2 == 0x0A ? RMobilePhone::KCFUIndicatorAuxVoice:
  3814 
  3786         RMobilePhone::KCFUIndicatorUnknown );
  3815     iTCFIndicators.iIndicator |= aFaxStatus == ECphsCallForwardingActive
  3787 
  3816         ? RMobilePhone::KCFUIndicatorFax : RMobilePhone::KCFUIndicatorUnknown;
  3788     iTCFIndicators.iIndicator |=
  3817 
  3789         ( faxFlag == 0x0A ? RMobilePhone::KCFUIndicatorFax:
  3818     iTCFIndicators.iIndicator |= aDataStatus == ECphsCallForwardingActive
  3790         RMobilePhone::KCFUIndicatorUnknown  );
  3819         ? RMobilePhone::KCFUIndicatorData : RMobilePhone::KCFUIndicatorUnknown;
  3791 
       
  3792     iTCFIndicators.iIndicator |=
       
  3793         ( dataFlag == 0x0A ? RMobilePhone::KCFUIndicatorData:
       
  3794         RMobilePhone::KCFUIndicatorUnknown );
       
  3795 
  3820 
  3796 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - Indicator: 0x%x", iTCFIndicators.iIndicator );
  3821 TFLOGSTRING2("TSY: CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq - Indicator: 0x%x", iTCFIndicators.iIndicator );
  3797 OstTrace1( TRACE_NORMAL, DUP3_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq;iTCFIndicators.iIndicator=%x", iTCFIndicators.iIndicator );
  3822 OstTrace1( TRACE_NORMAL,  DUP3_CMMSUPPLSERVMESSHANDLER_UICCWRITECALLFWDFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccWriteCallFwdFlagsCPHSReq;iTCFIndicators.iIndicator=%x", iTCFIndicators.iIndicator );
  3798 
  3823 
  3799     iTCFIndicators.iCFNumber.iTelNumber.Zero();
  3824     iTCFIndicators.iCFNumber.iTelNumber.Zero();
  3800 
  3825 
  3801     // Set parameters for UICC_APPL_CMD_REQ message
  3826     // Set parameters for UICC_APPL_CMD_REQ message
  3802     TUiccWriteTransparent params;
  3827     TUiccWriteTransparent params;
  3814     params.filePath.Append( KMasterFileId );
  3839     params.filePath.Append( KMasterFileId );
  3815     params.filePath.Append( iMmUiccMessHandler->GetApplicationFileId() );
  3840     params.filePath.Append( iMmUiccMessHandler->GetApplicationFileId() );
  3816 
  3841 
  3817     // File data tu be updated.
  3842     // File data tu be updated.
  3818     TBuf8<2> fileDataBuf;
  3843     TBuf8<2> fileDataBuf;
  3819     // Byte 1: Voice line 2 (bits 4-7) and Voice line 1 (bits 0-3)
  3844     // Byte 1[M]: Voice line 2 (bits 4-7) and Voice line 1 (bits 0-3)
  3820     fileDataBuf.Append( ( voiceLine2 << 4 ) | ( voiceLine1 ) );
  3845     fileDataBuf.Append( aVoiceLine2Status << 4 | aVoiceLine1Status );
  3821     // Byte 2: Data calls (bits 4-7) and Fax calls (bits 0-3)
  3846     // Byte 2[O]: Data calls (bits 4-7) and Fax calls (bits 0-3)
  3822     fileDataBuf.Append( ( dataFlag << 4 ) | ( faxFlag ) );
  3847     // write only if it makes sense
       
  3848     if ( ECphsCallForwardingUnknown != aFaxStatus ||
       
  3849         ECphsCallForwardingUnknown != aDataStatus )
       
  3850         {
       
  3851         aDataStatus = aDataStatus == ECphsCallForwardingUnknown ?
       
  3852             ECphsCallForwardingInactive : aDataStatus;
       
  3853         aFaxStatus = aFaxStatus == ECphsCallForwardingUnknown ?
       
  3854             ECphsCallForwardingInactive : aFaxStatus;
       
  3855         fileDataBuf.Append( aDataStatus << 4 | aFaxStatus );
       
  3856         }
  3823 
  3857 
  3824     params.fileData.Append( fileDataBuf );
  3858     params.fileData.Append( fileDataBuf );
  3825 
  3859 
  3826     return iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  3860     return iMmUiccMessHandler->CreateUiccApplCmdReq( params );
  3827     }
  3861     }
  3832 // -----------------------------------------------------------------------------
  3866 // -----------------------------------------------------------------------------
  3833 //
  3867 //
  3834 TInt CMmSupplServMessHandler::UiccReadCallFwdFlagsRel4Req()
  3868 TInt CMmSupplServMessHandler::UiccReadCallFwdFlagsRel4Req()
  3835     {
  3869     {
  3836 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadCallFwdFlagsRel4Req");
  3870 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadCallFwdFlagsRel4Req");
  3837 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCREADCALLFWDFLAGSREL4REQ, "CMmSupplServMessHandler::UiccReadCallFwdFlagsRel4Req" );
  3871 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCREADCALLFWDFLAGSREL4REQ_TD, "CMmSupplServMessHandler::UiccReadCallFwdFlagsRel4Req" );
  3838 
  3872 
  3839     // At first try to read rel4 EF ( 6FCB )
  3873     // At first try to read rel4 EF ( 6FCB )
  3840     // If reading is not successful, then we try CPHS file ( 6F13 )
  3874     // If reading is not successful, then we try CPHS file ( 6F13 )
  3841     // Set parameters for UICC_APPL_CMD_REQ message
  3875     // Set parameters for UICC_APPL_CMD_REQ message
  3842     TUiccReadLinearFixed params;
  3876     TUiccReadLinearFixed params;
  3862 // -----------------------------------------------------------------------------
  3896 // -----------------------------------------------------------------------------
  3863 //
  3897 //
  3864 TInt CMmSupplServMessHandler::UiccReadCallFwdFlagsCphsReq()
  3898 TInt CMmSupplServMessHandler::UiccReadCallFwdFlagsCphsReq()
  3865     {
  3899     {
  3866 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadCallFwdFlagsCphsReq");
  3900 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadCallFwdFlagsCphsReq");
  3867 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCREADCALLFWDFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccReadCallFwdFlagsCphsReq" );
  3901 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCREADCALLFWDFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccReadCallFwdFlagsCphsReq" );
  3868 
  3902 
  3869     // Set parameters for UICC_APPL_CMD_REQ message
  3903     // Set parameters for UICC_APPL_CMD_REQ message
  3870     TUiccReadTransparent params;
  3904     TUiccReadTransparent params;
  3871     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  3905     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  3872     params.trId = ETrIdReadCallFwdFlagsCphs;
  3906     params.trId = ETrIdReadCallFwdFlagsCphs;
  3893     TInt aStatus,
  3927     TInt aStatus,
  3894     TInt aTrId,
  3928     TInt aTrId,
  3895     const TDesC8& aFileData )
  3929     const TDesC8& aFileData )
  3896     {
  3930     {
  3897 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp");
  3931 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp");
  3898 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCHANDLECALLFWDFLAGSRESP, "CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp" );
  3932 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCHANDLECALLFWDFLAGSRESP_TD, "CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp" );
  3899 
  3933 
  3900     CMmDataPackage dataPackage;
  3934     CMmDataPackage dataPackage;
  3901     CMmDataPackage customDataPackage;
  3935     CMmDataPackage customDataPackage;
  3902     TBool rel4Exists( EFalse );
  3936     enum
  3903     TBool cphsExists( EFalse );
  3937     {
  3904 
  3938         EForwardFlagsConfigurationUnknown,
       
  3939         EForwardFlagsConfigurationRel4,
       
  3940         EForwardFlagsConfigurationCphs
       
  3941     } configuration( EForwardFlagsConfigurationUnknown );
       
  3942 
       
  3943     TUint8 voiceStatus( 0 );
       
  3944     TUint8 auxVoiceStatus( 0 );
       
  3945     TUint8 faxStatus( 0 );
       
  3946     TUint8 dataStatus( 0 );
  3905     // Read file data only if UICC status is OK
  3947     // Read file data only if UICC status is OK
  3906     if ( UICC_STATUS_OK == aStatus )
  3948     if ( UICC_STATUS_OK == aStatus )
  3907         {
  3949         {
  3908         if ( ETrIdReadCallFwdFlagsRel4 == aTrId )
  3950         if ( ETrIdReadCallFwdFlagsRel4 == aTrId )
  3909             {
  3951             {
  3910             rel4Exists = ETrue;
  3952             configuration = EForwardFlagsConfigurationRel4;
  3911             iVoiceStatus = aFileData[1] & 0x01;
  3953             voiceStatus = aFileData[1] & 0x01;
  3912             iFaxStatus = ( ( aFileData[1] & 0x02 ) >> 1 );
  3954             faxStatus = ( aFileData[1] & 0x02 ) >> 1;
  3913             iDataStatus = ( ( aFileData[1] & 0x04 ) >> 2 );
  3955             dataStatus = ( aFileData[1] & 0x04 ) >> 2;
  3914 
  3956 
  3915             // In case of inactive flags, remaining bytes may be set to 0xFF in SIM
  3957             // In case of inactive flags, remaining bytes may be set to 0xFF in SIM
  3916             // Check the byte 3 for avoiding crash in that case.
  3958             // Check the byte 3 for avoiding crash in that case.
  3917             if ( iVoiceStatus || iFaxStatus || iDataStatus &&
  3959             if ( ( voiceStatus || faxStatus || dataStatus ) &&
  3918                 0xFF != aFileData[2] )
  3960                 0xFF != aFileData[2] )
  3919                 {
  3961                 {
  3920                 TUint8 numberLen( aFileData[2] );
  3962                 TUint8 numberLen( aFileData[2] );
  3921                 numberLen--; // decrease by one because of TON&NPI
  3963                 numberLen--; // decrease by one because of TON&NPI
  3922                 TBuf<20> tempNumber;
  3964                 TBuf<20> tempNumber;
  3932                 TUint8 index( iCFTelNumberFromSim.Length() );
  3974                 TUint8 index( iCFTelNumberFromSim.Length() );
  3933                 if ( 0x0F == iCFTelNumberFromSim[--index] )
  3975                 if ( 0x0F == iCFTelNumberFromSim[--index] )
  3934                     {
  3976                     {
  3935                     iCFTelNumberFromSim.SetLength( index );
  3977                     iCFTelNumberFromSim.SetLength( index );
  3936                     }
  3978                     }
  3937                 }
  3979                 // no else
       
  3980                 }
       
  3981             // no else
  3938             }
  3982             }
  3939         else // CPHS case
  3983         else // CPHS case
  3940             {
  3984             {
  3941             iVoiceLine1 = aFileData[0] & 0x0F;
  3985             configuration = EForwardFlagsConfigurationCphs;
  3942             iVoiceLine2 = ( aFileData[0] & 0xF0 ) >> 4;
  3986             voiceStatus = aFileData[0] & 0x0F;
  3943             iFax = aFileData[1] & 0x0F;
  3987             auxVoiceStatus = ( aFileData[0] & 0xF0 ) >> 4;
  3944             iData = ( aFileData[1] & 0xF0 ) >> 4;
  3988             if ( 1 < aFileData.Length() )
  3945             cphsExists = ETrue;
  3989                 {
       
  3990                 faxStatus = aFileData[1] & 0x0F;
       
  3991                 dataStatus = ( aFileData[1] & 0xF0 ) >> 4;
       
  3992                 }
       
  3993             else
       
  3994                 {
       
  3995                 faxStatus = ECphsCallForwardingUnknown;
       
  3996                 dataStatus = ECphsCallForwardingUnknown;
       
  3997                 }
  3946             }
  3998             }
  3947         } // End of if ( UICC_STATUS_OK == aStatus )
  3999         } // End of if ( UICC_STATUS_OK == aStatus )
  3948 
  4000 
  3949     iTCFIndicators.iIndicator = RMobilePhone::KCFUIndicatorUnknown;
  4001     iTCFIndicators.iIndicator = RMobilePhone::KCFUIndicatorUnknown;
  3950     iTCFIndicators.iCFNumber.iTelNumber.Zero();
  4002     iTCFIndicators.iCFNumber.iTelNumber.Zero();
  3951     // Stores CAPI CF indicator values
  4003     // Stores CAPI CF indicator values
  3952     iTCFIndicators.iMultipleSubscriberProfileID =
  4004     iTCFIndicators.iMultipleSubscriberProfileID =
  3953         RMmCustomAPI::KProfileIdentityOne;
  4005         RMmCustomAPI::KProfileIdentityOne;
  3954 
  4006 
  3955     if ( rel4Exists )
  4007     if ( EForwardFlagsConfigurationRel4 == configuration )
  3956         {
  4008         {
  3957         iTCFIndicators.iIndicator =
  4009         iTCFIndicators.iIndicator =
  3958             ( iVoiceStatus ? RMobilePhone::KCFUIndicatorVoice:
  4010             voiceStatus ? RMobilePhone::KCFUIndicatorVoice :
  3959             RMobilePhone::KCFUIndicatorUnknown );
  4011             RMobilePhone::KCFUIndicatorUnknown;
  3960         iTCFIndicators.iIndicator |=
  4012         iTCFIndicators.iIndicator |=
  3961             ( iFaxStatus ? RMobilePhone::KCFUIndicatorFax:
  4013             faxStatus ? RMobilePhone::KCFUIndicatorFax :
  3962             RMobilePhone::KCFUIndicatorUnknown );
  4014             RMobilePhone::KCFUIndicatorUnknown;
  3963         iTCFIndicators.iIndicator |=
  4015         iTCFIndicators.iIndicator |=
  3964             ( iDataStatus ? RMobilePhone::KCFUIndicatorData:
  4016             dataStatus ? RMobilePhone::KCFUIndicatorData :
  3965             RMobilePhone::KCFUIndicatorUnknown );
  4017             RMobilePhone::KCFUIndicatorUnknown;
  3966 
       
  3967         iTCFIndicators.iCFNumber.iTelNumber.Copy( iCFTelNumberFromSim );
  4018         iTCFIndicators.iCFNumber.iTelNumber.Copy( iCFTelNumberFromSim );
  3968         }
  4019         }
  3969     else if ( cphsExists )  // CPHS
  4020     else if ( EForwardFlagsConfigurationCphs == configuration )  // CPHS
  3970         {
  4021         {
  3971         iTCFIndicators.iIndicator =
  4022         iTCFIndicators.iIndicator =
  3972             ( iVoiceLine1 == 0x0A ? RMobilePhone::KCFUIndicatorVoice:
  4023             voiceStatus == ECphsCallForwardingActive ?
  3973             RMobilePhone::KCFUIndicatorUnknown );
  4024             RMobilePhone::KCFUIndicatorVoice : RMobilePhone::KCFUIndicatorUnknown;
  3974 
       
  3975         iTCFIndicators.iIndicator |=
  4025         iTCFIndicators.iIndicator |=
  3976             ( iVoiceLine2 == 0x0A ? RMobilePhone::KCFUIndicatorAuxVoice:
  4026             auxVoiceStatus == ECphsCallForwardingActive ?
  3977             RMobilePhone::KCFUIndicatorUnknown );
  4027             RMobilePhone::KCFUIndicatorAuxVoice : RMobilePhone::KCFUIndicatorUnknown;
  3978 
       
  3979         iTCFIndicators.iIndicator |=
  4028         iTCFIndicators.iIndicator |=
  3980             ( iFax == 0x0A ? RMobilePhone::KCFUIndicatorFax:
  4029             faxStatus == ECphsCallForwardingActive ?
  3981             RMobilePhone::KCFUIndicatorUnknown  );
  4030             RMobilePhone::KCFUIndicatorFax : RMobilePhone::KCFUIndicatorUnknown;
  3982         iTCFIndicators.iIndicator |=
  4031         iTCFIndicators.iIndicator |=
  3983             ( iData == 0x0A ? RMobilePhone::KCFUIndicatorData:
  4032             dataStatus == ECphsCallForwardingActive ?
  3984             RMobilePhone::KCFUIndicatorUnknown );
  4033             RMobilePhone::KCFUIndicatorData : RMobilePhone::KCFUIndicatorUnknown;
  3985         }
  4034         }
       
  4035     // no else
  3986 
  4036 
  3987     if ( iGetIccCallForwardingStatus ) // ECustomGetIccCallForwardingStatusIPC
  4037     if ( iGetIccCallForwardingStatus ) // ECustomGetIccCallForwardingStatusIPC
  3988         {
  4038         {
  3989         iGetIccCallForwardingStatus = EFalse;
  4039         iGetIccCallForwardingStatus = EFalse;
  3990 
  4040 
  4009             ECustomNotifyIccCallForwardingStatusChangeIPC,
  4059             ECustomNotifyIccCallForwardingStatusChangeIPC,
  4010             &customDataPackage,
  4060             &customDataPackage,
  4011             KErrNone );
  4061             KErrNone );
  4012 
  4062 
  4013 TFLOGSTRING("TSY: CMmSupplServMessHandler::SimCallFwdRespL - Check possible refresh status");
  4063 TFLOGSTRING("TSY: CMmSupplServMessHandler::SimCallFwdRespL - Check possible refresh status");
  4014 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_UICCHANDLECALLFWDFLAGSRESP, "CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp - Check possible refresh status" );
  4064 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_UICCHANDLECALLFWDFLAGSRESP_TD, "CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp - Check possible refresh status" );
  4015         iMessageRouter->GetPhoneMessHandler()->CallForwFlagsCachingCompleted( aStatus );
  4065         iMessageRouter->GetPhoneMessHandler()->CallForwFlagsCachingCompleted( aStatus );
  4016         }
  4066         }
  4017     else if ( !iGetCallForwardingNumber ) // EMobilePhoneSetCallForwardingStatus
  4067     else if ( !iGetCallForwardingNumber ) // EMobilePhoneSetCallForwardingStatus
  4018         {
  4068         {
  4019         if ( rel4Exists )
  4069         if ( EForwardFlagsConfigurationRel4 == configuration )
  4020             {
  4070             {
  4021             // Call forwarding status successfully read from the SIM
  4071             // Call forwarding status successfully read from the SIM
  4022             // Write call forwarding number and indicator status
  4072             // Write call forwarding number and indicator status
  4023             // to the SIM
  4073             // to the SIM
  4024             UiccWriteCallFwdFlagsRel4Req();
  4074             UiccWriteCallFwdFlagsRel4Req( voiceStatus, faxStatus, dataStatus );
  4025             }
  4075             }
  4026         else if ( cphsExists )
  4076         else if ( EForwardFlagsConfigurationCphs == configuration )
  4027             {
  4077             {
  4028             // Call forwarding status successfully read from the SIM
  4078             // Call forwarding status successfully read from the SIM
  4029             // Write call forwarding number and indicator status
  4079             // Write call forwarding number and indicator status
  4030             // to the SIM
  4080             // to the SIM
  4031             UiccWriteCallFwdFlagsCPHSReq();
  4081             UiccWriteCallFwdFlagsCPHSReq(
       
  4082                 voiceStatus, auxVoiceStatus, faxStatus, dataStatus );
  4032             }
  4083             }
  4033         else
  4084         else
  4034             {
  4085             {
  4035             // Call forwarding status can't be read from the SIM
  4086             // Call forwarding status can't be read from the SIM
  4036             // probably due to missing EF-CFIS file on the SIM.
  4087             // probably due to missing EF-CFIS file on the SIM.
  4045     else    // EMmTsyGetCallForwardingNumberIPC
  4096     else    // EMmTsyGetCallForwardingNumberIPC
  4046         {
  4097         {
  4047         iGetCallForwardingNumber = EFalse;
  4098         iGetCallForwardingNumber = EFalse;
  4048         dataPackage.PackData( &iCFTelNumberFromSim );
  4099         dataPackage.PackData( &iCFTelNumberFromSim );
  4049 
  4100 
  4050         if ( rel4Exists )
  4101         if ( EForwardFlagsConfigurationRel4 == configuration )
  4051             {
  4102             {
  4052             // Call forwarding number successfully read from the SIM
  4103             // Call forwarding number successfully read from the SIM
  4053             // Complete the GetCallForwardingNumber to SOS layer
  4104             // Complete the GetCallForwardingNumber to SOS layer
  4054             iMessageRouter->Complete(
  4105             iMessageRouter->Complete(
  4055                 EMmTsyGetCallForwardingNumberIPC,
  4106                 EMmTsyGetCallForwardingNumberIPC,
  4076 // -----------------------------------------------------------------------------
  4127 // -----------------------------------------------------------------------------
  4077 //
  4128 //
  4078 TInt CMmSupplServMessHandler::UiccReadVoiceMsgFlagsRel4Req()
  4129 TInt CMmSupplServMessHandler::UiccReadVoiceMsgFlagsRel4Req()
  4079     {
  4130     {
  4080 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadVoiceMsgFlagsRel4Req");
  4131 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadVoiceMsgFlagsRel4Req");
  4081 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_UICCREADVOICEMSGFLAGSREL4REQ, "CMmSupplServMessHandler::UiccReadVoiceMsgFlagsRel4Req" );
  4132 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_UICCREADVOICEMSGFLAGSREL4REQ_TD, "CMmSupplServMessHandler::UiccReadVoiceMsgFlagsRel4Req" );
  4082 
  4133 
  4083     // At first try to read rel4 EF ( 6FCA )
  4134     // At first try to read rel4 EF ( 6FCA )
  4084     // If reading is not successful, then we try CPHS file ( 6F11 )
  4135     // If reading is not successful, then we try CPHS file ( 6F11 )
  4085     // Set parameters for UICC_APPL_CMD_REQ message
  4136     // Set parameters for UICC_APPL_CMD_REQ message
  4086     TUiccReadLinearFixed params;
  4137     TUiccReadLinearFixed params;
  4108 void CMmSupplServMessHandler::UiccReadVoiceMsgFlagsResp(
  4159 void CMmSupplServMessHandler::UiccReadVoiceMsgFlagsResp(
  4109     TInt aTrId,
  4160     TInt aTrId,
  4110     const TDesC8& aFileData )
  4161     const TDesC8& aFileData )
  4111     {
  4162     {
  4112 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadVoiceMsgFlagsResp");
  4163 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccReadVoiceMsgFlagsResp");
  4113 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCREADVOICEMSGFLAGSRESP, "CMmSupplServMessHandler::UiccReadVoiceMsgFlagsResp" );
  4164 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCREADVOICEMSGFLAGSRESP_TD, "CMmSupplServMessHandler::UiccReadVoiceMsgFlagsResp" );
  4114 
  4165 
  4115     TInt ret( KErrNone );
  4166     TInt ret( KErrNone );
  4116     CMmDataPackage dataPackage;
  4167     CMmDataPackage dataPackage;
  4117 
  4168 
  4118     if ( ETrIdReadVoiceMsgFlagsRel4 == aTrId )
  4169     if ( ETrIdReadVoiceMsgFlagsRel4 == aTrId )
  4172 // -----------------------------------------------------------------------------
  4223 // -----------------------------------------------------------------------------
  4173 //
  4224 //
  4174 TInt CMmSupplServMessHandler::UiccReadVoiceMsgFlagsCphsReq()
  4225 TInt CMmSupplServMessHandler::UiccReadVoiceMsgFlagsCphsReq()
  4175     {
  4226     {
  4176 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp");
  4227 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp");
  4177 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCREADVOICEMSGFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccReadVoiceMsgFlagsCphsReq" );
  4228 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCREADVOICEMSGFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccReadVoiceMsgFlagsCphsReq" );
  4178 
  4229 
  4179     // Reading of rel4 was not successful, we try CPHS file ( 6F11 )
  4230     // Reading of rel4 was not successful, we try CPHS file ( 6F11 )
  4180     // Set parameters for UICC_APPL_CMD_REQ message
  4231     // Set parameters for UICC_APPL_CMD_REQ message
  4181     TUiccReadTransparent params;
  4232     TUiccReadTransparent params;
  4182     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4233     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4201 //
  4252 //
  4202 TInt CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsCPHSReq(
  4253 TInt CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsCPHSReq(
  4203     const RMobilePhone::TMobilePhoneMessageWaitingV1& aMsgWaiting )
  4254     const RMobilePhone::TMobilePhoneMessageWaitingV1& aMsgWaiting )
  4204     {
  4255     {
  4205 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsCPHSReq");
  4256 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsCPHSReq");
  4206 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCWRITEVOICEMSGFLAGSCPHSREQ, "CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsCPHSReq" );
  4257 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCWRITEVOICEMSGFLAGSCPHSREQ_TD, "CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsCPHSReq" );
  4207 
  4258 
  4208     // Set parameters for UICC_APPL_CMD_REQ message
  4259     // Set parameters for UICC_APPL_CMD_REQ message
  4209     TUiccWriteTransparent params;
  4260     TUiccWriteTransparent params;
  4210     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4261     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4211     params.trId = ETrIdWriteVoiceMsgFlagsCphs;
  4262     params.trId = ETrIdWriteVoiceMsgFlagsCphs;
  4256 //
  4307 //
  4257 TInt CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsRel4Req(
  4308 TInt CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsRel4Req(
  4258     const RMobilePhone::TMobilePhoneMessageWaitingV1& aMsgWaiting )
  4309     const RMobilePhone::TMobilePhoneMessageWaitingV1& aMsgWaiting )
  4259     {
  4310     {
  4260 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp");
  4311 TFLOGSTRING("TSY: CMmSupplServMessHandler::UiccHandleCallFwdFlagsResp");
  4261 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_UICCWRITEVOICEMSGFLAGSREL4REQ, "CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsRel4Req" );
  4312 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_UICCWRITEVOICEMSGFLAGSREL4REQ_TD, "CMmSupplServMessHandler::UiccWriteVoiceMsgFlagsRel4Req" );
  4262 
  4313 
  4263     // Set parameters for UICC_APPL_CMD_REQ message
  4314     // Set parameters for UICC_APPL_CMD_REQ message
  4264     TUiccWriteLinearFixed params;
  4315     TUiccWriteLinearFixed params;
  4265     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4316     params.messHandlerPtr = static_cast<MUiccOperationBase*>( this );
  4266     params.trId = ETrIdWriteVoiceMsgFlagsRel4;
  4317     params.trId = ETrIdWriteVoiceMsgFlagsRel4;
  4298     RMobilePhone::TMobileTON aMmTypeOfNumber,
  4349     RMobilePhone::TMobileTON aMmTypeOfNumber,
  4299     RMobilePhone::TMobileNPI aMmNumberingPlan,
  4350     RMobilePhone::TMobileNPI aMmNumberingPlan,
  4300     TUint8& aIsiTypeOfNumber )
  4351     TUint8& aIsiTypeOfNumber )
  4301     {
  4352     {
  4302 TFLOGSTRING("TSY: CMmCallMessHandler::MapTypeOfNumberMmToIsi");
  4353 TFLOGSTRING("TSY: CMmCallMessHandler::MapTypeOfNumberMmToIsi");
  4303 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERMMTOISI, "CMmSupplServMessHandler::MapTypeOfNumberMmToIsi" );
  4354 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERMMTOISI_TD, "CMmSupplServMessHandler::MapTypeOfNumberMmToIsi" );
  4304 
  4355 
  4305      //get the right numbering plan
  4356      //get the right numbering plan
  4306     switch ( aMmNumberingPlan )
  4357     switch ( aMmNumberingPlan )
  4307         // isi numbering plan is included in bits 1-4 (lsb)
  4358         // isi numbering plan is included in bits 1-4 (lsb)
  4308         {
  4359         {
  4341         case RMobilePhone::EERMESNumberPlan:
  4392         case RMobilePhone::EERMESNumberPlan:
  4342         default:
  4393         default:
  4343             {
  4394             {
  4344 TFLOGSTRING2("TSY: CMmCallMessHandler::MapTypeOfNumberMmToIsi -\
  4395 TFLOGSTRING2("TSY: CMmCallMessHandler::MapTypeOfNumberMmToIsi -\
  4345               Not supported numbering plan: %d", aMmNumberingPlan);
  4396               Not supported numbering plan: %d", aMmNumberingPlan);
  4346 OstTrace1( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERMMTOISI, "CMmSupplServMessHandler::MapTypeOfNumberMmToIsi;aMmNumberingPlan=%d", aMmNumberingPlan );
  4397 OstTrace1( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERMMTOISI_TD, "CMmSupplServMessHandler::MapTypeOfNumberMmToIsi;aMmNumberingPlan=%d", aMmNumberingPlan );
  4347             break;
  4398             break;
  4348             }
  4399             }
  4349         }
  4400         }
  4350 
  4401 
  4351     //get the right type of number
  4402     //get the right type of number
  4396             }
  4447             }
  4397         default:
  4448         default:
  4398             {
  4449             {
  4399 TFLOGSTRING2("TSY: CMmCallMessHandler::MapTypeOfNumberMmToIsi -\
  4450 TFLOGSTRING2("TSY: CMmCallMessHandler::MapTypeOfNumberMmToIsi -\
  4400               Not supported number type: %d", aMmTypeOfNumber);
  4451               Not supported number type: %d", aMmTypeOfNumber);
  4401 OstTrace1( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERMMTOISI, "CMmSupplServMessHandler::MapTypeOfNumberMmToIsi;aMmTypeOfNumber=%d", aMmTypeOfNumber );
  4452 OstTrace1( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_MAPTYPEOFNUMBERMMTOISI_TD, "CMmSupplServMessHandler::MapTypeOfNumberMmToIsi;aMmTypeOfNumber=%d", aMmTypeOfNumber );
  4402             break;
  4453             break;
  4403             }
  4454             }
  4404         }
  4455         }
  4405     }
  4456     }
  4406 
  4457 
  4414     RMobilePhone::TMobilePhoneALSLine& aAlsLine
  4465     RMobilePhone::TMobilePhoneALSLine& aAlsLine
  4415     )
  4466     )
  4416 {
  4467 {
  4417 TFLOGSTRING2("TSY: CMmSupplServMessHandler::SetVoiceCallForwardLine: %d",
  4468 TFLOGSTRING2("TSY: CMmSupplServMessHandler::SetVoiceCallForwardLine: %d",
  4418               aAlsLine);
  4469               aAlsLine);
  4419 OstTrace1( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_SETVOICECALLFORWARDLINE, "CMmSupplServMessHandler::SetVoiceCallForwardLine;aAlsLine=%d", aAlsLine );
  4470 OstTrace1( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_SETVOICECALLFORWARDLINE_TD, "CMmSupplServMessHandler::SetVoiceCallForwardLine;aAlsLine=%d", aAlsLine );
  4420     iAlsLine = aAlsLine;
  4471     iAlsLine = aAlsLine;
  4421 }
  4472 }
  4422 
  4473 
  4423 // ----------------------------------------------------------------------------
  4474 // ----------------------------------------------------------------------------
  4424 // CMmSupplServMessHandler::ProcessIfSsRequestChanged
  4475 // CMmSupplServMessHandler::ProcessIfSsRequestChanged
  4427 //
  4478 //
  4428 TBool CMmSupplServMessHandler::ProcessIfSsRequestChanged(
  4479 TBool CMmSupplServMessHandler::ProcessIfSsRequestChanged(
  4429         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4480         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4430     {
  4481     {
  4431 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfSsRequestChanged");
  4482 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfSsRequestChanged");
  4432 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSIFSSREQUESTCHANGED, "CMmSupplServMessHandler::ProcessIfSsRequestChanged" );
  4483 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSIFSSREQUESTCHANGED_TD, "CMmSupplServMessHandler::ProcessIfSsRequestChanged" );
  4433     TBool ret( EFalse );
  4484     TBool ret( EFalse );
  4434 
  4485 
  4435     // original SS request is changed, or initiated by Call Control
  4486     // original SS request is changed, or initiated by Call Control
  4436     if ( ESSOperationTypeUnknown == aResponse.iTraId && iSsCode != aResponse.iSsCode )
  4487     if ( iSsCode != aResponse.iSsCode )
  4437         {
  4488         {
  4438         ret = ETrue;
  4489         ret = ETrue;
  4439         if ( KSsCodeNoValue != iSsCode )
  4490         if ( KSsCodeNoValue != iSsCode )
  4440             {
  4491             {
  4441 TFLOGSTRING("TSY: call control has changed SS request -> complete with error");
  4492 TFLOGSTRING("TSY: call control has changed SS request -> complete with error");
  4442 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_PROCESSIFSSREQUESTCHANGED, "CMmSupplServMessHandler::ProcessIfSsRequestChanged, call control has changed SS request -> complete with error" );
  4493 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_PROCESSIFSSREQUESTCHANGED_TD, "CMmSupplServMessHandler::ProcessIfSsRequestChanged, call control has changed SS request -> complete with error" );
  4443             //call control has changed SS request -> complete with error
  4494             //call control has changed SS request -> complete with error
  4444             iMessageRouter->Complete(
  4495             iMessageRouter->Complete(
  4445                 iIpc,
  4496                 iIpc,
  4446                 CMmStaticUtility::EpocErrorCode(
  4497                 CMmStaticUtility::EpocErrorCode(
  4447                     KErrAccessDenied,
  4498                     KErrAccessDenied,
  4448                     KErrSatControl ) );
  4499                     KErrSatControl ) );
  4449             }
  4500             }
  4450         else
  4501         else
  4451             {
  4502             {
  4452 TFLOGSTRING("TSY: call control has changed call request to SS request -> ignored");
  4503 TFLOGSTRING("TSY: call control has changed call request to SS request -> ignored");
  4453 OstTrace0( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_PROCESSIFSSREQUESTCHANGED, "CMmSupplServMessHandler::ProcessIfSsRequestChanged,call control has changed call request to SS request -> ignored" );
  4504 OstTrace0( TRACE_NORMAL,  DUP2_CMMSUPPLSERVMESSHANDLER_PROCESSIFSSREQUESTCHANGED_TD, "CMmSupplServMessHandler::ProcessIfSsRequestChanged,call control has changed call request to SS request -> ignored" );
  4454             // call control has changed call request to SS request.
  4505             // call control has changed call request to SS request.
  4455             // CTSY doesn't expect the completion, ignore this (error EXTL-6XJ9KC)
  4506             // CTSY doesn't expect the completion, ignore this (error EXTL-6XJ9KC)
  4456             }
  4507             }
  4457         }
  4508         }
  4458     return ret;
  4509     return ret;
  4465 //
  4516 //
  4466 TBool CMmSupplServMessHandler::ProcessIfSimpleCompletionPossible(
  4517 TBool CMmSupplServMessHandler::ProcessIfSimpleCompletionPossible(
  4467         const TPreprocessedSsServiceCompleteResponse& /*aResponse*/)
  4518         const TPreprocessedSsServiceCompleteResponse& /*aResponse*/)
  4468     {
  4519     {
  4469 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfSimpleCompletionPossible");
  4520 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfSimpleCompletionPossible");
  4470 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSIFSIMPLECOMPLETIONPOSSIBLE, "CMmSupplServMessHandler::ProcessIfSimpleCompletionPossible" );
  4521 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSIFSIMPLECOMPLETIONPOSSIBLE_TD, "CMmSupplServMessHandler::ProcessIfSimpleCompletionPossible" );
  4471     TBool ret( EFalse );
  4522     TBool ret( EFalse );
  4472 
  4523 
  4473     if ( EMobilePhoneSendNetworkServiceRequestNoFdnCheck == iIpc ||
  4524     if ( EMobilePhoneSendNetworkServiceRequestNoFdnCheck == iIpc ||
  4474               EMobilePhoneSendNetworkServiceRequest == iIpc )
  4525               EMobilePhoneSendNetworkServiceRequest == iIpc )
  4475         {
  4526         {
  4486 // -----------------------------------------------------------------------------
  4537 // -----------------------------------------------------------------------------
  4487 //
  4538 //
  4488 TBool CMmSupplServMessHandler::ProcessSsGsmPasswordRegistration(
  4539 TBool CMmSupplServMessHandler::ProcessSsGsmPasswordRegistration(
  4489         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4540         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4490     {
  4541     {
  4491 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSSSGSMPASSWORDREGISTRATION, "CMmSupplServMessHandler::ProcessSsGsmPasswordRegistration" );
  4542 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSSSGSMPASSWORDREGISTRATION_TD, "CMmSupplServMessHandler::ProcessSsGsmPasswordRegistration" );
  4492 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessSsGsmPasswordRegistration");
  4543 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessSsGsmPasswordRegistration");
  4493     TBool ret( EFalse );
  4544     TBool ret( EFalse );
  4494 
  4545 
  4495     if ( SS_GSM_PASSWORD_REGISTRATION == aResponse.iOperation )
  4546     if ( SS_GSM_PASSWORD_REGISTRATION == aResponse.iOperation )
  4496         {
  4547         {
  4509 //
  4560 //
  4510 TBool CMmSupplServMessHandler::ProcessIfCallForwardingL(
  4561 TBool CMmSupplServMessHandler::ProcessIfCallForwardingL(
  4511         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4562         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4512     {
  4563     {
  4513 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfCallForwardingL");
  4564 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfCallForwardingL");
  4514 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSIFCALLFORWARDINGL, "CMmSupplServMessHandler::ProcessIfCallForwardingL" );
  4565 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSIFCALLFORWARDINGL_TD, "CMmSupplServMessHandler::ProcessIfCallForwardingL" );
  4515     TBool ret( EFalse );
  4566     TBool ret( EFalse );
  4516     // offset where the subblock starts
  4567     // offset where the subblock starts
  4517     TUint sbStartOffset( 0 );
  4568     TUint sbStartOffset( 0 );
  4518 
  4569 
  4519     switch ( aResponse.iSsCode )
  4570     switch ( aResponse.iSsCode )
  4645 //
  4696 //
  4646 TBool CMmSupplServMessHandler::ProcessIfCallBarringL(
  4697 TBool CMmSupplServMessHandler::ProcessIfCallBarringL(
  4647         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4698         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4648     {
  4699     {
  4649 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfCallBarringL");
  4700 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfCallBarringL");
  4650 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSIFCALLBARRINGL, "CMmSupplServMessHandler::ProcessIfCallBarringL" );
  4701 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSIFCALLBARRINGL_TD, "CMmSupplServMessHandler::ProcessIfCallBarringL" );
  4651     TBool ret( EFalse );
  4702     TBool ret( EFalse );
  4652     // offset where the subblock starts
  4703     // offset where the subblock starts
  4653     TUint sbStartOffset( 0 );
  4704     TUint sbStartOffset( 0 );
  4654 
  4705 
  4655     switch ( aResponse.iSsCode )
  4706     switch ( aResponse.iSsCode )
  4782 //
  4833 //
  4783 TBool CMmSupplServMessHandler::ProcessIfCallWaitingL(
  4834 TBool CMmSupplServMessHandler::ProcessIfCallWaitingL(
  4784         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4835         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4785     {
  4836     {
  4786 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfCallWaitingL");
  4837 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfCallWaitingL");
  4787 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSIFCALLWAITINGL, "CMmSupplServMessHandler::ProcessIfCallWaitingL" );
  4838 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSIFCALLWAITINGL_TD, "CMmSupplServMessHandler::ProcessIfCallWaitingL" );
  4788     TBool ret( EFalse );
  4839     TBool ret( EFalse );
  4789     // offset where the subblock starts
  4840     // offset where the subblock starts
  4790     TUint sbStartOffset( 0 );
  4841     TUint sbStartOffset( 0 );
  4791 
  4842 
  4792     switch ( aResponse.iSsCode )
  4843     switch ( aResponse.iSsCode )
  4925 //
  4976 //
  4926 TBool CMmSupplServMessHandler::ProcessIfIdentityServices(
  4977 TBool CMmSupplServMessHandler::ProcessIfIdentityServices(
  4927         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4978         const TPreprocessedSsServiceCompleteResponse& aResponse)
  4928     {
  4979     {
  4929 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfIdentityServices");
  4980 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfIdentityServices");
  4930 OstTrace0( TRACE_NORMAL, CMMSUPPLSERVMESSHANDLER_PROCESSIFIDENTITYSERVICES, "CMmSupplServMessHandler::ProcessIfIdentityServices" );
  4981 OstTrace0( TRACE_NORMAL,  CMMSUPPLSERVMESSHANDLER_PROCESSIFIDENTITYSERVICES_TD, "CMmSupplServMessHandler::ProcessIfIdentityServices" );
  4931     TBool ret( EFalse );
  4982     TBool ret( EFalse );
  4932     // offset where the subblock starts
  4983     // offset where the subblock starts
  4933     TUint sbStartOffset( 0 );
  4984     TUint sbStartOffset( 0 );
  4934 
  4985 
  4935     switch ( aResponse.iSsCode )
  4986     switch ( aResponse.iSsCode )
  4965                             SS_GSM_GENERIC_SERVICE_INFO,
  5016                             SS_GSM_GENERIC_SERVICE_INFO,
  4966                             EIsiSubBlockTypeId8Len8,
  5017                             EIsiSubBlockTypeId8Len8,
  4967                             sbStartOffset ) ) )
  5018                             sbStartOffset ) ) )
  4968                         {
  5019                         {
  4969 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfIdentityServices: KSsGsmGenericServiceInfo found");
  5020 TFLOGSTRING("TSY:CMmSupplServMessHandler::ProcessIfIdentityServices: KSsGsmGenericServiceInfo found");
  4970 OstTrace0( TRACE_NORMAL, DUP1_CMMSUPPLSERVMESSHANDLER_PROCESSIFIDENTITYSERVICES, "CMmSupplServMessHandler::ProcessIfIdentityServices, KSsGsmGenericServiceInfo found" );
  5021 OstTrace0( TRACE_NORMAL,  DUP1_CMMSUPPLSERVMESSHANDLER_PROCESSIFIDENTITYSERVICES_TD, "CMmSupplServMessHandler::ProcessIfIdentityServices, KSsGsmGenericServiceInfo found" );
  4971                         clirInfoFound = ETrue;
  5022                         clirInfoFound = ETrue;
  4972                         // get status
  5023                         // get status
  4973                         TUint8 statusIsi = aResponse.iIsiMessage.Get8bit(
  5024                         TUint8 statusIsi = aResponse.iIsiMessage.Get8bit(
  4974                             sbStartOffset +
  5025                             sbStartOffset +
  4975                             SS_GSM_GENERIC_SERVICE_INFO_OFFSET_SSSTATUS );
  5026                             SS_GSM_GENERIC_SERVICE_INFO_OFFSET_SSSTATUS );