satengine/satserver/Engine/inc/CSatEventMonitorContainer.h
author hgs
Mon, 04 Oct 2010 15:57:13 +0300
changeset 51 12bc758d6a02
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2006 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:  Container of event monitors
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef CSATEVENTMONITORCONTAINER_H
hgs
parents:
diff changeset
    21
#define CSATEVENTMONITORCONTAINER_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
//  INCLUDES
hgs
parents:
diff changeset
    24
#include <e32base.h>
hgs
parents:
diff changeset
    25
#include <etelsat.h>
hgs
parents:
diff changeset
    26
#include "MSatEventMonitorUtils.h"
hgs
parents:
diff changeset
    27
#include "MSatEventMonitorContainer.h"
hgs
parents:
diff changeset
    28
#include "MSatEventObserver.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    32
class MSatEventMonitor;
hgs
parents:
diff changeset
    33
class TUSatAPI;
hgs
parents:
diff changeset
    34
class MSatUtils;
hgs
parents:
diff changeset
    35
class MSatBIPEventNotifier;
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
/**
hgs
parents:
diff changeset
    38
*  Base class for SAT commands.
hgs
parents:
diff changeset
    39
*
hgs
parents:
diff changeset
    40
*  @lib SatServer
hgs
parents:
diff changeset
    41
*  @since Series 60 3.0
hgs
parents:
diff changeset
    42
*/
51
hgs
parents: 33
diff changeset
    43
class CSatEventMonitorContainer : public CActive,
hgs
parents: 33
diff changeset
    44
                                  public MSatEventMonitorContainer,
33
hgs
parents:
diff changeset
    45
                                  public MSatEventMonitorUtils,
51
hgs
parents: 33
diff changeset
    46
                                  public MSatEventObserver
33
hgs
parents:
diff changeset
    47
    {
hgs
parents:
diff changeset
    48
    public:  // Constructors and destructor
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
        /**
hgs
parents:
diff changeset
    51
        * Two-phased constructor.
hgs
parents:
diff changeset
    52
        * @param aUsatAPI Interface for EventDownload commands
hgs
parents:
diff changeset
    53
        * @param aSatUtils Interface for SAT Utils class.
hgs
parents:
diff changeset
    54
        */
hgs
parents:
diff changeset
    55
        static CSatEventMonitorContainer* NewL(
hgs
parents:
diff changeset
    56
            TUSatAPI& aUsatAPI,
hgs
parents:
diff changeset
    57
            MSatUtils& aSatUtils );
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
        /**
hgs
parents:
diff changeset
    60
        * Destructor.
hgs
parents:
diff changeset
    61
        */
hgs
parents:
diff changeset
    62
        virtual ~CSatEventMonitorContainer();
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
    public: // Functions from parent class
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
        /**
hgs
parents:
diff changeset
    67
        * From MSatEventObserver
hgs
parents:
diff changeset
    68
        */
hgs
parents:
diff changeset
    69
        void Event( TInt aEvent );
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
        /**
hgs
parents:
diff changeset
    72
        * From MSatEventMonitorContainer Updates monitors state.
hgs
parents:
diff changeset
    73
        * @param aEvents Events that should be monitored.
hgs
parents:
diff changeset
    74
        * @return KErrNone if all goes OK
hgs
parents:
diff changeset
    75
        */
hgs
parents:
diff changeset
    76
        TInt SetUpEventMonitors( TUint aEvents );
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
        /**
hgs
parents:
diff changeset
    79
        * From MSatEventMonitorContainer Cancels all monitors
hgs
parents:
diff changeset
    80
        * @return KErrNone if all monitros were cancelled
hgs
parents:
diff changeset
    81
        */
hgs
parents:
diff changeset
    82
        TInt CancelAllMonitors();
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
        /**
hgs
parents:
diff changeset
    85
        * From MSatEventMonitorContainer Solves language code.
hgs
parents:
diff changeset
    86
        * @param aLanguageId Resolved language ID
hgs
parents:
diff changeset
    87
        */
hgs
parents:
diff changeset
    88
        void LanguageSettingL( TInt& aLanguageId );
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
        /**
hgs
parents:
diff changeset
    91
        * From MSatEventMonitorUtils Sends notify to SIM about some event
hgs
parents:
diff changeset
    92
        * using EventDownload command.
hgs
parents:
diff changeset
    93
        * @param aSingleEvent Single event reported to SIM.
hgs
parents:
diff changeset
    94
        * @param aFirstArg First argument interpreted according to type of event
hgs
parents:
diff changeset
    95
        * @param aSecArg Second argument interpreted according to type of event
hgs
parents:
diff changeset
    96
        */
hgs
parents:
diff changeset
    97
        void EventDownload( RSat::TEventList aSingleEvent,
hgs
parents:
diff changeset
    98
                            TInt aFirstArg,
hgs
parents:
diff changeset
    99
                            TInt aSecArg );
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
        /**
hgs
parents:
diff changeset
   102
        * From MSatEventMonitorUtils Returns reference to
hgs
parents:
diff changeset
   103
        * BIP Event notifier class.
hgs
parents:
diff changeset
   104
        * @return Interface for BIP Utils class.
hgs
parents:
diff changeset
   105
        */
hgs
parents:
diff changeset
   106
        MSatBIPEventNotifier& BipNotifier();
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
        /**
hgs
parents:
diff changeset
   109
        * From MSatEventMonitorContainer Called when SIM is removed.
hgs
parents:
diff changeset
   110
        * This causes all monitors to be cancelled.
hgs
parents:
diff changeset
   111
        */
hgs
parents:
diff changeset
   112
        void SimRemoved();
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
        /**
hgs
parents:
diff changeset
   115
        * From MSatEventMonitorContainer Gets the ISO639 language code.
hgs
parents:
diff changeset
   116
        * @param aId Language ID
hgs
parents:
diff changeset
   117
        * @param aText Language code can be read from this after function call.
hgs
parents:
diff changeset
   118
        */
hgs
parents:
diff changeset
   119
        void GetLanguageString( const TInt aId, TDes& aText );
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
        /**
hgs
parents:
diff changeset
   122
        * From CActive Checks that EventDownload were succesful
hgs
parents:
diff changeset
   123
        */
hgs
parents:
diff changeset
   124
        void RunL();
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
        /**
hgs
parents:
diff changeset
   127
        * From CActive Cancels EventDownload
hgs
parents:
diff changeset
   128
        */
hgs
parents:
diff changeset
   129
        void DoCancel();
hgs
parents:
diff changeset
   130
        
hgs
parents:
diff changeset
   131
        /**
hgs
parents:
diff changeset
   132
        * From MSatEventMonitorUtils 
hgs
parents:
diff changeset
   133
        * Writes time between language selection and reboot.
hgs
parents:
diff changeset
   134
        * @param aTime Time before reboot.
hgs
parents:
diff changeset
   135
        * @return KErrNone if language selection time is set.
hgs
parents:
diff changeset
   136
        */
hgs
parents:
diff changeset
   137
        TInt WriteLanguageSelectionTime( TInt aTime );
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
    private:
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
        /**
hgs
parents:
diff changeset
   142
        * C++ default constructor.
hgs
parents:
diff changeset
   143
        * @param aUsatAPI Interface for EventDownload commands
hgs
parents:
diff changeset
   144
        * @param aSatUtils Interface for SAT Utils class.
hgs
parents:
diff changeset
   145
        */
hgs
parents:
diff changeset
   146
        CSatEventMonitorContainer( TUSatAPI& aUsatAPI, MSatUtils& aSatUtils );
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
        /**
hgs
parents:
diff changeset
   149
        * By default Symbian 2nd phase constructor is private.
hgs
parents:
diff changeset
   150
        */
hgs
parents:
diff changeset
   151
        void ConstructL();
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
    private:
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
        /**
hgs
parents:
diff changeset
   156
        * Handles Language Selection event and sends event download
hgs
parents:
diff changeset
   157
        * @param aLanguageId ID read from the P&S. Comes from monitor.
hgs
parents:
diff changeset
   158
        */
hgs
parents:
diff changeset
   159
        void LanguageSelectionEvent( TInt aLanguageId );
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
        /**
hgs
parents:
diff changeset
   162
        * Handles the browser termination event and sends event download.
hgs
parents:
diff changeset
   163
        * @param aCause The cause of the browser termination
hgs
parents:
diff changeset
   164
        */
hgs
parents:
diff changeset
   165
        void BrowserTerminationEvent( TInt aCause );
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
        /**
hgs
parents:
diff changeset
   168
        * Handles Data avaliable event and sends event download
hgs
parents:
diff changeset
   169
        * @param aChannelId Data channel identifier. Comes from monitor.
hgs
parents:
diff changeset
   170
        */
hgs
parents:
diff changeset
   171
        void DataAvailableEvent( const TInt aChannelId, const TInt aLength );
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
        /**
hgs
parents:
diff changeset
   174
        * Handles Channel status event and sends event download
hgs
parents:
diff changeset
   175
        * @param aChannelId Data channel identifier. Comes from monitor.
hgs
parents:
diff changeset
   176
        * @param aStatus Status of the data channel.
hgs
parents:
diff changeset
   177
        */
hgs
parents:
diff changeset
   178
        void ChannelStatusEvent( const TInt aChannelId, const TInt aStatus );
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
        /**
hgs
parents:
diff changeset
   181
        * Checks if aEvents contains only events that
hgs
parents:
diff changeset
   182
        * are supported.
hgs
parents:
diff changeset
   183
        * @param aEvents Events from SIM.
hgs
parents:
diff changeset
   184
        * @return ETrue if aEvents are supported.
hgs
parents:
diff changeset
   185
        */
hgs
parents:
diff changeset
   186
        TBool EventsSupported( TUint aEvents ) const;
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
        /**
hgs
parents:
diff changeset
   189
        * Removes single event from event list
hgs
parents:
diff changeset
   190
        * @param aSingleEvent Event to remove
hgs
parents:
diff changeset
   191
        */
hgs
parents:
diff changeset
   192
        void RemoveSingleEvent( RSat::TEventList aSingleEvent );
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
    private:    // Data
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
        // Ponter array containing event monitors
hgs
parents:
diff changeset
   197
        CArrayPtrFlat<MSatEventMonitor>* iEventMonitors;
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
        // Interface to EventDownload command sending
hgs
parents:
diff changeset
   200
        TUSatAPI& iSat;
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
        // Indecates is there event pending
hgs
parents:
diff changeset
   203
        TBool iEventPending;
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        // Pending event
hgs
parents:
diff changeset
   206
        RSat::TEventList iPendingEvent;
hgs
parents:
diff changeset
   207
hgs
parents:
diff changeset
   208
        // Pending first argument
hgs
parents:
diff changeset
   209
        TInt iPendingFirstArg;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
        // Pending second argument
hgs
parents:
diff changeset
   212
        TInt iPendingSecondArg;
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
        // Utils class for BIP event monitors
hgs
parents:
diff changeset
   215
        MSatUtils& iSatUtils;
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
        // Indicates whether there is BIP command executing or not
hgs
parents:
diff changeset
   218
        TBool iBipExecuting;
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
        // Removable event after event download
hgs
parents:
diff changeset
   221
        TInt iRemovableSingleEvent;
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
    };
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
#endif      // CSATEVENTMONITORCONTAINER_H
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
// End of File