os/mm/devsound/sounddevbt/src/A2dpBlueTooth/headsetaudioif/A2dpBTheadsetAudioIf.h
Update contrib.
1 // Copyright (c) 2005-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 "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __A2DPBTHEADSETAUDIOIF_H__
17 #define __A2DPBTHEADSETAUDIOIF_H__
20 #include <bttypes.h> //TBTDevAddr
21 #include <es_sock.h> //RSocketServer, RSocket
22 #include <bt_sock.h> //RBTPhysicalLinkAdaptor
23 #include "GavdpStateMachine.h"
24 #include "RTPStreamer.h"
26 class CA2dpCodecUtilities; //fwd ref
27 class CMMFCodec; //fwd ref
28 class TRange; // fwd ref
32 API to access and send audio to an A2DP compliant audio headset
33 This API is used internally within the Symbian reference
34 CMMFDevSound/CMMFHwDevices/CRoutingSoundPlayDevice.
38 class CA2dpBTHeadsetAudioInterface : public CBase, public MGAVDPStateChangeObserver, public MRTPStreamerObserver
41 IMPORT_C static CA2dpBTHeadsetAudioInterface* NewL();
42 IMPORT_C ~CA2dpBTHeadsetAudioInterface();
43 IMPORT_C void Initialize(const TBTDevAddr& aRemoteAddress, TRequestStatus& aStatus);
44 IMPORT_C void CancelInitialize();
45 IMPORT_C TInt GetSupportedDataTypes(RArray<TFourCC>& aSupportedDataTypes) const;
46 IMPORT_C TInt GetSupportedSampleRates(RArray<TUint>& aSupportedDiscreteRates, RArray<TRange>& aSupportedRateRanges) const;
47 IMPORT_C TInt GetSupportedChannels(RArray<TUint>& aSupportedChannels, TMMFStereoSupport& aStereoSupport) const;
48 IMPORT_C TInt SetDataType(const TFourCC& aDataType);
49 IMPORT_C TInt SetSampleRate(TUint aSampleRate);
50 IMPORT_C TInt SetChannels(TUint aChannels, TMMFStereoSupport aStereoSupport);
51 IMPORT_C void OpenDevice(TRequestStatus& aStatus);
52 IMPORT_C void CancelOpenDevice();
53 IMPORT_C void CloseDevice(TRequestStatus& aStatus);
54 IMPORT_C TUint Volume() const;
55 IMPORT_C TInt SetVolume(TUint aVolume);
56 IMPORT_C void PlayData(const TDesC8& aData, TRequestStatus& aStatus);
57 IMPORT_C void CancelPlayData();
58 IMPORT_C void FlushBuffer();
59 IMPORT_C TUint BytesPlayed() const;
60 IMPORT_C void ResetBytesPlayed();
61 IMPORT_C void PauseBuffer();
62 IMPORT_C void ResumePlaying();
63 IMPORT_C void NotifyError(TRequestStatus& aStatus);
64 IMPORT_C void CancelNotifyError();
66 //APIs only used for unit testing purposes - not needed for BT server or routing sound device
67 IMPORT_C MGavdpUser* TEST_MGavdpUser();
68 IMPORT_C void TEST_ForceRemoteSBCCodecConfiguration(const TSBCCodecCapabilities& aRemoteCodecConfiguration);
70 CA2dpBTHeadsetAudioInterface();
73 void ProcessGAVDPStateChangeIdleToOpen(TInt aError);
74 void ProcessGAVDPStateChangeOpenToStreaming(TInt aError);
75 void ProcessGAVDPStateChangeStreamingToOpen(TInt aError);
77 //MGAVDPStateChangeObserver
78 void GAVDPStateChangeComplete(const TGAVDPState& aInitialState, TInt aError);
79 void GAVDPStateMachineEvent(TInt aError);
80 void GAVDPStateMachineStreamSuspendedByRemoteHeadset();
81 TInt GAVDPStateMachineReconfigureByRemoteHeadset();
82 void GAVDPStateMachineStreamResumedByRemoteHeadset();
84 //MRTPStreamerObserver
85 void RTPStreamerEvent(TInt aError);
87 TInt SetSniffMode(TBool aSniffMode);
90 CGAVDPStateMachine* iGAVDPStateMachine;
91 CActiveRTPStreamer* iRTPStreamer;
93 CA2dpAudioCodecConfiguration* iA2dpCodecConfiguration;
95 RSocketServ iSocketServer;
96 RBTPhysicalLinkAdapter iBTPhysicalLinkAdapter;
97 TRequestStatus* iInitializeRequestStatus;
98 TRequestStatus* iOpenDeviceRequestStatus;
99 TRequestStatus* iCloseDeviceRequestStatus;
100 TRequestStatus* iNotifyRequestStatus;
102 TBool iAudioSettingsHaveChanged;
103 TBool iReconfiguring;
105 TInt iOpenDeviceError;