--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/pluggeddisplay/edidparser/inc/edidparserbase.h Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,563 @@
+/*
+* Copyright (c) 2008,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:
+* Declaration of CEdidParserBase class.
+*
+*/
+
+#ifndef C_CEDIDPARSERBASE_H
+#define C_CEDIDPARSERBASE_H
+
+#include <e32base.h>
+
+#include "ediddatatypes.h"
+
+// FORWARD DECLERATION
+class CCea861EdidParser;
+
+
+/**
+ * CEdidParserBase is the base class for parsing EDID data
+ *
+ * @lib edidparser.dll
+ * @since S60 v9.2
+ */
+NONSHARABLE_CLASS( CEdidParserBase ): public CBase
+ {
+public:
+
+ /**
+ * Two-phased constructor.
+ * Creates an instance of CEdidParserBase
+ *
+ * @param aData
+ * @return CEdidParserBase* created instance of CEdidParserBase
+ */
+ IMPORT_C static CEdidParserBase* NewL( const TDesC8& aBinaryData );
+
+ /**
+ * Two-phased constructor.
+ * Creates an instance of CEdidParserBase
+ *
+ * @param aData
+ * @return CEdidParserBase* created instance of CEdidParserBase
+ */
+ IMPORT_C static CEdidParserBase* NewLC( const TDesC8& aBinaryData );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CEdidParserBase();
+
+
+public:
+
+ /**
+ * Checks if data is valid EDID data
+ *
+ * @since S60 9.2
+ * @param aBinaryData (EDID data block)
+ * @return TBool
+ */
+ IMPORT_C TBool IsEdidData( const TDesC8& aBinaryData );
+
+ /**
+ * Gets manufacturer code from EDID data.
+ * Manufacturer PNPIDs are issued by Microsoft
+ *
+ * @since S60 9.2
+ * @param aCode
+ * @return none
+ */
+ IMPORT_C void GetManufacturerCode( TDes& aCode );
+
+ /**
+ * Gets product id from EDID data.
+ *
+ * @since S60 9.2
+ * @param aCode
+ * @return none
+ */
+ IMPORT_C void GetProductId( TDes& aCode );
+
+ /**
+ * Gets week of manufacture from EDID data.
+ *
+ * @since S60 9.2
+ * @param none
+ * @return TUint16
+ */
+ IMPORT_C TUint8 GetManufactureWeek();
+
+ /**
+ * Gets year of manufacture from EDID data.
+ * Year of manufacture stored in EDID data is "Year of Manufacture - 1990"
+ *
+ * @since S60 9.2
+ * @param none
+ * @return TUint16
+ */
+ IMPORT_C TUint16 GetManufactureYear();
+
+ /**
+ * Gets EDID version from data block
+ *
+ * @since S60 9.2
+ * @param none
+ * @return EDID version (TUint8)
+ */
+ IMPORT_C TUint8 GetVersion();
+
+ /**
+ * Gets EDID revision from data block
+ *
+ * @since S60 9.2
+ * @param none
+ * @return EDID revision (TUint8)
+ */
+ IMPORT_C TUint8 GetRevision();
+
+ /**
+ * Gets Video Input Definition block
+ * Bit #8 indicates if input is analog or digital
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Video Input Definition data
+ */
+ IMPORT_C TUint8 GetVideoInputDefinition();
+
+ /**
+ * Gets horizontal screen size
+ * Range is between 1-255 cm
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Horizontal screen size in cm
+ */
+ IMPORT_C TUint8 GetHorizontalScreenSize();
+
+ /**
+ * Gets vertical screen size
+ * Range is between 1-255 cm
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Vertical screen size in cm
+ */
+ IMPORT_C TUint8 GetVerticalScreenSize();
+
+
+ /**
+ * Gets aspect ratio
+ *
+ * @since S60 9.2
+ * @param none
+ * @return TUint8 (aspect ratio landscape value)
+ */
+ IMPORT_C TUint8 GetAspectRatioLandscape();
+
+
+ /**
+ * Gets aspect ratio
+ *
+ * @since S60 9.2
+ * @param none
+ * @return TUint8 (aspect ratio landscape value)
+ */
+ IMPORT_C TUint8 GetAspectRatioPortrait();
+
+
+ /**
+ * Returns true/false depending on Aspect Ratio is used
+ *
+ * If byte 15h != 00h then byte 16h = Vertical Screen Size in cm.
+ * (Range is 1 cm -> 255 cm)
+ * If byte 15h == 00h then byte 16h = Aspect Ratio (Portrait)
+ * (Range is 0.28 : 1 AR -> 0.99 : 1 AR)
+ *
+ * If byte 16h != 00h then byte 15h = Horizontal Screen Size in cm.
+ * (Range is 1 cm -> 255 cm)
+ * If byte 16h == 00h then byte 15h = Aspect Ratio (Landscape)
+ * (Range is 1 : 1 AR -> 3.54 : 1 AR)
+ *
+ * @since S60 9.2
+ * @param none
+ * @return ETrue (Aspect Ratio is used) EFalse (Aspect Ratio is not used)
+ */
+ IMPORT_C TBool IsAspectRatioUsed();
+
+ /**
+ * Gets Display Transfer Characteristics
+ * Gamma value = ( dec( Display Transfer Characteristics ) + 100 )/100
+ * Gamma value range is from 1.00 -> 3.54
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Vertical screen size in cm
+ */
+ IMPORT_C TUint8 DisplayTransferCharacteristics();
+
+ /**
+ * Gets red x chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Red x chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesRedX();
+
+ /**
+ * Gets red y chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Red y chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesRedY();
+
+ /**
+ * Gets green x chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Green x chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesGreenX();
+
+ /**
+ * Gets green y chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Green y chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesGreenY();
+
+ /**
+ * Gets blue x chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Blue x chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesBlueX();
+
+ /**
+ * Gets blue y chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Blue y chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesBlueY();
+
+ /**
+ * Gets white x chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return White x chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesWhiteX();
+
+ /**
+ * Gets white y chromaticity coordinate
+ *
+ * @since S60 9.2
+ * @param none
+ * @return White y chromaticity coordinate
+ */
+ IMPORT_C TUint16 GetColorCoordinatesWhiteY();
+
+ /**
+ * Gets Established Timings 1
+ * EEDID standatrd R3EDID Plug & Play compliant displays shall show
+ * support for the BASE VIDEO MODE (640 × 480 @ 60Hz) and shall
+ * indicate support in the Established Timing I data field
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Bits for Established Timings 1
+ */
+ IMPORT_C TUint8 GetEstablishedTimings1();
+
+ /**
+ * Gets Established Timings 2
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Bits for Established Timings 2
+ */
+ IMPORT_C TUint8 GetEstablishedTimings2();
+
+ /**
+ * Gets Manufacturer Timings
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Bits for Manufacturer Timings
+ */
+ IMPORT_C TUint8 GetManufacturerTimings();
+
+ /**
+ * Gets standard timings.
+ *
+ * @param aIndex Byte between 0-15.
+ * @return Bits for selected byte
+ */
+ IMPORT_C TUint8 GetStandardTimings( TInt aIndex );
+
+ /**
+ * Gets descriptor block
+ *
+ * @since S60 9.2
+ * @param aDescriptorBlockNumber
+ * @return Desriptor block
+ */
+ IMPORT_C TEdidDescriptorBlock GetDescriptorBlock( TUint8 aDescriptorBlockNumber ) const;
+
+ /**
+ * Gets number of extensions
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Number of extensions
+ */
+ IMPORT_C TUint8 GetNumberOfExtensions();
+
+ /**
+ * Reads extension block.
+ * Block number 1 = first extension block, ..
+ * Data is copied to iExtensionData
+ *
+ * @since S60 9.2
+ * @param aNumber - Extension number
+ * @return Possible return values:
+ * KErrNone Extension read succesfully
+ * KErrNotSupported Extension not supported
+ */
+ IMPORT_C TInt ReadExtension( TInt aNumber );
+
+ /**
+ * Gets extension type
+ * See TEdidExtensionTagCode
+ *
+ * @since S60 9.2
+ * @param aNumber - Extension number
+ * @return TEdidExtensionTagCode
+ */
+ IMPORT_C TEdidExtensionTagCode GetExtensionType( TInt aNumber );
+
+ /**
+ * Creates CEA 861 extension parser
+ *
+ * @since S60 9.2
+ * @param aNumber - Extension number
+ * @return CCea861EdidParser* (Pointer to the parser object)
+ */
+ IMPORT_C CCea861EdidParser* CreateCea861ExtensionParserL( TInt aNumber );
+
+ /**
+ * Gets checksum value
+ *
+ * @since S60 9.2
+ * @param none
+ * @return Checksum value
+ */
+ IMPORT_C TUint8 GetChecksum();
+
+private:
+
+ /**
+ * Default constructor.
+ */
+ CEdidParserBase();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const TDesC8& aBinaryData );
+
+ /**
+ * Gets pixel clock from descriptor block
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetPixelClock( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Horizontal Addressable Video in pixels
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetHorizontalAddressableVideo( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Horizontal Blanking in pixels
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetHorizontalBlanking( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Vertical Addressable Video in lines
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetVerticalAddressableVideo( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Vertical Blanking in lines
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetVerticalBlanking( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Horizontal Front Porch in pixels
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetHorizontalFrontPorch( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Horizontal Sync Pulse Width in lines
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetHorizontalSyncPulseWidth( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Vertical Front Porch in lines
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetVerticalFrontPorch( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Vertical Sync Pulse Width in lines
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint8 GetVerticalSyncPulseWidth( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Horizontal Addresable Image Size
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetHorizontalAddressableImageSize( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Vertical Addresable Image Size
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint16
+ */
+ TUint16 GetVerticalAddressableImageSize( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Right Horizontal Border or Left Horizontal Border in Pixels
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint8
+ */
+ TUint8 GetHorizontalBorderSize( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets Right Vertical Border or Left Horizontal Border in Pixels
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TUint8
+ */
+ TUint8 GetVerticalBorderSize( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Checks whether or not video is interlaced
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TBool
+ */
+ TBool GetVideoIsInterlaced( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets stero support
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TEdidStereoViewingSupport
+ */
+ TEdidStereoViewingSupport GetStereoViewingSupport( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets signal definitions
+ *
+ * @since S60 9.2
+ * @param aDataBlockNumber
+ * @return TEdidSyncSignalDefinitions
+ */
+ TEdidSyncSignalDefinitions GetSyncSignalDefinitions( TUint8 aDataBlockNumber ) const;
+
+ /**
+ * Gets analog sync signal definitions
+ *
+ * @since S60 9.2
+ * @param aByte17
+ * @return TEdidSyncSignalDefinitions
+ */
+ static TEdidSyncSignalDefinitions GetAnalogSyncSignalDefinitions( const TUint aByte17 );
+
+ /**
+ * Gets digital sync signal definitions
+ *
+ * @since S60 9.2
+ * @param aByte17
+ * @return TEdidSyncSignalDefinitions
+ */
+ static TEdidSyncSignalDefinitions GetDigitalSyncSignalDefinitions( const TUint aByte17 );
+
+private: // data
+
+ TEdidBaseBlock iBaseEdidData; // Base EDID data
+ HBufC8* iRawData; // Raw data that contains all EDID data
+ TUint iNumberOfExtensionBlocks; // Number of extensionblocks for this base edid block
+ TExtDataBlock iExtensionData; // Extension data
+ };
+
+#endif // C_CEDIDPARSERBASE_H