accessoryservices/remotecontrolfw/bearerplugin/public/remconbearerinterface.h
changeset 0 4e1aa6a622a0
child 70 653a8b91b95e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/remotecontrolfw/bearerplugin/public/remconbearerinterface.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,312 @@
+// 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
+ @publishedPartner
+ @released
+*/
+
+#ifndef REMCONBEARERINTERFACE_H
+#define REMCONBEARERINTERFACE_H
+
+#include <e32base.h>
+#include <remcon/clientid.h>
+#include <remcon/messagetype.h>
+#include <remcon/playertype.h>
+
+class MRemConBearerObserver;
+class TBearerParams;
+class TRemConAddress;
+
+/** 
+The UID of the bearer API. If the bearer API ever has to change, a new UID and 
+associated M class will be created. New implementations of CRemConBearerPlugin 
+may implement the new API. Old (non-updated) bearers will still work as long 
+as RemCon supports the old API.
+*/
+const TInt KRemConBearerInterface1 = 0x10208A78;
+
+/**
+Mixin for the bearer API.
+*/
+class MRemConBearerInterface
+	{
+public:
+	/** 
+	Called by RemCon to retrieve a response on a connection. Must only be 
+	called as a result of a NewResponse up-call.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the 
+	response.
+	@param aTransactionId The command identifier used as a cookie for command/response 
+	matching.
+	@param aOperationId The ID of the response operation in the outer-layer 
+	client API.
+	@param aData API-specific message data. On success, ownership is 
+	returned.
+	@param aAddr The connection.
+	@return Error.
+	*/
+	virtual TInt GetResponse(TUid& aInterfaceUid, 
+		TUint& aTransactionId, 
+		TUint& aOperationId, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr) = 0;
+	
+	/** 
+	Called by RemCon to retrieve a command on a connection. Must only be 
+	called as a result of a NewCommand up-call.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the 
+	command.
+	@param aTransactionId The command identifier used as a cookie for command/response 
+	matching.
+	@param aOperationId The ID of the command operation in the outer-layer 
+	client API.
+	@param aData API-specific message data. On success, ownership is 
+	returned.
+	@param aAddr The connection.
+	@return Error.
+	*/
+	virtual TInt GetCommand(TUid& aInterfaceUid, 
+		TUint& aTransactionId, 
+		TUint& aOperationId, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr) = 0;
+
+	/** 
+	Called by RemCon to send a command on a connection. The connection is not 
+	assumed to exist- the bearer is responsible for bringing up the requested 
+	connection if necessary.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the 
+	command.
+	@param aOperationId The ID of the command operation in the outer-layer 
+	client API.
+	@param aTransactionId The command identifier used as a cookie for command/response 
+	matching.
+	@param aData API-specific message data. On success, ownership is passed. 
+	@param aAddr The connection.
+	@return Error. This request is synchronous. It should be completed by the 
+	bearer when it has taken responsibility for sending the message. This will 
+	involve checking that the message is well-formed, and possibly actually 
+	trying to send it, or adding it to a queue.
+	*/
+	virtual TInt SendCommand(TUid aInterfaceUid, 
+		TUint aOperationId, 
+		TUint aTransactionId,  
+		RBuf8& aData, 
+		const TRemConAddress& aAddr) = 0;
+	
+	/** 
+	Called by RemCon to send a response on a connection. The connection is not 
+	assumed to exist- the bearer is responsible for bringing up the requested 
+	connection if necessary.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the 
+	response.
+	@param aOperationId The ID of the response operation in the outer-layer 
+	client API.
+	@param aTransactionId The command identifier used as a cookie for command/response 
+	matching
+	@param aData API-specific message data. On success, ownership is passed.
+	@param aAddr The connection.
+	@return Error. This request is synchronous. It should be completed by the 
+	bearer when it has taken responsibility for sending the message. This will 
+	involve checking that the message is well-formed, and possibly actually 
+	trying to send it, or adding it to a queue.
+	*/
+	virtual TInt SendResponse(TUid aInterfaceUid, 
+		TUint aOperationId, 
+		TUint aTransactionId, 
+		RBuf8& aData, 
+		const TRemConAddress& aAddr) = 0;
+	
+	/** 
+	Called by RemCon to establish a bearer-level connection to another party. 
+	Completion is signalled back in ConnectConfirm.
+	@param aAddr The RemCon address to connect to.
+	*/
+	virtual void ConnectRequest(const TRemConAddress& aAddr) = 0;
+	
+	/** 
+	Called by RemCon to destroy a bearer-level connection to another party. 
+	Completion is signalled back in DisconnectConfirm.
+	@param aAddr The RemCon address to disconnect from.
+	*/
+	virtual void DisconnectRequest(const TRemConAddress& aAddr) = 0;
+
+	/**
+	Called by RemCon when either (a) the number of controller clients changes 
+	from 0 to 1 or from 1 to 0, or (b) the number of target clients changes 
+	from 0 to 1 or from 1 to 0.
+	@param aControllerPresent Is true if any controllers are present, EFalse otherwise.
+	@param aTargetPresent Is true if any targets are present, EFalse otherwise.
+	*/
+	virtual void ClientStatus(TBool aControllerPresent, TBool aTargetPresent) = 0;
+
+	/**
+	Called by RemCon to get the capabilities required to make/destroy 
+	connections over the bearer, and to send and receive messages over the 
+	bearer.
+	@return The bearer's security policy.
+	*/
+	virtual TSecurityPolicy SecurityPolicy() const = 0;
+	};
+	
+	
+/** 
+The UID of the bearer API. If the bearer API ever has to change, a new UID and 
+associated M class will be created. New implementations of CRemConBearerPlugin 
+may implement the new API. Old (non-updated) bearers will still work as long 
+as RemCon supports the old API.
+*/
+const TInt KRemConBearerInterface2 = 0x10285AD9;
+
+	
+class MRemConBearerInterfaceV2 : public MRemConBearerInterface
+	{
+public:
+	/** 
+	Called by RemCon to retrieve a notify command on a connection. Must only be 
+	called as a result of a NewNotify up-call.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the 
+	notify command.
+	@param aTransactionId The command identifier used as a cookie for command/response 
+	matching.
+	@param aOperationId The ID of the command operation in the outer-layer 
+	client API.
+	@param aData API-specific message data. On success, ownership is 
+	returned.
+	@param aAddr The connection.
+	*/
+	virtual TInt GetNotifyCommand(TUid& aInterfaceUid, 
+		TUint& aTransactionId, 
+		TUint& aOperationId, 
+		RBuf8& aData, 
+		TRemConAddress& aAddr) = 0;
+	
+	/**
+	Called by RemCon when either
+	a) The TSP does not address a command to any clients
+	b) The TSP does not permit the response from any commands
+	c) All the clients disconnect from remcon before the response is sent,
+	to send a reject on a connection. RemCon will call this function after bringing
+	up the connection.
+	@param aInterfaceUid The UID of the outer-layer client API that the command
+	was sent to
+	@param aOperationId The ID of the command operation sent to remcon
+	@param aTransactionId The command identifier used as a cookie for command/response 
+	matching.
+	@param aAddr The connection.
+	*/
+	virtual void SendReject(TUid aInterfaceUid, 
+			TUint aOperationId, 
+			TUint aTransactionId, 
+			const TRemConAddress& aAddr) = 0; 
+	};	
+
+/** 
+The UID of the bearer API. If the bearer API ever has to change, a new UID and 
+associated M class will be created. New implementations of CRemConBearerPlugin 
+may implement the new API. Old (non-updated) bearers will still work as long 
+as RemCon supports the old API.
+*/
+const TInt KRemConBearerInterface3 = 0x10285ADB;
+
+class MRemConBearerInterfaceV3 : public MRemConBearerInterfaceV2
+	{
+public:
+	/** 
+	Called by RemCon to send a notify command on a connection. The connection is not 
+	assumed to exist- the bearer is responsible for bringing up the requested 
+	connection if necessary.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the command.
+	@param aOperationId The ID of the command operation in the outer-layer client API.
+	@param aTransactionId The command identifier used as a cookie for command/response matching.
+	@param aData API-specific message data. On success, ownership is passed. 
+	@param aAddr The connection.
+	@return Error. This request is synchronous. It returns KErrNone when the 
+	bear has taken responsibility for sending the message. This will 
+	involve checking that the message is well-formed, and possibly actually 
+	trying to send it, or adding it to a queue.
+	*/
+	virtual TInt SendNotifyCommand(TUid aInterfaceUid, 
+			TUint aOperationId, 
+			TUint aTransactionId,  
+			RBuf8& aData, 
+			const TRemConAddress& aAddr) = 0;
+	
+	/** 
+	Called by RemCon to retrieve a notify response on a connection. Must only be 
+	called as a result of a NewNotifyResponseL up-call.
+	@param aInterfaceUid The UID of the outer-layer client API specifying the response.
+	@param aTransactionId The command identifier used as a cookie for command/response matching.
+	@param aOperationId The ID of the response operation in the outer-layer client API.
+	@param aData API-specific message data. On success, ownership is returned.
+	@param aAddr The connection.
+	@return Error.
+	*/
+	virtual TInt GetNotifyResponse(TUid& aInterfaceUid, 
+			TUint& aId, 
+			TUint& aOperationId, 
+			RBuf8& aCommandData, 
+			TRemConAddress& aAddr,
+			TRemConMessageSubType& aSubMessageType)=0;
+	
+	/**
+	Called by RemCon when a client has become available for addressing.  Once this
+	call has been made the bearer may use the provided TRemConClientId to address
+	incoming commands and notifys to this client until RemCon calls ClientNotAvailable
+	with this TRemConClientId.
+	
+	@param aId A unique identifier for this client, that can be used when addressing 
+	incoming commands.
+	@param aClientType The basic type of this client
+	@param aClientSubType More detailed type information on this client
+	@param aName The name of this client in UTF-8.  This remains valid until ClientNotAvailable 
+				 is called for this player.
+	*/
+	virtual void ClientAvailable(TRemConClientId& aId, TPlayerType aClientType, TPlayerSubType aClientSubType, const TDesC8& aName) = 0;
+	
+	/**
+	Called by RemCon when a client is no longer available for addressing.  Once this
+	call has been made the bearer shall not use this client id when addressing incoming
+	commands and notifys until informed that the client is available again via
+	ClientAvailable.
+	
+	@param aId The client that has ceased to be available.
+	*/
+	virtual void ClientNotAvailable(TRemConClientId& aId) = 0;
+	
+	/** 
+	Called by RemCon when the TSP has requested this bearer use a different addressed
+	client.
+	
+	@param aId The client to which this bearer should route addressed commands.
+	*/
+	virtual TInt SetLocalAddressedClient(TRemConClientId& aId) = 0;
+	
+	/**
+	Called by RemCon when a controller client is opened or closed to provide the 
+	current set of interfaces supported by controller sessions.  This is not
+	guaranteed to have changed since the last time the function was called.
+	
+	@param aSupportedInterfaces An RArray of interface UIDs.  Ownership is retained
+				by RemCon and its lifetime is not guaranteed to last beyond the scope
+				of this function.  Each supported interface appears once in the array
+				irrespective of how many controller sessions support that interface.
+	*/
+	virtual void ControllerFeaturesUpdated(RArray<TUid>& aSupportedInterfaces) = 0;
+	};
+
+#endif // REMCONBEARERINTERFACE_H