sl@0: /* sl@0: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: #include "T_MmcSDPsuBaseDriverData.h" sl@0: sl@0: //MMCSD Commands index sl@0: /*@{*/ sl@0: sl@0: _LIT(KCmdIsLocked, "IsLocked"); sl@0: _LIT(KCmdIsOff, "IsOff"); sl@0: _LIT(KCmdMaxCurrentInMicroAmps, "MaxCurrentInMicroAmps"); sl@0: _LIT(KCmdResetInactivityTimer, "ResetInactivityTimer"); sl@0: _LIT(KCmdVoltageSupported, "VoltageSupported"); sl@0: _LIT(KCmdInactivityCount, "InactivityCount"); sl@0: _LIT(KCmdNotLockedCount, "NotLockedCount"); sl@0: _LIT(KCmdInactivityTimeout, "InactivityTimeout"); sl@0: _LIT(KCmdNotLockedTimeout, "NotLockedTimeout"); sl@0: _LIT(KCmdMemVoltageSupported, "MemVoltageSupported"); sl@0: _LIT(KCmdMemMaxCurrentInMicroAmps, "MemMaxCurrentInMicroAmps"); sl@0: _LIT(KCmdVoltCheckInterval, "VoltCheckInterval"); sl@0: sl@0: sl@0: _LIT(KExpectedLockState, "expectedlockstate"); sl@0: _LIT(KExpectedPsuState, "expectedpsustate"); sl@0: _LIT(KExpectedCurrent, "expectedcurrent"); sl@0: _LIT(KExpectedVoltage, "expectedvoltage"); sl@0: _LIT(KExpectedInactivityCount, "expectedinactivityCount"); sl@0: _LIT(KExpectedNotLockedCount, "expectednotLockedCount"); sl@0: _LIT(KExpectedInactivityTimeout, "expectedinactivityTimeout"); sl@0: _LIT(KExpectedNotLockedTimeout, "expectednotlockedtimeOut"); sl@0: _LIT(KExpectedMemVoltageSupported, "expectedmemVoltageSupported"); sl@0: _LIT(KExpectedMemMaxCurrentInMicroAmps, "expectedmemMaxCurrentInMicroAmps"); sl@0: _LIT(KExpectedVoltageinterval, "expectedvoltageinterval"); sl@0: sl@0: /*@}*/ sl@0: sl@0: ////////////////////////////////////////////////////////////////////// sl@0: // Construction/Destruction sl@0: ////////////////////////////////////////////////////////////////////// sl@0: sl@0: CT_MMCSDPsuBaseDriverData* CT_MMCSDPsuBaseDriverData::NewL() sl@0: { sl@0: CT_MMCSDPsuBaseDriverData* ret=new (ELeave) CT_MMCSDPsuBaseDriverData(); sl@0: CleanupStack::PushL(ret); sl@0: ret->ConstructL(); sl@0: CleanupStack::Pop(ret); sl@0: return ret; sl@0: } sl@0: sl@0: sl@0: CT_MMCSDPsuBaseDriverData::CT_MMCSDPsuBaseDriverData() sl@0: : CT_MmcSDDriverData() sl@0: , iAsyncErrorIndex(0) sl@0: { sl@0: } sl@0: sl@0: void CT_MMCSDPsuBaseDriverData::ConstructL() sl@0: /** sl@0: * Second phase construction sl@0: * sl@0: * @internalComponent sl@0: * sl@0: * @return N/A sl@0: * sl@0: * @pre None sl@0: * @post None sl@0: * sl@0: * @leave system wide error sl@0: */ sl@0: { sl@0: CT_MmcSDDriverData::ConstructL(); sl@0: } sl@0: sl@0: CT_MMCSDPsuBaseDriverData::~CT_MMCSDPsuBaseDriverData() sl@0: /** sl@0: * Public destructor sl@0: */ sl@0: { sl@0: } sl@0: sl@0: TBool CT_MMCSDPsuBaseDriverData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex) sl@0: /** sl@0: * Process a command read from the ini file sl@0: * sl@0: * @param aCommand The command to process sl@0: * @param aSection The section in the ini containing data for the command sl@0: * @param aAsyncErrorIndex Command index for async calls to return errors to sl@0: * sl@0: * @return ETrue if the command is processed sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: { sl@0: TBool ret=ETrue; sl@0: sl@0: if ( aCommand==KCmdIsLocked ) sl@0: { sl@0: DoCmdIsLocked(aSection); sl@0: } sl@0: else if ( aCommand==KCmdIsOff ) sl@0: { sl@0: DoCmdIsOff(aSection); sl@0: } sl@0: else if ( aCommand==KCmdMaxCurrentInMicroAmps ) sl@0: { sl@0: DoCmdMaxCurrentInMicroAmps(aSection); sl@0: } sl@0: else if ( aCommand==KCmdResetInactivityTimer ) sl@0: { sl@0: DoCmdResetInactivityTimer(); sl@0: } sl@0: else if ( aCommand==KCmdVoltageSupported) sl@0: { sl@0: DoCmdVoltageSupported(aSection); sl@0: } sl@0: else if ( aCommand==KCmdInactivityCount) sl@0: { sl@0: DoCmdInactivityCount(aSection); sl@0: } sl@0: else if ( aCommand==KCmdNotLockedCount) sl@0: { sl@0: DoCmdNotLockedCount(aSection); sl@0: } sl@0: else if ( aCommand==KCmdInactivityTimeout) sl@0: { sl@0: DoCmdInactivityTimeout(aSection); sl@0: } sl@0: else if ( aCommand==KCmdNotLockedTimeout) sl@0: { sl@0: DoCmdNotLockedTimeout(aSection); sl@0: } sl@0: else if ( aCommand==KCmdMemVoltageSupported) sl@0: { sl@0: DoCmdMemVoltageSupported(aSection); sl@0: } sl@0: else if ( aCommand==KCmdMemMaxCurrentInMicroAmps) sl@0: { sl@0: DoCmdMemMaxCurrentInMicroAmps(aSection); sl@0: } sl@0: else if ( aCommand==KCmdVoltCheckInterval) sl@0: { sl@0: DoCmdVoltCheckInterval(aSection); sl@0: } sl@0: else sl@0: { sl@0: ret=CT_MmcSDDriverData::DoCommandL(aCommand, aSection, aAsyncErrorIndex); sl@0: } sl@0: return ret; sl@0: } sl@0: sl@0: /** sl@0: * Checks whether this PSU is powering a bus containing a locked device sl@0: * i.e. one that is recognised and in use by a client sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdIsLocked(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TBool lockstate; sl@0: err = iMmcSDController->IsLocked(lockstate); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("Getting Lock Information Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //IsLocked? sl@0: INFO_PRINTF2(_L("PSUBASE: IsLocked = %d \n"),lockstate); sl@0: TBool expectedlockstate; sl@0: if(GetBoolFromConfig(aSection, KExpectedLockState(), expectedlockstate)) sl@0: { sl@0: if(lockstate != expectedlockstate) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("lockstate(%d) != expectedlockstate(%d)"), lockstate, expectedlockstate); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedlockstate Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Checks whether the PSU is off sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdIsOff(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TBool psustate; sl@0: err = iMmcSDController->IsOff(psustate); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("Getting PSU State Information Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //IsLocked? sl@0: INFO_PRINTF2(_L("PSUBASE: IsOff = %d \n"),psustate); sl@0: TBool expectedpsustate; sl@0: if(GetBoolFromConfig(aSection, KExpectedPsuState(), expectedpsustate)) sl@0: { sl@0: if(psustate != expectedpsustate) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("psustate(%d) != expectedpsustate(%d)"), psustate, expectedpsustate); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedpsustate Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Gets the maximum current (in microAmps) that the PSU is able to supply sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdMaxCurrentInMicroAmps(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TInt current; sl@0: err = iMmcSDController->MaxCurrentInMicroAmps(current); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("Getting MaxCurrentInMicroAmps Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //MaxCurrentInMicroAmps sl@0: INFO_PRINTF2(_L("PSUBASE: MaxCurrentInMicroAmps = %d \n"),current); sl@0: TInt expectedcurrent; sl@0: if(GetIntFromConfig(aSection, KExpectedCurrent(), expectedcurrent)) sl@0: { sl@0: if(current != expectedcurrent) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("current(%d) != expectedcurrent(%d)"), current, expectedcurrent); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedcurrent Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Resets inactivity and not-locked counts sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdResetInactivityTimer() sl@0: { sl@0: TInt err; sl@0: err = iMmcSDController->ResetInactivityTimer(); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("ResetInactivityTimer Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Gets the voltage level, or range of supported voltage levels sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdVoltageSupported(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TUint volt; sl@0: err = iMmcSDController->VoltageSupported(volt); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("VoltageSupported Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //VoltageSupported sl@0: INFO_PRINTF2(_L("PSUBASE: VoltageSupported = %x \n"),volt); sl@0: TUint expectedvolt; sl@0: if(GetUintFromConfig(aSection, KExpectedVoltage(), expectedvolt)) sl@0: { sl@0: if(volt != expectedvolt) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("volt(%x) != expectedvolt(%x)"), volt, expectedvolt); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedvolt Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Bus inactivity counter sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdInactivityCount(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TInt inactivityCount; sl@0: err = iMmcSDController->InactivityCount(inactivityCount); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("InactivityCount Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //InactivityCount sl@0: INFO_PRINTF2(_L("PSUBASE: InactivityCount = %d \n"),inactivityCount); sl@0: TInt expectedinactivityCount; sl@0: if(GetIntFromConfig(aSection, KExpectedInactivityCount(), expectedinactivityCount)) sl@0: { sl@0: if(inactivityCount != expectedinactivityCount) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("inactivityCount(%d) != expectedinactivityCount(%d)"), inactivityCount, expectedinactivityCount); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedinactivityCount Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Bus not locked counter sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdNotLockedCount(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TInt notLockedCount; sl@0: err = iMmcSDController->NotLockedCount(notLockedCount); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("NotLockedCount Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //NotLockedCount sl@0: INFO_PRINTF2(_L("PSUBASE: NotLockedCount = %d \n"),notLockedCount); sl@0: TInt expectednotLockedCount; sl@0: if(GetIntFromConfig(aSection, KExpectedNotLockedCount(), expectednotLockedCount)) sl@0: { sl@0: if(notLockedCount != expectednotLockedCount) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("notLockedCount(%d) != expectednotLockedCount(%d)"), notLockedCount, expectednotLockedCount); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectednotLockedCount Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Bus inactivity timeout period, in seconds, when clients are registered sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdInactivityTimeout(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TInt inactivityTimeout; sl@0: err = iMmcSDController->InactivityTimeout(inactivityTimeout); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("InactivityTimeout Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //InactivityTimeout sl@0: INFO_PRINTF2(_L("PSUBASE: InactivityTimeout = %d \n"),inactivityTimeout); sl@0: TInt expectedinactivityTimeout; sl@0: if(GetIntFromConfig(aSection, KExpectedInactivityTimeout(), expectedinactivityTimeout)) sl@0: { sl@0: if(inactivityTimeout != expectedinactivityTimeout) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("inactivityTimeout(%d) != expectedinactivityTimeout(%d)"), inactivityTimeout, expectedinactivityTimeout); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedinactivityTimeout Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Bus not locked timeout period, in seconds, when no clients are registered sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdNotLockedTimeout(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TInt notLockedTimeout; sl@0: err = iMmcSDController->NotLockedTimeout(notLockedTimeout); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("NotLockedTimeout Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //NotLockedTimeout sl@0: INFO_PRINTF2(_L("PSUBASE: NotLockedTimeout = %d \n"),notLockedTimeout); sl@0: TInt expectednotLockedTimeout; sl@0: if(GetIntFromConfig(aSection, KExpectedNotLockedTimeout(), expectednotLockedTimeout)) sl@0: { sl@0: if(notLockedTimeout != expectednotLockedTimeout) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("notLockedTimeout(%d) != expectednotLockedTimeout(%d)"), notLockedTimeout, expectednotLockedTimeout); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectednotLockedTimeout Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Indicates the voltage level, or range of voltages supported sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdMemVoltageSupported(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TUint memVoltageSupported; sl@0: err = iMmcSDController->MemVoltageSupported(memVoltageSupported); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("MemVoltageSupported Error %u"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //MemVoltageSupported sl@0: INFO_PRINTF2(_L("PSUBASE: MemVoltageSupported = %x \n"),memVoltageSupported); sl@0: TUint expectedmemVoltageSupported; sl@0: if(GetUintFromConfig(aSection, KExpectedMemVoltageSupported(), expectedmemVoltageSupported)) sl@0: { sl@0: if(memVoltageSupported != expectedmemVoltageSupported) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("memVoltageSupported(%x) != expectedmemVoltageSupported(%x)"), memVoltageSupported, expectedmemVoltageSupported); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedmemVoltageSupported Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * The maximum current (in microAmps) that the PSU is able to supply sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdMemMaxCurrentInMicroAmps(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TInt memMaxCurrentInMicroAmps; sl@0: err = iMmcSDController->MemMaxCurrentInMicroAmps(memMaxCurrentInMicroAmps); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("MemMaxCurrentInMicroAmps Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //MemMaxCurrentInMicroAmps sl@0: INFO_PRINTF2(_L("PSUBASE: MemMaxCurrentInMicroAmps = %d \n"),memMaxCurrentInMicroAmps); sl@0: TInt expectedmemMaxCurrentInMicroAmps; sl@0: if(GetIntFromConfig(aSection, KExpectedMemMaxCurrentInMicroAmps(), expectedmemMaxCurrentInMicroAmps)) sl@0: { sl@0: if(memMaxCurrentInMicroAmps != expectedmemMaxCurrentInMicroAmps) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("memMaxCurrentInMicroAmps(%d) != expectedmemMaxCurrentInMicroAmps(%d)"), memMaxCurrentInMicroAmps, expectedmemMaxCurrentInMicroAmps); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedmemMaxCurrentInMicroAmps Value Missing From INI File")); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * Indicates whether the platform hardware has support for checking whether the voltage level of the sl@0: * PSU is within its expected voltage limit while turned on sl@0: * sl@0: * @param aSection The section in the ini containing data for the command sl@0: * sl@0: * @return void sl@0: * sl@0: * @leave System wide error sl@0: */ sl@0: void CT_MMCSDPsuBaseDriverData::DoCmdVoltCheckInterval(const TDesC& aSection) sl@0: { sl@0: TInt err; sl@0: TUint voltCheckInterval; sl@0: err = iMmcSDController->VoltCheckInterval(voltCheckInterval); sl@0: if ( err!=KErrNone ) sl@0: { sl@0: ERR_PRINTF2(_L("VoltCheckInterval Error %d"), err); sl@0: SetError(err); sl@0: } sl@0: else sl@0: { sl@0: //VoltCheckInterval sl@0: INFO_PRINTF2(_L("PSUBASE: VoltCheckInterval = %u \n"),voltCheckInterval); sl@0: TUint expectedvoltCheckInterval; sl@0: if(GetUintFromConfig(aSection, KExpectedVoltageinterval(), expectedvoltCheckInterval)) sl@0: { sl@0: if(voltCheckInterval != expectedvoltCheckInterval) sl@0: { sl@0: SetBlockResult(EFail); sl@0: ERR_PRINTF3(_L("voltCheckInterval(%u) != expectedvoltCheckInterval(%u)"), voltCheckInterval, expectedvoltCheckInterval); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: SetBlockResult(EFail); sl@0: WARN_PRINTF1(_L("expectedvoltCheckInterval Value Missing From INI File")); sl@0: } sl@0: } sl@0: }