satengine/SatServer/Engine/src/TSatExtErrorUtils.cpp
changeset 0 ff3b6d0fd310
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/satengine/SatServer/Engine/src/TSatExtErrorUtils.cpp	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Maps extended error values to correct values.
+*
+*/
+
+
+#include    "TSatExtErrorUtils.h"
+#include    <exterror.h>
+#include    "SatLog.h"
+
+// In some cases return value needs to be zeroed
+const TUint8 KSatZeroError( 0x00 );
+const TUint8 KHighBitInByte( 0x80 );
+
+// -----------------------------------------------------------------------------
+// TSatExtErrorUtils::MapError
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint8 TSatExtErrorUtils::MapError(
+    TInt aExtError,
+    TBool aModifyMappedValue )
+    {
+    LOG2( SIMPLE, "SATENGINE: TSatExtErrorUtils::MapError calling value: %i",
+       aExtError )
+
+    TUint8 retValue( 0 );
+    TUint8 nwValue( 0 );
+    TInt baseError( 0 );
+
+    if ( IsExtendedError( aExtError ) )
+        {
+        // Define the base error value
+        if ( KErrGsmMobilityManagementBase < aExtError )
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError Base error" )
+            baseError = KErrEtelGsmBase; // Base error
+            }
+        else if ( KErrGsmCallControlBase < aExtError )
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError MM error" )
+            baseError = KErrGsmMobilityManagementBase; // MM error
+            }
+        else if ( KErrGsmSuppServiceBase < aExtError )
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError CallControl \
+                 error" )
+            baseError = KErrGsmCallControlBase; // CallControl error
+            }
+        else if ( KErrGsmSmsBase < aExtError )
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError SS error" )
+            baseError = KErrGsmSuppServiceBase; // Ss error
+            }
+        else if ( KErrGsm0707Base < aExtError )
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError Sms error" )
+            baseError = KErrGsmSmsBase; // Sms error
+            }
+        else
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError TE-TA error" )
+            baseError = KErrGsm0707Base; // TE-TA error
+            }
+        // Base error resolved, calculate error value
+        nwValue = static_cast<TUint8>( baseError - aExtError );
+        }
+    else
+        {
+        LOG( NORMAL, "  Value not extended error, not mapped" )
+        }
+
+    // Next, check specific cases
+    CheckSpecificCases( aExtError, nwValue );
+
+    // Check do we have to modify the value
+    if ( aModifyMappedValue && nwValue > KSatZeroError )
+        {
+        LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::MapError Modifying value" )
+        retValue = static_cast<TUint8>( KHighBitInByte | nwValue );
+        }
+    else
+        {
+        retValue = nwValue;
+        }
+
+    LOG2( SIMPLE, "SATENGINE: TSatExtErrorUtils::MapError exiting value:%x",
+        retValue )
+
+    return retValue;
+    }
+
+// -----------------------------------------------------------------------------
+// TSatExtErrorUtils::IsExtendedError
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool TSatExtErrorUtils::IsExtendedError( TInt aExtError )
+    {
+    LOG( SIMPLE, 
+    "SATENGINE: TSatExtErrorUtils::IsExtendedError calling-exiting" )
+    const TBool isExtError(
+        ( KErrEtelGsmBase >= aExtError ) &&
+        ( KErrGsm0707UnknownError <= aExtError ) );
+
+    return isExtError;   
+    }
+
+// -----------------------------------------------------------------------------
+// TSatExtErrorUtils::IsNetworkError
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool TSatExtErrorUtils::IsNetworkError( TInt aExtError )
+    {
+    LOG2( SIMPLE, "SATENGINE: TSatExtErrorUtils::IsNetworkError calling, \
+         aExtError: %d", aExtError )
+    TBool isNwError( ETrue );
+
+    switch ( aExtError )
+        {
+        // Add errors here that are not supposed to handle as NW errors
+        case KErrGsmSMSTemporaryFailure:
+        case KErrGsmSSUnknownAlphabet:
+        case KErrGsmSSSystemFailure:
+        case KErrGsmSSUnexpectedDataValue:
+        case KErrGsmSSIllegalOperation:
+        case KErrGsm0707UnknownError:
+            {
+            isNwError = EFalse;
+            break;
+            }
+
+        default:
+            {
+            LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::IsNetworkError\
+                Is Network error" )
+            isNwError = ETrue;
+            }
+        }
+    LOG2( SIMPLE, "SATENGINE: TSatExtErrorUtils::IsNetworkError exiting, \
+         isNwError: %d", isNwError )
+    return isNwError;    
+    }
+
+// -----------------------------------------------------------------------------
+// TSatExtErrorUtils::CheckSpecificCases
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void TSatExtErrorUtils::CheckSpecificCases(
+    TInt aExtError, TUint8& aNwError )
+    {
+    LOG( SIMPLE, "SATENGINE: TSatExtErrorUtils::CheckSpecificCases calling" )
+    // Specific cases, where Extended error received by SAT differs from the
+    // one that SIM expects
+    if ( KErrGsmSMSCongestion == aExtError )
+        {
+        LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::CheckSpecificCases\
+                Changing Sms Congestion" )
+        // Change this into KErrGsmMmCongestion
+        aNwError = static_cast<TUint8>(
+            KErrGsmMobilityManagementBase - KErrGsmMMCongestion );
+        }
+    else if ( KErrGsmSMSUnspecifiedProtocolError == aExtError ||
+              KErrGsmCCResourceNotAvailable == aExtError ||
+              KErrGsmSSIllegalOperation == aExtError ||
+              KErrGsmSMSNoNetworkService == aExtError ||
+              KErrGsmSSNotAvailable == aExtError ||
+              KErrGsm0707UnknownError == aExtError )
+        {
+        LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::CheckSpecificCases\
+                Changing unspecified protocol error to 0x00" )
+        // Change this into zero value
+        aNwError = KSatZeroError;
+        }
+    else
+        {
+        LOG( NORMAL, "SATENGINE: TSatExtErrorUtils::CheckSpecificCases\
+                Not a special case" )
+        }
+    LOG( SIMPLE, "SATENGINE: TSatExtErrorUtils::CheckSpecificCases exiting" )
+    }
+
+// End Of File