cellular/telephonysettings/src/PSetUtility.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:03 +0100
branchRCL_3
changeset 20 987c9837762f
parent 19 7d48bed6ce0c
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2003 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:  Utility class to switch between ETEL internal enumerations and
*                codes defined in the GSM standard.
*
*/


// INCLUDE FILES
#include "PSetUtility.h"
#include <RSSSettings.h>
#include "PhoneSettingsLogger.h"

// ============================ MEMBER FUNCTIONS ===============================

// ---------------------------------------------------------------------------
// 
// Translates given basic service code from code used in GSM standards to 
// ETEL internal code.
// ---------------------------------------------------------------------------
//
RMobilePhone::TMobileService PSetUtility::ChangeToEtelInternal( const TBasicServiceGroups& aBsc )
    {
    switch ( aBsc )
        {        
        case EAllTeleAndBearer:
            return RMobilePhone::EAllServices;
        case EAllTele:
            return RMobilePhone::EAllTele;
        case ETelephony:
            return RMobilePhone::ETelephony;
        case EAllDataTele:
            return RMobilePhone::EAllDataTele;
        case EFax:
            return RMobilePhone::EFaxService;
        case ESms:
            return RMobilePhone::EShortMessageService;
        case EAllDataExSms:
            return RMobilePhone::EAllDataExSms;
        case EAllTeleExcSms:
            return RMobilePhone::EAllTeleExcSms;
        case EAllPlmnTele:
            return RMobilePhone::EAllPlmnTele;
        case EPlmnTele1:
            return RMobilePhone::EPlmnTele1;
        case EPlmnTele2:
            return RMobilePhone::EPlmnTele2;
        case EPlmnTele3:
            return RMobilePhone::EPlmnTele3;
        case EPlmnTele4:
            return RMobilePhone::EPlmnTele4;
        case EPlmnTele5:
            return RMobilePhone::EPlmnTele5;
        case EPlmnTele6:
            return RMobilePhone::EPlmnTele6;
        case EPlmnTele7:
            return RMobilePhone::EPlmnTele7;
        case EPlmnTele8:
            return RMobilePhone::EPlmnTele8;
        case EPlmnTele9:
            return RMobilePhone::EPlmnTele9;
        case EPlmnTeleA:
            return RMobilePhone::EPlmnTeleA;
        case EPlmnTeleB:
            return RMobilePhone::EPlmnTeleB;
        case EPlmnTeleC:
            return RMobilePhone::EPlmnTeleC;
        case EPlmnTeleD:
            return RMobilePhone::EPlmnTeleD;
        case EPlmnTeleE:
            return RMobilePhone::EPlmnTeleE;
        case EPlmnTeleF:
            return RMobilePhone::EPlmnTeleF;
        case EAllBearer:
            return RMobilePhone::EAllBearer;
        case EAllAsync:
            return RMobilePhone::EAllAsync;
        case EAllSync:
            return RMobilePhone::EAllSync;
        case ESyncData:
            return RMobilePhone::ESyncData;
        case EAsyncData:
            return RMobilePhone::EAsyncData;
        case EPacketData:
            return RMobilePhone::EPacketDataService;
        case EPadAccess:
            return RMobilePhone::EPadAccess;
        case EAllPlmnBearer:
            return RMobilePhone::EAllPlmnBearer;
        case EPlmnBearerServ1:
            return RMobilePhone::EPlmnBearerServ1;
        case EPlmnBearerServ2:
            return RMobilePhone::EPlmnBearerServ2;
        case EPlmnBearerServ3:
            return RMobilePhone::EPlmnBearerServ3;
        case EPlmnBearerServ4:
            return RMobilePhone::EPlmnBearerServ4;
        case EPlmnBearerServ5:
            return RMobilePhone::EPlmnBearerServ5;
        case EPlmnBearerServ6:
            return RMobilePhone::EPlmnBearerServ6;
        case EPlmnBearerServ7:
            return RMobilePhone::EPlmnBearerServ7;
        case EPlmnBearerServ8:
            return RMobilePhone::EPlmnBearerServ8;
        case EPlmnBearerServ9:
            return RMobilePhone::EPlmnBearerServ9;
        case EPlmnBearerServA:
            return RMobilePhone::EPlmnBearerServA;
        case EPlmnBearerServB:
            return RMobilePhone::EPlmnBearerServB;
        case EPlmnBearerServC:
            return RMobilePhone::EPlmnBearerServC;
        case EPlmnBearerServD:
            return RMobilePhone::EPlmnBearerServD;
        case EPlmnBearerServE:
            return RMobilePhone::EPlmnBearerServE;
        case EPlmnBearerServF:
            return RMobilePhone::EPlmnBearerServF;
        case EAltTele:
            return RMobilePhone::EAuxVoiceService;
        case EUnknown:
        default:
            return RMobilePhone::EServiceUnspecified;
        }
    }

// ---------------------------------------------------------------------------
// 
// Translates given basic service code from ETEL internal code to 
// the ones used in GSM standards.
// ---------------------------------------------------------------------------
//
TBasicServiceGroups PSetUtility::ChangeToGSM( const RMobilePhone::TMobileService& aBsc )
    {
    switch ( aBsc )
        {               
        case RMobilePhone::EAllServices:
            return EAllTeleAndBearer;
        case RMobilePhone::EAllTele:
            return EAllTele;
        case RMobilePhone::EVoiceService:
        case RMobilePhone::ETelephony:
            return ETelephony;
        case RMobilePhone::EAllDataTele:
            return EAllDataTele;
        case RMobilePhone::EFaxService:
            return EFax;
        case RMobilePhone::EShortMessageService:
            return ESms;
        case RMobilePhone::EAllDataExSms:
            return EAllDataExSms;
        case RMobilePhone::EAllTeleExcSms:
            return EAllTeleExcSms;
        case RMobilePhone::EAllPlmnTele:
            return EAllPlmnTele;
        case RMobilePhone::EPlmnTele1:
            return EPlmnTele1;
        case RMobilePhone::EPlmnTele2:
            return EPlmnTele2;
        case RMobilePhone::EPlmnTele3:
            return EPlmnTele3;
        case RMobilePhone::EPlmnTele4:
            return EPlmnTele4;
        case RMobilePhone::EPlmnTele5:
            return EPlmnTele5;
        case RMobilePhone::EPlmnTele6:
            return EPlmnTele6;
        case RMobilePhone::EPlmnTele7:
            return EPlmnTele7;
        case RMobilePhone::EPlmnTele8:
            return EPlmnTele8;
        case RMobilePhone::EPlmnTele9:
            return EPlmnTele9;
        case RMobilePhone::EPlmnTeleA:
            return EPlmnTeleA;
        case RMobilePhone::EPlmnTeleB:
            return EPlmnTeleB;
        case RMobilePhone::EPlmnTeleC:
            return EPlmnTeleC;
        case RMobilePhone::EPlmnTeleD:
            return EPlmnTeleD;
        case RMobilePhone::EPlmnTeleE:
            return EPlmnTeleE;
        case RMobilePhone::EPlmnTeleF:
            return EPlmnTeleF;
        case RMobilePhone::EAllBearer:
            return EAllBearer;
        case RMobilePhone::ECircuitDataService:
        case RMobilePhone::EAllAsync:
            return EAllAsync;
        case RMobilePhone::EAllSync:
            return EAllSync;
        case RMobilePhone::ESyncData:
            return ESyncData;        
        case RMobilePhone::EAsyncData:
            return EAsyncData;
        case RMobilePhone::EPacketDataService:
        case RMobilePhone::EPacketData:
            return EPacketData;
        case RMobilePhone::EPadAccess:
            return EPadAccess;
        case RMobilePhone::EAllPlmnBearer:
            return EAllPlmnBearer;
        case RMobilePhone::EPlmnBearerServ1:
            return EPlmnBearerServ1;
        case RMobilePhone::EPlmnBearerServ2:
            return EPlmnBearerServ2;
        case RMobilePhone::EPlmnBearerServ3:
            return EPlmnBearerServ3;
        case RMobilePhone::EPlmnBearerServ4:
            return EPlmnBearerServ4;
        case RMobilePhone::EPlmnBearerServ5:
            return EPlmnBearerServ5;
        case RMobilePhone::EPlmnBearerServ6:
            return EPlmnBearerServ6;
        case RMobilePhone::EPlmnBearerServ7:
            return EPlmnBearerServ7;
        case RMobilePhone::EPlmnBearerServ8:
            return EPlmnBearerServ8;
        case RMobilePhone::EPlmnBearerServ9:
            return EPlmnBearerServ9;
        case RMobilePhone::EPlmnBearerServA:
            return EPlmnBearerServA;
        case RMobilePhone::EPlmnBearerServB:
            return EPlmnBearerServB;
        case RMobilePhone::EPlmnBearerServC:
            return EPlmnBearerServC;
        case RMobilePhone::EPlmnBearerServD:
            return EPlmnBearerServD;
        case RMobilePhone::EPlmnBearerServE:
            return EPlmnBearerServE;
        case RMobilePhone::EPlmnBearerServF:
            return EPlmnBearerServF;
        case RMobilePhone::EAuxVoiceService:
        case RMobilePhone::EAltTele:
            return EAltTele;
        case RMobilePhone::EServiceUnspecified:
        default:
            return EUnknown;
        }
    }

// ---------------------------------------------------------------------------
// Returns change information status, status is provided as TDivertingStatus,
// not as TSY's MAdvGsmLineForwarding enumeration.
// 
// ---------------------------------------------------------------------------
//
TDivertingStatus PSetUtility::GetChangeInfoStatus( 
    RMobilePhone::TMobilePhoneServiceAction& aAction )
    {
    switch ( aAction )
        {
        /*****************************************************
        *    Series 60 Customer / ETel
        *    Series 60  ETel API
        *****************************************************/
        case RMobilePhone::EServiceActionActivate:
        case RMobilePhone::EServiceActionRegister:
            return EDivertingStatusActive;
        case RMobilePhone::EServiceActionDeactivate:
            return EDivertingStatusInactive;
        case RMobilePhone::EServiceActionErase:
            return EDivertingStatusNotRegistered;
        default:
            return EDivertingStatusUnknown;
        }
    }

// ---------------------------------------------------------------------------
// 
// Returns divert reason, reason is provided as TSY's TCallForwardingReasonGet.
// 
// ---------------------------------------------------------------------------
//
RMobilePhone::TMobilePhoneCFCondition PSetUtility::GetDivertReason(
  TCallDivertingCondition aCondition )
    {
    switch ( aCondition )
        {
        /*****************************************************
        *    Series 60 Customer / ETel
        *    Series 60  ETel API
        *****************************************************/
        case EDivertConditionAllConditionalCases:
            return RMobilePhone::ECallForwardingAllConditionalCases;
        case EDivertConditionAllCalls:
            return RMobilePhone::ECallForwardingAllCases;
        case EDivertConditionUnconditional:
            return RMobilePhone::ECallForwardingUnconditional;
        case EDivertConditionBusy:
           return RMobilePhone::ECallForwardingBusy;
        case EDivertConditionNoReply:
            return RMobilePhone::ECallForwardingNoReply;
        case EDivertConditionNotReachable:
           return RMobilePhone::ECallForwardingNotReachable;
        default:
            return RMobilePhone::ECallForwardingUnspecified;
        }
    }

// ---------------------------------------------------------------------------
// Verify that ALS is really used.
// ---------------------------------------------------------------------------
//
RMobilePhone::TMobileService PSetUtility::VerifyAltLineUseL()
    {
    __PHSLOGSTRING("[PHS]--> PSetUtility::VerifyAltLineUseL");
    RSSSettings* ssSettings = new (ELeave) RSSSettings;
    CleanupStack::PushL( ssSettings );
    TInt usedLine;
    User::LeaveIfError( ssSettings->Open() );
    User::LeaveIfError( ssSettings->Get( ESSSettingsAls, usedLine ) );
    __PHSLOGSTRING1("[PHS]    PSetUtility::VerifyAltLineUseL: usedLine: %d", usedLine );

    if ( usedLine == ESSSettingsAlsNotSupported )
        {
        User::Leave( KErrNotSupported );
        }
    ssSettings->Close();
    CleanupStack::PopAndDestroy();
    /*****************************************************
    *    Series 60 Customer / ETel
    *    Series 60  ETel API
    *****************************************************/
    __PHSLOGSTRING("[PHS] <--PSetUtility::VerifyAltLineUseL");

    return RMobilePhone::EAuxVoiceService;
    }
    
//  End of File