--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/remotecontrol/avrcp/remconbeareravrcp/src/playerbitmasks.cpp Wed Oct 13 16:20:29 2010 +0300
@@ -0,0 +1,337 @@
+// Copyright (c) 2008-2010 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:
+// TPlayerFeatureBitmask.cpp
+//
+
+#include <remconcoreapi.h>
+#include "avrcplog.h"
+#include "avrcputils.h"
+#include "mediabrowse.h"
+#include "nowplaying.h"
+#include "playerbitmasks.h"
+#include "remcongroupnavigation.h"
+
+
+TPlayerFeatureBitmask::TPlayerFeatureBitmask()
+ {
+ iFeatureBitmask.FillZ(KFeatureBitmaskLength);
+ }
+
+TPlayerFeatureBitmask::TPlayerFeatureBitmask(const TPlayerFeatureBitmask& aFeatureBitmask)
+ {
+ iFeatureBitmask.Copy(aFeatureBitmask.FeatureBitmask());
+ }
+
+void TPlayerFeatureBitmask::SetCoreApiFeatures(const RArray<TUint>& aOperation)
+ {
+ if(aOperation.Count() > 0)
+ {
+ for(TInt j = 0; j< aOperation.Count() ; j++)
+ {
+ switch(aOperation[j])
+ {
+ case ERemConCoreApiSelect:
+ iFeatureBitmask[ESelectByteOffset] |= (1<<ESelectBitOffset);
+ break;
+ case ERemConCoreApiUp:
+ iFeatureBitmask[EUpByteOffset]|= (1<<EUpBitOffset);
+ break;
+ case ERemConCoreApiDown:
+ iFeatureBitmask[EDownByteOffset]|= (1<<EDownBitOffset);
+ break;
+ case ERemConCoreApiLeft:
+ iFeatureBitmask[ELeftByteOffset]|= (1<<ELeftBitOffset);
+ break;
+ case ERemConCoreApiRight:
+ iFeatureBitmask[ERightByteOffset]|= (1<<ERightBitOffset);
+ break;
+ case ERemConCoreApiRightUp:
+ iFeatureBitmask[ERightUpByteOffset]|= (1<<ERightUpBitOffset);
+ break;
+ case ERemConCoreApiRightDown:
+ iFeatureBitmask[ERightDownByteOffset]|= (1<<ERightDownBitOffset);
+ break;
+ case ERemConCoreApiLeftUp:
+ iFeatureBitmask[ELeftUpByteOffset]|= (1<<ELeftUpBitOffset);
+ break;
+ case ERemConCoreApiLeftDown:
+ iFeatureBitmask[ELeftDownByteOffset]|= (1<<ELeftDownBitOffset);
+ break;
+ case ERemConCoreApiRootMenu:
+ iFeatureBitmask[ERootMenuByteOffset]|= (1<<ERootMenuBitOffset);
+ break;
+ case ERemConCoreApiSetupMenu:
+ iFeatureBitmask[ESetupMenuByteOffset]|= (1<<ESetupMenuBitOffset);
+ break;
+ case ERemConCoreApiContentsMenu:
+ iFeatureBitmask[EContentsMenuByteOffset]|= (1<<EContentsMenuBitOffset);
+ break;
+ case ERemConCoreApiFavoriteMenu:
+ iFeatureBitmask[EFavoriteMenuByteOffset]|= (1<<EFavoriteMenuBitOffset);
+ break;
+ case ERemConCoreApiExit:
+ iFeatureBitmask[EExitByteOffset]|= (1<<EExitBitOffset);
+ break;
+ case ERemConCoreApi0:
+ iFeatureBitmask[E0ByteOffset]|= (1<<E0BitOffset);
+ break;
+ case ERemConCoreApi1:
+ iFeatureBitmask[E1ByteOffset]|= (1<<E1BitOffset);
+ break;
+ case ERemConCoreApi2:
+ iFeatureBitmask[E2ByteOffset]|= (1<<E2BitOffset);
+ break;
+ case ERemConCoreApi3:
+ iFeatureBitmask[E3ByteOffset]|= (1<<E3BitOffset);
+ break;
+ case ERemConCoreApi4:
+ iFeatureBitmask[E4ByteOffset]|= (1<<E4BitOffset);
+ break;
+ case ERemConCoreApi5:
+ iFeatureBitmask[E5ByteOffset]|= (1<<E5BitOffset);
+ break;
+ case ERemConCoreApi6:
+ iFeatureBitmask[E6ByteOffset]|= (1<<E6BitOffset);
+ break;
+ case ERemConCoreApi7:
+ iFeatureBitmask[E7ByteOffset]|= (1<<E7BitOffset);
+ break;
+ case ERemConCoreApi8:
+ iFeatureBitmask[E8ByteOffset]|= (1<<E8BitOffset);
+ break;
+ case ERemConCoreApi9:
+ iFeatureBitmask[E9ByteOffset]|= (1<<E9BitOffset);
+ break;
+ case ERemConCoreApiDot:
+ iFeatureBitmask[EDotByteOffset]|= (1<<EDotBitOffset);
+ break;
+ case ERemConCoreApiEnter:
+ iFeatureBitmask[EEnterByteOffset]|= (1<<EEnterBitOffset);
+ break;
+ case ERemConCoreApiClear:
+ iFeatureBitmask[EClearByteOffset]|= (1<<EClearBitOffset);
+ break;
+ case ERemConCoreApiChannelUp:
+ iFeatureBitmask[EChannelUpByteOffset]|= (1<<EChannelUpBitOffset);
+ break;
+ case ERemConCoreApiChannelDown:
+ iFeatureBitmask[EChannelDownByteOffset]|= (1<<EChannelDownBitOffset);
+ break;
+ case ERemConCoreApiPreviousChannel:
+ iFeatureBitmask[EPreviousChannelByteOffset]|= (1<<EPreviousChannelBitOffset);
+ break;
+ case ERemConCoreApiSoundSelect:
+ iFeatureBitmask[ESoundSelectByteOffset]|= (1<<ESoundSelectBitOffset);
+ break;
+ case ERemConCoreApiInputSelect:
+ iFeatureBitmask[EInputSelectByteOffset]|= (1<<EInputSelectBitOffset);
+ break;
+ case ERemConCoreApiDisplayInformation:
+ iFeatureBitmask[EDisplayInformationByteOffset]|= (1<<EDisplayInformationBitOffset);
+ break;
+ case ERemConCoreApiHelp:
+ iFeatureBitmask[EHelpByteOffset]|= (1<<EHelpBitOffset);
+ break;
+ case ERemConCoreApiPageUp:
+ iFeatureBitmask[EPageUpByteOffset]|= (1<<EPageUpBitOffset);
+ break;
+ case ERemConCoreApiPageDown:
+ iFeatureBitmask[EPageDownByteOffset]|= (1<<EPageDownBitOffset);
+ break;
+ case ERemConCoreApiPower:
+ iFeatureBitmask[EPowerByteOffset]|= (1<<EPowerBitOffset);
+ break;
+ case ERemConCoreApiVolumeUp:
+ iFeatureBitmask[EVolumeUpByteOffset]|= (1<<EVolumeUpBitOffset);
+ break;
+ case ERemConCoreApiVolumeDown:
+ iFeatureBitmask[EVolumeDownByteOffset]|= (1<<EVolumeDownBitOffset);
+ break;
+ case ERemConCoreApiMute:
+ iFeatureBitmask[EMuteByteOffset]|= (1<<EMuteBitOffset);
+ break;
+ case ERemConCoreApiPlay:
+ iFeatureBitmask[EPlayByteOffset]|= (1<<EPlayBitOffset);
+ break;
+ case ERemConCoreApiStop:
+ iFeatureBitmask[EStopByteOffset]|= (1<<EStopBitOffset);
+ break;
+ case ERemConCoreApiPause:
+ iFeatureBitmask[EPauseByteOffset]|= (1<<EPauseBitOffset);
+ break;
+ case ERemConCoreApiRecord:
+ iFeatureBitmask[ERecordByteOffset]|= (1<<ERecordBitOffset);
+ break;
+ case ERemConCoreApiRewind:
+ iFeatureBitmask[ERewindByteOffset]|= (1<<ERewindBitOffset);
+ break;
+ case ERemConCoreApiFastForward:
+ iFeatureBitmask[EFastForwardByteOffset]|= (1<<EFastForwardBitOffset);
+ break;
+ case ERemConCoreApiEject:
+ iFeatureBitmask[EEjectByteOffset]|= (1<<EEjectBitOffset);
+ break;
+ case ERemConCoreApiForward:
+ iFeatureBitmask[EForwardByteOffset]|= (1<<EForwardBitOffset);
+ break;
+ case ERemConCoreApiBackward:
+ iFeatureBitmask[EBackwardByteOffset]|= (1<<EBackwardBitOffset);
+ break;
+ case ERemConCoreApiAngle:
+ iFeatureBitmask[EAngleByteOffset]|= (1<<EAngleBitOffset);
+ break;
+ case ERemConCoreApiSubpicture:
+ iFeatureBitmask[ESubpictureByteOffset]|= (1<<ESubpictureBitOffset);
+ break;
+ case ERemConCoreApiF1:
+ iFeatureBitmask[EF1ByteOffset]|= (1<<EF1BitOffset);
+ break;
+ case ERemConCoreApiF2:
+ iFeatureBitmask[EF2ByteOffset]|= (1<<EF2BitOffset);
+ break;
+ case ERemConCoreApiF3:
+ iFeatureBitmask[EF3ByteOffset]|= (1<<EF3BitOffset);
+ break;
+ case ERemConCoreApiF4:
+ iFeatureBitmask[EF4ByteOffset]|= (1<<EF4BitOffset);
+ break;
+ case ERemConCoreApiF5:
+ iFeatureBitmask[EF5ByteOffset]|= (1<<EF5BitOffset);
+ break;
+ default:
+ // Ignore operations that aren't recorded in feature bitmask
+ break;
+ }
+ }
+ }
+ else
+ {
+ // Don't know specific info, set all operations
+ SetCoreApiFeatures();
+ }
+ }
+
+void TPlayerFeatureBitmask::SetCoreApiFeatures()
+ {
+ iFeatureBitmask[ESelectByteOffset] |= (1<<ESelectBitOffset);
+ iFeatureBitmask[EUpByteOffset]|= (1<<EUpBitOffset);
+ iFeatureBitmask[EDownByteOffset]|= (1<<EDownBitOffset);
+ iFeatureBitmask[ELeftByteOffset]|= (1<<ELeftBitOffset);
+ iFeatureBitmask[ERightByteOffset]|= (1<<ERightBitOffset);
+ iFeatureBitmask[ERightUpByteOffset]|= (1<<ERightUpBitOffset);
+ iFeatureBitmask[ERightDownByteOffset]|= (1<<ERightDownBitOffset);
+ iFeatureBitmask[ELeftUpByteOffset]|= (1<<ELeftUpBitOffset);
+ iFeatureBitmask[ELeftDownByteOffset]|= (1<<ELeftDownBitOffset);
+ iFeatureBitmask[ERootMenuByteOffset]|= (1<<ERootMenuBitOffset);
+ iFeatureBitmask[ESetupMenuByteOffset]|= (1<<ESetupMenuBitOffset);
+ iFeatureBitmask[EContentsMenuByteOffset]|= (1<<EContentsMenuBitOffset);
+ iFeatureBitmask[EFavoriteMenuByteOffset]|= (1<<EFavoriteMenuBitOffset);
+ iFeatureBitmask[EExitByteOffset]|= (1<<EExitBitOffset);
+ iFeatureBitmask[E0ByteOffset]|= (1<<E0BitOffset);
+ iFeatureBitmask[E1ByteOffset]|= (1<<E1BitOffset);
+ iFeatureBitmask[E2ByteOffset]|= (1<<E2BitOffset);
+ iFeatureBitmask[E3ByteOffset]|= (1<<E3BitOffset);
+ iFeatureBitmask[E4ByteOffset]|= (1<<E4BitOffset);
+ iFeatureBitmask[E5ByteOffset]|= (1<<E5BitOffset);
+ iFeatureBitmask[E6ByteOffset]|= (1<<E6BitOffset);
+ iFeatureBitmask[E7ByteOffset]|= (1<<E7BitOffset);
+ iFeatureBitmask[E8ByteOffset]|= (1<<E8BitOffset);
+ iFeatureBitmask[E9ByteOffset]|= (1<<E9BitOffset);
+ iFeatureBitmask[EDotByteOffset]|= (1<<EDotBitOffset);
+ iFeatureBitmask[EEnterByteOffset]|= (1<<EEnterBitOffset);
+ iFeatureBitmask[EClearByteOffset]|= (1<<EClearBitOffset);
+ iFeatureBitmask[EChannelUpByteOffset]|= (1<<EChannelUpBitOffset);
+ iFeatureBitmask[EChannelDownByteOffset]|= (1<<EChannelDownBitOffset);
+ iFeatureBitmask[EPreviousChannelByteOffset]|= (1<<EPreviousChannelBitOffset);
+ iFeatureBitmask[ESoundSelectByteOffset]|= (1<<ESoundSelectBitOffset);
+ iFeatureBitmask[EInputSelectByteOffset]|= (1<<EInputSelectBitOffset);
+ iFeatureBitmask[EDisplayInformationByteOffset]|= (1<<EDisplayInformationBitOffset);
+ iFeatureBitmask[EHelpByteOffset]|= (1<<EHelpBitOffset);
+ iFeatureBitmask[EPageUpByteOffset]|= (1<<EPageUpBitOffset);
+ iFeatureBitmask[EPageDownByteOffset]|= (1<<EPageDownBitOffset);
+ iFeatureBitmask[EPowerByteOffset]|= (1<<EPowerBitOffset);
+ iFeatureBitmask[EVolumeUpByteOffset]|= (1<<EVolumeUpBitOffset);
+ iFeatureBitmask[EVolumeDownByteOffset]|= (1<<EVolumeDownBitOffset);
+ iFeatureBitmask[EMuteByteOffset]|= (1<<EMuteBitOffset);
+ iFeatureBitmask[EPlayByteOffset]|= (1<<EPlayBitOffset);
+ iFeatureBitmask[EStopByteOffset]|= (1<<EStopBitOffset);
+ iFeatureBitmask[EPauseByteOffset]|= (1<<EPauseBitOffset);
+ iFeatureBitmask[ERecordByteOffset]|= (1<<ERecordBitOffset);
+ iFeatureBitmask[ERewindByteOffset]|= (1<<ERewindBitOffset);
+ iFeatureBitmask[EFastForwardByteOffset]|= (1<<EFastForwardBitOffset);
+ iFeatureBitmask[EEjectByteOffset]|= (1<<EEjectBitOffset);
+ iFeatureBitmask[EForwardByteOffset]|= (1<<EForwardBitOffset);
+ iFeatureBitmask[EBackwardByteOffset]|= (1<<EBackwardBitOffset);
+ iFeatureBitmask[EAngleByteOffset]|= (1<<EAngleBitOffset);
+ iFeatureBitmask[ESubpictureByteOffset]|= (1<<ESubpictureBitOffset);
+ iFeatureBitmask[EF1ByteOffset]|= (1<<EF1BitOffset);
+ iFeatureBitmask[EF2ByteOffset]|= (1<<EF2BitOffset);
+ iFeatureBitmask[EF3ByteOffset]|= (1<<EF3BitOffset);
+ iFeatureBitmask[EF4ByteOffset]|= (1<<EF4BitOffset);
+ iFeatureBitmask[EF5ByteOffset]|= (1<<EF5BitOffset);
+ }
+
+void TPlayerFeatureBitmask::SetAbsoluteVolumeApiFeatures(const RArray<TUint>& aOperation)
+ {
+ if(aOperation.Count())
+ {
+ iFeatureBitmask[EAdvancedControlPlayerByteOffset] |= (1<<EAdvancedControlPlayerBitOffset);
+ }
+ }
+
+void TPlayerFeatureBitmask::SetGroupNavigationApiFeatures(const RArray<TUint>& aOperation)
+ {
+ if(aOperation.Count())
+ {
+ iFeatureBitmask[EVendorUniqueByteOffset] |= (1<<EVendorUniqueBitOffset);
+ iFeatureBitmask[EGroupNavigationByteOffset] |= (1<<EGroupNavigationBitOffset);
+ }
+ }
+
+void TPlayerFeatureBitmask::SetNowPlayingApiFeatures(const RArray<TUint>& aOperation)
+ {
+ if(aOperation.Count())
+ {
+ iFeatureBitmask[EAdvancedControlPlayerByteOffset] |= (1<<EAdvancedControlPlayerBitOffset);
+ iFeatureBitmask[ENowPlayingByteOffset] |= (1<<ENowPlayingBitOffset);
+
+ if(aOperation.Find(EAddToNowPlaying) >= 0)
+ {
+ iFeatureBitmask[EAddToNowPlayingByteOffset] |= (1<<EAddToNowPlayingBitOffset);
+ }
+ }
+ }
+
+void TPlayerFeatureBitmask::SetMediaBrowseApiFeatures(const RArray<TUint>& aOperation)
+ {
+ if(aOperation.Count())
+ {
+ iFeatureBitmask[EAdvancedControlPlayerByteOffset] |= (1<<EAdvancedControlPlayerBitOffset);
+ iFeatureBitmask[ENowPlayingByteOffset] |= (1<<ENowPlayingBitOffset);
+ iFeatureBitmask[EBrowsingByteOffset] |= (1<<EBrowsingBitOffset);
+
+ if(aOperation.Find(ESearchOperationId) >= 0)
+ {
+ iFeatureBitmask[ESearchByteOffset] |= (1<<ESearchBitOffset);
+ }
+
+ if(aOperation.Find(EUIDPersistency) >= 0)
+ {
+ iFeatureBitmask[EUidPersistencyByteOffset] |= (1<<EUidPersistencyBitOffset);
+ iFeatureBitmask[EDatabaseAwareByteOffset] |= (1<<EDatabaseAwareBitOffset);
+ }
+ }
+ }
+
+