Warning, file /frameworks/modemmanager-qt/src/bearer.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com> 0003 SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #include "bearer_p.h" 0009 #include "mmdebug_p.h" 0010 #ifdef MMQT_STATIC 0011 #include "dbus/fakedbus.h" 0012 #else 0013 #include "dbus/dbus.h" 0014 #endif 0015 0016 // logging category for this framework, default: log stuff >= warning 0017 Q_LOGGING_CATEGORY(MMQT, "kf.modemmanagerqt", QtWarningMsg) 0018 0019 namespace ModemManager 0020 { 0021 class ModemManager::IpConfig::Private 0022 { 0023 public: 0024 Private() 0025 { 0026 } 0027 MMBearerIpMethod method{MM_BEARER_IP_METHOD_UNKNOWN}; 0028 0029 QString address; 0030 uint prefix{0}; 0031 QString dns1; 0032 QString dns2; 0033 QString dns3; 0034 QString gateway; 0035 }; 0036 0037 } 0038 0039 ModemManager::IpConfig::IpConfig() 0040 : d(new Private()) 0041 { 0042 } 0043 0044 ModemManager::IpConfig::IpConfig(const ModemManager::IpConfig &other) 0045 : d(new Private) 0046 { 0047 *this = other; 0048 } 0049 0050 ModemManager::IpConfig::~IpConfig() 0051 { 0052 delete d; 0053 } 0054 0055 MMBearerIpMethod ModemManager::IpConfig::method() const 0056 { 0057 return d->method; 0058 } 0059 0060 void ModemManager::IpConfig::setMethod(MMBearerIpMethod method) 0061 { 0062 d->method = method; 0063 } 0064 0065 QString ModemManager::IpConfig::address() const 0066 { 0067 return d->address; 0068 } 0069 0070 void ModemManager::IpConfig::setAddress(const QString &address) 0071 { 0072 d->address = address; 0073 } 0074 0075 uint ModemManager::IpConfig::prefix() const 0076 { 0077 return d->prefix; 0078 } 0079 0080 void ModemManager::IpConfig::setPrefix(uint prefix) 0081 { 0082 d->prefix = prefix; 0083 } 0084 0085 QString ModemManager::IpConfig::dns1() const 0086 { 0087 return d->dns1; 0088 } 0089 0090 void ModemManager::IpConfig::setDns1(const QString &dns1) 0091 { 0092 d->dns1 = dns1; 0093 } 0094 0095 QString ModemManager::IpConfig::dns2() const 0096 { 0097 return d->dns2; 0098 } 0099 0100 void ModemManager::IpConfig::setDns2(const QString &dns2) 0101 { 0102 d->dns2 = dns2; 0103 } 0104 0105 QString ModemManager::IpConfig::dns3() const 0106 { 0107 return d->dns3; 0108 } 0109 0110 void ModemManager::IpConfig::setDns3(const QString &dns3) 0111 { 0112 d->dns3 = dns3; 0113 } 0114 0115 QString ModemManager::IpConfig::gateway() const 0116 { 0117 return d->gateway; 0118 } 0119 0120 void ModemManager::IpConfig::setGateway(const QString &gateway) 0121 { 0122 d->gateway = gateway; 0123 } 0124 0125 ModemManager::IpConfig &ModemManager::IpConfig::operator=(const ModemManager::IpConfig &other) 0126 { 0127 if (this == &other) { 0128 return *this; 0129 } 0130 0131 *d = *other.d; 0132 return *this; 0133 } 0134 0135 ModemManager::BearerPrivate::BearerPrivate(const QString &path, Bearer *q) 0136 #ifdef MMQT_STATIC 0137 : bearerIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus()) 0138 #else 0139 : bearerIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus()) 0140 #endif 0141 , uni(path) 0142 , q_ptr(q) 0143 { 0144 if (bearerIface.isValid()) { 0145 bearerInterface = bearerIface.interface(); 0146 isConnected = bearerIface.connected(); 0147 isSuspended = bearerIface.suspended(); 0148 ipv4Config = ipConfigFromMap(bearerIface.ip4Config()); 0149 ipv6Config = ipConfigFromMap(bearerIface.ip6Config()); 0150 ipTimeout = bearerIface.ipTimeout(); 0151 bearerProperties = bearerIface.properties(); 0152 } 0153 } 0154 0155 ModemManager::Bearer::Bearer(const QString &path, QObject *parent) 0156 : QObject(parent) 0157 , d_ptr(new BearerPrivate(path, this)) 0158 { 0159 Q_D(Bearer); 0160 0161 #ifdef MMQT_STATIC 0162 QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0163 path, 0164 DBUS_INTERFACE_PROPS, 0165 QStringLiteral("PropertiesChanged"), 0166 d, 0167 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0168 #else 0169 QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0170 path, 0171 DBUS_INTERFACE_PROPS, 0172 QStringLiteral("PropertiesChanged"), 0173 d, 0174 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0175 #endif 0176 } 0177 0178 ModemManager::Bearer::~Bearer() 0179 { 0180 delete d_ptr; 0181 } 0182 0183 QString ModemManager::Bearer::interface() const 0184 { 0185 Q_D(const Bearer); 0186 return d->bearerInterface; 0187 } 0188 0189 bool ModemManager::Bearer::isConnected() const 0190 { 0191 Q_D(const Bearer); 0192 return d->isConnected; 0193 } 0194 0195 bool ModemManager::Bearer::isSuspended() const 0196 { 0197 Q_D(const Bearer); 0198 return d->isSuspended; 0199 } 0200 0201 ModemManager::IpConfig ModemManager::Bearer::ip4Config() const 0202 { 0203 Q_D(const Bearer); 0204 return d->ipv4Config; 0205 } 0206 0207 ModemManager::IpConfig ModemManager::Bearer::ip6Config() const 0208 { 0209 Q_D(const Bearer); 0210 return d->ipv6Config; 0211 } 0212 0213 uint ModemManager::Bearer::ipTimeout() const 0214 { 0215 Q_D(const Bearer); 0216 return d->ipTimeout; 0217 } 0218 0219 QVariantMap ModemManager::Bearer::properties() const 0220 { 0221 Q_D(const Bearer); 0222 return d->bearerProperties; 0223 } 0224 0225 QDBusPendingReply<void> ModemManager::Bearer::connectBearer() 0226 { 0227 Q_D(Bearer); 0228 return d->bearerIface.Connect(); 0229 } 0230 0231 QDBusPendingReply<void> ModemManager::Bearer::disconnectBearer() 0232 { 0233 Q_D(Bearer); 0234 return d->bearerIface.Disconnect(); 0235 } 0236 0237 void ModemManager::Bearer::setTimeout(int timeout) 0238 { 0239 Q_D(Bearer); 0240 d->bearerIface.setTimeout(timeout); 0241 } 0242 0243 int ModemManager::Bearer::timeout() const 0244 { 0245 Q_D(const Bearer); 0246 return d->bearerIface.timeout(); 0247 } 0248 0249 ModemManager::IpConfig ModemManager::BearerPrivate::ipConfigFromMap(const QVariantMap &map) 0250 { 0251 ModemManager::IpConfig result; 0252 result.setMethod((MMBearerIpMethod)map.value(QStringLiteral("method")).toUInt()); 0253 0254 if (result.method() == MM_BEARER_IP_METHOD_STATIC) { 0255 result.setAddress(map.value(QStringLiteral("address")).toString()); 0256 result.setPrefix(map.value(QStringLiteral("prefix")).toUInt()); 0257 result.setDns1(map.value(QStringLiteral("dns1")).toString()); 0258 result.setDns2(map.value(QStringLiteral("dns2")).toString()); 0259 result.setDns3(map.value(QStringLiteral("dns3")).toString()); 0260 result.setGateway(map.value(QStringLiteral("gateway")).toString()); 0261 } 0262 0263 return result; 0264 } 0265 0266 void ModemManager::BearerPrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps) 0267 { 0268 Q_Q(Bearer); 0269 Q_UNUSED(invalidatedProps); 0270 qCDebug(MMQT) << interface << properties.keys(); 0271 0272 if (interface == QLatin1String(MMQT_DBUS_INTERFACE_BEARER)) { 0273 QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_INTERFACE)); 0274 if (it != properties.constEnd()) { 0275 bearerInterface = it->toString(); 0276 Q_EMIT q->interfaceChanged(bearerInterface); 0277 } 0278 it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_CONNECTED)); 0279 if (it != properties.constEnd()) { 0280 isConnected = it->toBool(); 0281 Q_EMIT q->connectedChanged(isConnected); 0282 } 0283 it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_SUSPENDED)); 0284 if (it != properties.constEnd()) { 0285 isSuspended = it->toBool(); 0286 Q_EMIT q->suspendedChanged(isSuspended); 0287 } 0288 it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_IP4CONFIG)); 0289 if (it != properties.constEnd()) { 0290 ipv4Config = ipConfigFromMap(qdbus_cast<QVariantMap>(*it)); 0291 Q_EMIT q->ip4ConfigChanged(ipv4Config); 0292 } 0293 it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_IP6CONFIG)); 0294 if (it != properties.constEnd()) { 0295 ipv6Config = ipConfigFromMap(qdbus_cast<QVariantMap>(*it)); 0296 Q_EMIT q->ip6ConfigChanged(ipv6Config); 0297 } 0298 it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_IPTIMEOUT)); 0299 if (it != properties.constEnd()) { 0300 ipTimeout = it->toUInt(); 0301 Q_EMIT q->ipTimeoutChanged(ipTimeout); 0302 } 0303 it = properties.constFind(QLatin1String(MM_BEARER_PROPERTY_PROPERTIES)); 0304 if (it != properties.constEnd()) { 0305 bearerProperties = qdbus_cast<QVariantMap>(*it); 0306 Q_EMIT q->propertiesChanged(bearerProperties); 0307 } 0308 } 0309 } 0310 0311 QString ModemManager::Bearer::uni() const 0312 { 0313 Q_D(const Bearer); 0314 return d->uni; 0315 } 0316 0317 #include "moc_bearer.cpp" 0318 #include "moc_bearer_p.cpp"