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 __MMFAUDIOPOLICYSESSION_H__ sl@0: #define __MMFAUDIOPOLICYSESSION_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 "MmfAudioPolicyRequest.h" sl@0: #include "MmfPolicyClientServer.h" sl@0: #include "MmfDevSoundEventHandler.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(const TMMFAudioPolicyEvent& aEvent); sl@0: CMMFAudioPolicyServer* Server(); sl@0: void ClearEventQ(); sl@0: sl@0: private: sl@0: class TMMFAudioPolicyEventHolder sl@0: { sl@0: public: sl@0: TMMFAudioPolicyEventHolder(const TMMFAudioPolicyEvent& aEvent, TBool aNeedsDeletion) : iEvent(aEvent), sl@0: iShallBeDeleted(aNeedsDeletion) {}; sl@0: TMMFAudioPolicyEvent iEvent; sl@0: const TBool iShallBeDeleted; 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) const; 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: TInt iDevSoundId; sl@0: TMMFAudioPolicyPrioritySettings iAudioPolicyPrioritySettings; sl@0: TMMFAudioPolicyEventHolder iNoMemoryEventHolder; sl@0: TBool iNoMemoryEventUsed; sl@0: TInt iEventQSize; sl@0: }; sl@0: sl@0: sl@0: #endif