adaptationlayer/tsy/nokiatsy_dll/src/cmmussdmesshandler.cpp
changeset 7 fa67e03b87df
parent 5 8ccc39f9d787
child 8 6295dc2169f3
equal deleted inserted replaced
6:942573423a60 7:fa67e03b87df
   239         {
   239         {
   240         switch ( msgAttr.iType )
   240         switch ( msgAttr.iType )
   241             {
   241             {
   242             // User has requested to send MO USSD
   242             // User has requested to send MO USSD
   243             case RMobileUssdMessaging::EUssdMORequest:
   243             case RMobileUssdMessaging::EUssdMORequest:
       
   244             case RMobileUssdMessaging::EUssdMOReply:
       
   245                 {
   244                 ussdType = SS_GSM_USSD_COMMAND;
   246                 ussdType = SS_GSM_USSD_COMMAND;
   245                 break;
   247                 break;
   246             // User is replying to MT USSD.
   248                 }
   247             case RMobileUssdMessaging::EUssdMOReply:
       
   248                 ussdType = SS_GSM_USSD_MT_REPLY;
       
   249                 break;
       
   250             // User is signing for the MT request
   249             // User is signing for the MT request
   251             case RMobileUssdMessaging::EUssdMOAcknowledgement:
   250             case RMobileUssdMessaging::EUssdMOAcknowledgement:
       
   251                 {
   252                 ussdType = SS_GSM_USSD_NOTIFY;
   252                 ussdType = SS_GSM_USSD_NOTIFY;
   253                 break;
   253                 break;
       
   254                 }
   254             // Unknown or illegal cases return error to client
   255             // Unknown or illegal cases return error to client
   255             default:
   256             default:
       
   257                 {
   256                 // ussd type is unknown, report error
   258                 // ussd type is unknown, report error
   257                 ret = KErrArgument;
   259                 ret = KErrArgument;
   258                 break;
   260                 break;
       
   261                 }
   259             }
   262             }
   260         }
   263         }
   261     else
   264     else
   262         {
   265         {
   263 TFLOGSTRING("TSY: CMmUssdMessHandler::SsGsmUssdSendReq. Type flag missing" );
   266 TFLOGSTRING("TSY: CMmUssdMessHandler::SsGsmUssdSendReq. Type flag missing" );
   506     // If no sub block, set epocerror to KErrGeneral.
   509     // If no sub block, set epocerror to KErrGeneral.
   507     TInt epocError( KErrGeneral );
   510     TInt epocError( KErrGeneral );
   508 
   511 
   509     // offset where the subblock starts
   512     // offset where the subblock starts
   510     TUint sbStartOffset( KErrNone );
   513     TUint sbStartOffset( KErrNone );
       
   514     TBool errorMappingNeeded( ETrue );
   511 
   515 
   512     //create package.
   516     //create package.
   513     CMmDataPackage package;
   517     CMmDataPackage package;
   514 
   518 
   515     if( KErrNone == aIsiMessage.FindSubBlockOffsetById(
   519     if( KErrNone == aIsiMessage.FindSubBlockOffsetById(
   547         ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
   551         ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
   548         SS_OTHER_ERROR,
   552         SS_OTHER_ERROR,
   549         EIsiSubBlockTypeId8Len8,
   553         EIsiSubBlockTypeId8Len8,
   550         sbStartOffset ) )
   554         sbStartOffset ) )
   551         {
   555         {
   552         causeType = SS_OTHER_ERROR;
   556         TUint8 errorCode( aIsiMessage.Get8bit(
   553         causeValue = aIsiMessage.Get8bit(
   557             sbStartOffset + SS_OTHER_ERROR_OFFSET_ERRORCODE ) );
   554             sbStartOffset + SS_OTHER_ERROR_OFFSET_ERRORCODE );
   558 
       
   559         if( SS_RESOURCE_CONTROL_DENIED == errorCode )
       
   560             {
       
   561             if ( KErrNone == aIsiMessage.FindSubBlockOffsetById(
       
   562                 ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
       
   563                 SS_SB_RESOURCE_CONTROL_INFO,
       
   564                 EIsiSubBlockTypeId8Len8,
       
   565                 sbStartOffset ) )
       
   566                 {
       
   567                 TUint8 dataLen( aIsiMessage.Get8bit(
       
   568                 sbStartOffset + SS_SB_RESOURCE_CONTROL_INFO_OFFSET_DATALENGTH ) );
       
   569 
       
   570                 TPtrC8 data( aIsiMessage.GetData(
       
   571                 sbStartOffset + SS_SB_RESOURCE_CONTROL_INFO_OFFSET_DATA,
       
   572                 dataLen ) );
       
   573                 // sw1, sw2 and result is inserted to SS_SB_RESOURCE_CONTROL_INFO
       
   574                 // by simatktsy and ther order from first byte is: sw1, sw2 and result
       
   575                 TUint8 sw1 = data[KSw1Index];
       
   576                 TUint8 sw2 = data[KSw2Index];
       
   577                 TUint8 result = data[KResultIndex];
       
   578                 epocError = CMmStaticUtility::MapSw1Sw2ToEpocError( 
       
   579                     sw1, 
       
   580                     sw2, 
       
   581                     result );
       
   582                 errorMappingNeeded = EFalse;
       
   583                 }
       
   584             }
       
   585         else
       
   586             {
       
   587             causeType = SS_OTHER_ERROR;
       
   588             causeValue = errorCode;
       
   589             }
   555         }
   590         }
   556     else if( KErrNone == aIsiMessage.FindSubBlockOffsetById(
   591     else if( KErrNone == aIsiMessage.FindSubBlockOffsetById(
   557         ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
   592         ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP,
   558         SS_GSM_MM_RELEASED,
   593         SS_GSM_MM_RELEASED,
   559         EIsiSubBlockTypeId8Len8,
   594         EIsiSubBlockTypeId8Len8,
   578 TFLOGSTRING("TSY: CMmUssdMessHandler::SsServiceFailedResp. Cause: SS_GSM_SS_NOT_AVAILABLE => No network coverage." );
   613 TFLOGSTRING("TSY: CMmUssdMessHandler::SsServiceFailedResp. Cause: SS_GSM_SS_NOT_AVAILABLE => No network coverage." );
   579 OstTrace0( TRACE_NORMAL, DUP1_CMMUSSDMESSHANDLER_SSSERVICEFAILEDRESP, "CMmUssdMessHandler::SsServiceFailedResp, Cause: SS_GSM_SS_NOT_AVAILABLE => No network coverage" );
   614 OstTrace0( TRACE_NORMAL, DUP1_CMMUSSDMESSHANDLER_SSSERVICEFAILEDRESP, "CMmUssdMessHandler::SsServiceFailedResp, Cause: SS_GSM_SS_NOT_AVAILABLE => No network coverage" );
   580         }
   615         }
   581     else
   616     else
   582         {
   617         {
   583         // Translate error to epoc world, Fix RFState problem
   618         if( errorMappingNeeded )
   584         epocError = CMmStaticUtility::CSCauseToEpocError(
   619             {
   585             PN_SS,
   620             // Translate error to epoc world, Fix RFState problem
   586             causeType,
   621             epocError = CMmStaticUtility::CSCauseToEpocError(
   587             causeValue );
   622                 PN_SS,
       
   623                 causeType,
       
   624                 causeValue );
       
   625             }
   588         }
   626         }
   589 
   627 
   590     if ( iIsSendReleaseCalled )
   628     if ( iIsSendReleaseCalled )
   591         {
   629         {
   592 TFLOGSTRING("TSY: CMmUssdMessHandler::SsServiceFailedResp. SendRelease failed." );
   630 TFLOGSTRING("TSY: CMmUssdMessHandler::SsServiceFailedResp. SendRelease failed." );