--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smum/src/MsgSimSCNumberDetectorCDMA.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,284 @@
+/*
+* Copyright (c) 2002 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:
+* An active object class which takes care of reading the possible new
+* service centres from SIM and adds them to pda-side Sms Settings.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "MsgSimSCNumberDetector.h"
+#include "SmumLogging.h"
+#include "smsui.pan" // for panics
+#include <FeatMgr.h> // FeatureManager
+#include <bldvariant.hrh>
+
+// ================= MEMBER FUNCTIONS =======================
+
+/*
+* Symbian OS 2 phase construction and initialization. Note that operation that is returned is already active.
+* A client will be notified via aClientStatus when the operation terminates.
+*/
+EXPORT_C CMsgSimOperation* CMsgSimOperation::NewL( TRequestStatus& aClientStatus )
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::NewL")
+
+ CMsgSimOperation* self = new ( ELeave ) CMsgSimOperation( aClientStatus );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::NewL")
+
+ return self;
+ }
+
+// C++ constructor which initializes the active object with a default priority and adds it to the active scheduler.
+// C++ constructor can NOT contain any code, that
+// might leave.
+CMsgSimOperation::CMsgSimOperation( TRequestStatus& aStatus, TInt aPriority )
+: CActive( aPriority ), iClientStatus( &aStatus ), iRetryCount( 0 )
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::CMsgSimOperation")
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::CMsgSimOperation")
+ }
+
+// Symbian OS default constructor can leave.
+void CMsgSimOperation::ConstructL()
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::ConstructL")
+/*
+ RSystemAgent sysAgent;
+ if( sysAgent.Connect() == KErrNone )
+ {
+ if ( sysAgent.GetState(KUidSimCStatus) == ESACSimNotSupported )
+ {
+ // Sim Card not supported
+ // Complete the Active Object request returning that this is not supported.
+ // Since we cannot insert a sim card when the device is operating,
+ // the Flag cannot change, the request is just completed without doing anything
+ //
+ CompleteRequest(KErrNotSupported);
+ }
+ else
+ {
+ CompleteRequest(KErrNone);
+ }
+ sysAgent.Close();
+ }
+ // Default not supported
+ //
+ else
+ {
+ CompleteRequest(KErrNotSupported);
+ }
+*/
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::ConstructL")
+ }
+
+// C++ virtual destructor
+CMsgSimOperation::~CMsgSimOperation()
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::~CMsgSimOperation")
+
+ Cancel(); // make sure that this object is not left on the active scheduler.
+ iClientStatus = NULL;
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::~CMsgSimOperation")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::StartL
+// This function issues request and activates the object
+//
+// ----------------------------------------------------
+void CMsgSimOperation::StartL()
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::StartL")
+
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::StartL")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::CompleteRequest
+//
+// ----------------------------------------------------
+void CMsgSimOperation::CompleteRequest( TInt aValue )
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::CompleteRequest")
+
+ __ASSERT_DEBUG( !IsActive(), Panic( ESimOperationPanicRequestAlreadyActive ));
+ TRequestStatus* myRequestStatus = &iStatus;
+ User::RequestComplete( myRequestStatus, aValue );
+ if( !IsActive() )
+ {
+ SetActive();
+ }
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::CompleteRequest")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::CompleteClientRequest
+//
+// ----------------------------------------------------
+void CMsgSimOperation::CompleteClientRequest( TInt aValue )
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::CompleteClientRequest")
+
+ TBool haveClientRequestStatus = HaveClientRequestStatus();
+ __ASSERT_DEBUG( haveClientRequestStatus, Panic( ESimOperationPanicClientsRequestAlreadyCompleted ));
+ // So that we don't attempt to complete the clients request again in the future
+ if ( haveClientRequestStatus )
+ {
+ User::RequestComplete( iClientStatus, aValue );
+ iClientStatus = NULL;
+ }
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::CompleteClientRequest")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::HaveClientRequestStatus
+//
+// ----------------------------------------------------
+TBool CMsgSimOperation::HaveClientRequestStatus() const
+ {
+ SMUMLOGGER_WRITE("CMsgSimOperation::HaveClientRequestStatus")
+ return (iClientStatus != NULL);
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::Panic
+//
+// ----------------------------------------------------
+void CMsgSimOperation::Panic(TSimOperationPanic aPanic)
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::Panic")
+
+ _LIT(KSimOpPanicCategory, "SIMOP");
+ SMUMLOGGER_WRITE_FORMAT("Panic - Panic :%d", aPanic)
+ User::Panic(KSimOpPanicCategory, aPanic);
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::Panic")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::RunL
+// Active object RunL method is called when the request (sim params reading operation) has been completed
+//
+// ----------------------------------------------------
+void CMsgSimOperation::RunL()
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::RunL")
+
+ TInt error = iStatus.Int();
+ SMUMLOGGER_WRITE_FORMAT("RunL - 1st error check :%d", error)
+
+ if ( error == KErrNotSupported)
+ {
+ // Sim Card Not Supported in the platform
+ // Should be KErrNotSupported if constructL fails!
+ //
+ CompleteClientRequest(error);
+ }
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::RunL")
+ }
+
+// ----------------------------------------------------
+// CCMsgSimOperation::DoRunL
+//
+// ----------------------------------------------------
+void CMsgSimOperation::DoRunL()
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::DoRunL")
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::DoRunL")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::RunError
+// Called when AO RunL leaves. Handle the leave and return
+//
+// ----------------------------------------------------
+
+TInt CMsgSimOperation::RunError( TInt )
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::RunError")
+ DoCancel();
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::RunError")
+ return KErrNone;
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::DoCancel
+// called by active object's Cancel method
+//
+// ----------------------------------------------------
+void CMsgSimOperation::DoCancel()
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::DoCancel")
+
+ if ( iSimOperation ) // if the real Sim reading operation was started:
+ {
+ iSimOperation->Cancel(); // cancel it
+ }
+
+ // We don't need to complete our own request status as this function will never
+ // be called if our own request status has already been completed previously.
+ //
+ // We do need to complete the client's request status however.
+ if (iClientStatus)
+ {
+ CompleteClientRequest(KErrCancel);
+ }
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::DoCancel")
+ }
+
+
+// ----------------------------------------------------
+// CMsgSimOperation::HandleSessionEventL
+// called when there is a Msv session event.
+//
+// ----------------------------------------------------
+void CMsgSimOperation::HandleSessionEventL(
+ TMsvSessionEvent /*aEvent*/,
+ TAny* /*aArg1*/,
+ TAny* /*aArg2*/,
+ TAny* /*aArg3*/)
+ {
+ SMUMLOGGER_ENTERFN("CMsgSimOperation::HandleSessionEventL")
+
+ SMUMLOGGER_LEAVEFN("CMsgSimOperation::HandleSessionEventL")
+ }
+
+// ----------------------------------------------------
+// CMsgSimOperation::HandleStartupReadyL
+// Handles events from startup state observer
+//
+// ----------------------------------------------------
+//
+void CMsgSimOperation::HandleStartupReadyL()
+ {
+ SMUMLOGGER_WRITE( "BootState Ready" )
+ // Boot ready, start the real SimOperation
+ StartL();
+ }
+
+// End of File