Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
24 #ifndef REMCONPLAYERINFORMATIONTARGETOBSERVER_H
25 #define REMCONPLAYERINFORMATIONTARGETOBSERVER_H
28 #include <remcon/avrcpspec.h>
33 This class is used to define the capabilities of the current application,
34 and the implementation will generate AVRCP responses to the controller.
35 For the event part of the API, it is recommended to add all events which make
36 sense for the media player. In general, this will be everything except
37 ESystemStatusChanged. The company ID part of the API is only needed if
38 the media player needs to support vendor extensions other than bluetooth SIG.
39 The bluetooth SIG company ID is always included in responses to a COMPANY_ID request.
41 class MPlayerCapabilitiesObserver
45 Remove all notification events from the supported list
47 IMPORT_C void ClearEvents();
49 Add a notification event to the supported list of events
50 The AVRCP 1.3 specification mandates that PlaybackStatusChanged
51 and TrackChanged events must be supported; KErrAlreadyExists will
52 be returned if AddEvent() is called with either of these events.
53 @param aEvent the event to add
54 @return KErrAlreadyExists if the event is already present.
55 KErrNotSupported if the event isn't supported by the implementation, e.g.. ESystemStatusChanged
57 IMPORT_C TInt AddEvent(TRegisterNotificationEvent aEvent);
59 Remove a notification event from the supported list of events
60 The AVRCP 1.3 specification mandates that PlaybackStatusChanged
61 and TrackChanged events must be supported; KErrNotSupported will
62 be returned if RemoveEvent() is called with either of these events.
63 @param aEvent the event to remove
64 @return KErrNone if this completes successfully, KErrNotFound if aID
65 was not in the list, or any other system wide error code.
67 IMPORT_C TInt RemoveEvent(TRegisterNotificationEvent aEvent);
69 const static TInt KMaxCompanyID = 0xFFFFFF;
70 const static TInt KMaxNrOfCompanyIDs = 255;
73 Remove all additional company IDs from the supported list
75 IMPORT_C void ClearCompanyIds();
77 Add a company id to the supported list of company ids.
78 The AVRCP 1.3 specification mandates that the Bluetooth SIG vendor id
79 must be supported; KErrAlreadyExists will be returned if AddCompanyId()
80 is called with this company id.
81 @param aID the id to add
82 @return KErrNone if this completes successfully,
83 KErrAlreadyExists if aID is already present,
84 KErrOverflow if the maximum number of company ids are already listed,
85 or any other system wide error code.
87 IMPORT_C TInt AddCompanyId(TInt aID);
89 Remove a company id from the list of supported vendor extensions.
90 The Bluetooth SIG id can't be removed, as this must always be supported
91 @param aID the id to remove
92 @return KErrNone if this completes successfully, KErrNotFound if aID
93 was not in the list, or any other system wide error code.
95 IMPORT_C TInt RemoveCompanyID(TInt aID);
98 virtual void DoClearEvents() = 0;
99 virtual TInt DoAddEvent(TRegisterNotificationEvent aEvent) = 0;
100 virtual TInt DoRemoveEvent(TRegisterNotificationEvent aEvent) = 0;
101 virtual void DoClearCompanyIds() = 0;
102 virtual TInt DoAddCompanyId(TInt aID) = 0;
103 virtual TInt DoRemoveCompanyID(TInt aID) = 0;
107 This class is for supporting the player application settings PDUs in AVRCP1.3
108 specification section 5.2. The RegisterNotification PDU for
109 EVENT_PLAYER_APPLICATION_SETTING_CHANGED is also supported through this API.
111 The media player should first define all the attributes it supports, using
112 DefineAttributeL. When an attribute's value is changed by the media player,
113 it should call SetAttributeL to inform the controller. When the controller
114 changes a setting, the media player application receives a callback via the
115 MPlayerApplicationSettingsNotify interface
117 class MPlayerApplicationSettingsObserver
121 Define an attribute supported by this player.
122 It will be included in future responses to the following PDUs:
123 ListPlayerApplicationSettingAttributes,
124 ListPlayerApplicationSettingValues,
125 GetCurrentPlayerApplicationSettingValue,
126 GetPlayerApplicationSettingAttributeText,
127 GetPlayerApplicationSettingValueText,
128 @param aAttributeID The specification or player defined attribute
129 @param aAttributeText The UTF8 text name of the attribute(allowed text length is 1-255) - the API will take a copy
130 @param aValues The list of defined values
131 @param aValueTexts The UTF8 text for each defined value(allowed text length is 1-255) - The API will make copies.
132 @param aInitialValue The initial value for this attribute
133 @leave KErrNoMemory if memory could not be allocated to store the copies of aAttributeID and relative settings
134 @leave KErrNotSupported if attribute or value is out of specification defined range,
135 or aValueTexts is not equal length to aValues
137 IMPORT_C void DefineAttributeL(TUint aAttributeID,
138 TDesC8& aAttributeText,
139 RArray<TUint> &aValues,
140 RArray<TPtrC8> &aValueTexts,
141 TUint aInitialValue);
144 Set the current value of a previously defined attribute
145 This updates the cache and will cause completion of a
146 pending EVENT_PLAYER_APPLICATION_SETTING_CHANGED notification PDU
147 @param aAttributeID The specification or player defined attribute
148 @param aValue The current value
149 @leave KErrNotFound if the attribute is not defined,
150 KErrArgument if the value is not valid according to the definition
152 IMPORT_C void SetAttributeL(TUint aAttributeID, TUint aValue);
155 virtual void DoDefineAttributeL(TUint aAttributeID,
156 TDesC8& aAttributeText,
157 RArray<TUint> &aValues,
158 RArray<TPtrC8> &aValueTexts,
159 TUint aInitialValue) = 0;
160 virtual void DoSetAttributeL(TUint aAttributeID, TUint aValue) = 0;
165 This is a helper API allowing CPlayerApplicationSettings to be initialised
166 via a resource file. Using a resource file may help to provide localised text
167 for the attributes and values, according to current language setting of the phone.
169 class PlayerApplicationSettingsResourceInit
173 Defines multiple attributes supported by this player, which are listed in a resource file.
174 @param aSettings The CPlayerApplicationSettings object on which the attributes should be defined
175 @param aResource A fully constructed CResourceFile
176 @leave KErrNoMemory, or leave from CResourceFile functions
178 IMPORT_C static void DefineAttributesL(MPlayerApplicationSettingsObserver& aSettings, CResourceFile &aResource);
182 This class supports the notification PDUs in AVRCP1.3 specification section 5.4,
183 with the following exceptions:
184 EVENT_SYSTEM_STATUS_CHANGED is not supported, it is only for adaptors that plug into a media player
185 EVENT_PLAYER_APPLICATION_SETTING_CHANGED is supported through the CPlayerApplicationSettings API
187 Events are pushed by the media player calling functions in this API, where they are
188 cached until the controller pulls them via a GetPlayStatus or RegisterNotification PDU
189 @see CPlayerApplicationSettings
191 class MPlayerEventsObserver
194 enum TTargetBatteryStatus
221 static const TUint64 KNoTrackSelected = KMaxTUint64;
223 static const TUint32 KPlaybackPositionUnknown = 0xFFFFFFFF;
226 Call this function whenever the playback status changes.
227 It will be used to complete pending EVENT_PLAYBACK_STATUS_CHANGED
228 and EVENT_PLAYBACK_POS_CHANGED notifications.
229 The value is used to generate the response to a GetPlayStatus PDU.
230 @param aStatus The specification defined playback status
232 IMPORT_C void PlaybackStatusChanged(TPlaybackStatus aStatus);
234 Call this function whenever the current media track is changed.
235 use KNoTrackSelected to indicate that there is no media selected.
236 This is the default value on construction. It will be used to
237 complete pending EVENT_TRACK_CHANGED and EVENT_PLAYBACK_POS_CHANGED notifications.
238 The values are used to generate the response to a GetPlayStatus PDU.
239 @param aTrackId A handle to the current track.
240 @param aLengthInMilliseconds The length of the current track.
242 IMPORT_C void TrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds);
244 Call this function whenever the current track reaches the end position,
245 e.g. due to playback or forward seek. It will be used to complete
246 pending EVENT_TRACK_REACHED_END and EVENT_PLAYBACK_POS_CHANGED notifications.
248 IMPORT_C void TrackReachedEnd();
250 Call this function whenever the current track reaches the start position,
251 e.g. due to reverse seek (rewind). It will be used to complete pending
252 EVENT_TRACK_REACHED_START and EVENT_PLAYBACK_POS_CHANGED notifications.
254 IMPORT_C void TrackReachedStart();
256 Call this function during playback or seek operations, to indicate the
257 current position within the track. It will be used to complete a pending
258 EVENT_PLAYBACK_POS_CHANGED notification. The value is used to generate the
259 response to a GetPlayStatus PDU.
260 @param aMilliseconds The current playback position. It is recommended to call
261 with a resolution <=1000ms to satisfy the 1s resolution of the notification
264 IMPORT_C void SetPlaybackPosition(TUint32 aMilliseconds);
267 Call this function to report the current battery status
268 @param aBatteryStatus The current battery status.
270 IMPORT_C void SetBatteryStatus(TTargetBatteryStatus aBatteryStatus);
273 virtual void DoPlaybackStatusChanged(TPlaybackStatus aStatus) = 0;
274 virtual void DoTrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds) = 0;
275 virtual void DoTrackReachedEnd() = 0;
276 virtual void DoTrackReachedStart() = 0;
277 virtual void DoSetPlaybackPosition(TUint32 aMilliseconds) = 0;
278 virtual void DoSetBatteryStatus(TTargetBatteryStatus aBatteryStatus) = 0;
284 Clients must implement this interface if they require callbacks
285 when the controller has changed the settings via a SetPASValue message
287 class MPlayerApplicationSettingsNotify
291 This is called when the controller has changed a setting
292 @param aAttributeID A list of attribute IDs whose value has changed.
293 @param aAttributeValue A list of new values for the attributes listed in aAttributeID.
295 virtual void MpasnSetPlayerApplicationValueL(const RArray<TInt>& aAttributeID,
296 const RArray<TInt>& aAttributeValue)=0;
300 #endif // REMCONPLAYERINFORMATIONTARGETOBSERVER_H