sl@0: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __MMFBTAUDIOPOLICYSESSION_H__ sl@0: #define __MMFBTAUDIOPOLICYSESSION_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: #include sl@0: #endif sl@0: #include "MmfBtAudioPolicyRequest.h" sl@0: #include "MmfBtPolicyClientServer.h" sl@0: #include "MmfBtDevSoundEventHandler.h" sl@0: #include sl@0: sl@0: class CMMFAudioPolicyEventReceiver : public CBase sl@0: /** sl@0: *@internalTechnology sl@0: */ sl@0: { sl@0: public: sl@0: static CMMFAudioPolicyEventReceiver* NewL(const RMmfIpcMessage& aMessage); sl@0: ~CMMFAudioPolicyEventReceiver(); sl@0: void SendEvent(const TMMFAudioPolicyEvent& aEvent); sl@0: void SendEvent(const TMMFEvent& aEvent); sl@0: private: sl@0: CMMFAudioPolicyEventReceiver(const RMmfIpcMessage& aMessage); sl@0: private: sl@0: RMmfIpcMessage iMessage; sl@0: TBool iNeedToCompleteMessage; sl@0: }; sl@0: sl@0: class CAudioPolicy; sl@0: class CMMFAudioPolicyServer; sl@0: sl@0: sl@0: sl@0: sl@0: class CMMFAudioPolicySession : public CMmfIpcSession sl@0: /** sl@0: *@internalTechnology sl@0: */ sl@0: { sl@0: public: sl@0: static CMMFAudioPolicySession* NewL(); sl@0: ~CMMFAudioPolicySession(); sl@0: void CreateL(const CMmfIpcServer& aServer); sl@0: void ServiceL(const RMmfIpcMessage& aMessage); sl@0: CMMFAudioPolicyRequest* AudioPolicyRequest(void) {return iAudioPolicyRequest;}; sl@0: TInt PolicySessionId(void) {return iPolicySessionId;}; sl@0: void SendEventToClient(TMMFAudioPolicyEvent& aEvent); sl@0: CMMFAudioPolicyServer* Server(); sl@0: sl@0: private: sl@0: class TMMFAudioPolicyEventHolder sl@0: { sl@0: public: sl@0: TMMFAudioPolicyEventHolder(const TMMFAudioPolicyEvent& aEvent) : iEvent(aEvent) {}; sl@0: TMMFAudioPolicyEvent iEvent; sl@0: TSglQueLink iLink; sl@0: }; sl@0: sl@0: private: sl@0: CMMFAudioPolicySession(); sl@0: void ConstructL(); sl@0: void MakeRequestL(const RMmfIpcMessage& aMessage); sl@0: TBool UpdateStateL(const RMmfIpcMessage& aMessage); sl@0: TBool ReceiveEventsL(const RMmfIpcMessage& aMessage); sl@0: TBool CancelReceiveEvents(); sl@0: TBool GetPlayFormatsSupportedL(const RMmfIpcMessage& aMessage); sl@0: TBool GetRecordFormatsSupportedL(const RMmfIpcMessage& aMessage); sl@0: TBool GetPlayFormatL(const RMmfIpcMessage& aMessage); sl@0: TBool GetRecordFormatL(const RMmfIpcMessage& aMessage); sl@0: TBool SetDevSoundInfoL(const RMmfIpcMessage& aMessage); sl@0: TBool LaunchRequest(); sl@0: TBool RequestResourceNotificationL(const RMmfIpcMessage& aMessage); sl@0: TBool CancelRequestResourceNotificationL(const RMmfIpcMessage& aMessage); sl@0: TBool StopNotificationL(const RMmfIpcMessage& aMessage); sl@0: TBool GetResourceNotificationEventL(const RMmfIpcMessage& aMessage); sl@0: CMMFAudioPolicyServer* iServer; sl@0: CMMFAudioPolicyRequest* iAudioPolicyRequest; sl@0: CAudioPolicy* iAudioPolicy; sl@0: CMMFAudioPolicyEventReceiver* iEventReceiver; sl@0: TSglQue iEventsQue; sl@0: TInt iPolicySessionId; sl@0: TPolicyResponse iPolicyResponse; sl@0: TInt iDevSoundId; sl@0: TMMFAudioPolicyPrioritySettings iAudioPolicyPrioritySettings; sl@0: }; sl@0: sl@0: sl@0: #endif