--- /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