satengine/SatServer/inc/MSatUtils.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 13:23:05 +0300
changeset 23 427125ac6cb8
parent 0 ff3b6d0fd310
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2002-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:  Utility methods for SAT command handling.
*
*/



#ifndef M_MSATUTILS_H
#define M_MSATUTILS_H


#include <e32std.h>
#include <etelsat.h>
#include "MSatRefreshSubSession.h"
#include "SatSOpcodes.h"
#include "msatasynctosync.h"

class MUiSessionLaunchObserver;
class MSatApi;
class MSatUiSession;
class MSatEventObserver;
class MSatSystemState;
class MSatShellController;
class MSatSUiClientHandler;
class MSatCommand;
class CSatClientServiceReq;
class MSatEventMonitorContainer;
class MSatEventMonitorUtils;
class MSatSSimSubscriberId;
class MSatBIPUtils;
class MSatBIPEventNotifier;
class RMobilePhone;
class RMmCustomAPI;
class MSatMediatorEventProvider;
class MSatMultiModeApi;

/**
 *  Utility methods for SAT command handling.
 *
 *  @lib SatServer
 *  @since S60 v3.0
 */
class MSatUtils
    {

public:

    /**  For notifying SAT commands/events */
    enum TSatEvent
        {
        /**  Originator:  CSetUpMenuHandler */
        /**  Listeners:   None */
        ESetUpMenuExecuting,

        /**  Originator:  CSimSessionEndHandler */
        /**  Listeners:   CSetUpMenuHandler */
        ESimSessionEndExecuting,

        /**  Originator:  CSelectItemHandler */
        /**  Listeners:   None */
        ESelectItemExecuting,

        /**  Originator:  CSetUpCallHandler */
        /**  Listeners:   None */
        ESetUpCallExecuting,

        /**  Originator:  CDisplayTextHandler */
        /**  Listeners:   None */
        EDisplayTextExecuting,

        /**  Originator:  CLaunchBrowserHandler */
        /**  Listeners:   None */
        ELaunchBrowserExecuting,

        /**  Originator:  CGetInputHandler */
        /**  Listeners:   None */
        EGetInputExecuting,

        /**  Originator:  CGetInkeyHandler */
        /**  Listeners:   None */
        EGetInkeyExecuting,

        /**  Originator:  CSetUpEventListHandler */
        /**  Listeners:   None */
        ESetUpEventListExecuting,

        /**  Originator:  CSetUpIdleModeTextHandler */
        /**  Listeners:   None */
        ESetUpIdleModeTextExecuting,

        /**  Originator:  CSendDtmfHandler */
        /**  Listeners:   None */
        ESendDtmfExecuting,

        /**  Originator:  CSendSsHandler */
        /**  Listeners:   None */
        ESendSsExecuting,

        /**  Originator:  CSendUssdHandler */
        /**  Listeners:   None */
        ESendUssdExecuting,

        /**  Originator:  CPlayToneHandler */
        /**  Listeners:   None */
        EPlayToneExecuting,

        /**  Originator:  CProvideLocalInfoHandler */
        /**  Listeners:   None */
        ELocalInfoExecuting,

        /**  Originator:  CRefreshHandler */
        /**  Listeners:   CClearScreenHandler */
        ERefreshExecuting,

        /**  Originator:  CCallControlHandler */
        /**  Listeners:   CSetUpCallHandler */
        /**               CSendSsHandler */
        /**               CSendUssdHandler */
        ECallControlExecuting,

        /**  Originator:  CSendSmHandler */
        /**  Listeners:   None */
        ESendSmExecuting,

        /**  Originator:  CMoSmControlHandler */
        /**  Listener:    CSendSmHandler */
        EMoSmControlExecuting,

        /**  Originator:  CMoSmControlHandler */
        /**  Listener:    CSendSmHandler */
        EMoSmControlDone,

        /**  Originator:  CCallControlHandler */
        /**  Listeners:   CSetUpCallHandler */
        /**               CSendSsHandler */
        /**               CSendUssdHandler */
        ECallControlDone,

        /**  Originator:  CSatSSession */
        /**  Listeners:   CSatCommandContainer */
        ESatUiClosed,

        /**  Originator:  CSatSSession */
        /**  Listeners:   CSetUpMenuHandler */
        ESatUiLaunched,

        /**  originators: CSendSmHandler */
        /**  Listeners:   CSatSUiSubSession */
        ESmsSent,

        /**  Originators: CSetUpCallHandler */
        /**               CSelectItemHandler */
        /**  Listeners    CSimSessionEndHandler */
        ESessionTerminatedByUser,

        /**  Originators: CSatCommandHandler */
        /**  Listeners:   CSimSessionEndHandler */
        EDestroySimSessionEndTimer,

        /**  Originators: CSatCommandHandler */
        /**  Listeners:   CSimSessionEndHandler */
        EDelaySimSessionEnd,

        /**  Originators: CDisplayTextHandler */
        /**  Listeners:   CSetUpMenuHandler */
        ESetUpMenuNeeded,

        /**  Originators: CCallControlHandler */
        /**               CMoSmControlHandler*/
        /**  Listeners:   CSimSessionEndHandler */
        ESimSessionEndCallBack,

        /**  Originators: CSatIconSubSession */
        /**  Listeners:   CSetUpIdleModeTextHandler */
        EIdleModeResponseSuccess,

        /**  Originators: CSatIconSubSession */
        /**  Listeners:   CSetUpIdleModeTextHandler */
        EIdleModeResponseSuccessNoIcon,

        /**  Originators: CSatIconSubSession */
        /**  Listeners:   CSetUpIdleModeTextHandler */
        EIdleModeResponseBeyondCapabilities,

        /**  Originators: CSatIconSubSession */
        /**  Listeners:   CSetUpIdleModeTextHandler */
        EIdleModeResponseUnableToProcess,

        /**  Originator:  CSatSRefreshSubSession. */
        /**  Listeners:   CRefreshHandler */
        ERefreshAllowed,

        /**  Originator:  CSatSRefreshSubSession. */
        /**  Listeners:   CRefreshHandler */
        ERefreshNotAllowed,

        /**  Originator:  CSatSRefreshSubSession. */
        /**  Listeners:   CRefreshHandler */
        ERefreshEFRead,

        /**  Originator:  CSatSRefreshSubSession. */
        /**  Listeners:   CRefreshHandler */
        ERefreshAdditionalEFRead,

        /**  Originators: CSatSSimSubscriberId */
        /**  Listeners:   CSatCommandContainer */
        ECmccSimDetected,

        /**  Originators: CSatCommandContainer */
        /**  Listeners:   CSetUpMenuHandler */
        EApplNameUpdated,

        /**  Originators: COpenChannelHandler */
        /**  Listeners:   CReceiveDataHandler */
        /**               CSendDataHandler */
        EOpenChannelExecuting,

        /**  Originators: CCloseChannelHandler */
        /**  Listeners:   None */
        ECloseChannelExecuting,

        /**  Originators: CGetChannelStatusHandler */
        /**  Listeners:   None */
        EGetChannelStatusExecuting,

        /**  Originators: CSendDataHandler */
        /**  Listeners:   None */
        ESendDataExecuting,

        /**  Originators: CReceiveDataHandler */
        /**  Listeners:   None */
        EReceiveDataExecuting,

        /**  Originators: CDisplayTextHandler */
        /**  Listeners:   CSimSessionEndHandler */
        ESustainedTextInDisplay,

        /**  Originators: CDisplayTextHandler */
        /**  Listeners:   CSimSessionEndHandler */
        ESustainedTextRemoved,

        /**  Originators: COpenChannelHandler */
        /**  Listeners:   CSimSessionEndHandler */
        EDataChannelsActive,

        /**  Originators: CCloseChannelHandler */
        /**  Listeners:   CSimSessionEndHandler */
        EDataChannelsInactive,

        /**  Originators: CSendDataHandler */
        /**               CReceiveDataHandler */
        /**  Listeners:   CSatSEventMoniotorContainer */
        EBipCommandExecuting,
        EBipCommandDoneExecuting,

        /**  Originators: CSatSUiSubSession */
        /**  Listeners:   Command handlers */
        ECommandCancelled,
        ECancelledUsingEndKey,

        /**  Originators: CRefreshHandler */
        /**  Listeners:   CSetUpIdleModeTextHandler */
        ESimInitDone,

        /**  Originators: CRefreshRequiredHandler */
        /**  Listeners:   CSetUpMenuHandler */
        /**               CSetUpIdleModeTextHandler */
        /**               CSetUpEventListHandler */
        ESimResetCalled,

        /**  Originators: CRefreshHandler */
        /**  Listeners:   CSetUpIdleModeTextHandler */
        /**               CSetUpEventListHandler */
        ESimResetCancelled,

        /**  Originator:  CSatUiSubSession */
        /**  Listeners:   CLaunchBrowserHandler */
        ESetUpMenuRequested,

        /** Originator:  CSatClientServiceReq */
        /** Listeners:   CSatSUiClientHandler */
        EBringSatUiToForeGround,

        /** Originator:  CSatSAPChangeObserver */
        /** Listeners:   CSetUpMenuHandler */
        EAddSatUiCalled,
        ERemoveSatUiCalled

        };


    /**
     * Gives USAT API.
     *
     * @since S60 v3.0
     * @return Reference to USAT API wrapper.
     */
    virtual MSatApi& USatAPI() = 0;

    /**
     * Gives reference to system state interface
     *
     * @since S60 v3.0
     * @return Reference to system state interface.
     */
    virtual MSatSystemState& SystemState() = 0;

    /**
     * Gives reference to MSatSUiClientHandler
     *
     * @since S60 v3.0
     * @return Pointer to sat ui handler.
     */
    virtual MSatSUiClientHandler& SatUiHandler() = 0;

    /**
     * Registers observer for event. Same observer will not be added
     * more than once for one event.
     *
     * @since S60 v3.0
     * @param aObserver Pointer of observer instance. Panic will occur if
     * aObserver is NULL.
     * @param aEvent Event, which will cause the notification of observer.
     */
    virtual void RegisterL(
            MSatEventObserver* aObserver,
            TSatEvent aEvent ) = 0;

    /**
     * Notifies event to all registered observers.
     *
     * @since S60 v3.0
     * @param aEvent Event to be notified.
     */
    virtual void NotifyEvent( TSatEvent aEvent ) = 0;

    /**
     * From MSatEventObserver.Sends UI Event Notification,
     * if UI session is found
     *
     * @since S60 v3.1
     * @param aEvenId, identifies the event
     * @param aEventStatus, status of the event
     * @param aEventError, possible error value
     */
    virtual void NotifyUiEvent(
            TInt aEventId,
            TInt aEventStatus,
            TInt aEventError ) = 0;

    /**
     * Unregisters the event notification.
     *
     * @since S60 v3.0
     * @param aObserver Observer of the event
     * @param aEvent Event to be unregistered.
     */
    virtual void UnregisterEvent(
            MSatEventObserver* aObserver,
            TSatEvent aEvent ) = 0;

    /**
     * Removes observer from event observers
     *
     * @since S60 v3.0
     * @param aObserver Observer to removed
     */
    virtual void UnregisterEventObserver(
            MSatEventObserver* aObserver ) = 0;

    /**
     * Gives number of executing commands currently.
     * In practise there can be only one executing proactive
     * command, but envelopes can be executing same time.
     *
     * @since S60 v3.0
     * @return Number of executing command handlers.
     */
    virtual TInt NumberOfExecutingCommandHandlers() = 0;

    /**
     * Gets the sim application name.
     *
     * @since S60 v3.0
     * @return Sat application name.
     */
    virtual const TDesC& SatAppName() const = 0;

    /**
     * Gets the name for the APN
     *
     * @since S60 v3.0
     * @return Sat application name.
     */
    virtual const TDesC& BipApnName() const = 0;
    
    /**
     * Restores default SIM Application name.
     *
     * @since S60 v3.1
     */
    virtual void RestoreSatAppNameL() = 0;

    /**
     * Sets the sim application name.
     *
     * @since S60 v3.0
     * @param aName New name of Sat application
     */
    virtual void SetSatAppNameL( const TDesC& aName ) = 0;

    /**
     * Gets all refresh subsession.
     * @return Pointer array of Refresh Sub sessions.
     */
    virtual const RPointerArray<MSatRefreshSubSession>&
            RefreshSubSessions() = 0;

    /**
     * Registers new service request handler
     *
     * @since S60 v3.0
     * @param aRequest A Request this service request listens
     * @param aResponse A Response for this service request
     * @param aCommand A Command handler for request
     */
    virtual void RegisterServiceRequestL(
            TSatServerRequest aRequest,
            TSatServerRequest aResponse,
            MSatCommand* aCommand ) = 0;

    /**
     * Gets all registered service requests
     *
     * @since S60 v3.0
     * @return Pointer array of registered Client Service requests
     */
    virtual CArrayPtrFlat<CSatClientServiceReq>*
            ServiceRequests() = 0;

    /**
     * Gives pointer to event monitor container
     *
     * @since S60 v3.0
     * @return Pointer to MSatEventMonitorContainer API
     */
    virtual MSatEventMonitorContainer* EventMonitors() = 0;

    /**
     * Gives reference to subscriber id.
     *
     * @since S60 v3.0
     * @return SIM subscriber id API reference
     */
    virtual MSatSSimSubscriberId& SimSubscriberId() = 0;

    /**
     * Gives reference to BIP Utils interface.
     *
     * @since S60 v3.0
     * @return Reference to BIP Utils interface.
     */
    virtual MSatBIPUtils& BipUtils() = 0;

    /**
     * Gives reference to BIP Event notifier interface.
     *
     * @since S60 v3.0
     * @return Reference to BIP Event notifier interface.
     */
    virtual MSatBIPEventNotifier& BipEventNotifier() = 0;

    /**
     * Gives reference to active RMmCustomApi session
     *
     * @since S60 v3.1
     * @return Reference to active RMmCustomApi server session
     */
    virtual RMmCustomAPI* CustomApi() = 0;
    

    /**
     * Gives reference to MSatMultiModeApi
     *
     * @since S60 v5.0
     * @return Reference to MSatMultiModeApi
     */
    virtual MSatMultiModeApi& MultiModeApi() = 0;

    /**
     * Sends SAT Mediator event to Mediator Event Provider interface.
     *
     * @since S60 v3.1
     * @param aData packaged data to mediator event consumer
     * @return KErrNone or error code.
     */
    virtual TInt RaiseSatEvent( const TDesC8& aData ) = 0;

    /**
     * Checks Cover UI support for SAT Mediator Event.
     *
     * @since S60 v3.1
     * @return ETrue if supported.
     */
    virtual TBool CoverUiSupported() = 0;

    /**
     * Gives pointer to MSatAsyncToSync interface.
     *
     * @since S60 v5.0.1
     * @return a MSatAsyncToSync Pointer to CreateAsyncToSyncHelper object.
     */
    virtual MSatAsyncToSync* CreateAsyncToSyncHelper() = 0;

protected:

    MSatUtils() {};

    virtual ~MSatUtils() {};

private:

    /**
     * Prohibit copy constructor if not deriving from CBase.
     *
     * @since S60 v3.0
     * @param const reference to MSatUtils.
     */
    MSatUtils( const MSatUtils& );

    /**
     * Prohibit assigment operator if not deriving from CBase.
     *
     * @since S60 v3.0
     * @param const reference to MSatUtils.
     */
    MSatUtils& operator=( const MSatUtils& );

    };

#endif // M_MSATUTILS_H