haitest/bspsvs/suite/bsp/mmc/ldd/src/MMcKernelTestUtils.cpp
changeset 0 cec860690d41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/haitest/bspsvs/suite/bsp/mmc/ldd/src/MMcKernelTestUtils.cpp	Tue Feb 02 01:39:10 2010 +0200
@@ -0,0 +1,366 @@
+/*
+* 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:
+*
+*/
+
+
+#ifdef __KERNEL_MODE__
+
+#include "MmcTestUtils.h"
+
+/**
+ * Convert kernel Card object to user side object
+ *
+ * @param const TMMCard& aCard - The card object
+ *
+ * @return N/A
+ *
+ * @leave N/A
+ */
+void TMMCCardInfo::SetCardInfo(const TMMCard& aCard)
+	{
+    iIsReady = aCard.IsPresent();
+    iIsLocked = aCard.IsLocked();
+	TCID* cid=(TCID*)&(aCard.CID());
+	TInt i;
+	for (i=0;i<16;i++)
+		{
+		iCID[i] = cid->At(i);
+		}
+	const TCSD& csd = aCard.CSD();
+	for (i=0;i<16;i++)
+		{
+		iCSD[i] = csd.At(i);
+		}
+    iRCA = TUint16(aCard.RCA());
+    iMediaType = (TMmcMediaType)aCard.MediaType();
+    iCardSizeInBytes = aCard.DeviceSize64();
+    iMaxReadBlLen = aCard.MaxReadBlLen();
+    iReadBlLen = csd.ReadBlockLength();
+    iWriteBlLen = csd.WriteBlockLength();
+    iReadBlPartial = csd.ReadBlPartial();
+    iWriteBlPartial = csd.WriteBlPartial();
+    iReadBlkMisalign = csd.ReadBlkMisalign();
+    iWriteBlkMisalign = csd.WriteBlkMisalign();
+    iReadCurrentInMilliAmps = csd.MaxReadCurrentInMilliamps();
+    iWriteCurrentInMilliAmps = csd.MaxWriteCurrentInMilliamps();
+    iSpecVers = csd.SpecVers();
+    iTAAC = csd.TAAC();
+    iNSAC = csd.NSAC();
+    iTransferSpeed = csd.TranSpeed();
+    iCommandRegister = csd.CCC();
+    iHighCapacity = aCard.IsHighCapacity();
+ 	iFlags = aCard.iFlags;
+	}
+
+/**
+ * Convert kernel Machine Info object to user side object
+ *
+ * @param const TMMCMachineInfo& aMachineInfo - The Machine Info object
+ *
+ * @return N/A
+ *
+ * @leave N/A
+ */
+TMachineInfo::TMachineInfo(const TMMCMachineInfo& aMachineInfo)
+	{
+	iTotalSockets = aMachineInfo.iTotalSockets;
+	iTotalMediaChanges = aMachineInfo.iTotalMediaChanges;
+	iTotalPrimarySupplies = aMachineInfo.iTotalPrimarySupplies;
+	iSPIMode = aMachineInfo.iSPIMode & 0x1;
+	iBaseBusNumber = aMachineInfo.iBaseBusNumber;
+
+	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsSPIMode )
+		{
+		iSupportsSPIMode = ETrue;
+		}
+	else
+		{
+		iSupportsSPIMode = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsDoubleBuffering )
+		{
+		iSupportsDoubleBuffering = ETrue;
+		}
+	else
+		{
+		iSupportsDoubleBuffering = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsR7 )
+		{
+		iSupportsR7 = ETrue;
+		}
+	else
+		{
+		iSupportsR7 = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma8BitAddressing )
+		{
+		iDma8BitAddressing = ETrue;
+		}
+	else
+		{
+		iDma8BitAddressing = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma16BitAddressing )
+		{
+		iDma16BitAddressing = ETrue;
+		}
+	else
+		{
+		iDma16BitAddressing = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma32BitAddressing )
+		{
+		iDma32BitAddressing = ETrue;
+		}
+	else
+		{
+		iDma32BitAddressing = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma64BitAddressing )
+		{
+		iDma64BitAddressing = ETrue;
+		}
+	else
+		{
+		iDma64BitAddressing = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsDMA )
+		{
+		iSupportsDMA = ETrue;
+		}
+	else
+		{
+		iSupportsDMA = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_256K )
+		{
+		iMaxTransferLength_256K = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_256K = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_512K )
+		{
+		iMaxTransferLength_512K = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_512K = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_1M )
+		{
+		iMaxTransferLength_1M = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_1M = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_2M )
+		{
+		iMaxTransferLength_2M = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_2M = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_4M )
+		{
+		iMaxTransferLength_4M = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_4M = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_8M )
+		{
+		iMaxTransferLength_8M = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_8M = EFalse;
+		}
+	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_16M )
+		{
+		iMaxTransferLength_16M = ETrue;
+		}
+	else
+		{
+		iMaxTransferLength_16M = EFalse;
+		}
+	}
+
+/**
+ * Convert kernel CSD object to user side object
+ *
+ * @param const TCSD& aCSD - The CSD object
+ *
+ * @return N/A
+ *
+ * @leave N/A
+ */
+TCSDInfo::TCSDInfo(const TCSD& aCSD)
+	{
+	iCSDStructure = aCSD.CSDStructure();
+	iSpecVers = aCSD.SpecVers();
+	iReserved120 = aCSD.Reserved120();
+	iTAAC = aCSD.TAAC();
+	iNSAC = aCSD.NSAC();
+	iTranSpeed = aCSD.TranSpeed();
+	iCCC = aCSD.CCC();
+	iReadBlLen = aCSD.ReadBlLen();
+	iReadBlPartial = aCSD.ReadBlPartial();
+	iWriteBlkMisalign = aCSD.WriteBlkMisalign();
+	iReadBlkMisalign = aCSD.ReadBlkMisalign();
+	iDSRImp = aCSD.DSRImp();
+	iReserved74 = aCSD.Reserved74();
+	iCSize = aCSD.CSize();
+	iVDDRCurrMin = aCSD.VDDRCurrMin();
+	iVDDRCurrMax = aCSD.VDDRCurrMax();
+	iVDDWCurrMin = aCSD.VDDWCurrMin();
+	iVDDWCurrMax = aCSD.VDDWCurrMax();
+	iCSizeMult = aCSD.CSizeMult();
+	iEraseGrpSize = aCSD.EraseGrpSize();
+	iEraseGrpMult = aCSD.EraseGrpMult();
+	iWPGrpSize = aCSD.WPGrpSize();
+	iWPGrpEnable = aCSD.WPGrpEnable();
+	iDefaultECC = aCSD.DefaultECC();
+	iR2WFactor = aCSD.R2WFactor();
+	iWriteBlLen = aCSD.WriteBlLen();
+	iWriteBlPartial = aCSD.WriteBlPartial();
+	iReserved16 = aCSD.Reserved16();
+	iFileFormatGrp = aCSD.FileFormatGrp();
+	iCopy = aCSD.Copy();
+	iPermWriteProtect = aCSD.PermWriteProtect();
+	iTmpWriteProtect = aCSD.TmpWriteProtect();
+	iFileFormat = aCSD.FileFormat();
+	iECC = aCSD.ECC();
+	iCRC = aCSD.CRC();
+	iDeviceSize = aCSD.DeviceSize();
+	iReadBlockLength = aCSD.ReadBlockLength();
+	iWriteBlockLength = aCSD.WriteBlockLength();
+	iEraseSectorSize = aCSD.EraseSectorSize();
+	iEraseGroupSize = aCSD.EraseGroupSize();
+	iMinReadCurrentInMilliamps = aCSD.MinReadCurrentInMilliamps();
+	iMinWriteCurrentInMilliamps = aCSD.MinWriteCurrentInMilliamps();
+	iMaxReadCurrentInMilliamps = aCSD.MaxReadCurrentInMilliamps();
+	iMaxWriteCurrentInMilliamps = aCSD.MaxWriteCurrentInMilliamps();
+	iMaxTranSpeedInKilohertz = aCSD.MaxTranSpeedInKilohertz();
+
+	// Convert Kernel side TMMCMediaTypeEnum to User side TMMCMediaTypeEnumInfo
+	switch (aCSD.MediaType())
+		{
+		case EMultiMediaROM:
+			iMediaType = EMultiMediaROM;
+			break;
+			
+		case EMultiMediaFlash:
+			iMediaType = EMultiMediaFlash;
+			break;
+		
+		case EMultiMediaIO:
+			iMediaType = EMultiMediaIO;
+			break;
+		
+		case EMultiMediaOther:
+			iMediaType = EMultiMediaOther;
+			break;
+		
+		default:
+			iMediaType = EMultiMediaNotSupported;
+			break;
+		}
+	}
+
+/**
+ * Convert kernel Extended CSD object to user side object
+ *
+ * @param const TExtendedCSD& aExtendedCSD - The Extended CSD object
+ *
+ * @return N/A
+ *
+ * @leave N/A
+ */
+TExtendedCSDInfo::TExtendedCSDInfo(const TExtendedCSD& aExtendedCSD)
+	{
+	iSupportedCmdSet = aExtendedCSD.SupportedCmdSet();
+	iSectorCount = aExtendedCSD.SectorCount();
+	iMinPerfWrite8Bit52Mhz = aExtendedCSD.MinPerfWrite8Bit52Mhz();
+	iMinPerfRead8Bit52Mhz = aExtendedCSD.MinPerfRead8Bit52Mhz();
+	iMinPerfWrite8Bit26Mhz_4Bit52Mhz = aExtendedCSD.MinPerfWrite8Bit26Mhz_4Bit52Mhz();
+	iMinPerfRead8Bit26Mhz_4Bit52Mhz = aExtendedCSD.MinPerfRead8Bit26Mhz_4Bit52Mhz();
+	iMinPerfWrite4Bit26Mhz = aExtendedCSD.MinPerfWrite4Bit26Mhz();
+	iMinPerfRead4Bit26Mhz = aExtendedCSD.MinPerfRead4Bit26Mhz();
+	iPowerClass26Mhz360V = aExtendedCSD.PowerClass26Mhz360V();
+	iPowerClass52Mhz360V = aExtendedCSD.PowerClass52Mhz360V();
+	iPowerClass26Mhz195V = aExtendedCSD.PowerClass26Mhz195V();
+	iPowerClass52Mhz195V = aExtendedCSD.PowerClass52Mhz195V();
+	iCardType = aExtendedCSD.CardType();
+	iCSDStructureVer = aExtendedCSD.CSDStructureVer();
+	iExtendedCSDRev = aExtendedCSD.ExtendedCSDRev();
+	iCmdSet = aExtendedCSD.CmdSet();
+	iCmdSetRev = aExtendedCSD.CmdSetRev();
+	iPowerClass = aExtendedCSD.PowerClass();
+	iHighSpeedTiming = aExtendedCSD.HighSpeedTiming();
+	}
+
+/**
+ * Create a formatted password from CID to write to Password Store
+ *
+ * @param TDes8 &aFormattedPassword - The buffer to hold the formatted password
+ * @param const TCID& aCID - The CID
+ *
+ * @return N/A
+ *
+ * @leave N/A
+ */
+TBool TStackPasswordStoreData::CreateFormattedPassword(TDes8 &aFormattedPassword, const TCID& aCID)
+	{
+	TBool success = EFalse;
+	if (aFormattedPassword.MaxLength() >= KMMCCIDLength)
+		{
+		aFormattedPassword.Zero();
+		aFormattedPassword.SetLength(KMMCCIDLength);
+		aCID.Copy(&aFormattedPassword[0]);
+		TUint8 lenBuf[sizeof(TInt32)];		// TInt32, big endian
+		TMMC::BigEndian4Bytes(lenBuf, TInt32(iPassword.Length()));
+		aFormattedPassword.Append(&lenBuf[0], sizeof(TInt32));
+		aFormattedPassword.Append(iPassword);
+		success = ETrue;
+		}
+	return success;
+	}
+
+/**
+ * Extract the password string from a formatted password
+ *
+ * @param TDes8 &aFormattedPassword - The formatted password
+ *
+ * @return N/A
+ *
+ * @leave N/A
+ */
+void TStackPasswordStoreData::SetFormattedPassword(const TDesC8 &aFormattedPassword)
+	{
+	iPassword.Copy(&aFormattedPassword[KPasswordStoreCIDLength], aFormattedPassword.Length()-KPasswordStoreCIDLength);
+	}
+
+#else
+
+#error compiling kernel side only src file on user side
+
+#endif