--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionmonitoring/connmon/connectionmonitor/src/ConnMonBearerCSD.cpp Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,141 @@
+/*
+* Copyright (c) 2006-2009 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: Implementation for bearer CSD.
+*
+*/
+
+#include "ConnMonBearerCSD.h"
+#include "connmoncommsdatcache.h"
+#include "ConnMonIAP.h"
+#include "log.h"
+
+// ---------------------------------------------------------------------------
+// Construction
+// ---------------------------------------------------------------------------
+//
+TConnMonBearerCSD::TConnMonBearerCSD(
+ CConnMonIAP* aConnMonIAP,
+ CConnMonCommsDatCache* aCommsDatCache )
+ :
+ TConnMonBearer( aConnMonIAP, aCommsDatCache )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Is bearer available
+// ---------------------------------------------------------------------------
+//
+TInt TConnMonBearerCSD::GetAvailability( TBool& aAvailable ) const
+ {
+ //LOGENTRFN("TConnMonBearerCSD::GetAvailability()")
+ TInt err( KErrNone );
+ aAvailable = EFalse;
+
+ // Is bearer available
+ TBool byCell( EFalse );
+ TBool byPhone( EFalse );
+
+ // Find out if we are in 2G or in 3G - it is needed for calculating bearer availability
+ RMobilePhone::TMobilePhoneNetworkMode mode;
+ err = iConnMonIAP->MobilePhone()->GetCurrentMode( mode );
+
+ if ( KErrNone == err )
+ {
+ switch ( mode )
+ {
+ case RMobilePhone::ENetworkModeGsm:
+ case RMobilePhone::ENetworkModeUnknown: // Emulator default
+ err = iConnMonIAP->GetBearerSupportInfo( EBearerIdCSD, byCell, byPhone );
+ break;
+ case RMobilePhone::ENetworkModeWcdma:
+ err = iConnMonIAP->GetBearerSupportInfo( EBearerIdWcdmaCSD, byCell, byPhone );
+ break;
+ default:
+ LOGEXITFN1("TConnMonBearerCSD::GetAvailability()", err)
+ return err; // Return silently (KErrNone), report as not available
+ }
+
+ if ( KErrNone == err )
+ {
+ if ( byCell && byPhone )
+ {
+ aAvailable = ETrue;
+ }
+ }
+ }
+
+ // Make CSD available in wins
+#if defined(__WINSCW__)
+ LOGIT2("GetAvailability: Emulator override, true values were %d <%d>", aAvailable, err)
+ aAvailable = ETrue;
+ err = KErrNone;
+#endif
+
+ //LOGEXITFN1("TConnMonBearerCSD::GetAvailability()", err)
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// Bearer ID getter
+// ---------------------------------------------------------------------------
+//
+TUint TConnMonBearerCSD::BearerId() const
+ {
+ return EBearerIdCSD;
+ }
+
+// ---------------------------------------------------------------------------
+// ETrue if bearer is valid (internal state is correct)
+// ---------------------------------------------------------------------------
+//
+TBool TConnMonBearerCSD::Valid() const
+ {
+ return ETrue;
+ }
+
+// ---------------------------------------------------------------------------
+// Sets available IAPs of this type as available in CommsDat cache
+// ---------------------------------------------------------------------------
+//
+void TConnMonBearerCSD::FlagAvailableIaps() const
+ {
+ LOGENTRFN("TConnMonBearerCSD::FlagAvailableIaps()")
+
+ RArray<TUint> idArray;
+ iConnMonIAP->GetActiveConnectionsIds( EBearerIdCSD, idArray );
+
+ if ( idArray.Count() > 0 )
+ {
+ LOGIT1("Found %d active CSD IAPs", idArray.Count())
+ for ( TInt i = 0; i < idArray.Count(); i++ )
+ {
+ iCommsDatCache->SetAvailableIapWithId( idArray[i] );
+ }
+ }
+ else
+ {
+ TBool available( EFalse );
+ TInt err = GetAvailability( available );
+ LOGIT2("FlagAvailableIaps: CSD availability: %d (bool) <%d>", available, err)
+ if ( KErrNone == err && available )
+ {
+ iCommsDatCache->SetAvailableIapsWithBearerId( EBearerIdCSD );
+ }
+ }
+ idArray.Close();
+
+ LOGEXITFN("TConnMonBearerCSD::FlagAvailableIaps()")
+ }
+
+// End-of-file