*
*/
-#include <QDebug>
-#include <QApplication>
+#include <QtCore/QDebug>
#include <QtCore/QTimerEvent>
#include <QtCore/QVariant>
+#include <QtCore/QStringList>
+#include <QtGui/QApplication>
#include <QtDBus/QDBusArgument>
#include <QtDBus/QDBusConnection>
#include <icd/dbus_api.h>
return true;
}
-bool ConnectionManager::getBestConnection(Connection& connection)
+bool ConnectionManager::getBestConnection(Connection& connection, ConnectionType type)
{
bool blockingValue = blocking_;
if(connections.size() == 0)
{
- qDebug() << "No connections";
error_ = NO_AVAILABLE_CONNECTIONS;
return false;
}
switch(connections.at(i).type)
{
case WLAN:
- if(connections.at(i).strength > biggestWlan)
+ if(type != GPRS && connections.at(i).strength > biggestWlan)
{
biggestWlan = connections.at(i).strength;
bestWlan = i;
break;
case GPRS:
- if(connections.at(i).strength > biggestGprs)
+ if(type != WLAN && connections.at(i).strength > biggestGprs)
{
biggestGprs = connections.at(i).strength;
bestGprs = i;
}
-bool ConnectionManager::autoConnect()
-{
- Connection best;
-
- if(!getBestConnection(best))
- {
- return false;
- }
-
- qDebug() << "Best connection: " << best.name;
-
- return connect(best.id);
-
-}
-
bool ConnectionManager::disconnect(bool force)
{
// Forced disconnect is not allowed if connection
return true;
}
-bool ConnectionManager::scanConnections(QList<ConnectionManager::Connection>& connections)
+bool ConnectionManager::scanConnections(QList<ConnectionManager::Connection>& connections,
+ ConnectionManager::ConnectionType type)
{
unsigned int flags = static_cast<unsigned int>(ICD_SCAN_REQUEST_ACTIVE_SAVED);
scanReady_ = false;
scannedConnections_ = 0;
connections_ = &connections;
- QDBusMessage rep = icd2interface_->call(ICD_DBUS_API_SCAN_REQ, QVariant(flags));
+
+ QStringList networks;
+
+ switch(type)
+ {
+ case WLAN:
+ networks << "WLAN_INFRA" << "WLAN_ADHOC";
+ break;
+ case GPRS:
+ networks << "GPRS";
+ break;
+ default:
+ break;
+ }
+
+ QDBusMessage rep = icd2interface_->call(ICD_DBUS_API_SCAN_REQ,
+ QVariant(flags),
+ QVariant(networks));
numberOfConnections_ = rep.arguments().value(0).toList().size();
if(numberOfConnections_ == 0)
{
connections_ = 0;
+ qDebug() << "No connections";
return false;
}
return true;
}
-ConnectionManager::NetworkMode ConnectionManager::getNetworkMode()
-{
- QDBusMessage msg = QDBusMessage::createMethodCall("com.nokia.phone.net",
- "/com/nokia/phone/net",
- "Phone.Net",
- "get_registration_status");
-
- QDBusMessage rep = QDBusConnection::systemBus().call(msg);
-
- if(rep.type() == QDBusMessage::ErrorMessage)
- {
- qDebug() << rep.errorMessage();
-
- return NETWORK_UNKNOWN;
- }
-
- char services = rep.arguments().value(6).toChar().toAscii();
-
- qDebug() << services;
-
- if(services & 0x08)
- {
- return NETWORK_3_5G;
- }
- else if(services & 0x04)
- {
- return NETWORK_3G;
- }
- else if(services & 0x01)
- {
- return NETWORK_2_5G;
- }
- else if(services & 0x02)
- {
- return NETWORK_2G;
- }
-
- return NETWORK_UNKNOWN;
-}
-
ConnectionManager::Error ConnectionManager::error() const
{
return error_;