--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/smfservermodule/smfserver/transportmgr/smftransportmanager.cpp Tue May 18 17:37:12 2010 +0530
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) 2010 Sasken Communication Technologies Ltd.
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the "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:
+ * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+ *
+ * Contributors:
+ * Manasij Roy, Nalina Hariharan
+ *
+ * Description:
+ * The Transport Manager class initializes the transport component of Smf
+ * framework
+ * Note: This class has dependencies on QtMobility project
+ *
+ */
+
+// Include files
+#include "smftransportmanager.h"
+#include "smftransportmanagerutil.h"
+
+// Static data initialisation
+SmfTransportManager* SmfTransportManager::m_myInstance = NULL;
+
+
+/**
+ * Method to get the instance of SmfTransportManager class
+ * @return The instance of SmfTransportManager class
+ */
+SmfTransportManager* SmfTransportManager::getInstance ( )
+ {
+ if(NULL == m_myInstance)
+ m_myInstance = new SmfTransportManager( );
+ return m_myInstance;
+ }
+
+/**
+ * Constructor with default argument
+ * @param aParent The parent object
+ */
+SmfTransportManager::SmfTransportManager ( )
+ : m_netwConfigMngr(this), m_systemInfo(this)
+ {
+ // Register for monitoring changes in IAPs (network configurations)
+ connect(&m_netwConfigMngr, SIGNAL(configurationAdded(const QNetworkConfiguration &)),
+ this, SLOT(configurationAdded(const QNetworkConfiguration &)));
+
+ connect(&m_netwConfigMngr, SIGNAL(configurationChanged(const QNetworkConfiguration &)),
+ this, SLOT(configurationChanged(const QNetworkConfiguration &)));
+
+ connect(&m_netwConfigMngr, SIGNAL(configurationRemoved(const QNetworkConfiguration &)),
+ this, SLOT(configurationRemoved(const QNetworkConfiguration &)));
+ }
+
+
+/**
+ * Destructor
+ */
+SmfTransportManager::~SmfTransportManager ( )
+ {
+ if(m_myInstance)
+ delete m_myInstance;
+ }
+
+
+/**
+ * Method to initialize the transport component before
+ * executing a web query
+ * @return SmfTransportInitializeResult
+ * @see smfglobal.h
+ */
+SmfTransportInitializeResult SmfTransportManager::initializeTransport ( )
+ {
+ SmfTransportInitializeResult retVal = SmfTransportInitNetworkNotAvailable;
+
+ if(getNetworkAvailabilty())
+ {
+ retVal = SmfTransportInitNoError;
+
+ SmfNetworkStatus status;
+ getCurrentNetworkStatus(status);
+
+ switch(status)
+ {
+ // homenetwork
+ case SmfNetworkConnectedHome:
+ case SmfNetworkConnected:
+ break;
+
+ // roaming
+ case SmfNetworkConnectedRoaming:
+///////////// check with CSM for usage while roaming
+//// if enabled do nothing(i.e, retVal will be SmfTransportInitNoError)
+//// else retVal = SmfTransportInitRoamingNetworkUsageNotEnabled;
+/* if(!iSmfServer->getNetworkUsageWhileRoamingSetting())
+ retVal = SmfTransportInitRoamingNetworkUsageNotEnabled;*/
+ break;
+
+ // unknown state
+ case SmfNetworkStateNotKnown:
+ // network not available
+ case SmfNetworkNotConnected:
+ default :
+ retVal = SmfTransportInitNetworkNotAvailable;
+ }
+ }
+ return retVal;
+ }
+
+
+/* Method to get network availability.
+ * @return True if online, else false.
+ */
+bool SmfTransportManager::getNetworkAvailabilty ( )
+ {
+ return m_netwConfigMngr.isOnline();
+ }
+
+
+/*
+ * Method that checks if the phone is in home network or in roaming.
+ * @param aStatus [out] An output parameter indicating the current network
+ * status as SmfNetworkStatus
+ * @see smfglobal.h
+ */
+void SmfTransportManager::getCurrentNetworkStatus (
+ SmfNetworkStatus &aStatus )
+ {
+ QSystemNetworkInfo::NetworkStatus status = m_systemInfo.networkStatus ( QSystemNetworkInfo::GsmMode );
+
+ switch(status)
+ {
+ // homenetwork
+ case QSystemNetworkInfo::HomeNetwork:
+ aStatus = SmfNetworkConnectedHome;
+ break;
+
+ // connected
+ case QSystemNetworkInfo::Connected:
+ aStatus = SmfNetworkConnected;
+ break;
+
+ // roaming
+ case QSystemNetworkInfo::Roaming:
+ aStatus = SmfNetworkConnectedRoaming;
+ break;
+
+ // unknown state
+ case QSystemNetworkInfo::Searching:
+ case QSystemNetworkInfo::Busy:
+ aStatus = SmfNetworkStateNotKnown;
+ break;
+
+ // network not available
+ case QSystemNetworkInfo::UndefinedStatus:
+ case QSystemNetworkInfo::NoNetworkAvailable:
+ case QSystemNetworkInfo::EmergencyOnly:
+ case QSystemNetworkInfo::Denied:
+ default :
+ aStatus = SmfNetworkNotConnected;
+ }
+ }
+
+
+
+/**
+ * This slot is called whenever a new network configuration is added to the system.
+ * @param aConfig The new configuration
+ */
+void SmfTransportManager::configurationAdded (
+ const QNetworkConfiguration &aConfig )
+ {
+ SmfTransportManagerUtil::getInstance()->configurationAdded(SmfTransportOpIAPChanged);
+ }
+
+/**
+ * This slot is called when the state of the aConfig changes.
+ * @param aConfig The changed configuration
+ */
+void SmfTransportManager::configurationChanged (
+ const QNetworkConfiguration &aConfig )
+ {
+ if( aConfig == m_netwConfigMngr.defaultConfiguration() )
+ SmfTransportManagerUtil::getInstance()->configurationChanged(SmfTransportOpIAPChanged);
+ }
+
+/**
+ * This slot is called when a configuration is about to be removed from the system.
+ * The removed configuration is invalid but retains name and identifier.
+ * @param aConfig The to be removed configuration
+ */
+void SmfTransportManager::configurationRemoved (
+ const QNetworkConfiguration &aConfig )
+ {
+ if( aConfig == m_netwConfigMngr.defaultConfiguration() )
+ SmfTransportManagerUtil::getInstance()->configurationRemoved(SmfTransportOpIAPChanged);
+ }
+