remotecontrol/remotecontrolfw/bearerplugin/public/remconbearerinterface.h
author hgs
Wed, 13 Oct 2010 16:20:29 +0300
changeset 51 20ac952a623c
permissions -rw-r--r--
201040_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
20ac952a623c 201040_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
20ac952a623c 201040_02
hgs
parents:
diff changeset
     2
// All rights reserved.
20ac952a623c 201040_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
20ac952a623c 201040_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
20ac952a623c 201040_02
hgs
parents:
diff changeset
     7
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    10
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    11
// Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    12
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    13
// Description:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    14
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    15
20ac952a623c 201040_02
hgs
parents:
diff changeset
    16
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    17
 @file
20ac952a623c 201040_02
hgs
parents:
diff changeset
    18
 @publishedPartner
20ac952a623c 201040_02
hgs
parents:
diff changeset
    19
 @released
20ac952a623c 201040_02
hgs
parents:
diff changeset
    20
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    21
20ac952a623c 201040_02
hgs
parents:
diff changeset
    22
#ifndef REMCONBEARERINTERFACE_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    23
#define REMCONBEARERINTERFACE_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    24
20ac952a623c 201040_02
hgs
parents:
diff changeset
    25
#include <e32base.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    26
#include <remcon/clientid.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    27
#include <remcon/messagetype.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    28
#include <remcon/playertype.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    29
20ac952a623c 201040_02
hgs
parents:
diff changeset
    30
class MRemConBearerObserver;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    31
class TBearerParams;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    32
class TRemConAddress;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    33
20ac952a623c 201040_02
hgs
parents:
diff changeset
    34
/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    35
The UID of the bearer API. If the bearer API ever has to change, a new UID and 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    36
associated M class will be created. New implementations of CRemConBearerPlugin 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    37
may implement the new API. Old (non-updated) bearers will still work as long 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    38
as RemCon supports the old API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    39
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    40
const TInt KRemConBearerInterface1 = 0x10208A78;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    41
20ac952a623c 201040_02
hgs
parents:
diff changeset
    42
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    43
Mixin for the bearer API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    44
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    45
class MRemConBearerInterface
20ac952a623c 201040_02
hgs
parents:
diff changeset
    46
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    47
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    48
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    49
	Called by RemCon to retrieve a response on a connection. Must only be 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    50
	called as a result of a NewResponse up-call.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    51
	@param aInterfaceUid The UID of the outer-layer client API specifying the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    52
	response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    53
	@param aTransactionId The command identifier used as a cookie for command/response 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    54
	matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    55
	@param aOperationId The ID of the response operation in the outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    56
	client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    57
	@param aData API-specific message data. On success, ownership is 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    58
	returned.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    59
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    60
	@return Error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    61
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    62
	virtual TInt GetResponse(TUid& aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    63
		TUint& aTransactionId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    64
		TUint& aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    65
		RBuf8& aData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    66
		TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    67
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    68
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    69
	Called by RemCon to retrieve a command on a connection. Must only be 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    70
	called as a result of a NewCommand up-call.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    71
	@param aInterfaceUid The UID of the outer-layer client API specifying the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    72
	command.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    73
	@param aTransactionId The command identifier used as a cookie for command/response 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    74
	matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    75
	@param aOperationId The ID of the command operation in the outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    76
	client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    77
	@param aData API-specific message data. On success, ownership is 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    78
	returned.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    79
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    80
	@return Error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    81
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    82
	virtual TInt GetCommand(TUid& aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    83
		TUint& aTransactionId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    84
		TUint& aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    85
		RBuf8& aData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    86
		TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    87
20ac952a623c 201040_02
hgs
parents:
diff changeset
    88
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    89
	Called by RemCon to send a command on a connection. The connection is not 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    90
	assumed to exist- the bearer is responsible for bringing up the requested 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    91
	connection if necessary.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    92
	@param aInterfaceUid The UID of the outer-layer client API specifying the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    93
	command.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    94
	@param aOperationId The ID of the command operation in the outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    95
	client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    96
	@param aTransactionId The command identifier used as a cookie for command/response 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    97
	matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    98
	@param aData API-specific message data. On success, ownership is passed. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    99
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   100
	@return Error. This request is synchronous. It should be completed by the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   101
	bearer when it has taken responsibility for sending the message. This will 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   102
	involve checking that the message is well-formed, and possibly actually 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   103
	trying to send it, or adding it to a queue.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   104
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   105
	virtual TInt SendCommand(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   106
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   107
		TUint aTransactionId,  
20ac952a623c 201040_02
hgs
parents:
diff changeset
   108
		RBuf8& aData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   109
		const TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   110
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   111
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   112
	Called by RemCon to send a response on a connection. The connection is not 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   113
	assumed to exist- the bearer is responsible for bringing up the requested 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   114
	connection if necessary.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   115
	@param aInterfaceUid The UID of the outer-layer client API specifying the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   116
	response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   117
	@param aOperationId The ID of the response operation in the outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   118
	client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   119
	@param aTransactionId The command identifier used as a cookie for command/response 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   120
	matching
20ac952a623c 201040_02
hgs
parents:
diff changeset
   121
	@param aData API-specific message data. On success, ownership is passed.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   122
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   123
	@return Error. This request is synchronous. It should be completed by the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   124
	bearer when it has taken responsibility for sending the message. This will 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   125
	involve checking that the message is well-formed, and possibly actually 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   126
	trying to send it, or adding it to a queue.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   127
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   128
	virtual TInt SendResponse(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   129
		TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   130
		TUint aTransactionId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   131
		RBuf8& aData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   132
		const TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   133
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   134
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   135
	Called by RemCon to establish a bearer-level connection to another party. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   136
	Completion is signalled back in ConnectConfirm.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   137
	@param aAddr The RemCon address to connect to.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   138
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   139
	virtual void ConnectRequest(const TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   140
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   141
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   142
	Called by RemCon to destroy a bearer-level connection to another party. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   143
	Completion is signalled back in DisconnectConfirm.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   144
	@param aAddr The RemCon address to disconnect from.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   145
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   146
	virtual void DisconnectRequest(const TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   147
20ac952a623c 201040_02
hgs
parents:
diff changeset
   148
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   149
	Called by RemCon when either (a) the number of controller clients changes 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   150
	from 0 to 1 or from 1 to 0, or (b) the number of target clients changes 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   151
	from 0 to 1 or from 1 to 0.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   152
	@param aControllerPresent Is true if any controllers are present, EFalse otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   153
	@param aTargetPresent Is true if any targets are present, EFalse otherwise.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   154
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   155
	virtual void ClientStatus(TBool aControllerPresent, TBool aTargetPresent) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   156
20ac952a623c 201040_02
hgs
parents:
diff changeset
   157
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   158
	Called by RemCon to get the capabilities required to make/destroy 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   159
	connections over the bearer, and to send and receive messages over the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   160
	bearer.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   161
	@return The bearer's security policy.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   162
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   163
	virtual TSecurityPolicy SecurityPolicy() const = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   164
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
   165
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   166
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   167
/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   168
The UID of the bearer API. If the bearer API ever has to change, a new UID and 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   169
associated M class will be created. New implementations of CRemConBearerPlugin 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   170
may implement the new API. Old (non-updated) bearers will still work as long 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   171
as RemCon supports the old API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   172
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   173
const TInt KRemConBearerInterface2 = 0x10285AD9;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   174
20ac952a623c 201040_02
hgs
parents:
diff changeset
   175
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   176
class MRemConBearerInterfaceV2 : public MRemConBearerInterface
20ac952a623c 201040_02
hgs
parents:
diff changeset
   177
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
   178
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
   179
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   180
	Called by RemCon to retrieve a notify command on a connection. Must only be 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   181
	called as a result of a NewNotify up-call.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   182
	@param aInterfaceUid The UID of the outer-layer client API specifying the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   183
	notify command.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   184
	@param aTransactionId The command identifier used as a cookie for command/response 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   185
	matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   186
	@param aOperationId The ID of the command operation in the outer-layer 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   187
	client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   188
	@param aData API-specific message data. On success, ownership is 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   189
	returned.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   190
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   191
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   192
	virtual TInt GetNotifyCommand(TUid& aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   193
		TUint& aTransactionId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   194
		TUint& aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   195
		RBuf8& aData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   196
		TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   197
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   198
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   199
	Called by RemCon when either
20ac952a623c 201040_02
hgs
parents:
diff changeset
   200
	a) The TSP does not address a command to any clients
20ac952a623c 201040_02
hgs
parents:
diff changeset
   201
	b) The TSP does not permit the response from any commands
20ac952a623c 201040_02
hgs
parents:
diff changeset
   202
	c) All the clients disconnect from remcon before the response is sent,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   203
	to send a reject on a connection. RemCon will call this function after bringing
20ac952a623c 201040_02
hgs
parents:
diff changeset
   204
	up the connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   205
	@param aInterfaceUid The UID of the outer-layer client API that the command
20ac952a623c 201040_02
hgs
parents:
diff changeset
   206
	was sent to
20ac952a623c 201040_02
hgs
parents:
diff changeset
   207
	@param aOperationId The ID of the command operation sent to remcon
20ac952a623c 201040_02
hgs
parents:
diff changeset
   208
	@param aTransactionId The command identifier used as a cookie for command/response 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   209
	matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   210
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   211
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   212
	virtual void SendReject(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   213
			TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   214
			TUint aTransactionId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   215
			const TRemConAddress& aAddr) = 0; 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   216
	};	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   217
20ac952a623c 201040_02
hgs
parents:
diff changeset
   218
/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   219
The UID of the bearer API. If the bearer API ever has to change, a new UID and 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   220
associated M class will be created. New implementations of CRemConBearerPlugin 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   221
may implement the new API. Old (non-updated) bearers will still work as long 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   222
as RemCon supports the old API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   223
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   224
const TInt KRemConBearerInterface3 = 0x10285ADB;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   225
20ac952a623c 201040_02
hgs
parents:
diff changeset
   226
class MRemConBearerInterfaceV3 : public MRemConBearerInterfaceV2
20ac952a623c 201040_02
hgs
parents:
diff changeset
   227
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
   228
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
   229
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   230
	Called by RemCon to send a notify command on a connection. The connection is not 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   231
	assumed to exist- the bearer is responsible for bringing up the requested 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   232
	connection if necessary.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   233
	@param aInterfaceUid The UID of the outer-layer client API specifying the command.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   234
	@param aOperationId The ID of the command operation in the outer-layer client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   235
	@param aTransactionId The command identifier used as a cookie for command/response matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   236
	@param aData API-specific message data. On success, ownership is passed. 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   237
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   238
	@return Error. This request is synchronous. It returns KErrNone when the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   239
	bear has taken responsibility for sending the message. This will 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   240
	involve checking that the message is well-formed, and possibly actually 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   241
	trying to send it, or adding it to a queue.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   242
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   243
	virtual TInt SendNotifyCommand(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   244
			TUint aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   245
			TUint aTransactionId,  
20ac952a623c 201040_02
hgs
parents:
diff changeset
   246
			RBuf8& aData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   247
			const TRemConAddress& aAddr) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   248
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   249
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   250
	Called by RemCon to retrieve a notify response on a connection. Must only be 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   251
	called as a result of a NewNotifyResponseL up-call.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   252
	@param aInterfaceUid The UID of the outer-layer client API specifying the response.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   253
	@param aTransactionId The command identifier used as a cookie for command/response matching.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   254
	@param aOperationId The ID of the response operation in the outer-layer client API.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   255
	@param aData API-specific message data. On success, ownership is returned.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   256
	@param aAddr The connection.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   257
	@return Error.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   258
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   259
	virtual TInt GetNotifyResponse(TUid& aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   260
			TUint& aId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   261
			TUint& aOperationId, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   262
			RBuf8& aCommandData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   263
			TRemConAddress& aAddr,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   264
			TRemConMessageSubType& aSubMessageType)=0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   265
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   266
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   267
	Called by RemCon when a client has become available for addressing.  Once this
20ac952a623c 201040_02
hgs
parents:
diff changeset
   268
	call has been made the bearer may use the provided TRemConClientId to address
20ac952a623c 201040_02
hgs
parents:
diff changeset
   269
	incoming commands and notifys to this client until RemCon calls ClientNotAvailable
20ac952a623c 201040_02
hgs
parents:
diff changeset
   270
	with this TRemConClientId.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   271
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   272
	@param aId A unique identifier for this client, that can be used when addressing 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   273
	incoming commands.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   274
	@param aClientType The basic type of this client
20ac952a623c 201040_02
hgs
parents:
diff changeset
   275
	@param aClientSubType More detailed type information on this client
20ac952a623c 201040_02
hgs
parents:
diff changeset
   276
	@param aName The name of this client in UTF-8.  This remains valid until ClientNotAvailable 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   277
				 is called for this player.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   278
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   279
	virtual void ClientAvailable(TRemConClientId& aId, TPlayerType aClientType, TPlayerSubType aClientSubType, const TDesC8& aName) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   280
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   281
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   282
	Called by RemCon when a client is no longer available for addressing.  Once this
20ac952a623c 201040_02
hgs
parents:
diff changeset
   283
	call has been made the bearer shall not use this client id when addressing incoming
20ac952a623c 201040_02
hgs
parents:
diff changeset
   284
	commands and notifys until informed that the client is available again via
20ac952a623c 201040_02
hgs
parents:
diff changeset
   285
	ClientAvailable.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   286
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   287
	@param aId The client that has ceased to be available.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   288
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   289
	virtual void ClientNotAvailable(TRemConClientId& aId) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   290
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   291
	/** 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   292
	Called by RemCon when the TSP has requested this bearer use a different addressed
20ac952a623c 201040_02
hgs
parents:
diff changeset
   293
	client.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   294
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   295
	@param aId The client to which this bearer should route addressed commands.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   296
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   297
	virtual TInt SetLocalAddressedClient(TRemConClientId& aId) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   298
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   299
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   300
	Called by RemCon when a controller client is opened or closed to provide the 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   301
	current set of interfaces supported by controller sessions.  This is not
20ac952a623c 201040_02
hgs
parents:
diff changeset
   302
	guaranteed to have changed since the last time the function was called.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   303
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   304
	@param aSupportedInterfaces An RArray of interface UIDs.  Ownership is retained
20ac952a623c 201040_02
hgs
parents:
diff changeset
   305
				by RemCon and its lifetime is not guaranteed to last beyond the scope
20ac952a623c 201040_02
hgs
parents:
diff changeset
   306
				of this function.  Each supported interface appears once in the array
20ac952a623c 201040_02
hgs
parents:
diff changeset
   307
				irrespective of how many controller sessions support that interface.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   308
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   309
	virtual void ControllerFeaturesUpdated(RArray<TUid>& aSupportedInterfaces) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   310
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   311
	/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
   312
	Called by RemCon when a target client registers new interfaces after being made available.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   313
20ac952a623c 201040_02
hgs
parents:
diff changeset
   314
	@param aId The target client that has regitered new interfaces.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   315
	@param aPlayerType The basic type of this client after registration of new interfaces.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   316
	@param aPlayerSubType More detailed type information on this client after registration of new interfaces.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   317
	@param aName The name of this client in UTF-8. This remains valid until ClientNotAvailable 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   318
				 is called for this player.
20ac952a623c 201040_02
hgs
parents:
diff changeset
   319
	*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
   320
	virtual void TargetFeaturesUpdated(const TRemConClientId& aId, TPlayerType aPlayerType, TPlayerSubType aPlayerSubType, const TDesC8& aName) = 0;
20ac952a623c 201040_02
hgs
parents:
diff changeset
   321
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
   322
20ac952a623c 201040_02
hgs
parents:
diff changeset
   323
#endif // REMCONBEARERINTERFACE_H