--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/gavdp/test/tavsrc.h Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,305 @@
+// 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:
+//
+
+#ifndef TAVSRC_H
+#define TAVSRC_H
+
+//only use define CHANNEL_BINDING_DEBUG_CHECK when checking channel binding
+//#define CHANNEL_BINDING_DEBUG_CHECK
+
+#define __PRINT iActiveConsole->Console().Printf
+#define __LOG iLogConsole->Console().Printf /*RDebug::Print*/
+
+#include "tavsrcConsole.h"
+#include "tavsrcStreamerUser.h"
+#include "tavsrcOperations.h"
+
+#include <f32file.h>
+#include <btsdp.h>
+#include <rtp.h>
+#include <gavdp.h>
+#include <remconcoreapitargetobserver.h>
+#include <remcongroupnavigationtarget.h>
+#include <remcongroupnavigationtargetobserver.h>
+
+#include <remconmediainformationtarget.h>
+#include <remconmediainformationtargetobserver.h>
+
+#include <remconbatterytarget.h>
+#include <remconbatterytargetobserver.h>
+
+#include <playerinformationtarget.h>
+#include <playerinformationtargetobserver.h>
+
+#include <remconabsvoltargetobserver.h>
+#include <remcontrackinfotargetobserver.h>
+
+enum TRemConInterfaces
+ {
+ ECoreApiTarget = 1 << 0,
+ ECoreApiController = 1 << 1,
+ EGroupNavigation = 1 << 2,
+ EMediaInformation = 1 << 3,
+ EBatteryStatus = 1 << 4,
+ EAbsoluteVolumeTarget = 1 << 5,
+ EAbsoluteVolumeController = 1 << 6,
+ EPlayerInformation = 1 << 7,
+ ENowPlaying = 1 << 8,
+ EMediaBrowse = 1 << 9,
+ EDatabaseAware = 1 << 10,
+ ESeparateThreadForBrowse = 1 << 11,
+ EVendorTrackInfoTarget = 1 << 12,
+ EVendorAbsoluteVolumeTarget = 1 << 13,
+ };
+
+
+typedef TFixedArray<RSocket, 3> RSocketArray;
+
+class CActivePacketDropIoctl;
+class CActiveSockReader;
+class CActiveSockWriter;
+class CRemMetadataTransferTarget;
+class CAVTestApp;
+class CActiveStreamer;
+class CTavsrcController;
+class CRemConInterfaceSelector;
+class CRemConCoreApiTarget;
+class CRemConTrackInfoTarget;
+class CRemConAbsVolTarget;
+class CTavsrcMtUpdater;
+class CTavsrcAbsoluteVolume;
+class CAVTestApp : public CBase, public MActiveConsoleNotify,
+ public MGavdpUser, public MBluetoothPhysicalLinksNotifier,
+ public MRemConCoreApiTargetObserver,
+ public MActiveStreamerUser,
+ public MRemConMediaInformationTargetObserver,
+ public MRemConGroupNavigationTargetObserver,
+ public MRemConBatteryTargetObserver,
+ public MRemConTrackInfoTargetObserver,
+ public MRemConAbsVolTargetObserver
+ {
+private:
+ enum TTavsrcServiceCategory
+ {
+ ETavsrcServiceCategoryNull =0x00,
+ ETavsrcServiceCategoryMediaTransport =0x01,
+ ETavsrcServiceCategoryReporting =0x02,
+ ETavsrcServiceCategoryRecovery =0x04,
+ ETavsrcServiceCategoryContentProtection =0x08,
+ ETavsrcServiceCategoryHeaderCompression =0x10,
+ ETavsrcServiceCategoryMultiplexing =0x20,
+ ETavsrcServiceCategoryMediaCodec =0x40,
+ };
+public:
+ static CAVTestApp* NewL();
+ void EchoStorm();
+
+ void StartL();
+ void Stop();
+ ~CAVTestApp();
+ void TestMenu();
+
+ void KeyPressed(TChar aKey);
+
+ TInt StartSrc();
+ void StopSrc();
+ void DisconnectSrc();
+
+ // echo test
+ virtual void HandleCreateConnectionCompleteL(TInt aErr);
+ virtual void HandleDisconnectCompleteL(TInt aErr);
+ virtual void HandleDisconnectAllCompleteL(TInt aErr);
+
+private:
+ void PreventLowPowerModes();
+ void AllowLowPowerModes();
+ void CreateBearers();
+ void CloseBearers();
+ void ConfigureSEPL();
+ void Abort();
+ void DiscoverSEPs();
+ void StartStreams();
+ void SuspendStreams();
+ void GetCapabilities();
+ void SendSecurityControl();
+ TSBCCodecCapabilities InteractiveSBCMediaCodecConfig(TSBCCodecCapabilities& caps);
+
+ void PrintCommandOption(TChar aOperation, TPtrC aDesc);
+
+ void CreateStreamerL(RSocketArray aSockets);
+ void CreateRemConInterfacesL();
+
+ void Connect();
+ TInt Listen();
+ TInt RegisterSEP();
+
+ CAVTestApp();
+ void ConstructL();
+
+ //return ETrue if current SEP is sink, EFalse otherwise
+ TBool CurrentSEIDIsSink();
+
+ void DisplayHelp();
+ void ParseCommandLineL();
+
+private:
+ // GAVDP callbacks
+ virtual void GAVDP_SEPDiscovered(const TAvdtpSEPInfo& aSEP);
+ virtual void GAVDP_SEPDiscoveryComplete();
+ virtual void GAVDP_SEPCapability(TAvdtpServiceCapability* aCapability);
+ virtual void GAVDP_SEPCapabilityComplete();
+ virtual void GAVDP_AbortStreamConfirm();
+ virtual void GAVDP_StartStreamsConfirm();
+ virtual void GAVDP_SuspendStreamsConfirm();
+ virtual void GAVDP_SecurityControlConfirm(const TDesC8& aResponseData);
+ virtual void GAVDP_ConfigurationConfirm(); // configuration complete and SEP selected *AND* reconfigure confirm
+ virtual void GAVDP_Error(TInt aError, const TDesC8& aErrorData);
+ virtual void GAVDP_ConnectConfirm(const TBTDevAddr& aAddr);
+
+ virtual void GAVDP_ConfigurationStartIndication(TSEID aLocalSEID, TSEID aRemoteSEID);
+ virtual TInt GAVDP_ConfigurationIndication(TAvdtpServiceCapability* aCapability);
+ virtual TInt GAVDP_ConfigurationEndIndication();
+
+ virtual TInt GAVDP_StartIndication(TSEID aSEID);
+ virtual TInt GAVDP_SuspendIndication(TSEID aSEID);
+ virtual TInt GAVDP_SecurityControlIndication(TSEID aSEID, TDes8& aSecurityData);
+ virtual void GAVDP_AbortIndication(TSEID aSEID);
+ virtual void GAVDP_ReleaseIndication(TSEID aSEID);
+ virtual void GAVDP_BearerReady(RSocket aNewSocket, const TAvdtpSockAddr& aAddr);
+
+ void PrettyPrint(TAvdtpServiceCapability& aCapability);
+
+private:
+ // RemConCoreApiTarget callbacks
+ virtual void MrccatoCommand(TRemConCoreApiOperationId aOperationId, TRemConCoreApiButtonAction aButtonAct);
+ virtual void MrccatoPlay(TRemConCoreApiPlaybackSpeed aSpeed, TRemConCoreApiButtonAction aButtonAct);
+
+private:
+ // from MActiveStreamerUser
+ virtual void MediaCodecConfigurationRequired(TSBCCodecCapabilities& aConfig);
+
+ virtual TInt MrcmtcGetElementAttributes(TUint64 aElement, TUint32 aAttribute, HBufC8*& aOutValueOwnershipTransferred);
+
+ // from MRemConGroupNavigationTargetObserver
+ virtual void MrcgntoNextGroup(TRemConCoreApiButtonAction aButtonAct);
+ virtual void MrcgntoPreviousGroup(TRemConCoreApiButtonAction aButtonAct);
+ virtual void MrcbstoBatteryStatus(TControllerBatteryStatus& aBatteryStatus);
+
+ // from MRemConMediaInformationTargetObserver
+ virtual void MrcmitoGetCurrentlyPlayingMetadata( TMediaAttributeIter& aAttributeIter );
+
+ virtual void MrcncRegisterPlaybackStatusChangedNotification();
+ virtual void MrcncRegisterTrackChangedNotification();
+ virtual void MrcncRegisterTrackReachedEndNotification();
+ virtual void MrcncRegisterTrackReachedStartNotification();
+ virtual void MrcncRegisterPositionChangedNotification(TUint32 aInterval);
+ virtual void MrcncRegisterBatteryStatusChangedNotification();
+ virtual void MrcncRegisterSystemStatusChangedNotification();
+ virtual void MrcncRegisterPlayerApplicationStatusChangedNotification();
+
+ virtual void MrcavtoGetAbsoluteVolume();
+ virtual void MrcavtoSetAbsoluteVolume(TUint /*aAbsVol*/, TUint /*aMaxVol*/);
+
+ virtual void MrctitoGetTrackName();
+ virtual void MrctitoGetArtist();
+ virtual void MrctitoGetTrackDuration();
+
+private:
+ CActiveConsole* iActiveConsole;
+ CActiveConsole* iLogConsole;
+ CTavsrcMtUpdater* iMtUpdater;
+
+ RSocketServ iSockServ;
+
+#ifdef CHANNEL_BINDING_DEBUG_CHECK
+ CActiveSockReader* iRepReader;
+ CActiveSockWriter* iRepWriter;
+ CActiveSockReader* iRecvReader;
+ CActiveSockWriter* iRecvWriter;
+#endif
+
+ CActivePacketDropIoctl* iPacketDropIoctl;
+
+ RGavdp iGavdp;
+
+ TSEID iCurrentSEID; // Current Remote SEID
+ TSEID iCurrentLocalSEID; // Current Local SEID
+
+ RPointerArray<TAvdtpServiceCapability> iSEPCapabilities; // only held for one SEP at a time in this test code
+
+ RArray<TSEID> iShortlistedSEIDs; // for finding good remote SEP
+ TBool iChosenSEP;
+
+ RArray<TAvdtpSEPInfo> iLocallyRegisteredSEPs;
+ TBool iRegisteringLocalSEP;
+
+ CActiveStreamer* iStreamer;
+ RSocketArray iPendingSockets;
+
+ CRemConInterfaceSelector* iRemConInterfaceSelector;
+ CRemConCoreApiTarget* iRemConTarget;
+ CRemConGroupNavigationApiTarget* iGroupNavigation;
+ CRemConMediaInformationTarget* iMediaInformation;
+ CRemConBatteryApiTarget* iBatteryStatus;
+ CRemConTrackInfoTarget* iTrackInfo;
+ CRemConAbsVolTarget* iAbsoluteVolume;
+ CTavsrcAbsoluteVolume* iTavsrcAbsoluteVolume;
+
+ RSdp iSdp;
+ RSdpDatabase iSdpDB;
+ TSdpServRecordHandle iSrcHandle;
+ TSdpServRecordHandle iSnkHandle;
+
+ TBool iAutoStream;
+
+ enum TGavdpState
+ {
+ ENoClientOpen,
+ EIdle,
+ ESigConnected,
+ EOpen,
+ ESuspended,
+ ERemoteReconfiguring,
+ };
+
+ enum TStreamState
+ {
+ EClosed,
+ EStreaming,
+ EPaused,
+ EStopped,
+ };
+
+ TGavdpState iGavdpState;
+ TStreamState iStreamState;
+
+ TSBCCodecCapabilities iReconfigInfo;
+ TBool iLocalReconfigure;
+
+ TUint iDisplayMode;
+ TBool iPreloadFile;
+
+ CTavsrcController* iController;
+ TBTDevAddr iDevAddr;
+
+ CTavsrcOperations* iOperations;
+
+ RBuf iFilename;
+ RBTPhysicalLinkAdapter iPhy;
+
+ TUint iRemConInterfaces;
+ };
+
+#endif // TAVSRC_H