accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforcomposite.h
changeset 0 4e1aa6a622a0
child 19 94cb00198351
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/tvoutconfigforcomposite.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,267 @@
+/*
+ * Copyright (c) 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:
+ * CTVOutConfigForComposite class declaration.
+ *
+ */
+
+#ifndef TVOUTCONFIGFORCOMPOSITE_H
+#define TVOUTCONFIGFORCOMPOSITE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <tvoutconfigdef.h>
+#include "myasynconeshottimercallback.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CTvOutConfig;
+class MFSMForBody;
+class CRepository;
+class CMyAsyncOneShotTimer;
+class TTvSettings;
+
+// CLASS DECLARATION
+
+/**
+ *  TV Out Configurer for Composite Cable Status FSM.
+ *
+ *  @code
+ *   ?good_class_usage_example(s)
+ *  @endcode
+ *
+ *  @lib none.
+ *  @since TB 9.2
+ */
+NONSHARABLE_CLASS( CTVOutConfigForComposite ): public CActive,
+public MMyAsyncOneShotTimerCallback
+    {
+public: // Constructors and destructor
+
+    /**
+     * Symbian two phased constructor.
+     * 
+     * @since S60 TB9.2
+     * @param aFSMBody A FSM.
+     * @return CTVOutConfigForComposite*
+     */
+    static CTVOutConfigForComposite* NewL( MFSMForBody& aFSM );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CTVOutConfigForComposite();
+
+public: // New methods
+
+
+    /**
+     * Set list of available Tv-configurations.
+     * 
+     * @since TB9.2
+     * @param   aSettingAfterCableConnected Tells whether parameter setting
+     *          is requested after cable was connected. If not true then
+     *          setting is requested because of a changed value of a parameter.
+     * @return Symbian error code.
+     */
+    void SetConfig( TBool aSettingAfterCableConnected );
+    
+    /**
+     * Listen for setting changes in TV Out Configuration.
+     * 
+     * @since TB9.2
+     * @param  None.
+     * @return void.
+     *           
+     */
+    void ListenSettingsChanges();
+    
+    /**
+     * Get pointer of CTvOutConfig.
+     * 
+     * @since TB9.2
+     * @param  None.
+     * @return CTvOutConfig* Pointer to CTvOutConfig.
+     */
+    CTvOutConfig* GetTvOutConfig();
+    
+
+    /**
+     *  Enables Tv-out. Latest SetConfig() settings are used.
+     *
+     * @since TB9.2
+     * @param  None.
+     * @return void.
+     */
+    void Enable();
+
+    /**
+     * Disables Tv-out.
+     * 
+     * @since TB9.2
+     * @param  aAnalogConfigs  Available Analog Tv configurations.
+     * @param  None.
+     * @return void.
+     */
+    void Disable();
+
+private:
+
+    /**
+     * Initializes the driver with the values from the Central Repository.
+     * @aBootTime indicates, if method is called during phone boot
+     * @return KErrNone if all went well, system wide error code otherwise.
+     */
+    TInt InitializeDriverL();
+
+    /**
+     * Return the current value of the tv system.
+     * @return setting value
+     */
+    TInt TvSystemL();
+
+    /**
+     * Return the current value of the aspect ratio.
+     * @return setting value
+     */
+    TInt AspectRatioL();
+
+    /**
+     * Return the current value of the flicker filter.
+     * @return setting value.
+     */
+    TInt FlickerFilterL();
+
+    /**
+     * Switching value from 1 to 0 and back
+     */
+    void ConvertFlickerFilter( TInt& aValue );
+
+    /**
+     * Converting aspect ratio value for display driver
+     */
+    void ConvertAspectRatio( TInt& aValue );
+
+    /**
+     * Converting tv system value for display driver
+     */
+    void ConvertTvSystem( TInt& aValue );
+    
+    /**
+     * Resolving the Pixel Aspect Ratio denominator and numerator
+     */
+    void UpdatePixelAspectRatio( TTvSettings& aSettings );
+
+private: // Constructors
+
+    /**
+     * C++ constructor.
+     * @param aFSMBody A FSM.
+     */
+    CTVOutConfigForComposite( MFSMForBody& aFSMForBody );
+
+    /**
+     * Symbian 2nd phase constructor.
+     * 
+     */
+    void ConstructL();
+
+private:
+    // Functions from base classes
+
+    /**
+     * RunL()
+     */
+    void RunL();
+
+    /**
+     * DoCancel()
+     */
+    void DoCancel();
+
+    /**
+     * From MMyAsyncOneShotTimerCallback
+     * This is called when one shot asyncronous timer has elapsed.
+     * 
+     * @since TB9.2
+     * @param  None.
+     * @return void.
+     *           
+     */
+    virtual void OneShotTimeout();
+
+private:
+    // Functions from base classes
+
+
+private:
+    // Data
+
+    enum
+        {
+        EWaitTimeInMsForTvOutConfigBusyServer = 50000
+        };
+
+    enum TOpt
+        {
+        EOptUndefined = 0,
+        EOptEnableTv,
+        EOptDisableTv,
+        EOptIdle,
+        EOptSetting,
+        EOptStartListenForSettingsChanges,
+        EOptListenForSettingsChanges,
+        EOptDisableTVBeforeSetting
+        };
+
+    // A FSM pointer.
+    // Not own.
+    MFSMForBody& iFSM;
+
+    // Handle to TV-out config
+    // Own
+    CTvOutConfig* iTvOutConfig;
+
+    // Handle to the Central Repository.
+    // Own
+    CRepository* iRepository;
+
+    // Next operation
+    TOpt iNextOpt;
+
+    // Tells whether parameter setting is requested after
+    // cable was connected. If not true then setting is requested
+    // because of a changed value of a parameter.
+    TBool iSettingAfterCableConnected;
+
+    // iTvConfig->Disable() called already once
+    // before trying iTvConfig->Setting() again.
+    TBool iDisabledOnceBeforeSetting;
+
+    // Asynchronous timer 
+    CMyAsyncOneShotTimer* iMyAsyncOneShotTimer;
+
+    // Time out reason and next opt after timer has 
+    // elapsed
+    TOpt iTimeOutReason;
+    };
+
+#endif // TVOUTCONFIGFORCOMPOSITE_H