satengine/satserver/Engine/inc/CSatEventMonitorContainer.h
changeset 33 8d5d7fcf9b59
child 51 12bc758d6a02
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/satengine/satserver/Engine/inc/CSatEventMonitorContainer.h	Wed Jul 21 18:26:52 2010 +0300
@@ -0,0 +1,227 @@
+/*
+* Copyright (c) 2002-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:  Container of event monitors
+*
+*/
+
+
+
+#ifndef CSATEVENTMONITORCONTAINER_H
+#define CSATEVENTMONITORCONTAINER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <etelsat.h>
+#include "MSatEventMonitorUtils.h"
+#include "MSatEventMonitorContainer.h"
+#include "MSatEventObserver.h"
+
+
+// FORWARD DECLARATIONS
+class MSatEventMonitor;
+class TUSatAPI;
+class MSatUtils;
+class MSatBIPEventNotifier;
+
+/**
+*  Base class for SAT commands.
+*
+*  @lib SatServer
+*  @since Series 60 3.0
+*/
+class CSatEventMonitorContainer : public MSatEventMonitorContainer,
+                                  public MSatEventMonitorUtils,
+                                  public MSatEventObserver,
+                                  public CActive
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aUsatAPI Interface for EventDownload commands
+        * @param aSatUtils Interface for SAT Utils class.
+        */
+        static CSatEventMonitorContainer* NewL(
+            TUSatAPI& aUsatAPI,
+            MSatUtils& aSatUtils );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CSatEventMonitorContainer();
+
+    public: // Functions from parent class
+
+        /**
+        * From MSatEventObserver
+        */
+        void Event( TInt aEvent );
+
+        /**
+        * From MSatEventMonitorContainer Updates monitors state.
+        * @param aEvents Events that should be monitored.
+        * @return KErrNone if all goes OK
+        */
+        TInt SetUpEventMonitors( TUint aEvents );
+
+        /**
+        * From MSatEventMonitorContainer Cancels all monitors
+        * @return KErrNone if all monitros were cancelled
+        */
+        TInt CancelAllMonitors();
+
+        /**
+        * From MSatEventMonitorContainer Solves language code.
+        * @param aLanguageId Resolved language ID
+        */
+        void LanguageSettingL( TInt& aLanguageId );
+
+        /**
+        * From MSatEventMonitorUtils Sends notify to SIM about some event
+        * using EventDownload command.
+        * @param aSingleEvent Single event reported to SIM.
+        * @param aFirstArg First argument interpreted according to type of event
+        * @param aSecArg Second argument interpreted according to type of event
+        */
+        void EventDownload( RSat::TEventList aSingleEvent,
+                            TInt aFirstArg,
+                            TInt aSecArg );
+
+        /**
+        * From MSatEventMonitorUtils Returns reference to
+        * BIP Event notifier class.
+        * @return Interface for BIP Utils class.
+        */
+        MSatBIPEventNotifier& BipNotifier();
+
+        /**
+        * From MSatEventMonitorContainer Called when SIM is removed.
+        * This causes all monitors to be cancelled.
+        */
+        void SimRemoved();
+
+        /**
+        * From MSatEventMonitorContainer Gets the ISO639 language code.
+        * @param aId Language ID
+        * @param aText Language code can be read from this after function call.
+        */
+        void GetLanguageString( const TInt aId, TDes& aText );
+
+        /**
+        * From CActive Checks that EventDownload were succesful
+        */
+        void RunL();
+
+        /**
+        * From CActive Cancels EventDownload
+        */
+        void DoCancel();
+        
+        /**
+        * From MSatEventMonitorUtils 
+        * Writes time between language selection and reboot.
+        * @param aTime Time before reboot.
+        * @return KErrNone if language selection time is set.
+        */
+        TInt WriteLanguageSelectionTime( TInt aTime );
+
+    private:
+
+        /**
+        * C++ default constructor.
+        * @param aUsatAPI Interface for EventDownload commands
+        * @param aSatUtils Interface for SAT Utils class.
+        */
+        CSatEventMonitorContainer( TUSatAPI& aUsatAPI, MSatUtils& aSatUtils );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    private:
+
+        /**
+        * Handles Language Selection event and sends event download
+        * @param aLanguageId ID read from the P&S. Comes from monitor.
+        */
+        void LanguageSelectionEvent( TInt aLanguageId );
+
+        /**
+        * Handles the browser termination event and sends event download.
+        * @param aCause The cause of the browser termination
+        */
+        void BrowserTerminationEvent( TInt aCause );
+
+        /**
+        * Handles Data avaliable event and sends event download
+        * @param aChannelId Data channel identifier. Comes from monitor.
+        */
+        void DataAvailableEvent( const TInt aChannelId, const TInt aLength );
+
+        /**
+        * Handles Channel status event and sends event download
+        * @param aChannelId Data channel identifier. Comes from monitor.
+        * @param aStatus Status of the data channel.
+        */
+        void ChannelStatusEvent( const TInt aChannelId, const TInt aStatus );
+
+        /**
+        * Checks if aEvents contains only events that
+        * are supported.
+        * @param aEvents Events from SIM.
+        * @return ETrue if aEvents are supported.
+        */
+        TBool EventsSupported( TUint aEvents ) const;
+
+        /**
+        * Removes single event from event list
+        * @param aSingleEvent Event to remove
+        */
+        void RemoveSingleEvent( RSat::TEventList aSingleEvent );
+
+    private:    // Data
+
+        // Ponter array containing event monitors
+        CArrayPtrFlat<MSatEventMonitor>* iEventMonitors;
+
+        // Interface to EventDownload command sending
+        TUSatAPI& iSat;
+
+        // Indecates is there event pending
+        TBool iEventPending;
+
+        // Pending event
+        RSat::TEventList iPendingEvent;
+
+        // Pending first argument
+        TInt iPendingFirstArg;
+
+        // Pending second argument
+        TInt iPendingSecondArg;
+
+        // Utils class for BIP event monitors
+        MSatUtils& iSatUtils;
+
+        // Indicates whether there is BIP command executing or not
+        TBool iBipExecuting;
+
+        // Removable event after event download
+        TInt iRemovableSingleEvent;
+
+    };
+
+#endif      // CSATEVENTMONITORCONTAINER_H
+
+// End of File