accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/accessorycontrolif.h
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/pluggeddisplay/pluggeddisplayengine/inc/accessorycontrolif.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,199 @@
+/*
+ * 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:
+ * CAccessoryControlIf class declaration.
+ *
+ */
+
+#ifndef C_ACCESSORYCONTROLIF_H
+#define C_ACCESSORYCONTROLIF_H
+
+// INCLUDES
+#include <e32base.h>
+#include <AccessoryControl.h>
+#include <AccConGenericID.h>
+#include "pdengine.h"
+
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class MFSMBody;
+class RAccessoryServer;
+class RAccessoryControl;
+
+enum TAccessoryControlIf
+    {
+    EAccessoryControlIfNoRequestActive = 10,
+    EAccessoryControlIfConnectRequested,
+    EAccessoryControlIfDisconnectRequested
+    };
+
+
+// CLASS DECLARATION
+/**
+ * Accessory Control interface.
+ *
+ *  @code
+ *   ?good_class_usage_example(s)
+ *  @endcode
+ *
+ *  @lib none.
+ *  @since TB 9.2
+ */
+NONSHARABLE_CLASS( CAccessoryControlIf ): public CActive
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * Symbian two phased constructor.
+         * 
+         * @since S60 TB9.2
+         * @param aFSM A FSM.
+         * @param aAccessoryServer Accessory Server.
+         * @return CAccessoryControlIf*
+         */
+        static CAccessoryControlIf* NewL(
+                MFSMForBody& aFSM,
+                RAccessoryServer& aAccessoryServer );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CAccessoryControlIf();
+        
+    public: // New methods
+
+        /**
+         * Sends a connect accessory request to Accessory Server.
+         * 
+         * @since TB9.2
+         * @param aCopyProtectionStatus Current Copy Protection Status.
+         * @return void.
+         */
+        void ConnectAccessoryL( TBool aCopyProtectionStatus );
+
+        /**
+         * Sends a disconnect accessory request to Accessory Server.
+         * 
+         * @since TB9.2
+         * @param None.
+         * @return void.
+         */
+        void DisconnectAccessory();
+        
+        /**
+         * Get the Unique ID of connected accessory.
+         * 
+         * @since TB9.2
+         * @param None.
+         * @return Unique ID. Zero if don't exist.
+         */
+        TInt GetUniqueID();
+
+        /**
+         * Get the Generic ID of connected accessory.
+         * 
+         * @since TB9.2
+         * @param aAccPolGenericID Object where to copy actual values.
+         * @return Error code. KErrNotFound if don't exist.
+         */
+        TInt GetAccPolGenericID( TAccPolGenericID& aAccPolGenericID );
+
+        /**
+         * Notify value change.
+         * 
+         * @since TB9.2
+         * @param aNameRecord Accessory capability.
+         * @param aValue      Value for the specific accessory capability.
+         * @return TInt Error code. system-wide error code if failed.
+         *            Specifically:
+         *            KErrArgument if an argument is out of range.
+         */
+        TInt NotifyValueChange( 
+                const TUint32& aName,
+                const TAccValueTypeTBool aValue ) const;
+
+        /**
+         * Notify value change.
+         * 
+         * @since TB9.2
+         * @param aNameRecord Accessory capability.
+         * @param aValue      Value for the specific accessory capability.
+         * @return TInt Error code. system-wide error code if failed.
+         *            Specifically:
+         *            KErrArgument if an argument is out of range.
+         */
+        TInt NotifyValueChange( 
+                const TUint32& aName,
+                const CAccPolObjectCon& aValue ) const;
+        
+    private: // Functions from base classes
+
+        /**
+        * RunL()
+        */
+        void RunL();
+
+        /**
+        * DoCancel()
+        */
+        void DoCancel();
+
+    private:  // Constructors
+
+        /**
+        * C++ constructor.
+        * @param aFSM A FSM.
+        */
+        CAccessoryControlIf( MFSMForBody& aFSM );
+
+        /**
+        * Symbian 2nd phase constructor.
+        * 
+        * @since S60 TB9.2
+        * @param aAccessoryServer Accessory Server
+         */
+        void ConstructL(
+                RAccessoryServer& aAccessoryServer );
+
+
+    private:  // Data
+
+        // A FSM pointer.
+        // Not own.
+        MFSMForBody& iFSM;
+        
+        // Accessory Control API
+        RAccessoryControl iAccessoryControl;
+        
+        // Generic ID pointer.
+        // Own.
+        CAccConGenericID* iGenericIDPtr;
+        
+        // Id of the active (object) request 
+        TInt iActiveRequestId;
+
+        // Indicates whether Composite cable has been
+        // connected by calling RAccessoryControl::ConnectAccessory()
+        TBool iAccessoryConnected; 
+    };
+
+#endif // C_ACCESSORYCONTROLIF_H