adaptationlayer/tsy/simatktsy_dll/src/satflightmodestatus.cpp
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/simatktsy_dll/src/satflightmodestatus.cpp	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,297 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "satflightmodestatus.h"    // sat flight mode status class
+#include "satmesshandler.h"         // sat message handler class
+#include "satmessaging.h"           // csatmessaging class
+#include "tsylogger.h"              // tsy logger
+
+#include <ssm/startupdomainpskeys.h>    // kpsuidstartup & kpsglobalsystemstate
+#include <uiccisi.h>                // UICC server
+#include "osttracedefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "satflightmodestatustraces.h"
+#endif
+
+// EXTERNAL DATA STRUCTURES
+    //None
+
+// EXTERNAL FUNCTION PROTOTYPES
+    //None
+
+// CONSTANTS
+    //None
+
+// MACROS
+    //None
+
+// LOCAL CONSTANTS AND MACROS
+    //None
+
+// MODULE DATA STRUCTURES
+    //None
+
+// LOCAL FUNCTION PROTOTYPES
+    //None
+
+// FORWARD DECLARATIONS
+    //None
+
+// ============================= LOCAL FUNCTIONS ===============================
+    //None
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CSatFlightModeStatus* CSatFlightModeStatus::NewL
+        (
+        CSatMessHandler* aSatMessHandler,
+        CTsySatMessaging* aSatMessaging
+        )
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_NEWL, "CSatFlightModeStatus::NewL" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::NewL");
+
+    CSatFlightModeStatus* self =
+        new( ELeave ) CSatFlightModeStatus(
+            aSatMessHandler,
+            aSatMessaging );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::CSatFlightModeStatus
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CSatFlightModeStatus::CSatFlightModeStatus(
+    CSatMessHandler* aSatMessHandler,
+    CTsySatMessaging* aSatMessaging )
+    :CActive( CActive::EPriorityStandard )
+    ,iSatMessHandler( aSatMessHandler )
+    ,iSatMessaging( aSatMessaging )
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_CSATFLIGHTMODESTATUS, "CSatFlightModeStatus::CSatFlightModeStatus" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::CSatFlightModeStatus");
+
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::~CSatFlightModeStatus
+// Destructor, deletes all allocated resources.
+// -----------------------------------------------------------------------------
+//
+CSatFlightModeStatus::~CSatFlightModeStatus()
+    {
+    OstTrace0( TRACE_NORMAL, DUP1_CSATFLIGHTMODESTATUS_CSATFLIGHTMODESTATUS, "CSatFlightModeStatus::~CSatFlightModeStatus" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::~CSatFlightModeStatus");
+
+    Cancel();
+    // Closes the property.
+    iProperty.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::ConstructL
+// 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CSatFlightModeStatus::ConstructL()
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_CONSTRUCTL, "CSatFlightModeStatus::ConstructL" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::ConstructL");
+
+    // Initialization
+    iFlightModeActive = ETrue;
+
+    // Attaches to the specified property.
+    iProperty.Attach( KPSUidStartup, KPSGlobalSystemState );
+
+    // Get system state value of this property.
+    // Needed to check is RF status already on, this might happen in slow
+    // startup.
+    TInt systemStateValue( 0 );
+    TInt errValue( iProperty.Get( systemStateValue ) );
+
+    if ( KErrNone == errValue && ESwStateNormalRfOn == systemStateValue )
+        {
+        TFLOGSTRING("TSY: CSatFlightModeStatus::ConstructL - RF status already RF ON");
+        OstTrace0( TRACE_NORMAL, DUP1_CSATFLIGHTMODESTATUS_CONSTRUCTL, "CSatFlightModeStatus::ConstructL - RF status already RF ON" );
+
+        // Flight mode Off, RF On.
+        iFlightModeActive = EFalse;
+        }
+
+    // Subscribes to a property.
+    iProperty.Subscribe( iStatus );
+    // Setting active.
+    SetActive();
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::DoCancel
+// Cancels active object request.
+// -----------------------------------------------------------------------------
+//
+void CSatFlightModeStatus::DoCancel()
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_DOCANCEL, "CSatFlightModeStatus::DoCancel" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::DoCancel");
+
+    // Cancels an outstanding subscription request for this property handle.
+    iProperty.Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::RunL
+// Called when operation completes.
+// -----------------------------------------------------------------------------
+//
+void CSatFlightModeStatus::RunL()
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_RUNL, "CSatFlightModeStatus::RunL" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::RunL");
+
+    // Check possible error.
+    User::LeaveIfError( iStatus.Int() );
+
+    // Continue monitoring with resubscribe before processing new value to
+    // prevent missing updates.
+    iProperty.Subscribe( iStatus );
+    SetActive();
+
+    // Checks Flight mode support values and sends UICC_CAT_REQ message with
+    // correct value.
+    CheckStatusChange();
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::RunError
+// Called when RunL leaves.
+// -----------------------------------------------------------------------------
+//
+TInt CSatFlightModeStatus::RunError( TInt aError )
+    {
+    OstTrace1( TRACE_NORMAL, CSATFLIGHTMODESTATUS_RUNERROR, "CSatFlightModeStatus::RunError %d", aError );
+    TFLOGSTRING2("TSY: CSatFlightModeStatus::RunError %d", aError);
+
+    if ( KErrCancel != aError && !IsActive() )
+        {
+        iProperty.Subscribe( iStatus );
+        SetActive();
+        }
+
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::CheckStatusChange
+// Checks Flight mode statuses and sends SimAtkReq with correct value when
+// RF mode status state changes.
+// -----------------------------------------------------------------------------
+//
+void CSatFlightModeStatus::CheckStatusChange()
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_CHECKSTATUSCHANGE, "CSatFlightModeStatus::CheckStatusChange" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::CheckStatusChange");
+
+    // Gets system state value of this property.
+    TInt systemStateValue( 0 );
+    TInt errValue( iProperty.Get( systemStateValue ) );
+
+    // Checking error value.
+    if ( KErrNone == errValue )
+        {
+        switch ( systemStateValue )
+            {
+            case ESwStateNormalRfOn:
+                {
+                // Flight mode Off, RF On.
+                iFlightModeActive = EFalse;
+                // Check that (U)SAT client is ready.
+                if ( iSatMessHandler->GetSatReadyStatus() )
+                    {
+                    TFLOGSTRING("TSY: CSatFlightModeStatus::CheckStatusChange - RF ON - ENHANCED FETCH HANDLING ENABLED");
+                    OstTrace0( TRACE_NORMAL, DUP1_CSATFLIGHTMODESTATUS_CHECKSTATUSCHANGE, "CSatFlightModeStatus::CheckStatusChange - RF ON - ENHANCED FETCH HANDLING ENABLED" );
+
+                    // Enable CAT support.
+                    iSatMessHandler->UiccCatReq( UICC_CAT_ENABLE );
+                    }
+                break;
+                }
+            case ESwStateNormalRfOff:
+                {
+                // Flight mode On, RF Off.
+                iFlightModeActive = ETrue;
+                // Check that (U)SAT client is ready.
+                if ( iSatMessHandler->GetSatReadyStatus() )
+                    {
+                    TFLOGSTRING("TSY: CSatFlightModeStatus::CheckStatusChange - RF OFF - ENHANCED FETCH HANDLING DISABLED");
+                    OstTrace0( TRACE_NORMAL, DUP2_CSATFLIGHTMODESTATUS_CHECKSTATUSCHANGE, "CSatFlightModeStatus::CheckStatusChange - RF OFF - ENHANCED FETCH HANDLING DISABLED" );
+
+                    // Disable CAT support.
+                    iSatMessHandler->UiccCatReq( UICC_CAT_DISABLE );
+                    }
+                break;
+                }
+            default:
+                {
+                TFLOGSTRING("TSY: CSatFlightModeStatus::CheckStatusChange - Default - state value not interested");
+                OstTrace0( TRACE_NORMAL, DUP3_CSATFLIGHTMODESTATUS_CHECKSTATUSCHANGE, "CSatFlightModeStatus::CheckStatusChange - Default - state value not interested" );
+
+                // we are not interested of other state changes.
+                break;
+                }
+            } // End of switch.
+        }
+    else
+        {
+        // There was error when getting system state value. Just continue.
+        TFLOGSTRING2("TSY: CSatFlightModeStatus::CheckStatusChange - Error= %d", errValue);
+        OstTrace1( TRACE_NORMAL, DUP4_CSATFLIGHTMODESTATUS_CHECKSTATUSCHANGE, "CSatFlightModeStatus::CheckStatusChange - Error= %d", errValue );
+        } // End of if.
+    }
+
+// -----------------------------------------------------------------------------
+// CSatFlightModeStatus::FlightModeStatusValue
+// Flight mode status value, True or False.
+// -----------------------------------------------------------------------------
+//
+TBool CSatFlightModeStatus::FlightModeStatusValue()
+    {
+    OstTrace0( TRACE_NORMAL, CSATFLIGHTMODESTATUS_FLIGHTMODESTATUSVALUE, "CSatFlightModeStatus::FlightModeStatusValue" );
+    TFLOGSTRING("TSY: CSatFlightModeStatus::FlightModeStatusValue");
+    return iFlightModeActive;
+    }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+    //None
+
+//  End of File