os/boardsupport/haitest/bspsvs/suite/bsp/mmc/ldd/src/MMcKernelTestUtils.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 /*
     2 * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
     3 * All rights reserved.
     4 * This component and the accompanying materials are made available
     5 * under the terms of "Eclipse Public License v1.0"
     6 * which accompanies this distribution, and is available
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
     8 *
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    11 *
    12 * Contributors:
    13 *
    14 * Description:
    15 *
    16 */
    17 
    18 
    19 #ifdef __KERNEL_MODE__
    20 
    21 #include "MmcTestUtils.h"
    22 
    23 /**
    24  * Convert kernel Card object to user side object
    25  *
    26  * @param const TMMCard& aCard - The card object
    27  *
    28  * @return N/A
    29  *
    30  * @leave N/A
    31  */
    32 void TMMCCardInfo::SetCardInfo(const TMMCard& aCard)
    33 	{
    34     iIsReady = aCard.IsPresent();
    35     iIsLocked = aCard.IsLocked();
    36 	TCID* cid=(TCID*)&(aCard.CID());
    37 	TInt i;
    38 	for (i=0;i<16;i++)
    39 		{
    40 		iCID[i] = cid->At(i);
    41 		}
    42 	const TCSD& csd = aCard.CSD();
    43 	for (i=0;i<16;i++)
    44 		{
    45 		iCSD[i] = csd.At(i);
    46 		}
    47     iRCA = TUint16(aCard.RCA());
    48     iMediaType = (TMmcMediaType)aCard.MediaType();
    49     iCardSizeInBytes = aCard.DeviceSize64();
    50     iMaxReadBlLen = aCard.MaxReadBlLen();
    51     iReadBlLen = csd.ReadBlockLength();
    52     iWriteBlLen = csd.WriteBlockLength();
    53     iReadBlPartial = csd.ReadBlPartial();
    54     iWriteBlPartial = csd.WriteBlPartial();
    55     iReadBlkMisalign = csd.ReadBlkMisalign();
    56     iWriteBlkMisalign = csd.WriteBlkMisalign();
    57     iReadCurrentInMilliAmps = csd.MaxReadCurrentInMilliamps();
    58     iWriteCurrentInMilliAmps = csd.MaxWriteCurrentInMilliamps();
    59     iSpecVers = csd.SpecVers();
    60     iTAAC = csd.TAAC();
    61     iNSAC = csd.NSAC();
    62     iTransferSpeed = csd.TranSpeed();
    63     iCommandRegister = csd.CCC();
    64     iHighCapacity = aCard.IsHighCapacity();
    65  	iFlags = aCard.iFlags;
    66 	}
    67 
    68 /**
    69  * Convert kernel Machine Info object to user side object
    70  *
    71  * @param const TMMCMachineInfo& aMachineInfo - The Machine Info object
    72  *
    73  * @return N/A
    74  *
    75  * @leave N/A
    76  */
    77 TMachineInfo::TMachineInfo(const TMMCMachineInfo& aMachineInfo)
    78 	{
    79 	iTotalSockets = aMachineInfo.iTotalSockets;
    80 	iTotalMediaChanges = aMachineInfo.iTotalMediaChanges;
    81 	iTotalPrimarySupplies = aMachineInfo.iTotalPrimarySupplies;
    82 	iSPIMode = aMachineInfo.iSPIMode & 0x1;
    83 	iBaseBusNumber = aMachineInfo.iBaseBusNumber;
    84 
    85 	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsSPIMode )
    86 		{
    87 		iSupportsSPIMode = ETrue;
    88 		}
    89 	else
    90 		{
    91 		iSupportsSPIMode = EFalse;
    92 		}
    93 	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsDoubleBuffering )
    94 		{
    95 		iSupportsDoubleBuffering = ETrue;
    96 		}
    97 	else
    98 		{
    99 		iSupportsDoubleBuffering = EFalse;
   100 		}
   101 	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsR7 )
   102 		{
   103 		iSupportsR7 = ETrue;
   104 		}
   105 	else
   106 		{
   107 		iSupportsR7 = EFalse;
   108 		}
   109 	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma8BitAddressing )
   110 		{
   111 		iDma8BitAddressing = ETrue;
   112 		}
   113 	else
   114 		{
   115 		iDma8BitAddressing = EFalse;
   116 		}
   117 	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma16BitAddressing )
   118 		{
   119 		iDma16BitAddressing = ETrue;
   120 		}
   121 	else
   122 		{
   123 		iDma16BitAddressing = EFalse;
   124 		}
   125 	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma32BitAddressing )
   126 		{
   127 		iDma32BitAddressing = ETrue;
   128 		}
   129 	else
   130 		{
   131 		iDma32BitAddressing = EFalse;
   132 		}
   133 	if( aMachineInfo.iFlags & TMMCMachineInfo::EDma64BitAddressing )
   134 		{
   135 		iDma64BitAddressing = ETrue;
   136 		}
   137 	else
   138 		{
   139 		iDma64BitAddressing = EFalse;
   140 		}
   141 	if( aMachineInfo.iFlags & TMMCMachineInfo::ESupportsDMA )
   142 		{
   143 		iSupportsDMA = ETrue;
   144 		}
   145 	else
   146 		{
   147 		iSupportsDMA = EFalse;
   148 		}
   149 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_256K )
   150 		{
   151 		iMaxTransferLength_256K = ETrue;
   152 		}
   153 	else
   154 		{
   155 		iMaxTransferLength_256K = EFalse;
   156 		}
   157 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_512K )
   158 		{
   159 		iMaxTransferLength_512K = ETrue;
   160 		}
   161 	else
   162 		{
   163 		iMaxTransferLength_512K = EFalse;
   164 		}
   165 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_1M )
   166 		{
   167 		iMaxTransferLength_1M = ETrue;
   168 		}
   169 	else
   170 		{
   171 		iMaxTransferLength_1M = EFalse;
   172 		}
   173 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_2M )
   174 		{
   175 		iMaxTransferLength_2M = ETrue;
   176 		}
   177 	else
   178 		{
   179 		iMaxTransferLength_2M = EFalse;
   180 		}
   181 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_4M )
   182 		{
   183 		iMaxTransferLength_4M = ETrue;
   184 		}
   185 	else
   186 		{
   187 		iMaxTransferLength_4M = EFalse;
   188 		}
   189 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_8M )
   190 		{
   191 		iMaxTransferLength_8M = ETrue;
   192 		}
   193 	else
   194 		{
   195 		iMaxTransferLength_8M = EFalse;
   196 		}
   197 	if( aMachineInfo.iFlags & TMMCMachineInfo::EMaxTransferLength_16M )
   198 		{
   199 		iMaxTransferLength_16M = ETrue;
   200 		}
   201 	else
   202 		{
   203 		iMaxTransferLength_16M = EFalse;
   204 		}
   205 	}
   206 
   207 /**
   208  * Convert kernel CSD object to user side object
   209  *
   210  * @param const TCSD& aCSD - The CSD object
   211  *
   212  * @return N/A
   213  *
   214  * @leave N/A
   215  */
   216 TCSDInfo::TCSDInfo(const TCSD& aCSD)
   217 	{
   218 	iCSDStructure = aCSD.CSDStructure();
   219 	iSpecVers = aCSD.SpecVers();
   220 	iReserved120 = aCSD.Reserved120();
   221 	iTAAC = aCSD.TAAC();
   222 	iNSAC = aCSD.NSAC();
   223 	iTranSpeed = aCSD.TranSpeed();
   224 	iCCC = aCSD.CCC();
   225 	iReadBlLen = aCSD.ReadBlLen();
   226 	iReadBlPartial = aCSD.ReadBlPartial();
   227 	iWriteBlkMisalign = aCSD.WriteBlkMisalign();
   228 	iReadBlkMisalign = aCSD.ReadBlkMisalign();
   229 	iDSRImp = aCSD.DSRImp();
   230 	iReserved74 = aCSD.Reserved74();
   231 	iCSize = aCSD.CSize();
   232 	iVDDRCurrMin = aCSD.VDDRCurrMin();
   233 	iVDDRCurrMax = aCSD.VDDRCurrMax();
   234 	iVDDWCurrMin = aCSD.VDDWCurrMin();
   235 	iVDDWCurrMax = aCSD.VDDWCurrMax();
   236 	iCSizeMult = aCSD.CSizeMult();
   237 	iEraseGrpSize = aCSD.EraseGrpSize();
   238 	iEraseGrpMult = aCSD.EraseGrpMult();
   239 	iWPGrpSize = aCSD.WPGrpSize();
   240 	iWPGrpEnable = aCSD.WPGrpEnable();
   241 	iDefaultECC = aCSD.DefaultECC();
   242 	iR2WFactor = aCSD.R2WFactor();
   243 	iWriteBlLen = aCSD.WriteBlLen();
   244 	iWriteBlPartial = aCSD.WriteBlPartial();
   245 	iReserved16 = aCSD.Reserved16();
   246 	iFileFormatGrp = aCSD.FileFormatGrp();
   247 	iCopy = aCSD.Copy();
   248 	iPermWriteProtect = aCSD.PermWriteProtect();
   249 	iTmpWriteProtect = aCSD.TmpWriteProtect();
   250 	iFileFormat = aCSD.FileFormat();
   251 	iECC = aCSD.ECC();
   252 	iCRC = aCSD.CRC();
   253 	iDeviceSize = aCSD.DeviceSize();
   254 	iReadBlockLength = aCSD.ReadBlockLength();
   255 	iWriteBlockLength = aCSD.WriteBlockLength();
   256 	iEraseSectorSize = aCSD.EraseSectorSize();
   257 	iEraseGroupSize = aCSD.EraseGroupSize();
   258 	iMinReadCurrentInMilliamps = aCSD.MinReadCurrentInMilliamps();
   259 	iMinWriteCurrentInMilliamps = aCSD.MinWriteCurrentInMilliamps();
   260 	iMaxReadCurrentInMilliamps = aCSD.MaxReadCurrentInMilliamps();
   261 	iMaxWriteCurrentInMilliamps = aCSD.MaxWriteCurrentInMilliamps();
   262 	iMaxTranSpeedInKilohertz = aCSD.MaxTranSpeedInKilohertz();
   263 
   264 	// Convert Kernel side TMMCMediaTypeEnum to User side TMMCMediaTypeEnumInfo
   265 	switch (aCSD.MediaType())
   266 		{
   267 		case EMultiMediaROM:
   268 			iMediaType = EMultiMediaROM;
   269 			break;
   270 			
   271 		case EMultiMediaFlash:
   272 			iMediaType = EMultiMediaFlash;
   273 			break;
   274 		
   275 		case EMultiMediaIO:
   276 			iMediaType = EMultiMediaIO;
   277 			break;
   278 		
   279 		case EMultiMediaOther:
   280 			iMediaType = EMultiMediaOther;
   281 			break;
   282 		
   283 		default:
   284 			iMediaType = EMultiMediaNotSupported;
   285 			break;
   286 		}
   287 	}
   288 
   289 /**
   290  * Convert kernel Extended CSD object to user side object
   291  *
   292  * @param const TExtendedCSD& aExtendedCSD - The Extended CSD object
   293  *
   294  * @return N/A
   295  *
   296  * @leave N/A
   297  */
   298 TExtendedCSDInfo::TExtendedCSDInfo(const TExtendedCSD& aExtendedCSD)
   299 	{
   300 	iSupportedCmdSet = aExtendedCSD.SupportedCmdSet();
   301 	iSectorCount = aExtendedCSD.SectorCount();
   302 	iMinPerfWrite8Bit52Mhz = aExtendedCSD.MinPerfWrite8Bit52Mhz();
   303 	iMinPerfRead8Bit52Mhz = aExtendedCSD.MinPerfRead8Bit52Mhz();
   304 	iMinPerfWrite8Bit26Mhz_4Bit52Mhz = aExtendedCSD.MinPerfWrite8Bit26Mhz_4Bit52Mhz();
   305 	iMinPerfRead8Bit26Mhz_4Bit52Mhz = aExtendedCSD.MinPerfRead8Bit26Mhz_4Bit52Mhz();
   306 	iMinPerfWrite4Bit26Mhz = aExtendedCSD.MinPerfWrite4Bit26Mhz();
   307 	iMinPerfRead4Bit26Mhz = aExtendedCSD.MinPerfRead4Bit26Mhz();
   308 	iPowerClass26Mhz360V = aExtendedCSD.PowerClass26Mhz360V();
   309 	iPowerClass52Mhz360V = aExtendedCSD.PowerClass52Mhz360V();
   310 	iPowerClass26Mhz195V = aExtendedCSD.PowerClass26Mhz195V();
   311 	iPowerClass52Mhz195V = aExtendedCSD.PowerClass52Mhz195V();
   312 	iCardType = aExtendedCSD.CardType();
   313 	iCSDStructureVer = aExtendedCSD.CSDStructureVer();
   314 	iExtendedCSDRev = aExtendedCSD.ExtendedCSDRev();
   315 	iCmdSet = aExtendedCSD.CmdSet();
   316 	iCmdSetRev = aExtendedCSD.CmdSetRev();
   317 	iPowerClass = aExtendedCSD.PowerClass();
   318 	iHighSpeedTiming = aExtendedCSD.HighSpeedTiming();
   319 	}
   320 
   321 /**
   322  * Create a formatted password from CID to write to Password Store
   323  *
   324  * @param TDes8 &aFormattedPassword - The buffer to hold the formatted password
   325  * @param const TCID& aCID - The CID
   326  *
   327  * @return N/A
   328  *
   329  * @leave N/A
   330  */
   331 TBool TStackPasswordStoreData::CreateFormattedPassword(TDes8 &aFormattedPassword, const TCID& aCID)
   332 	{
   333 	TBool success = EFalse;
   334 	if (aFormattedPassword.MaxLength() >= KMMCCIDLength)
   335 		{
   336 		aFormattedPassword.Zero();
   337 		aFormattedPassword.SetLength(KMMCCIDLength);
   338 		aCID.Copy(&aFormattedPassword[0]);
   339 		TUint8 lenBuf[sizeof(TInt32)];		// TInt32, big endian
   340 		TMMC::BigEndian4Bytes(lenBuf, TInt32(iPassword.Length()));
   341 		aFormattedPassword.Append(&lenBuf[0], sizeof(TInt32));
   342 		aFormattedPassword.Append(iPassword);
   343 		success = ETrue;
   344 		}
   345 	return success;
   346 	}
   347 
   348 /**
   349  * Extract the password string from a formatted password
   350  *
   351  * @param TDes8 &aFormattedPassword - The formatted password
   352  *
   353  * @return N/A
   354  *
   355  * @leave N/A
   356  */
   357 void TStackPasswordStoreData::SetFormattedPassword(const TDesC8 &aFormattedPassword)
   358 	{
   359 	iPassword.Copy(&aFormattedPassword[KPasswordStoreCIDLength], aFormattedPassword.Length()-KPasswordStoreCIDLength);
   360 	}
   361 
   362 #else
   363 
   364 #error compiling kernel side only src file on user side
   365 
   366 #endif