1603 } |
1604 } |
1604 case SS_OTHER_ERROR: |
1605 case SS_OTHER_ERROR: |
1605 { |
1606 { |
1606 //If cause value is KSsGsmSsNotAvailable (comes in SS_OTHER_ERROR sub block) |
1607 //If cause value is KSsGsmSsNotAvailable (comes in SS_OTHER_ERROR sub block) |
1607 //this indicates that there is not network coverage. |
1608 //this indicates that there is not network coverage. |
1608 if( SS_GSM_SS_NOT_AVAILABLE == aIsiMessage.Get8bit( |
1609 TUint8 errorCode( aIsiMessage.Get8bit( |
1609 sbStartOffset + SS_OTHER_ERROR_OFFSET_ERRORCODE ) ) |
1610 sbStartOffset + SS_OTHER_ERROR_OFFSET_ERRORCODE ) ); |
|
1611 |
|
1612 if( SS_GSM_SS_NOT_AVAILABLE == errorCode ) |
1610 { |
1613 { |
1611 errorToClient = CMmStaticUtility::EpocErrorCode( |
1614 errorToClient = CMmStaticUtility::EpocErrorCode( |
1612 KErrCouldNotConnect, |
1615 KErrCouldNotConnect, |
1613 KErrGsmSMSNoNetworkService ); |
1616 KErrGsmSMSNoNetworkService ); |
1614 TFLOGSTRING("CMmSupplServMessHandler::SsServiceFailedRespL. \ |
1617 TFLOGSTRING("CMmSupplServMessHandler::SsServiceFailedRespL. \ |
1615 Cause: KSsGsmSsNotAvailable => No network coverage." ); |
1618 Cause: KSsGsmSsNotAvailable => No network coverage." ); |
1616 OstTrace0( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP, "CMmSupplServMessHandler::SsServiceFailedResp, Cause: KSsGsmSsNotAvailable => No network coverage" ); |
1619 OstTrace0( TRACE_NORMAL, DUP2_CMMSUPPLSERVMESSHANDLER_SSSERVICEFAILEDRESP, "CMmSupplServMessHandler::SsServiceFailedResp, Cause: KSsGsmSsNotAvailable => No network coverage" ); |
|
1620 } |
|
1621 else if( SS_RESOURCE_CONTROL_DENIED == errorCode ) |
|
1622 { |
|
1623 if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( |
|
1624 ISI_HEADER_SIZE + SIZE_SS_SERVICE_FAILED_RESP, |
|
1625 SS_SB_RESOURCE_CONTROL_INFO, |
|
1626 EIsiSubBlockTypeId8Len8, |
|
1627 sbStartOffset ) ) |
|
1628 { |
|
1629 TUint8 dataLen( aIsiMessage.Get8bit( |
|
1630 sbStartOffset + SS_SB_RESOURCE_CONTROL_INFO_OFFSET_DATALENGTH ) ); |
|
1631 |
|
1632 TPtrC8 data( aIsiMessage.GetData( |
|
1633 sbStartOffset + SS_SB_RESOURCE_CONTROL_INFO_OFFSET_DATA, |
|
1634 dataLen ) ); |
|
1635 // 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 |
|
1637 TUint8 sw1 = data[KSw1Index]; |
|
1638 TUint8 sw2 = data[KSw2Index]; |
|
1639 TUint8 result = data[KResultIndex]; |
|
1640 errorToClient = CMmStaticUtility::MapSw1Sw2ToEpocError( |
|
1641 sw1, |
|
1642 sw2, |
|
1643 result ); |
|
1644 } |
|
1645 else |
|
1646 { |
|
1647 errorToClient = CMmStaticUtility::CSCauseToEpocError( |
|
1648 PN_SS, |
|
1649 subBlockId, |
|
1650 errorCode ); |
|
1651 } |
1617 } |
1652 } |
1618 else |
1653 else |
1619 { |
1654 { |
1620 // Translate error to epoc world |
1655 // Translate error to epoc world |
1621 errorToClient = CMmStaticUtility::CSCauseToEpocError( |
1656 errorToClient = CMmStaticUtility::CSCauseToEpocError( |