diff -r 000000000000 -r 5f000ab63145 phoneapp/phonemediatorcenter/inc/cphonemediatorsender.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phonemediatorcenter/inc/cphonemediatorsender.h Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,230 @@ +/* +* Copyright (c) 2008 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: +* Sends Events and Commands via Mediator component. +* +*/ + + +#ifndef CPHONEMEDIATORSENDER_H +#define CPHONEMEDIATORSENDER_H + +// INCLUDES +#include +#include +#include +#include +#include +#include "phoneviewcommanddefinitions.h" +#include "tphonecommandparam.h" + +// FORWARD DECLARATIONS +class CMediatorEventProvider; +class MPhoneEngineMessageSender; +class MPhoneShutdownCommand; + +using namespace TelephonyMediator; + +/** +* Struct for buffering mediator command. +* In a case when several commands are sent to Mediator +* we resend the last used command after receiving a +* Mediator response. +*/ +struct TPhoneCommandBuffer + { + TInt iCommandId; + TUid iDomainUid; + TUid iCategoryUid; + TVersion iVersion; + }; + +// CLASS DECLARATION + +class CPhoneMediatorSender : public CCoeStatic, private MMediatorCommandResponseObserver + { + public: + + /** + * First call initializes the singleton object. Subsequent calls return + * instance. + * @param None. + * @return Pointer to the one and only instance of Phone Mediator + * Sender -object. + */ + IMPORT_C static CPhoneMediatorSender* Instance(); + + /** + * Destructor. + */ + virtual ~CPhoneMediatorSender(); + + /** + * Sends event to the Mediator. + * @param aCommandId - command to be sent as an event + */ + IMPORT_C void SendEvent( const TPhoneViewCommandId aCommandId ) const; + + /** + * Sends event to the Mediator. + * @param aCommandId - command to be sent as an event + * @param aCallId - command's call id + */ + IMPORT_C void SendEvent( const TPhoneViewCommandId aCommandId, const TInt aCallId ) const; + + /** + * Sends event to the Mediator. + * @param aCommandId - command to be sent as an event + * @param aCommandParam - Reference to command parameter + */ + IMPORT_C void SendEvent( const TPhoneViewCommandId aCommandId, + TPhoneCommandParam& aCommandParam ); + + /** + * Sends event to the Mediator. + * @param aCommandId - command to be sent as an event + * @param aCallId - command's call id + * @param aCommandParam - Reference to command parameter + */ + IMPORT_C void SendEvent( const TPhoneViewCommandId aCommandId, + const TInt aCallId, + TPhoneCommandParam& aCommandParam ) const; + + /** + * Sends event to the Mediator. + * @param aCommandId - command to be sent as an event + * @param aCallId - command's call id + * @param aCommandParam - Pointer to TDesC16 + */ + IMPORT_C void SendEvent( const TPhoneViewCommandId aCommandId, + const TInt aCallId, + const TDesC* aMessage ) const; + + /** + * Issue a Mediator Service command. + * + * @param aDomain The identifier of the domain + * @param aCategory The identifier of the category. + * @param aCommandId The identifier of the command. + * @param aVersion The version information for the command. + * @param aData The parameters of the command. + * @return TInt an error code + */ + IMPORT_C TInt IssueCommand( const TUid aDomain, + const TUid aCategory, + const TInt aCommandId, + const TVersion aVersion, + const TDesC8& aData, + MPhoneShutdownCommand* aShutdownCommand = NULL ); + + /** + * A response to a Mediator Service command. + * + * @param aDomain The identifier of the domain + * @param aCategory The identifier of the category. + * @param aCommandId The identifier of the command. + * @param aStatus Standard Symbian error code indicating the + * success of the command. + * @param aData The parameters of the response. + */ + void CommandResponseL( TUid aDomain, + TUid aCategory, + TInt aCommandId, + TInt aStatus, + const TDesC8& aData ); + + private: + + /** + * Instantiates this class and returns a pointer to us + */ + static CPhoneMediatorSender* NewL(); + + /** + * Protected constructor because of Singleton Pattern + */ + CPhoneMediatorSender(); + + /** + * By default EPOC constructor is private. + */ + void ConstructL(); + + /** + * Registers generic Mediator Events sent via this interface. + */ + void RegisterGenericEvents(); + + /** + * Reacts to Video Telephony specific Mediator Command reponse. + * @param aCommandId - Command to react for. + */ + void VideoTelephonyCommandResponse( TInt aCommandId ); + + /** + * Maps Phone Engine call state to the ones defined in our Mediator API. + * @param aCallState - Phone Engine's call state which to map + * @return TCallState + */ + TCallState MapCallState( const TInt aCallState ) const; + + /** + * Maps Phone Engine call type to the ones defined in our Mediator API. + * @param aCallTypr - Phone Engine's call type which to map + * @return TCallType + */ + TCallType MapCallType( const TInt aCallType ) const; + + /** + * Resets the values of used TPhoneCommandBuffer. + */ + void ResetCommandBuffer(); + + + private: + + /** + * Interface for sending events to Mediator + */ + CMediatorEventProvider* iEventSender; + + /** + * List of events - used for registering events we provide + */ + MediatorService::REventList iEvents; + + /** + * List of generic events - used for registering events we provide + */ + MediatorService::REventList iGenericEvents; + + /** + * Interface for sending commands to Mediator + */ + CMediatorCommandInitiator* iCommandInitiator; + + /** + * Buffer for re-sending command after received Mediator response + */ + TPhoneCommandBuffer iCommandBuffer; + + /** + * Pointer for executing command related to Video Telephony shutdown. + */ + MPhoneShutdownCommand* iShutdownCommand; + }; + +#endif // CPHONEMEDIATORSENDER_H + +// End of File