File indexing completed on 2024-04-14 03:57:24

0001 /*
0002     SPDX-FileCopyrightText: 2008, 2011 Will Stephenson <wstephenson@kde.org>
0003     SPDX-FileCopyrightText: 2010 Lamarque Souza <lamarque@kde.org>
0004     SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com>
0005     SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0008 */
0009 
0010 #include "mmdebug_p.h"
0011 #include "modemcdma_p.h"
0012 #ifdef MMQT_STATIC
0013 #include "dbus/fakedbus.h"
0014 #else
0015 #include "dbus/dbus.h"
0016 #endif
0017 
0018 ModemManager::ModemCdmaPrivate::ModemCdmaPrivate(const QString &path, ModemCdma *q)
0019     : InterfacePrivate(path, q)
0020 #ifdef MMQT_STATIC
0021     , modemCdmaIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus())
0022 #else
0023     , modemCdmaIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus())
0024 #endif
0025     , q_ptr(q)
0026 {
0027     if (modemCdmaIface.isValid()) {
0028         activationState = (MMModemCdmaActivationState)modemCdmaIface.activationState();
0029         meid = modemCdmaIface.meid();
0030         esn = modemCdmaIface.esn();
0031         sid = modemCdmaIface.sid();
0032         nid = modemCdmaIface.nid();
0033         cdma1xRegistrationState = (MMModemCdmaRegistrationState)modemCdmaIface.cdma1xRegistrationState();
0034         evdoRegistrationState = (MMModemCdmaRegistrationState)modemCdmaIface.evdoRegistrationState();
0035     }
0036 }
0037 
0038 ModemManager::ModemCdma::ModemCdma(const QString &path, QObject *parent)
0039     : Interface(*new ModemCdmaPrivate(path, this), parent)
0040 {
0041     Q_D(ModemCdma);
0042 
0043     qRegisterMetaType<MMModemCdmaActivationState>();
0044     qRegisterMetaType<MMCdmaActivationError>();
0045     qRegisterMetaType<MMModemCdmaRegistrationState>();
0046 
0047     connect(&d->modemCdmaIface, &OrgFreedesktopModemManager1ModemModemCdmaInterface::ActivationStateChanged, d, &ModemCdmaPrivate::onActivationStateChanged);
0048 #ifdef MMQT_STATIC
0049     QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE),
0050                                           d->uni,
0051                                           QLatin1String(DBUS_INTERFACE_PROPS),
0052                                           QStringLiteral("PropertiesChanged"),
0053                                           d,
0054                                           SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
0055 #else
0056     QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE),
0057                                          d->uni,
0058                                          QLatin1String(DBUS_INTERFACE_PROPS),
0059                                          QStringLiteral("PropertiesChanged"),
0060                                          d,
0061                                          SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
0062 #endif
0063 }
0064 
0065 ModemManager::ModemCdma::~ModemCdma()
0066 {
0067 }
0068 
0069 QDBusPendingReply<void> ModemManager::ModemCdma::activate(const QString &carrierCode)
0070 {
0071     Q_D(ModemCdma);
0072     return d->modemCdmaIface.Activate(carrierCode);
0073 }
0074 
0075 QDBusPendingReply<void> ModemManager::ModemCdma::activateManual(const QVariantMap &properties)
0076 {
0077     Q_D(ModemCdma);
0078     return d->modemCdmaIface.ActivateManual(properties);
0079 }
0080 
0081 MMModemCdmaActivationState ModemManager::ModemCdma::activationState() const
0082 {
0083     Q_D(const ModemCdma);
0084     return d->activationState;
0085 }
0086 
0087 QString ModemManager::ModemCdma::meid() const
0088 {
0089     Q_D(const ModemCdma);
0090     return d->meid;
0091 }
0092 
0093 QString ModemManager::ModemCdma::esn() const
0094 {
0095     Q_D(const ModemCdma);
0096     return d->esn;
0097 }
0098 
0099 uint ModemManager::ModemCdma::sid() const
0100 {
0101     Q_D(const ModemCdma);
0102     return d->sid;
0103 }
0104 
0105 uint ModemManager::ModemCdma::nid() const
0106 {
0107     Q_D(const ModemCdma);
0108     return d->nid;
0109 }
0110 
0111 MMModemCdmaRegistrationState ModemManager::ModemCdma::cdma1xRegistrationState() const
0112 {
0113     Q_D(const ModemCdma);
0114     return d->cdma1xRegistrationState;
0115 }
0116 
0117 MMModemCdmaRegistrationState ModemManager::ModemCdma::evdoRegistrationState() const
0118 {
0119     Q_D(const ModemCdma);
0120     return d->evdoRegistrationState;
0121 }
0122 
0123 void ModemManager::ModemCdma::setTimeout(int timeout)
0124 {
0125     Q_D(ModemCdma);
0126     d->modemCdmaIface.setTimeout(timeout);
0127 }
0128 
0129 int ModemManager::ModemCdma::timeout() const
0130 {
0131     Q_D(const ModemCdma);
0132     return d->modemCdmaIface.timeout();
0133 }
0134 
0135 void ModemManager::ModemCdmaPrivate::onActivationStateChanged(uint activation_state, uint activation_error, const QVariantMap &status_changes)
0136 {
0137     Q_Q(ModemCdma);
0138     activationState = (MMModemCdmaActivationState)activation_state;
0139     Q_EMIT q->activationStateChanged((MMModemCdmaActivationState)activation_state, (MMCdmaActivationError)activation_error, status_changes);
0140 }
0141 
0142 void ModemManager::ModemCdmaPrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps)
0143 {
0144     Q_Q(ModemCdma);
0145     Q_UNUSED(invalidatedProps);
0146     qCDebug(MMQT) << interface << properties.keys();
0147 
0148     if (interface == QLatin1String(MMQT_DBUS_INTERFACE_MODEM_MODEMCDMA)) {
0149         QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_ACTIVATIONSTATE));
0150         if (it != properties.constEnd()) {
0151             // Should be handled by activationStateChanged signal
0152         }
0153         it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_MEID));
0154         if (it != properties.constEnd()) {
0155             meid = it->toString();
0156             Q_EMIT q->meidChanged(meid);
0157         }
0158         it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_ESN));
0159         if (it != properties.constEnd()) {
0160             esn = it->toString();
0161             Q_EMIT q->esnChanged(esn);
0162         }
0163         it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_SID));
0164         if (it != properties.constEnd()) {
0165             sid = it->toUInt();
0166             Q_EMIT q->sidChanged(sid);
0167         }
0168         it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_NID));
0169         if (it != properties.constEnd()) {
0170             nid = it->toUInt();
0171             Q_EMIT q->nidChanged(nid);
0172         }
0173         it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_CDMA1XREGISTRATIONSTATE));
0174         if (it != properties.constEnd()) {
0175             cdma1xRegistrationState = (MMModemCdmaRegistrationState)it->toUInt();
0176             Q_EMIT q->cdma1xRegistrationStateChanged(cdma1xRegistrationState);
0177         }
0178         it = properties.constFind(QLatin1String(MM_MODEM_MODEMCDMA_PROPERTY_EVDOREGISTRATIONSTATE));
0179         if (it != properties.constEnd()) {
0180             evdoRegistrationState = (MMModemCdmaRegistrationState)it->toUInt();
0181             Q_EMIT q->evdoRegistrationStateChanged(evdoRegistrationState);
0182         }
0183     }
0184 }
0185 
0186 #include "moc_modemcdma.cpp"