--- /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