baseintegtests/baseintegrationtest/testsuites/sd/src/sddisplayinfo.cpp
branchanywhere
changeset 20 d63d727ee0a6
parent 19 f6d3d9676ee4
parent 16 6d8ad5bee44b
child 21 af091391d962
equal deleted inserted replaced
19:f6d3d9676ee4 20:d63d727ee0a6
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of the License "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Display contents of the card registers
       
    15 // 
       
    16 //
       
    17 
       
    18 #include "sddisplayinfo.h"
       
    19 
       
    20 /*
       
    21 Class constructor
       
    22 
       
    23 @param None
       
    24 @return None
       
    25 */
       
    26 CBaseTestSDDisplayInfo::CBaseTestSDDisplayInfo()
       
    27 	{
       
    28 	SetTestStepName(KTestStepDisplayInfo);
       
    29 	}
       
    30 
       
    31 /*
       
    32 Test Step Preamble
       
    33  - Load device driver for direct disk access
       
    34 
       
    35 @param None
       
    36 @return EPass if successful or EFail if not
       
    37 @see TVerdict
       
    38 */
       
    39 TVerdict CBaseTestSDDisplayInfo::doTestStepPreambleL()
       
    40 	{
       
    41 	SetTestStepResult(EFail);
       
    42 	
       
    43 	if (!InitDeviceDriver())
       
    44 		return TestStepResult();
       
    45 
       
    46 	SetTestStepResult(EPass);
       
    47 	return TestStepResult();
       
    48 	}
       
    49 
       
    50 /**
       
    51 Extract a value out of a 128-bit block (little-endian)
       
    52 
       
    53 @param aArrayPtr Pointer to an array of 16x 8-bit values
       
    54 @param aStart Position of the first bit
       
    55 @param aEnd Position of the last bit
       
    56 
       
    57 @return The value requested
       
    58 */
       
    59 TUint32 CBaseTestSDDisplayInfo::Slice128(TUint8* aArrayPtr, TInt aStart, TInt aEnd)
       
    60 	{
       
    61 	TInt retval = 0;
       
    62 	for (TInt i = aStart; i >= aEnd; i--)
       
    63 		{
       
    64 		retval = retval << 1;
       
    65 		retval += ((*(aArrayPtr + i / 8)) & (1 << (i % 8))) >> (i % 8);
       
    66 		}
       
    67 	return retval;
       
    68 	}
       
    69 	
       
    70 /*
       
    71 Test step
       
    72 
       
    73 @param None
       
    74 @return EPass if successful or EFail if not
       
    75 @see TVerdict
       
    76 */
       
    77 TVerdict CBaseTestSDDisplayInfo::doTestStepL()
       
    78 	{
       
    79 	if (TestStepResult() == EPass)
       
    80 		{
       
    81 		INFO_PRINTF1(_L("Display contents of card registers"));
       
    82 		INFO_PRINTF1(_L("++CID"));
       
    83 		INFO_PRINTF2(_L("--CID/MID:                  %02xh"),				Slice128(iCardInfo.iCID, 127, 120));
       
    84 		INFO_PRINTF3(_L("--CID/OID:                  '%c%c'"),				iCardInfo.iCID[14], iCardInfo.iCID[13]);
       
    85 		INFO_PRINTF6(_L("--CID/PNM:                  '%c%c%c%c%c'"),		iCardInfo.iCID[12], iCardInfo.iCID[11], iCardInfo.iCID[10], iCardInfo.iCID[9], iCardInfo.iCID[8]);
       
    86 		INFO_PRINTF3(_L("--CID/PRV:                  %d.%d"),				Slice128(iCardInfo.iCID, 63, 60), Slice128(iCardInfo.iCID, 59, 56));
       
    87 		INFO_PRINTF5(_L("--CID/PSN:                  %02x%02x%02x%02xh"),	iCardInfo.iCID[6], iCardInfo.iCID[5], iCardInfo.iCID[4], iCardInfo.iCID[3]);
       
    88 		INFO_PRINTF3(_L("--CID/MDT:                  %02d/%d"),				Slice128(iCardInfo.iCID, 11, 8), 2000 + Slice128(iCardInfo.iCID, 19, 12));
       
    89 		INFO_PRINTF2(_L("--CID/CRC:                  %02xh"),				Slice128(iCardInfo.iCID, 7, 1));
       
    90 	
       
    91 		INFO_PRINTF2(_L("++RCA:                      %04x"), iCardInfo.iRCA);
       
    92 	
       
    93 		INFO_PRINTF1(_L("++CSD"));
       
    94 		INFO_PRINTF2(_L("--CSD/CSD_STRUCTURE:        %02xh"),		Slice128(iCardInfo.iCSD, 127, 126));
       
    95 		INFO_PRINTF2(_L("--CSD/TAAC:                 %02xh"),		Slice128(iCardInfo.iCSD, 119, 112));
       
    96 		INFO_PRINTF2(_L("--CSD/NSAC:                 %02xh"),		Slice128(iCardInfo.iCSD, 111, 104));
       
    97 		INFO_PRINTF2(_L("--CSD/TRAN_SPEED:           %02xh"),		Slice128(iCardInfo.iCSD, 103, 96));
       
    98 		INFO_PRINTF2(_L("--CSD/CCC:                  %012bb"),		Slice128(iCardInfo.iCSD, 95, 84));
       
    99 		INFO_PRINTF2(_L("--CSD/READ_BL_LEN:          %xh"), 		Slice128(iCardInfo.iCSD, 83, 80));
       
   100 		INFO_PRINTF2(_L("--CSD/READ_BL_PARTIAL:      %b"), 			Slice128(iCardInfo.iCSD, 79, 79));
       
   101 		INFO_PRINTF2(_L("--CSD/WRITE_BLK_MISALIGN:   %b"),			Slice128(iCardInfo.iCSD, 78, 78));
       
   102 		INFO_PRINTF2(_L("--CSD/READ_BLK_MISALIGN:    %b"),			Slice128(iCardInfo.iCSD, 77, 77));
       
   103 		INFO_PRINTF2(_L("--CSD/DSR_IMP:              %b"), 			Slice128(iCardInfo.iCSD, 76, 76));
       
   104 		if (Slice128(iCardInfo.iCSD, 127, 126) == 0)
       
   105 			{
       
   106 			INFO_PRINTF2(_L("--CSD/C_SIZE:               %03xh"), Slice128(iCardInfo.iCSD, 73, 62));
       
   107 			}
       
   108 		else if (Slice128(iCardInfo.iCSD, 127, 126) == 1) // High capacity
       
   109 			{
       
   110 			INFO_PRINTF2(_L("--CSD/C_SIZE:               %06xh"), Slice128(iCardInfo.iCSD, 69, 48));
       
   111 			}
       
   112 		INFO_PRINTF2(_L("--CSD/VDD_R_CURR_MIN:       %03bb"),		Slice128(iCardInfo.iCSD, 61, 59));
       
   113 		INFO_PRINTF2(_L("--CSD/VDD_R_CURR_MAX:       %03bb"),		Slice128(iCardInfo.iCSD, 58, 56));
       
   114 		INFO_PRINTF2(_L("--CSD/VDD_W_CURR_MIN:       %03bb"),		Slice128(iCardInfo.iCSD, 55, 53));
       
   115 		INFO_PRINTF2(_L("--CSD/VDD_W_CURR_MAX:       %03bb"),		Slice128(iCardInfo.iCSD, 52, 50));
       
   116 		INFO_PRINTF2(_L("--CSD/C_SIZE_MULT:          %03bb"),		Slice128(iCardInfo.iCSD, 49, 47));
       
   117 		INFO_PRINTF2(_L("--CSD/ERASE_BLK_EN:         %b"),			Slice128(iCardInfo.iCSD, 46, 46));
       
   118 		INFO_PRINTF2(_L("--CSD/SECTOR_SIZE:          %07bb"),		Slice128(iCardInfo.iCSD, 45, 39));
       
   119 		INFO_PRINTF2(_L("--CSD/WP_GRP_SIZE:          %07bb"),		Slice128(iCardInfo.iCSD, 38, 32));
       
   120 		INFO_PRINTF2(_L("--CSD/WP_GRP_ENABLE:        %d"),			Slice128(iCardInfo.iCSD, 31, 31));
       
   121 		INFO_PRINTF2(_L("--CSD/R2W_FACTOR:           %03bb"),		Slice128(iCardInfo.iCSD, 28, 26));
       
   122 		INFO_PRINTF2(_L("--CSD/WRITE_BL_LEN:         %04bb"),		Slice128(iCardInfo.iCSD, 25, 22));
       
   123 		INFO_PRINTF2(_L("--CSD/WRITE_BL_PARTIAL:     %b"),			Slice128(iCardInfo.iCSD, 21, 21));
       
   124 		INFO_PRINTF2(_L("--CSD/FILE_FORMAT_GRP:      %b"),			Slice128(iCardInfo.iCSD, 15, 15));
       
   125 		INFO_PRINTF2(_L("--CSD/COPY:                 %b"),			Slice128(iCardInfo.iCSD, 14, 14));
       
   126 		INFO_PRINTF2(_L("--CSD/PERM_WRITE_PROTECT:   %b"),			Slice128(iCardInfo.iCSD, 13, 13));
       
   127 		INFO_PRINTF2(_L("--CSD/TMP_WRITE_PROTECT:    %b"),			Slice128(iCardInfo.iCSD, 12, 12));
       
   128 		INFO_PRINTF2(_L("--CSD/FILE_FORMAT:          %02b"),		Slice128(iCardInfo.iCSD, 11, 10));
       
   129 		INFO_PRINTF2(_L("--CSD/CRC:                  %07b"),		Slice128(iCardInfo.iCSD, 7, 1));
       
   130 		}
       
   131 	else
       
   132 		{
       
   133 		INFO_PRINTF1(_L("Test preamble did not complete succesfully - Test Step skipped"));
       
   134 		}
       
   135 	return TestStepResult();
       
   136 	}