Warning, file /frameworks/modemmanager-qt/src/modem.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: 2008, 2011 Will Stephenson <wstephenson@kde.org> 0003 SPDX-FileCopyrightText: 2010 Lamarque Souza <lamarque@kde.org> 0004 SPDX-FileCopyrightText: 2013 Daniel Nicoletti <dantti12@gmail.com> 0005 SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com> 0006 SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com> 0007 0008 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0009 */ 0010 0011 #include "modem.h" 0012 #include "modem_p.h" 0013 0014 #ifdef MMQT_STATIC 0015 #include "dbus/fakedbus.h" 0016 #else 0017 #include "dbus/dbus.h" 0018 #endif 0019 #include "generictypes_p.h" 0020 #include "mmdebug_p.h" 0021 0022 namespace ModemManager 0023 { 0024 class ModemManager::BearerProperties::Private 0025 { 0026 public: 0027 Private() 0028 { 0029 } 0030 QString apn; 0031 MMBearerIpFamily ipType; 0032 MMBearerAllowedAuth allowedAuth; 0033 QString user; 0034 QString password; 0035 bool allowRoaming; 0036 MMModemCdmaRmProtocol rmProtocol; 0037 QString number; 0038 }; 0039 0040 } 0041 0042 ModemManager::BearerProperties::BearerProperties() 0043 : d(new Private()) 0044 { 0045 } 0046 0047 ModemManager::BearerProperties::BearerProperties(const ModemManager::BearerProperties &other) 0048 : d(new Private) 0049 { 0050 *this = other; 0051 } 0052 0053 ModemManager::BearerProperties::~BearerProperties() 0054 { 0055 delete d; 0056 } 0057 0058 QString ModemManager::BearerProperties::apn() const 0059 { 0060 return d->apn; 0061 } 0062 0063 void ModemManager::BearerProperties::setApn(const QString &apn) 0064 { 0065 d->apn = apn; 0066 } 0067 0068 MMBearerIpFamily ModemManager::BearerProperties::ipType() const 0069 { 0070 return d->ipType; 0071 } 0072 0073 void ModemManager::BearerProperties::setIpType(MMBearerIpFamily ipType) 0074 { 0075 d->ipType = ipType; 0076 } 0077 0078 MMBearerAllowedAuth ModemManager::BearerProperties::allowedAuthentication() const 0079 { 0080 return d->allowedAuth; 0081 } 0082 0083 void ModemManager::BearerProperties::setAllowedAuthentication(MMBearerAllowedAuth allowedAuth) 0084 { 0085 d->allowedAuth = allowedAuth; 0086 } 0087 0088 QString ModemManager::BearerProperties::user() const 0089 { 0090 return d->user; 0091 } 0092 0093 void ModemManager::BearerProperties::setUser(const QString &user) 0094 { 0095 d->user = user; 0096 } 0097 0098 QString ModemManager::BearerProperties::password() const 0099 { 0100 return d->password; 0101 } 0102 0103 void ModemManager::BearerProperties::setPassword(const QString &password) 0104 { 0105 d->password = password; 0106 } 0107 0108 bool ModemManager::BearerProperties::allowRoaming() const 0109 { 0110 return d->allowRoaming; 0111 } 0112 0113 void ModemManager::BearerProperties::setAllowRoaming(bool allow) 0114 { 0115 d->allowRoaming = allow; 0116 } 0117 0118 MMModemCdmaRmProtocol ModemManager::BearerProperties::rmProtocol() const 0119 { 0120 return d->rmProtocol; 0121 } 0122 0123 void ModemManager::BearerProperties::setRmProtocol(MMModemCdmaRmProtocol rmProtocol) 0124 { 0125 d->rmProtocol = rmProtocol; 0126 } 0127 0128 QString ModemManager::BearerProperties::number() const 0129 { 0130 return d->number; 0131 } 0132 0133 void ModemManager::BearerProperties::setNumber(const QString &number) 0134 { 0135 d->number = number; 0136 } 0137 0138 ModemManager::BearerProperties &ModemManager::BearerProperties::operator=(const ModemManager::BearerProperties &other) 0139 { 0140 if (this == &other) { 0141 return *this; 0142 } 0143 0144 *d = *other.d; 0145 return *this; 0146 } 0147 0148 ModemManager::ModemPrivate::ModemPrivate(const QString &path, Modem *q) 0149 : InterfacePrivate(path, q) 0150 #ifdef MMQT_STATIC 0151 , modemIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus()) 0152 #else 0153 , modemIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus()) 0154 #endif 0155 , q_ptr(q) 0156 { 0157 if (modemIface.isValid()) { 0158 simPath = modemIface.sim().path(); 0159 Q_FOREACH (uint cap, modemIface.supportedCapabilities()) { 0160 supportedCapabilities.append((MMModemCapability)cap); 0161 } 0162 currentCapabilities = (QFlags<MMModemCapability>)modemIface.currentCapabilities(); 0163 maxBearers = modemIface.maxBearers(); 0164 maxActiveBearers = modemIface.maxActiveBearers(); 0165 manufacturer = modemIface.manufacturer(); 0166 model = modemIface.model(); 0167 revision = modemIface.revision(); 0168 deviceIdentifier = modemIface.deviceIdentifier(); 0169 device = modemIface.device(); 0170 drivers = modemIface.drivers(); 0171 plugin = modemIface.plugin(); 0172 primaryPort = modemIface.primaryPort(); 0173 ports = modemIface.ports(); 0174 equipmentIdentifier = modemIface.equipmentIdentifier(); 0175 unlockRequired = (MMModemLock)modemIface.unlockRequired(); 0176 unlockRetries = modemIface.unlockRetries(); 0177 state = (MMModemState)modemIface.state(); 0178 stateFailedReason = (MMModemStateFailedReason)modemIface.stateFailedReason(); 0179 accessTechnologies = (ModemManager::Modem::AccessTechnologies)modemIface.accessTechnologies(); 0180 signalQuality = modemIface.signalQuality(); 0181 ownNumbers = modemIface.ownNumbers(); 0182 powerState = (MMModemPowerState)modemIface.powerState(); 0183 supportedModes = modemIface.supportedModes(); 0184 currentModes = modemIface.currentModes(); 0185 Q_FOREACH (uint band, modemIface.supportedBands()) { 0186 supportedBands.append((MMModemBand)band); 0187 } 0188 Q_FOREACH (uint band, modemIface.currentBands()) { 0189 currentBands.append((MMModemBand)band); 0190 } 0191 supportedIpFamilies = (ModemManager::Modem::IpBearerFamilies)modemIface.supportedIpFamilies(); 0192 0193 QTimer::singleShot(0, this, &ModemManager::ModemPrivate::initializeBearers); 0194 } 0195 } 0196 0197 void ModemManager::ModemPrivate::initializeBearers() 0198 { 0199 Q_Q(Modem); 0200 0201 #if MM_CHECK_VERSION(1, 2, 0) 0202 QList<QDBusObjectPath> bearersList = modemIface.bearers(); 0203 Q_FOREACH (const QDBusObjectPath &bearer, bearersList) { 0204 if (!bearers.contains(bearer.path())) { 0205 bearers.insert(bearer.path(), Bearer::Ptr()); 0206 Q_EMIT q->bearerAdded(bearer.path()); 0207 } 0208 } 0209 #else 0210 QDBusPendingReply<QList<QDBusObjectPath>> reply = modemIface.ListBearers(); 0211 reply.waitForFinished(); 0212 if (reply.isValid()) { 0213 Q_FOREACH (const QDBusObjectPath &bearer, reply.value()) { 0214 if (!bearers.contains(bearer.path())) { 0215 bearers.insert(bearer.path(), Bearer::Ptr()); 0216 Q_EMIT q->bearerAdded(bearer.path()); 0217 } 0218 } 0219 } 0220 #endif 0221 } 0222 0223 ModemManager::Modem::Modem(const QString &path, QObject *parent) 0224 : Interface(*new ModemPrivate(path, this), parent) 0225 { 0226 Q_D(Modem); 0227 0228 qRegisterMetaType<AccessTechnologies>(); 0229 qRegisterMetaType<Capabilities>(); 0230 qRegisterMetaType<ModemModes>(); 0231 qRegisterMetaType<IpBearerFamilies>(); 0232 qRegisterMetaType<MMModemLock>(); 0233 qRegisterMetaType<MMModemPowerState>(); 0234 qRegisterMetaType<MMModemState>(); 0235 qRegisterMetaType<MMModemStateChangeReason>(); 0236 qRegisterMetaType<MMModemStateFailedReason>(); 0237 0238 if (d->modemIface.isValid()) { 0239 #ifdef MMQT_STATIC 0240 QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0241 d->uni, 0242 QLatin1String(DBUS_INTERFACE_PROPS), 0243 QLatin1String("PropertiesChanged"), 0244 d, 0245 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0246 #else 0247 QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0248 d->uni, 0249 QLatin1String(DBUS_INTERFACE_PROPS), 0250 QLatin1String("PropertiesChanged"), 0251 d, 0252 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0253 #endif 0254 } 0255 0256 connect(&d->modemIface, &OrgFreedesktopModemManager1ModemInterface::StateChanged, d, &ModemPrivate::onStateChanged); 0257 } 0258 0259 ModemManager::Modem::~Modem() 0260 { 0261 } 0262 0263 QString ModemManager::Modem::uni() const 0264 { 0265 Q_D(const Modem); 0266 return d->uni; 0267 } 0268 0269 bool ModemManager::Modem::isEnabled() const 0270 { 0271 Q_D(const Modem); 0272 return (MMModemPowerState)d->powerState == MM_MODEM_POWER_STATE_ON; 0273 } 0274 0275 bool ModemManager::Modem::isValid() const 0276 { 0277 Q_D(const Modem); 0278 return d->modemIface.isValid(); 0279 } 0280 0281 QDBusPendingReply<void> ModemManager::Modem::setEnabled(bool enable) 0282 { 0283 Q_D(Modem); 0284 return d->modemIface.Enable(enable); 0285 } 0286 0287 QDBusPendingReply<QDBusObjectPath> ModemManager::Modem::createBearer(const ModemManager::BearerProperties &bearerProperties) 0288 { 0289 Q_D(Modem); 0290 QVariantMap map; 0291 map.insert(QStringLiteral("apn"), bearerProperties.apn()); 0292 if (bearerProperties.ipType() != MM_BEARER_IP_FAMILY_NONE) { 0293 map.insert(QStringLiteral("ip-type"), (uint)bearerProperties.ipType()); 0294 } 0295 if (bearerProperties.allowedAuthentication() != MM_BEARER_ALLOWED_AUTH_UNKNOWN) { 0296 map.insert(QStringLiteral("allowed-auth"), (uint)bearerProperties.allowedAuthentication()); 0297 } 0298 if (!bearerProperties.user().isEmpty()) { 0299 map.insert(QStringLiteral("user"), bearerProperties.user()); 0300 } 0301 if (!bearerProperties.password().isEmpty()) { 0302 map.insert(QStringLiteral("password"), bearerProperties.password()); 0303 } 0304 map.insert(QStringLiteral("allow-roaming"), bearerProperties.allowRoaming()); 0305 if (bearerProperties.rmProtocol() != MM_MODEM_CDMA_RM_PROTOCOL_UNKNOWN) { 0306 map.insert(QStringLiteral("rm-protocol"), (uint)bearerProperties.rmProtocol()); 0307 } 0308 if (!bearerProperties.number().isEmpty()) { 0309 map.insert(QStringLiteral("number"), bearerProperties.number()); 0310 } 0311 return d->modemIface.CreateBearer(map); 0312 } 0313 0314 QDBusPendingReply<void> ModemManager::Modem::deleteBearer(const QString &bearer) 0315 { 0316 Q_D(Modem); 0317 return d->modemIface.DeleteBearer(QDBusObjectPath(bearer)); 0318 } 0319 0320 ModemManager::Bearer::List ModemManager::Modem::listBearers() const 0321 { 0322 Q_D(const Modem); 0323 0324 ModemManager::Bearer::List list; 0325 QMap<QString, Bearer::Ptr>::const_iterator i = d->bearers.constBegin(); 0326 while (i != d->bearers.constEnd()) { 0327 ModemManager::Bearer::Ptr bearer = const_cast<ModemPrivate *>(d)->findRegisteredBearer(i.key()); 0328 if (bearer) { 0329 list << bearer; 0330 } 0331 ++i; 0332 } 0333 return list; 0334 } 0335 0336 ModemManager::Bearer::Ptr ModemManager::Modem::findBearer(const QString &bearer) const 0337 { 0338 Q_D(const Modem); 0339 return const_cast<ModemPrivate *>(d)->findRegisteredBearer(bearer); 0340 } 0341 0342 QDBusPendingReply<void> ModemManager::Modem::reset() 0343 { 0344 Q_D(Modem); 0345 return d->modemIface.Reset(); 0346 } 0347 0348 QDBusPendingReply<void> ModemManager::Modem::factoryReset(const QString &code) 0349 { 0350 Q_D(Modem); 0351 return d->modemIface.FactoryReset(code); 0352 } 0353 0354 QDBusPendingReply<void> ModemManager::Modem::setPowerState(MMModemPowerState state) 0355 { 0356 Q_D(Modem); 0357 return d->modemIface.SetPowerState(state); 0358 } 0359 0360 QDBusPendingReply<void> ModemManager::Modem::setCurrentCapabilities(Capabilities caps) 0361 { 0362 Q_D(Modem); 0363 return d->modemIface.SetCurrentCapabilities((uint)caps); 0364 } 0365 0366 QDBusPendingReply<void> ModemManager::Modem::setCurrentModes(const CurrentModesType &mode) 0367 { 0368 Q_D(Modem); 0369 return d->modemIface.SetCurrentModes(mode); 0370 } 0371 0372 QDBusPendingReply<void> ModemManager::Modem::setCurrentBands(const QList<MMModemBand> &bands) 0373 { 0374 Q_D(Modem); 0375 QList<uint> tmp; 0376 Q_FOREACH (const MMModemBand band, bands) { 0377 tmp.append(band); 0378 } 0379 return d->modemIface.SetCurrentBands(tmp); 0380 } 0381 0382 QDBusPendingReply<QString> ModemManager::Modem::command(const QString &cmd, uint timeout) 0383 { 0384 Q_D(Modem); 0385 return d->modemIface.Command(cmd, timeout); 0386 } 0387 0388 QString ModemManager::Modem::simPath() const 0389 { 0390 Q_D(const Modem); 0391 return d->simPath; 0392 } 0393 0394 QList<MMModemCapability> ModemManager::Modem::supportedCapabilities() const 0395 { 0396 Q_D(const Modem); 0397 return d->supportedCapabilities; 0398 } 0399 0400 ModemManager::Modem::Capabilities ModemManager::Modem::currentCapabilities() const 0401 { 0402 Q_D(const Modem); 0403 return d->currentCapabilities; 0404 } 0405 0406 uint ModemManager::Modem::maxBearers() const 0407 { 0408 Q_D(const Modem); 0409 return d->maxBearers; 0410 } 0411 0412 uint ModemManager::Modem::maxActiveBearers() const 0413 { 0414 Q_D(const Modem); 0415 return d->maxActiveBearers; 0416 } 0417 0418 QString ModemManager::Modem::manufacturer() const 0419 { 0420 Q_D(const Modem); 0421 return d->manufacturer; 0422 } 0423 0424 QString ModemManager::Modem::model() const 0425 { 0426 Q_D(const Modem); 0427 return d->model; 0428 } 0429 0430 QString ModemManager::Modem::revision() const 0431 { 0432 Q_D(const Modem); 0433 return d->revision; 0434 } 0435 0436 QString ModemManager::Modem::deviceIdentifier() const 0437 { 0438 Q_D(const Modem); 0439 return d->deviceIdentifier; 0440 } 0441 0442 QString ModemManager::Modem::device() const 0443 { 0444 Q_D(const Modem); 0445 return d->device; 0446 } 0447 0448 QStringList ModemManager::Modem::drivers() const 0449 { 0450 Q_D(const Modem); 0451 return d->drivers; 0452 } 0453 0454 QString ModemManager::Modem::plugin() const 0455 { 0456 Q_D(const Modem); 0457 return d->plugin; 0458 } 0459 0460 QString ModemManager::Modem::primaryPort() const 0461 { 0462 Q_D(const Modem); 0463 return d->primaryPort; 0464 } 0465 0466 ModemManager::PortList ModemManager::Modem::ports() const 0467 { 0468 Q_D(const Modem); 0469 return d->ports; 0470 } 0471 0472 QString ModemManager::Modem::equipmentIdentifier() const 0473 { 0474 Q_D(const Modem); 0475 return d->equipmentIdentifier; 0476 } 0477 0478 MMModemLock ModemManager::Modem::unlockRequired() const 0479 { 0480 Q_D(const Modem); 0481 return d->unlockRequired; 0482 } 0483 0484 ModemManager::UnlockRetriesMap ModemManager::Modem::unlockRetries() const 0485 { 0486 Q_D(const Modem); 0487 return d->unlockRetries; 0488 } 0489 0490 MMModemState ModemManager::Modem::state() const 0491 { 0492 Q_D(const Modem); 0493 return d->state; 0494 } 0495 0496 MMModemStateFailedReason ModemManager::Modem::stateFailedReason() const 0497 { 0498 Q_D(const Modem); 0499 return d->stateFailedReason; 0500 } 0501 0502 ModemManager::Modem::AccessTechnologies ModemManager::Modem::accessTechnologies() const 0503 { 0504 Q_D(const Modem); 0505 return d->accessTechnologies; 0506 } 0507 0508 ModemManager::SignalQualityPair ModemManager::Modem::signalQuality() const 0509 { 0510 Q_D(const Modem); 0511 return d->signalQuality; 0512 } 0513 0514 QStringList ModemManager::Modem::ownNumbers() const 0515 { 0516 Q_D(const Modem); 0517 return d->ownNumbers; 0518 } 0519 0520 MMModemPowerState ModemManager::Modem::powerState() const 0521 { 0522 Q_D(const Modem); 0523 return d->powerState; 0524 } 0525 0526 ModemManager::SupportedModesType ModemManager::Modem::supportedModes() const 0527 { 0528 Q_D(const Modem); 0529 return d->supportedModes; 0530 } 0531 0532 ModemManager::CurrentModesType ModemManager::Modem::currentModes() const 0533 { 0534 Q_D(const Modem); 0535 return d->currentModes; 0536 } 0537 0538 QList<MMModemBand> ModemManager::Modem::supportedBands() const 0539 { 0540 Q_D(const Modem); 0541 return d->supportedBands; 0542 } 0543 0544 QList<MMModemBand> ModemManager::Modem::currentBands() const 0545 { 0546 Q_D(const Modem); 0547 return d->currentBands; 0548 } 0549 0550 ModemManager::Modem::IpBearerFamilies ModemManager::Modem::supportedIpFamilies() const 0551 { 0552 Q_D(const Modem); 0553 return d->supportedIpFamilies; 0554 } 0555 0556 ModemManager::Bearer::Ptr ModemManager::ModemPrivate::findRegisteredBearer(const QString &path) 0557 { 0558 Q_Q(Modem); 0559 ModemManager::Bearer::Ptr ret; 0560 if (!path.isEmpty()) { 0561 bool contains = bearers.contains(path); 0562 if (contains && bearers.value(path)) { 0563 ret = bearers.value(path); 0564 } else { 0565 ret = ModemManager::Bearer::Ptr(new ModemManager::Bearer(path), &QObject::deleteLater); 0566 bearers[path] = ret; 0567 if (!contains) { 0568 Q_EMIT q->bearerAdded(path); 0569 } 0570 } 0571 } 0572 return ret; 0573 } 0574 0575 void ModemManager::Modem::setTimeout(int timeout) 0576 { 0577 Q_D(Modem); 0578 d->modemIface.setTimeout(timeout); 0579 } 0580 0581 int ModemManager::Modem::timeout() const 0582 { 0583 Q_D(const Modem); 0584 return d->modemIface.timeout(); 0585 } 0586 0587 void ModemManager::ModemPrivate::onPropertiesChanged(const QString &ifaceName, const QVariantMap &changedProps, const QStringList &invalidatedProps) 0588 { 0589 Q_UNUSED(invalidatedProps); 0590 Q_Q(Modem); 0591 qCDebug(MMQT) << ifaceName << changedProps.keys(); 0592 0593 if (ifaceName == QLatin1String(MMQT_DBUS_INTERFACE_MODEM)) { 0594 QVariantMap::const_iterator it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SIM)); 0595 0596 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SIM)); 0597 if (it != changedProps.constEnd()) { 0598 Q_EMIT q->simPathChanged(simPath, it->toString()); 0599 simPath = it->toString(); 0600 } 0601 #if MM_CHECK_VERSION(1, 2, 0) 0602 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_BEARERS)); 0603 if (it != changedProps.constEnd()) { 0604 QList<QDBusObjectPath> bearerPaths = qdbus_cast<QList<QDBusObjectPath>>(*it); 0605 if (bearerPaths.isEmpty()) { 0606 QMap<QString, Bearer::Ptr>::const_iterator it = bearers.constBegin(); 0607 while (it != bearers.constEnd()) { 0608 Q_EMIT q->bearerRemoved(it.key()); 0609 ++it; 0610 } 0611 bearers.clear(); 0612 } else { 0613 QStringList knownBearers = bearers.keys(); 0614 Q_FOREACH (const QDBusObjectPath &bearer, bearerPaths) { 0615 if (!bearers.contains(bearer.path())) { 0616 bearers.insert(bearer.path(), ModemManager::Bearer::Ptr()); 0617 Q_EMIT q->bearerAdded(bearer.path()); 0618 } else { 0619 knownBearers.removeOne(bearer.path()); 0620 } 0621 } 0622 Q_FOREACH (const QString &path, knownBearers) { 0623 bearers.remove(path); 0624 Q_EMIT q->bearerRemoved(path); 0625 } 0626 } 0627 Q_EMIT q->bearersChanged(); 0628 } 0629 #endif 0630 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SUPPORTEDCAPABILITIES)); 0631 if (it != changedProps.constEnd()) { 0632 supportedCapabilities.clear(); 0633 Q_FOREACH (const uint cap, qdbus_cast<QList<uint>>(*it)) { 0634 supportedCapabilities << ((MMModemCapability)cap); 0635 } 0636 Q_EMIT q->supportedCapabilitiesChanged(supportedCapabilities); 0637 } 0638 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_CURRENTCAPABILITIES)); 0639 if (it != changedProps.constEnd()) { 0640 currentCapabilities = (QFlags<MMModemCapability>)it->toUInt(); 0641 Q_EMIT q->currentCapabilitiesChanged(currentCapabilities); 0642 } 0643 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_MAXBEARERS)); 0644 if (it != changedProps.constEnd()) { 0645 maxBearers = it->toUInt(); 0646 Q_EMIT q->maxBearersChanged(maxBearers); 0647 } 0648 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_MAXACTIVEBEARERS)); 0649 if (it != changedProps.constEnd()) { 0650 maxActiveBearers = it->toUInt(); 0651 Q_EMIT q->maxActiveBearersChanged(maxActiveBearers); 0652 } 0653 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_MANUFACTURER)); 0654 if (it != changedProps.constEnd()) { 0655 manufacturer = it->toString(); 0656 Q_EMIT q->manufacturerChanged(manufacturer); 0657 } 0658 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_MODEL)); 0659 if (it != changedProps.constEnd()) { 0660 model = it->toString(); 0661 Q_EMIT q->modelChanged(model); 0662 } 0663 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_REVISION)); 0664 if (it != changedProps.constEnd()) { 0665 revision = it->toString(); 0666 Q_EMIT q->revisionChanged(revision); 0667 } 0668 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_DEVICEIDENTIFIER)); 0669 if (it != changedProps.constEnd()) { 0670 deviceIdentifier = it->toString(); 0671 Q_EMIT q->deviceIdentifierChanged(deviceIdentifier); 0672 } 0673 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_DEVICE)); 0674 if (it != changedProps.constEnd()) { 0675 device = it->toString(); 0676 Q_EMIT q->deviceChanged(device); 0677 } 0678 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_DRIVERS)); 0679 if (it != changedProps.constEnd()) { 0680 drivers = it->toStringList(); 0681 Q_EMIT q->driversChanged(drivers); 0682 } 0683 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_PLUGIN)); 0684 if (it != changedProps.constEnd()) { 0685 plugin = it->toString(); 0686 Q_EMIT q->pluginChanged(plugin); 0687 } 0688 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_PRIMARYPORT)); 0689 if (it != changedProps.constEnd()) { 0690 primaryPort = it->toString(); 0691 Q_EMIT q->primaryPortChanged(primaryPort); 0692 } 0693 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_PORTS)); 0694 if (it != changedProps.constEnd()) { 0695 ports = qdbus_cast<QList<Port>>(*it); 0696 Q_EMIT q->portsChanged(ports); 0697 } 0698 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_EQUIPMENTIDENTIFIER)); 0699 if (it != changedProps.constEnd()) { 0700 equipmentIdentifier = it->toString(); 0701 Q_EMIT q->equipmentIdentifierChanged(equipmentIdentifier); 0702 } 0703 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_UNLOCKREQUIRED)); 0704 if (it != changedProps.constEnd()) { 0705 unlockRequired = (MMModemLock)it->toUInt(); 0706 Q_EMIT q->unlockRequiredChanged(unlockRequired); 0707 } 0708 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_UNLOCKRETRIES)); 0709 if (it != changedProps.constEnd()) { 0710 unlockRetries = qdbus_cast<UnlockRetriesMap>(*it); 0711 Q_EMIT q->unlockRetriesChanged(unlockRetries); 0712 } 0713 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_STATE)); 0714 if (it != changedProps.constEnd()) { 0715 // Should be handled by StateChanged signal 0716 // Q_EMIT q->stateChanged(state, (MMModemState)it->toInt()); 0717 // state = (MMModemState)it->toInt(); 0718 } 0719 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_STATEFAILEDREASON)); 0720 if (it != changedProps.constEnd()) { 0721 stateFailedReason = (MMModemStateFailedReason)it->toUInt(); 0722 Q_EMIT q->stateFailedReasonChanged(stateFailedReason); 0723 } 0724 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_ACCESSTECHNOLOGIES)); 0725 if (it != changedProps.constEnd()) { 0726 accessTechnologies = (ModemManager::Modem::AccessTechnologies)it->toUInt(); 0727 Q_EMIT q->accessTechnologiesChanged(accessTechnologies); 0728 } 0729 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SIGNALQUALITY)); 0730 if (it != changedProps.constEnd()) { 0731 signalQuality = qdbus_cast<SignalQualityPair>(*it); 0732 Q_EMIT q->signalQualityChanged(signalQuality); 0733 } 0734 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_OWNNUMBERS)); 0735 if (it != changedProps.constEnd()) { 0736 ownNumbers = it->toStringList(); 0737 Q_EMIT q->ownNumbersChanged(ownNumbers); 0738 } 0739 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_POWERSTATE)); 0740 if (it != changedProps.constEnd()) { 0741 powerState = (MMModemPowerState)it->toUInt(); 0742 Q_EMIT q->powerStateChanged(powerState); 0743 } 0744 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SUPPORTEDMODES)); 0745 if (it != changedProps.constEnd()) { 0746 supportedModes = qdbus_cast<SupportedModesType>(*it); 0747 Q_EMIT q->supportedModesChanged(supportedModes); 0748 } 0749 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_CURRENTMODES)); 0750 if (it != changedProps.constEnd()) { 0751 currentModes = qdbus_cast<CurrentModesType>(*it); 0752 Q_EMIT q->currentModesChanged(currentModes); 0753 } 0754 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SUPPORTEDBANDS)); 0755 if (it != changedProps.constEnd()) { 0756 supportedBands.clear(); 0757 Q_FOREACH (const uint cap, qdbus_cast<QList<uint>>(*it)) { 0758 supportedBands << ((MMModemBand)cap); 0759 } 0760 Q_EMIT q->supportedBandsChanged(supportedBands); 0761 } 0762 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_CURRENTBANDS)); 0763 if (it != changedProps.constEnd()) { 0764 currentBands.clear(); 0765 Q_FOREACH (const uint cap, qdbus_cast<QList<uint>>(*it)) { 0766 currentBands << ((MMModemBand)cap); 0767 } 0768 Q_EMIT q->currentBandsChanged(currentBands); 0769 } 0770 it = changedProps.constFind(QLatin1String(MM_MODEM_PROPERTY_SUPPORTEDIPFAMILIES)); 0771 if (it != changedProps.constEnd()) { 0772 supportedIpFamilies = (ModemManager::Modem::IpBearerFamilies)it->toUInt(); 0773 Q_EMIT q->supportedIpFamiliesChanged(supportedIpFamilies); 0774 } 0775 } 0776 } 0777 0778 void ModemManager::ModemPrivate::onStateChanged(int oldState, int newState, uint reason) 0779 { 0780 Q_Q(Modem); 0781 state = (MMModemState)newState; 0782 Q_EMIT q->stateChanged((MMModemState)oldState, (MMModemState)newState, (MMModemStateChangeReason)reason); 0783 } 0784 0785 #include "moc_modem.cpp" 0786 #include "moc_modem_p.cpp"