haitest/bspsvs/suite/bsp/mmc/ldd/inc/d_mmcsdif.h
changeset 0 cec860690d41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/haitest/bspsvs/suite/bsp/mmc/ldd/inc/d_mmcsdif.h	Tue Feb 02 01:39:10 2010 +0200
@@ -0,0 +1,409 @@
+/*
+* Copyright (c) 2005-2009 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:
+*
+*/
+
+
+#if !defined(__D_MMCSDIF_H__)
+#include <e32cmn.h>
+#ifndef __KERNEL_MODE__
+#include <e32std.h>
+#endif
+#include "MmcTestUtils.h"
+
+
+#ifdef __DEBUG
+	#define _MMCSDLDDLOGGING   // Enable LDD logging
+#endif
+
+#if defined( _MMCSDLDDLOGGING )
+	 #define MMCSDLOG(A) Kern::Printf(A)
+	 #define MMCSDLOG2(A, B) Kern::Printf(A, B)
+	 #define MMCSDLOG3(A, B, C) Kern::Printf(A, B, C)
+	 #define MMCSDLOG4(A, B, C, D) Kern::Printf(A, B, C, D)
+	 #define MMCSDLOG5(A, B, C, D, E) Kern::Printf(A, B, C, D, E)
+	 #define MMCSDLOG6(A, B, C, D, E, F) Kern::Printf(A, B, C, D, E, F)
+#else
+	 #define MMCSDLOG(A)
+	 #define MMCSDLOG2(A, B)
+	 #define MMCSDLOG3(A, B, C)
+	 #define MMCSDLOG4(A, B, C, D)
+	 #define MMCSDLOG5(A, B, C, D, E)
+	 #define MMCSDLOG6(A, B, C, D, E, F)
+#endif
+
+
+_LIT(KLddName, "MMCSDTestCtrlInf");
+
+//Card Constants
+const TInt KMaxCardsPerStack=2;
+const TInt KSectorSizeInBytes=512;
+const TInt KMaxBlocklengthInBytes=1024;
+const TInt KSectorSizeShift=9;
+const TInt KDrvBufSizeInSectors=8;
+
+const TInt KStackNo=0;
+
+//Used to check erase command is supported by the card.
+const TUint32 KMMCEraseClassCmdSupported=KBit0;
+
+//Used to check group erase command is supported by the card.
+const TUint32 KMMCEraseGroupCmdSupported=KBit1;
+
+
+/**
+ * Card power supply information
+ *
+ */
+class TPBusPsuInf
+	{
+public:
+
+	/**	Indicates the voltage level, or range of voltages supported.
+		Reperesented in OCR (Operation Condition Register) */
+	TUint iVoltageSupported;
+
+   	/**	Maximum Current Supplied by the PSU */
+	TInt iMaxCurrentInMicroAmps;
+
+	/**	PSU Voltage level within expected limit while turning ON */
+	TUint iVoltCheckInterval;
+
+	/**	VCC voltage when ON */
+	TUint iVoltCheckMethod;
+
+    /**	Bus not locked timeout period,in seconds,when no clients are registered */
+    TInt iNotLockedTimeOut;
+
+	/**	Bus inactivity timeout period, in seconds, when clients are registered */
+	TInt iInactivityTimeOut;
+
+	};
+	
+/**
+ * MMC card Version
+ *
+ */
+class TCapsMmcIfV01
+	{
+public:
+	TVersion version;
+	};
+
+
+/**
+ * Class for MMCSD controller interface to test MMC/SD Cards
+ *
+ */
+class RMMCSDTestControllerInterface : public RBusLogicalChannel
+	{
+public:
+	enum {EMajorVersionNumber=1,EMinorVersionNumber=0,EBuildVersionNumber=1};
+	enum TRequest
+		{
+		/** Read a sector */
+		EReadSector,
+		/** Write a sector */
+		EWriteSector
+		};
+	enum TControl
+		{
+		/** Return whether SD card is in use */
+		ESDCard,
+		/** Read CSD register */
+		EReadCSD,
+		/** Read extended CSD register */
+		EReadExtCSD,
+		/** Get card info */
+		ECardInfo,
+		/** Return card object */
+		ECard,
+		/** Return card is present status */
+		ECardIsPresent,
+		/** Return card is ready status */
+		ECardIsReady,
+		/** Return card is locked status */
+		ECardIsLocked
+		};
+	enum TPsuControl
+        {
+		/** Return psu object */
+		EPsu,
+    	/** Gets the PSU Information */
+		EPsuInfo,
+		/** Set Power Supply State */
+		EPsuState,
+		/**Set Psu Voltage in OCR format */
+		EPsuVoltage,
+		/** Read Power supply unit number */
+		EPsuNum,
+		/** Read the Media Change ID */
+		EMediaChangeNum,
+		/** PSU current limit safe level or Not */
+		EPsuCurLimit,
+		/** Gets the PBUS state */
+		EPbusState,
+		/**	Gets the Power Supply Status */
+		EVccState,
+		/** Checks whether this PSU is powering a bus containing a locked device*/
+		EIsLocked,
+		/** Checks whether the PSU is off*/
+		EIsOff,
+		/** Gets the maximum current (in microAmps) that the PSU is able to supply*/
+		EMaxCurrentInMicroAmps,
+		/** Resets inactivity and not-locked counts*/
+		EResetInactivityTimer,
+		/** Gets the voltage level, or range of supported voltage levels*/
+		EVoltageSupported,
+		/** Bus inactivity counter*/
+		EMemInactivityCount,
+		/** Bus not locked counter*/
+		EMemNotLockedCount,
+		/** Bus inactivity timeout period, in seconds, when clients are registered*/
+		EMemInactivityTimeout,
+		/** Bus not locked timeout period, in seconds, when no clients are registered*/
+		EMemNotLockedTimeout,
+		/** Indicates the voltage level, or range of voltages supported*/
+		EMemVoltageSupported,
+		/** The maximum current (in microAmps) that the PSU is able to supply*/
+		EMemMaxCurrentInMicroAmps,
+		/**Indicates whether the platform hardware has support for checking whether the voltage level*/
+		EMemVoltCheckInterval
+		};
+	enum TMediaChangeControl
+		{
+		/** Return media change object */
+		EMediaChange,
+		/** Gets the MMC stack media state */
+		EMediaStateInfo,
+		/** Force Media Change */
+		EForceMediaChange,
+		/** Media Change Replay Count */
+		EMediaChangeCounter
+		};
+	enum TSocketControl
+        {
+		/** Return socket object */
+		ESocket
+		/** DMMCSocket::AdjustPartialRead */
+		,ESocketAdjustPartialRead
+    	/** DMMCSocket::CardIsPresent */
+		,ESocketCardIsPresent
+		/** DMMCSocket::GetBufferInfo */
+		,ESocketGetBufferInfo
+		/** DMMCSocket::Init */
+		,ESocketInit
+		/** DMMCSocket::InitiatePowerUpSequence */
+		,ESocketInitiatePowerUpSequence
+		/** DMMCSocket::MachineInfo */
+		,ESocketMachineInfo
+		/** DMMCSocket::PrepareStore */
+		,ESocketPrepareStore
+		/** DMMCSocket::Reset1 */
+		,ESocketReset1
+		/** DMMCSocket::Reset2 */
+		,ESocketReset2
+		/** DMMCSocket::ResetInactivity */
+		,ESocketResetInactivity
+		/** DMMCSocket::Stack */
+		,ESocketStack
+		/** DMMCSocket::iState */
+		,ESocketiState_Get
+		/** DMMCSocket::iDoorOpened */
+		,ESocketiDoorOpened_Get
+		/** DMMCSocket::iStandby */
+		,ESocketiStandby_Get
+		/** DMMCSocket::iType */
+		,ESocketiType_Get
+		/** DMMCSocket::PowerUp */
+		,ESocketPowerUp
+       };
+	enum TStackControl
+        {
+		/** Return stack object */
+		EStack
+		/** DMMCStack::AdjustPartialRead */
+		,EStackAdjustPartialRead
+		/** DMMCStack::AllocSession */
+		,EStackAllocSession
+		/** DMMCStack::BufferInfo */
+		,EStackBufferInfo
+		/** DMMCStack::CardP */
+		,EStackCardP
+		/** DMMCStack::DemandPagingInfo */
+		,EStackDemandPagingInfo
+		/** DMMCStack::EffectiveModes */
+		,EStackEffectiveModes
+		/** DMMCStack::GetBufferInfo */
+		,EStackGetBufferInfo
+		/** DMMCStack::HasCardsPresent */
+		,EStackHasCardsPresent
+		/** DMMCStack::HasSessionsQueued */
+		,EStackHasSessionsQueued
+		/** DMMCStack::Init */
+		, EStackInit
+		/** DMMCStack::InitStackInProgress */
+		, EStackInitStackInProgress
+		/** DMMCStack::MMCSocket */
+		, EStackMMCSocket
+		/** DMMCStack::MachineInfo */
+		, EStackMachineInfo
+		/** DMMCStack::MaxCardsInStack */
+		, EStackMaxCardsInStack
+		/** DMMCStack::PasswordStore read*/
+		, EStackReadPasswordStore
+		/** DMMCStack::PasswordStore write*/
+		, EStackWritePasswordStore
+		/** DMMCStack::ProgramPeriodInMs */
+		, EStackProgramPeriodInMs
+		/** DMMCStack::StackStop */
+		, EStackStop
+		/** DMMCStack::ReportPowerDown */
+		, EStackReportPowerDown
+		/** DMMCStack::ReportPowerUp */
+		, EStackReportPowerUp
+		/** see TEffectiveModesFunctionId enum */
+		, EStackConfigureEffectiveModes
+        };
+
+	enum TEffectiveModesFunctionId {
+		/** TMMCStackConfig::RemoveMode(TUint32 aMask) */
+		EStackEffectiveModesRemoveMode = 1
+		/** TMMCStackConfig::SetBusClockInKhz(TUint aParam) */
+		, EStackEffectiveModesSetBusClockInKhz
+		/** TMMCStackConfig:: SetBusClockInKhz(TUint aParam); */
+		, EStackEffectiveModesSetBusyTimeOutInMcs
+		/** TMMCStackConfig::SetCRCRetries(TUint aData)*/
+		, EStackEffectiveModesSetCRCRetries
+		/** TMMCStackConfig::SetDataTimeOutInMcs(TUint aParam) */
+		, EStackEffectiveModesSetDataTimeOutInMcs
+		/** TMMCStackConfig::TUint32 aMask*/
+		, EStackEffectiveModesSetMode
+		/** TMMCStackConfig::SetOpCondBusyTimeout(TUint16 aData); */
+		, EStackEffectiveModesSetOpCondBusyTimeout
+		/** TMMCStackConfig::SetPollAttempts(TUint aData); */
+		, EStackEffectiveModesSetPollAttempts
+		/** TMMCStackConfig::SetResponseTimeOutInTicks(TUint aParam); */
+		, EStackEffectiveModesSetResponseTimeOutInTicks
+		/** TMMCStackConfig:: SetTicksClockIn(TUint aParam); */
+		, EStackEffectiveModesSetTicksClockIn
+		/** TMMCStackConfig::SetTicksClockOut(TUint aParam); */
+		, EStackEffectiveModesSetTicksClockOut
+		/** TMMCStackConfig::SetTimeOutRetries(TUint aData); */
+		, EStackEffectiveModesSetTimeOutRetries
+
+        };
+public:
+	inline void Cancel();
+	inline TInt Open(TInt aStack,const TVersion& aVer);
+	inline TVersion VersionRequired() const;
+	inline void Reset();
+	// requests
+	inline TInt ReadBlock();
+
+	//DMMCPsu
+	inline TInt Psu(TAny* aPsu);
+	inline TInt PsuInfo(TPBusPsuInf& anInfo);
+	inline TInt SetPsuState(TInt& aState);
+	inline TInt SetPsuVoltage(TUint& aVol);
+	inline TInt PsuNumber(TInt& aPsuNum);
+	inline TInt MediaChangeID(TInt& aMCId);
+	inline TInt PsuCurLimit(TBool& aSafe);
+	inline TInt PbusState(TInt& aState);
+	inline TInt VccState(TInt& aVccState);
+	inline TInt IsLocked(TBool& aState);
+	inline TInt IsOff(TBool& aState);
+	inline TInt MaxCurrentInMicroAmps(TInt& aMaxCurrent);
+	inline TInt ResetInactivityTimer();
+	inline TInt VoltageSupported(TUint& aVoltage);
+	inline TInt InactivityCount(TInt& aInactivityCount);
+	inline TInt NotLockedCount(TInt& aNotLockedCount);
+	inline TInt InactivityTimeout(TInt& aInactivityTimeout);
+	inline TInt NotLockedTimeout(TInt& aNotLockedTimeout);
+	inline TInt MemVoltageSupported(TUint& aVoltage);
+	inline TInt MemMaxCurrentInMicroAmps(TInt& aMaxCurrent);
+	inline TInt VoltCheckInterval(TUint& aVoltCheckInterval);
+
+	//DMMCMediaChange
+	inline TInt MediaChange(TAny* aMediaChange);
+	inline TInt MediaStateInfo(TInt& aMediaState);
+	inline TInt ForceMediaChange();
+	inline TInt MediaChangeCounter(TInt& aCounter);
+	
+	// DMMCSocket
+	inline TInt Socket(TAny* aSocket);
+	inline TInt SocketAdjustPartialRead(TPartialReadData& aPartialReadData);
+	inline TInt SocketCardIsPresent(TBool& aCardPresent);
+	inline TInt SocketGetBufferInfo(TBufferInfo& aBufferInfo);
+	inline TInt SocketInit();
+	inline TInt SocketInitiatePowerUpSequence();
+	inline TInt SocketMachineInfo(TMachineInfo& aMachineInfo);
+	inline TInt SocketPrepareStore(TPasswordPrepareStoreData& aData);
+	inline TInt SocketReset1();
+	inline TInt SocketReset2();
+	inline TInt SocketResetInactivity(TInt aBusNumber);
+	inline TInt SocketStack(TStackPtr& aStackPtr);
+	inline TInt SocketiState_Get(TBusState& aState);
+	inline TInt SocketiDoorOpened_Get(TBool& aDoorOpened);
+	inline TInt SocketiStandby_Get(TBool& aStandby);
+	inline TInt SocketiType_Get(TCardBusType& aType);
+	inline void SocketPowerUp(TRequestStatus& aStatus);
+
+	// DMMCStack
+	inline TInt Stack(TAny* aStack);
+	inline TInt StackAdjustPartialRead(TPartialReadData& aPartialReadData);
+	inline TInt StackAllocSession();
+	inline TInt StackGetBufferInfo(TBufferInfo& aBufferInfo);
+	inline TInt StackBufferInfo(TBufferInfo& aBufferInfo);
+	inline TInt StackCardP(TCardPtr& aCardPtr);
+	inline TInt StackStop();
+	inline TInt StackMaxCardsInStack(TUint& aNumCardsInStack);
+	inline TInt StackMMCSocket(TAny* aAny);
+
+	inline TInt StackPasswordStore(TAny** aPwdStorePtr);
+	inline TInt StackReadPasswordStore(TStackPasswordStoreData& aPwdStoreData);
+	inline TInt StackWritePasswordStore(TStackPasswordStoreData& aPwdStoreData);
+	inline TInt StackProgramPeriodInMilliSeconds(TInt& aPeriodMs);
+	inline TInt StackInitStackInProgress(TBool& aInProgress);
+	inline TInt StackHasSessionsQueued(TBool& aSessionsQueued);
+	inline TInt StackHasCardsPresent(TBool& aCardsPresent);
+	inline TInt StackMachineInfo(TMachineInfo& aMachineInfo);
+	inline TInt StackDemandPagingInfo(TTCDemandPagingInfo& aInfo);
+	inline TInt StackEffectiveModes(TUint32& aRetVal);
+	inline TInt StackInit();
+	inline TInt StackReportPowerUp();
+	inline TInt StackReportPowerDown();
+	inline TInt StackAlterEffectiveModes( TEffectiveModesFunctionId FunctionId, TAny* aData);
+
+	// general
+	inline void ReadSector(TRequestStatus &aStatus,TInt aSectNum,TDes8 &aDes);
+	inline void WriteSector(TRequestStatus &aStatus,TInt aSectNum,const TDesC8 &aDes);
+	inline TInt CardInfo(TMMCCardInfo& aCardInfo);
+	inline TInt ReadCSD(TCSDInfo& aCSDInfo);
+	inline TInt ReadExtCSD(TExtendedCSDInfo& aExtCSDInfo);
+	inline TInt Card(TAny* aCard);
+	inline TInt CardIsPresent(TBool& aIsPresent);
+	inline TInt CardIsReady(TBool& aIsReady);
+	inline TInt CardIsLocked(TBool& aIsLocked);
+	inline void PwrDownStack();
+
+private:
+	inline TInt TestDoControl(TTCFunctionId aFunctionId, TAny *a1 = NULL, TAny *a2 = NULL);
+	inline void TestDoRequest(TTCFunctionId aFunctionId, TRequestStatus &aStatus, TAny *a1 = NULL, TAny *a2 = NULL);
+	};
+
+#include "d_mmcsdif.inl"
+
+#endif