bluetoothappprofiles/avrcp/playerinformation/public/playerinformationtargetobserver.h
changeset 70 f5508c13dfe0
parent 67 16e4b9007960
child 71 083fd884d7dd
--- a/bluetoothappprofiles/avrcp/playerinformation/public/playerinformationtargetobserver.h	Wed Oct 13 13:15:31 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,298 +0,0 @@
-// Copyright (c) 2007-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 REMCONPLAYERINFORMATIONTARGETOBSERVER_H
-#define REMCONPLAYERINFORMATIONTARGETOBSERVER_H
-
-#include <e32base.h>
-#include <remcon/avrcpspec.h>
-#include <barsc2.h>
-
-
-/**
-This class is used to define the capabilities of the current application,
-and the implementation will generate AVRCP responses to the controller.
-For the event part of the API, it is recommended to add all events which make
-sense for the media player. In general, this will be everything except
-ESystemStatusChanged. The company ID part of the API is only needed if
-the media player needs to support vendor extensions other than bluetooth SIG.
-The bluetooth SIG company ID is always included in responses to a COMPANY_ID request.
-*/
-class MPlayerCapabilitiesObserver 
-	{
-	public:
-		/**
-		Remove all notification events from the supported list
-		*/
-		IMPORT_C void ClearEvents();
-		/**
-		Add a notification event to the supported list of events
-		The AVRCP 1.3 specification mandates that PlaybackStatusChanged
-		and TrackChanged events must be supported; KErrAlreadyExists will
-		be returned if AddEvent() is called with either of these events.
-		@param aEvent the event to add
-		@return KErrAlreadyExists if the event is already present.
-		KErrNotSupported if the event isn't supported by the implementation, e.g.. ESystemStatusChanged
-		*/
-		IMPORT_C TInt AddEvent(TRegisterNotificationEvent aEvent);
-		/**
-		Remove a notification event from the supported list of events
-		The AVRCP 1.3 specification mandates that PlaybackStatusChanged
-		and TrackChanged events must be supported; KErrNotSupported will
-		be returned if RemoveEvent() is called with either of these events.
-		@param aEvent the event to remove
-		@return KErrNone if this completes successfully, KErrNotFound if aID
-		was not in the list, or any other system wide error code.
-		*/
-		IMPORT_C TInt RemoveEvent(TRegisterNotificationEvent aEvent);
-
-		const static TInt KMaxCompanyID = 0xFFFFFF;
-		const static TInt KMaxNrOfCompanyIDs = 255;
-		
-		/**
-		Remove all additional company IDs from the supported list
-		*/
-		IMPORT_C void ClearCompanyIds();
-		/**
-		Add a company id to the supported list of company ids.
-		The AVRCP 1.3 specification mandates that the Bluetooth SIG vendor id 
-		must be supported; KErrAlreadyExists will be returned if AddCompanyId()
-		is called with this company id.
-		@param aID the id to add
-		@return KErrNone if this completes successfully,
-		KErrAlreadyExists if aID is already present,
-		KErrOverflow if the maximum number of company ids are already listed,
-		or any other system wide error code.
-		*/
-		IMPORT_C TInt AddCompanyId(TInt aID);
-		/**
-		Remove a company id from the list of supported vendor extensions.
-		The Bluetooth SIG id can't be removed, as this must always be supported
-		@param aID the id to remove
-		@return KErrNone if this completes successfully, KErrNotFound if aID
-		was not in the list, or any other system wide error code.
-		*/
-		IMPORT_C TInt RemoveCompanyID(TInt aID);
-		
-	private:
-		virtual void DoClearEvents() = 0;
-		virtual TInt DoAddEvent(TRegisterNotificationEvent aEvent) = 0;
-		virtual TInt DoRemoveEvent(TRegisterNotificationEvent aEvent) = 0;
-		virtual void DoClearCompanyIds() = 0;
-		virtual TInt DoAddCompanyId(TInt aID) = 0;
-		virtual TInt DoRemoveCompanyID(TInt aID) = 0;
-	};
-
-/**
-This class is for supporting the player application settings PDUs in AVRCP1.3
-specification section 5.2. The RegisterNotification PDU for
-EVENT_PLAYER_APPLICATION_SETTING_CHANGED is also supported through this API.
-
-The media player should first define all the attributes it supports, using
-DefineAttributeL. When an attribute's value is changed by the media player,
-it should call SetAttributeL to inform the controller. When the controller
-changes a setting, the media player application receives a callback via the
-MPlayerApplicationSettingsNotify interface
-*/
-class MPlayerApplicationSettingsObserver 
-	{
-	public:
-		/**
-		Define an attribute supported by this player.
-		It will be included in future responses to the following PDUs:
-			ListPlayerApplicationSettingAttributes,
-			ListPlayerApplicationSettingValues,
-			GetCurrentPlayerApplicationSettingValue,
-			GetPlayerApplicationSettingAttributeText,
-			GetPlayerApplicationSettingValueText,
-		@param aAttributeID The specification or player defined attribute
-		@param aAttributeText The UTF8 text name of the attribute(allowed text length is 1-255) - the API will take a copy
-		@param aValues The list of defined values
-		@param aValueTexts The UTF8 text for each defined value(allowed text length is 1-255) - The API will make copies.
-		@param aInitialValue The initial value for this attribute
-		@leave KErrNoMemory if memory could not be allocated to store the copies of aAttributeID and relative settings
-		@leave KErrNotSupported if attribute or value is out of specification defined range,
-			or aValueTexts is not equal length to aValues
-		*/
-		IMPORT_C void DefineAttributeL(TUint aAttributeID,
-										TDesC8& aAttributeText,
-										RArray<TUint> &aValues,
-										RArray<TPtrC8> &aValueTexts,
-										TUint aInitialValue);
-
-		/**
-		Set the current value of a previously defined attribute
-		This updates the cache and will cause completion of a 
-		pending EVENT_PLAYER_APPLICATION_SETTING_CHANGED notification PDU
-		@param aAttributeID The specification or player defined attribute
-		@param aValue The current value
-		@leave KErrNotFound if the attribute is not defined,
-			KErrArgument if the value is not valid according to the definition
-		*/
-		IMPORT_C void SetAttributeL(TUint aAttributeID, TUint aValue);
-
-	private:
-		virtual void DoDefineAttributeL(TUint aAttributeID,
-										TDesC8& aAttributeText,
-										RArray<TUint> &aValues,
-										RArray<TPtrC8> &aValueTexts,
-										TUint aInitialValue) = 0;
-		virtual void DoSetAttributeL(TUint aAttributeID, TUint aValue) = 0;
-	
-	};
-
-/**
-This is a helper API allowing CPlayerApplicationSettings to be initialised
-via a resource file. Using a resource file may help to provide localised text
-for the attributes and values, according to current language setting of the phone.
-*/
-class PlayerApplicationSettingsResourceInit
-	{
-	public:
-	/**
-	Defines multiple attributes supported by this player, which are listed in a resource file.
-	@param aSettings The CPlayerApplicationSettings object on which the attributes should be defined
-	@param aResource A fully constructed CResourceFile
-	@leave KErrNoMemory, or leave from CResourceFile functions
-	*/
-	IMPORT_C static void DefineAttributesL(MPlayerApplicationSettingsObserver& aSettings, CResourceFile &aResource);
-	};
-
-/**
-This class supports the notification PDUs in AVRCP1.3 specification section 5.4,
-with the following exceptions:
-   EVENT_SYSTEM_STATUS_CHANGED is not supported, it is only for adaptors that plug into a media player
-   EVENT_PLAYER_APPLICATION_SETTING_CHANGED is supported through the CPlayerApplicationSettings API
-
-Events are pushed by the media player calling functions in this API, where they are
-cached until the controller pulls them via a GetPlayStatus or RegisterNotification PDU
-@see CPlayerApplicationSettings
-*/
-class MPlayerEventsObserver 
-	{
-	public:
-		enum TTargetBatteryStatus
-			{
-			ENormal     = 0,
-			EWarning    = 1,
-			ECritical   = 2,
-			EExternal   = 3,
-			EFullCharge = 4,
-			EUnknown	= 5
-			};	
-			
-		enum TPlaybackStatus
-			{
-			EStopped = 0,
-			EPlaying = 1,
-			EPaused = 2,
-			EFwdSeek = 3,
-			ERevSeek = 4,
-			EError = 0xFF
-			};
-
-		enum TPlayPosition
-			{
-			EStart = 0,
-			EMiddle = 1,
-			EEnd= 2,
-			};
-
-		static const TUint64 KNoTrackSelected = KMaxTUint64;
-
-		static const TUint32 KPlaybackPositionUnknown = 0xFFFFFFFF;
-		
-		/**
-		Call this function whenever the playback status changes.
-		It will be used to complete pending EVENT_PLAYBACK_STATUS_CHANGED
-		and EVENT_PLAYBACK_POS_CHANGED notifications.
-		The value is used to generate the response to a GetPlayStatus PDU.
-		@param aStatus The specification defined playback status
-		*/
-		IMPORT_C void PlaybackStatusChanged(TPlaybackStatus aStatus);
-		/**
-		Call this function whenever the current media track is changed.
-		use KNoTrackSelected to indicate that there is no media selected. 
-		This is the default value on construction. It will be used to
-		complete pending EVENT_TRACK_CHANGED and EVENT_PLAYBACK_POS_CHANGED notifications.
-		The values are used to generate the response to a GetPlayStatus PDU.
-		@param aTrackId A handle to the current track.
-		@param aLengthInMilliseconds The length of the current track.
-		*/
-		IMPORT_C void TrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds);
-		/**
-		Call this function whenever the current track reaches the end position,
-		e.g. due to playback or forward seek. It will be used to complete
-		pending EVENT_TRACK_REACHED_END and EVENT_PLAYBACK_POS_CHANGED notifications.
-		*/
-		IMPORT_C void TrackReachedEnd();
-		/**
-		Call this function whenever the current track reaches the start position,
-		e.g. due to reverse seek (rewind). It will be used to complete pending
-		EVENT_TRACK_REACHED_START and EVENT_PLAYBACK_POS_CHANGED notifications.
-		*/
-		IMPORT_C void TrackReachedStart();
-		/**
-		Call this function during playback or seek operations, to indicate the
-		current position within the track. It will be used to complete a pending
-		EVENT_PLAYBACK_POS_CHANGED notification. The value is used to generate the
-		response to a GetPlayStatus PDU.
-		@param aMilliseconds The current playback position. It is recommended to call
-		with a resolution <=1000ms to satisfy the 1s resolution of the notification
-		playback interval.
-		*/
-		IMPORT_C void SetPlaybackPosition(TUint32 aMilliseconds);
-
-		/**
-		Call this function to report the current battery status
-		@param aBatteryStatus The current battery status.
-		*/
-		IMPORT_C void SetBatteryStatus(TTargetBatteryStatus aBatteryStatus);
-		
-	private:
-		virtual void DoPlaybackStatusChanged(TPlaybackStatus aStatus) = 0;
-		virtual void DoTrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds) = 0;
-		virtual void DoTrackReachedEnd() = 0;
-		virtual void DoTrackReachedStart() = 0;
-		virtual void DoSetPlaybackPosition(TUint32 aMilliseconds) = 0;
-		virtual void DoSetBatteryStatus(TTargetBatteryStatus aBatteryStatus) = 0;
-	
-		
-	};
-
-/**
-Clients must implement this interface if they require callbacks 
-when the controller has changed the settings via a SetPASValue message
-*/
-class MPlayerApplicationSettingsNotify  
-	{
-	public:
-		/**
-		This is called when the controller has changed a setting
-		@param aAttributeID A list of attribute IDs whose value has changed.
-		@param aAttributeValue A list of new values for the attributes listed in aAttributeID.
-		*/
-		virtual void MpasnSetPlayerApplicationValueL(const RArray<TInt>& aAttributeID,
-													const RArray<TInt>& aAttributeValue)=0;
-	};
-	
-
-#endif // REMCONPLAYERINFORMATIONTARGETOBSERVER_H