satengine/satserver/inc/CSatCommandHandler.h
author hgs
Fri, 17 Sep 2010 17:09:13 +0300
changeset 48 78df25012fda
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Base class for SAT commands
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef CSATCOMMANDHANDLER_H
hgs
parents:
diff changeset
    19
#define CSATCOMMANDHANDLER_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
//  INCLUDES
hgs
parents:
diff changeset
    22
#include <e32base.h>
hgs
parents:
diff changeset
    23
#include <etelsat.h>
hgs
parents:
diff changeset
    24
#include <SecondaryDisplay/secondarydisplaysatapi.h>
hgs
parents:
diff changeset
    25
#include "MSatUtils.h"
hgs
parents:
diff changeset
    26
#include "MSatEventObserver.h"
hgs
parents:
diff changeset
    27
#include "MSatCommand.h"
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// CLASS DECLARATION
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/**
hgs
parents:
diff changeset
    32
*  Base class for SAT commands.
hgs
parents:
diff changeset
    33
*
hgs
parents:
diff changeset
    34
*  @lib SatServer
hgs
parents:
diff changeset
    35
*  @since Series 60 3.0
hgs
parents:
diff changeset
    36
*/
hgs
parents:
diff changeset
    37
class CSatCommandHandler : public CActive, public MSatEventObserver,
hgs
parents:
diff changeset
    38
                           public MSatCommand
hgs
parents:
diff changeset
    39
    {
hgs
parents:
diff changeset
    40
    public:  // Constructors and destructor
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
        /**
hgs
parents:
diff changeset
    43
        * Two-phased constructor.
hgs
parents:
diff changeset
    44
        * @param aImplUid Uid for derived class's plugin
hgs
parents:
diff changeset
    45
        * @param aUtils Utils interface
hgs
parents:
diff changeset
    46
        */
hgs
parents:
diff changeset
    47
        static CSatCommandHandler* NewL(
hgs
parents:
diff changeset
    48
            const TUid& aImplUid,
hgs
parents:
diff changeset
    49
            MSatUtils* aUtils );
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
        /**
hgs
parents:
diff changeset
    52
        * Destructor.
hgs
parents:
diff changeset
    53
        */
hgs
parents:
diff changeset
    54
        IMPORT_C virtual ~CSatCommandHandler();
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
    public: // New fucntions
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
        /**
hgs
parents:
diff changeset
    59
        * Start the waiting of SAT command from USAT API.
hgs
parents:
diff changeset
    60
        */
hgs
parents:
diff changeset
    61
        IMPORT_C void Start();
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
        /**
hgs
parents:
diff changeset
    64
        * Gives a panic.
hgs
parents:
diff changeset
    65
        * @param aCategory A category for this panic
hgs
parents:
diff changeset
    66
        * @param aReason Reason for this panic
hgs
parents:
diff changeset
    67
        */
hgs
parents:
diff changeset
    68
        IMPORT_C void Panic( const TDesC& aCategory, TInt aReason ) const;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
        /**
hgs
parents:
diff changeset
    71
        * Indicates is this command handler currently executing a command.
hgs
parents:
diff changeset
    72
        * @return ETrue if executing.
hgs
parents:
diff changeset
    73
        */
hgs
parents:
diff changeset
    74
        IMPORT_C TBool IsCommandExecuting() const ;
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    public: // Functions from base classes
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
        /**
hgs
parents:
diff changeset
    79
        * From MSatEventObserver Notification of event.
hgs
parents:
diff changeset
    80
        * @param aEvent An event that has been notified
hgs
parents:
diff changeset
    81
        */
hgs
parents:
diff changeset
    82
        IMPORT_C void Event( TInt aEvent );
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
        /**
hgs
parents:
diff changeset
    85
        * From MSatCommand Response from client.
hgs
parents:
diff changeset
    86
        * Default implementation will cause panic.
hgs
parents:
diff changeset
    87
        */
hgs
parents:
diff changeset
    88
        IMPORT_C virtual void ClientResponse();
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    protected: // New functions
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
        /**
hgs
parents:
diff changeset
    93
        * Start of the command handling. Asks from derived class whether the
hgs
parents:
diff changeset
    94
        * command is allowed to execute by calling AllowCommand.
hgs
parents:
diff changeset
    95
        * If command is allowed to execute then the need of ui session
hgs
parents:
diff changeset
    96
        * is queried by calling NeedUiSession. If ui session is needed and
hgs
parents:
diff changeset
    97
        * its not available, ui is launcehd and this class registers itself
hgs
parents:
diff changeset
    98
        * to listen the event of ui launch. After the ui is launched,
hgs
parents:
diff changeset
    99
        * HandleCommand is called. If the derived class does not need the ui
hgs
parents:
diff changeset
   100
        * session or ui session is available, HandleCommand is called
hgs
parents:
diff changeset
   101
        * immediatly.
hgs
parents:
diff changeset
   102
        */
hgs
parents:
diff changeset
   103
        IMPORT_C virtual void DoHandleCommand();
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
        /**
hgs
parents:
diff changeset
   106
        * Derived class needs to make the request from USatApi.
hgs
parents:
diff changeset
   107
        * @param aStatus Status of request.
hgs
parents:
diff changeset
   108
        */
hgs
parents:
diff changeset
   109
        virtual void IssueUSATRequest( TRequestStatus& aStatus ) = 0;
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
        /**
hgs
parents:
diff changeset
   112
        * Command has to check the state of the system and make the
hgs
parents:
diff changeset
   113
        * desision of allowing the command to perform. If desision
hgs
parents:
diff changeset
   114
        * is not to allow the command, then the terminal response has to
hgs
parents:
diff changeset
   115
        * sent from this method.
hgs
parents:
diff changeset
   116
        * @return TBool indicating is this command allowed or not
hgs
parents:
diff changeset
   117
        */
hgs
parents:
diff changeset
   118
        virtual TBool CommandAllowed() = 0;
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
        /**
hgs
parents:
diff changeset
   121
        * Queries need of ui session in order to
hgs
parents:
diff changeset
   122
        * execute the command. If ui session is needed, the ui client
hgs
parents:
diff changeset
   123
        * launched and this class will register it self for the notification
hgs
parents:
diff changeset
   124
        * of ui request.
hgs
parents:
diff changeset
   125
        * @return ETrue if ui session is needed.
hgs
parents:
diff changeset
   126
        */
hgs
parents:
diff changeset
   127
        virtual TBool NeedUiSession() = 0;
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
        /**
hgs
parents:
diff changeset
   130
        * Called when USAT API notifies that command
hgs
parents:
diff changeset
   131
        * data is available.
hgs
parents:
diff changeset
   132
        */
hgs
parents:
diff changeset
   133
        virtual void HandleCommand() = 0;
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
        /**
hgs
parents:
diff changeset
   136
        * Called if launch of a Sat Ui application failed.
hgs
parents:
diff changeset
   137
        * Every derived class, which needs a ui session in order to
hgs
parents:
diff changeset
   138
        * execute command, needs to send a terminal
hgs
parents:
diff changeset
   139
        * response from this method.
hgs
parents:
diff changeset
   140
        */
hgs
parents:
diff changeset
   141
        virtual void UiLaunchFailed() = 0;
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
    protected:
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
        /**
hgs
parents:
diff changeset
   146
        * Sends terminal response and renews the usat request of the command.
hgs
parents:
diff changeset
   147
        * @param aPCmd Identifies the command, which is sending
hgs
parents:
diff changeset
   148
        * terminal response.
hgs
parents:
diff changeset
   149
        * @param aRsp Terminal response data package.
hgs
parents:
diff changeset
   150
        */
hgs
parents:
diff changeset
   151
        IMPORT_C void TerminalRsp( RSat::TPCmd aPCmd, const TDesC8& aRsp );
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
        /**
hgs
parents:
diff changeset
   154
        * Calls SatSystemState's IsPhoneInIdleState if not using Dummy TSY,
hgs
parents:
diff changeset
   155
        * otherwise returns ETrue
hgs
parents:
diff changeset
   156
        * @return ETrue if using Dymmy TSY, otherwise asks status
hgs
parents:
diff changeset
   157
        * from SatSystemState and returns it.
hgs
parents:
diff changeset
   158
        */
hgs
parents:
diff changeset
   159
        IMPORT_C TBool IsPhoneInIdleState();
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    protected:  // From CActive
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
        /**
hgs
parents:
diff changeset
   164
        * From CActive base class
hgs
parents:
diff changeset
   165
        */
hgs
parents:
diff changeset
   166
        IMPORT_C void RunL();
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    protected:
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
        /**
hgs
parents:
diff changeset
   171
        * C++ default constructor.
hgs
parents:
diff changeset
   172
        */
hgs
parents:
diff changeset
   173
        IMPORT_C CSatCommandHandler();
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        /**
hgs
parents:
diff changeset
   176
        * By default Symbian 2nd phase constructor is private.
hgs
parents:
diff changeset
   177
        * @param aPtr Pointer to Utils interface
hgs
parents:
diff changeset
   178
        */
hgs
parents:
diff changeset
   179
        IMPORT_C void BaseConstructL( MSatUtils* aPtr );
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    protected:  // Data
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
        // Utils interface
hgs
parents:
diff changeset
   184
        MSatUtils* iUtils;
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
        // Indicates that command is pending for UI to launch
hgs
parents:
diff changeset
   187
        TBool iWaitingUiLaunch;
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
    private:    // Data
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
        // Requiered attribute for the ECOM framework.
hgs
parents:
diff changeset
   192
        TUid iDtorIDKey;
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
        // Indicates is this command handler executing
hgs
parents:
diff changeset
   195
        TBool iIsExecuting;
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
        // Timer to get UI Launch notification released before
hgs
parents:
diff changeset
   198
        // starting to handle pending proactive command.
hgs
parents:
diff changeset
   199
        RTimer iDelayTimer;
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
    };
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
#endif      // CSATCOMMANDHANDLER_H
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
// End of File