devsoundextensions/telephonyaudiorouting/Session/inc/TelephonyAudioRoutingManagerSession.h
author Stefan Karlsson <stefan.karlsson@nokia.com>
Sun, 28 Mar 2010 16:40:21 +0100
branchCompilerCompatibility
changeset 10 faf4b9dea6fa
parent 0 40261b775718
permissions -rw-r--r--
Fixed "extra qualification" syntax errors.

/*
* Copyright (c) 2006 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:   This class is the main interface to the TelephonyAudioRoutingServer. 
*				 It implements the client-side session.
*
*/

                                      
                                                                                 
#ifndef TELEPHONYAUDIOROUTINGMANAGERSESSION_H                                                
#define TELEPHONYAUDIOROUTINGMANAGERSESSION_H                                                  
                                                                                 
#include <e32base.h>
#include <e32std.h>     
#include "MTelephonyAudioRoutingPolicyObserver.h"
#include "TelephonyAudioRoutingClientServer.h"
  

class CTelephonyAudioRoutingPolicyRequest;
class CTelephonyAudioRoutingManager;

// CLASS DECLARATION

/**
*  Main interface to the TelephonyAudioRoutingServer. 
*  It implements the client-side session.
*
*  @lib TelephonyAudioRoutingManagerSession.lib
*  @since Series 60 3.1
*/                                     
                                                                              
class RTelephonyAudioRoutingManagerSession : public RSessionBase                                   
    { 
                                                                               
	public:                                                                          
                                                                        
    	IMPORT_C RTelephonyAudioRoutingManagerSession();    
    
    public:                                                    
         
    	/**
        * Connects a policy client to the server.
        * @since Series 60 3.1
        * @param aAudioRoutingManager: Client, aPolicyObserver: client observer class
        * @return TInt: if connection was successful
        */
    	IMPORT_C TInt Connect(CTelephonyAudioRoutingManager& aAudioRoutingManager, MTelephonyAudioRoutingPolicyObserver& aPolicyObserver);
    	
        /**
        * Closes connection to the server.
        * @since Series 60 3.1
        * @param none
        * @return void
        */
        IMPORT_C void Close();                                                      
                                      
	    /**
        * Used by policy to notify server of audio output changes.
        * @since Series 60 3.1
        * @param aOutput: client obj
        * @return void
        */
	    IMPORT_C void OutputChanged(CTelephonyAudioRouting::TAudioOutput aOutput); 
	    
	    /**
        * Used by policy to notify server that requested output change completed
        * @since Series 60 3.1
        * @param aOutput: client obj, aError: error code for operation
        * @return void
        */
	    IMPORT_C void OutputChangeCompleted(CTelephonyAudioRouting::TAudioOutput aOutput, TInt aError); 
	    	    
	    
    	/**
        * Used by policy session to get notification whenever any of the clients sends
        * a SetOutput request.
        * @since Series 60 3.1
        * @param none
        * @return void
        */
    	IMPORT_C void MonitorOutputChangeRequest();
    	
    	/**
        * Sets policy session Id.
        * @since Series 60 3.1
        * @param none
        * @return void
        */
    	IMPORT_C void SetPolicySessionIdL();
    	
    	/**
        * Cancel a previously send request.
        * @since Series 60 3.1
        * @param aRequest: request to cancel
        * @return void
        */
    	IMPORT_C void CancelRequest(TTelAudRtngServRqst aRequest);
    	
    	/**
        * Used by policy session to notify server if the available audio
        * output change.
        * @since Series 60 3.1
        * @param aOutputs: array of available outputs
        * @return void
        */
    	IMPORT_C void AvailableOutputsChangedL(const TArray<CTelephonyAudioRouting::TAudioOutput>& aOutputs);
    	
     	/**
        * Provide caller with iAudioOutputPkg
        * @since Series 60 3.1
        * @param none
        * @return iAudioOutputPkg
        */
    	IMPORT_C  TPckgBuf<CTelephonyAudioRouting::TAudioOutput>& AudioOutputPkg();    	 
    	 
	private:

   		/**
        * Start asynchronous request handlers.
        * @since Series 60 3.1
        * @param aAudioRoutingManager: client obj, aPolicyObserver: observer obj for callbacks
        * @return void
        */
   		void StartPolicyRequestHandlersL( CTelephonyAudioRoutingManager& aAudioRoutingManager, MTelephonyAudioRoutingPolicyObserver& aPolicyObserver );
     
	private:

  		TPckgBuf<CTelephonyAudioRouting::TAudioOutput> iAudioOutputPkg;      
		CTelephonyAudioRoutingPolicyRequest* iPolicyRequest;	
		TBool iConnected;  
                                                                             
    };                                                                           
                                      
                                                                                 
#endif         //TELEPHONYAUDIOROUTINGSESSION_H