remotecontrol/remotecontrolfw/client/coreapi/public/remconcoreapitarget.h
changeset 51 20ac952a623c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotecontrol/remotecontrolfw/client/coreapi/public/remconcoreapitarget.h	Wed Oct 13 16:20:29 2010 +0300
@@ -0,0 +1,553 @@
+// Copyright (c) 2004-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:
+//
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+#ifndef REMCONCOREAPITARGET_H
+#define REMCONCOREAPITARGET_H
+
+#include <e32base.h>
+#include <remcon/remconinterfacebase.h>
+#include <remconcoreapi.h>
+#include <remcon/remconinterfaceif.h>
+
+class MRemConCoreApiTargetObserver;
+class CRemConInterfaceSelector;
+
+/**
+Client-instantiable type supporting sending Core API responses.
+*/
+NONSHARABLE_CLASS(CRemConCoreApiTarget) : public CRemConInterfaceBase, 
+								          public MRemConInterfaceIf
+	{
+public:
+	/**
+	Factory function.
+	@param aInterfaceSelector The interface selector. The client must have 
+	created one of these first.
+	@param aObserver The observer of this interface.
+	@return A new CRemConCoreApiTarget, owned by the interface selector.
+	*/
+	IMPORT_C static CRemConCoreApiTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
+		MRemConCoreApiTargetObserver& aObserver);
+	/**
+	Factory function.
+	@param aInterfaceSelector The interface selector. The client must have 
+	created one of these first.
+	@param aObserver The observer of this interface.
+	@param aFeatureSupported The Array is used to stote features supportd by the client 
+	
+	@return A new CRemConCoreApiTarget, owned by the interface selector.
+	*/
+	IMPORT_C static CRemConCoreApiTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
+			MRemConCoreApiTargetObserver& aObserver,const RArray<TRemConCoreApiOperationId>& aFeatureSupported);
+	
+	/** Destructor */
+	IMPORT_C ~CRemConCoreApiTarget();
+
+public:
+	/** Send a 'select' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SelectResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'up' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void UpResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'down' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void DownResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'left' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void LeftResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'right' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RightResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'right up' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RightUpResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'right down' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RightDownResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'left up' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void LeftUpResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'left down' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void LeftDownResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'root menu' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RootMenuResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'setup menu' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SetupMenuResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'contents menu' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void ContentsMenuResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'favorite menu' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void FavoriteMenuResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send an 'exit' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void ExitResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '0' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _0Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '1' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _1Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '2' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _2Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '3' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _3Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '4'response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _4Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '5' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _5Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a '6' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _6Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '7' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _7Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a '8' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _8Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a '9' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void _9Response(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'dot' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void DotResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'enter' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void EnterResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'clear' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void ClearResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'channel up' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void ChannelUpResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'channel down' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void ChannelDownResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'previous channel' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PreviousChannelResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'sound select' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SoundSelectResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'input select' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void InputSelectResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'display information' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void DisplayInformationResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'help' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void HelpResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'page up' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PageUpResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'page down' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PageDownResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'power' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PowerResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'volume up' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void VolumeUpResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'volume down' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void VolumeDownResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'mute' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void MuteResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a play response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PlayResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a stop response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the request.
+	@param aError The response error.
+	*/
+	IMPORT_C void StopResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'pause' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PauseResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'record' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RecordResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'rewind' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RewindResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'fast forward' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void FastForwardResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'eject' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void EjectResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'forward' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void ForwardResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'backward' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void BackwardResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'angle' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void AngleResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'subpicture' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SubpictureResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'pause play function' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void PausePlayFunctionResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'restore volume function' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void RestoreVolumeFunctionResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'tune function' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void TuneFunctionResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'select disk function' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SelectDiskFunctionResponse(TRequestStatus& aStatus, TInt aError);
+	
+	/** Send a 'select AV input function' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SelectAvInputFunctionResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a 'select audio input function' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void SelectAudioInputFunctionResponse(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'F1' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void F1Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'F2' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void F2Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'F3' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void F3Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'F4' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void F4Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send an 'F5' response.
+	Only one response per target session can be outstanding at any one time.
+	@param aStatus Used by RemCon to indicate completion of the send request.
+	@param aError The response error.
+	*/
+	IMPORT_C void F5Response(TRequestStatus& aStatus, TInt aError);
+
+	/** Send a response. 
+	Only one response per target session can be outstanding at any one time.
+	This function may be used to send a response when it is undesirable to use the 
+	'specific' response-sending methods (PlayResponse, StopResponse etc). 
+	@param aStatus Used by RemCon to indicate completion of the send request. 
+	@param aOperationId The operation ID of the command we are sending a response to. 
+	@param aError The response error. 
+	*/ 
+	IMPORT_C void SendResponse(TRequestStatus& aStatus, TRemConCoreApiOperationId aOperationId, TInt aError);
+	
+private:
+	/** 
+	Constructor.
+	@param aInterfaceSelector The interface selector.
+	@param aObserver The observer of this interface.
+	*/
+	CRemConCoreApiTarget(CRemConInterfaceSelector& aInterfaceSelector, 
+		MRemConCoreApiTargetObserver& aObserver);
+    void ConstructL(const RArray<TRemConCoreApiOperationId>& aFeaturesSupported);
+
+private: // utility
+	/**
+	Utility to send a response.
+	@param aStatus TRequestStatus for the send operation.
+	@param aOperationId The operation ID.
+	*/
+	void SendGenericResponse(TRequestStatus& aStatus, 
+		TRemConCoreApiOperationId aOperationId,
+		TInt aError);
+
+private: // from CRemConInterfaceBase
+	TAny* GetInterfaceIf(TUid aUid);
+
+private: // from MRemConInterfaceIf
+	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
+
+private: // utility
+	void HandlePlay(const TDesC8& aData, TRemConCoreApiButtonAction aButton);
+	void HandleTuneFunction(const TDesC8& aData, TRemConCoreApiButtonAction aButton);
+	void HandleSelectDiskFunction(const TDesC8& aData, TRemConCoreApiButtonAction aButton);
+	void HandleSelectAvInputFunction(const TDesC8& aData, TRemConCoreApiButtonAction aButton);
+	void HandleSelectAudioInputFunction(const TDesC8& aData, TRemConCoreApiButtonAction aButton);
+private :
+	void RemConCoreSetFeatures(TBool* aFeatureSupported);
+
+private: // unowned
+	MRemConCoreApiTargetObserver& iObserver;
+
+private: // owned
+	TBuf8<KRemConCoreApiMaxOperationSpecificDataSize> iRspData;
+	TUint iNumRemotes;
+	TFixedArray<TBool,ELargestOperationId> iOutstandingOperations;	
+	};
+
+#endif // REMCONCOREAPITARGET_H