File indexing completed on 2025-03-16 03:47:19
0001 /* 0002 SPDX-FileCopyrightText: 2008, 2011 Will Stephenson <wstephenson@kde.org> 0003 SPDX-FileCopyrightText: 2010-2011 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 "sim.h" 0011 #include "mmdebug_p.h" 0012 #include "sim_p.h" 0013 #ifdef MMQT_STATIC 0014 #include "dbus/fakedbus.h" 0015 #else 0016 #include "dbus/dbus.h" 0017 #endif 0018 0019 ModemManager::SimPrivate::SimPrivate(const QString &path, Sim *q) 0020 #ifdef MMQT_STATIC 0021 : simIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus()) 0022 #else 0023 : simIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus()) 0024 #endif 0025 , uni(path) 0026 , q_ptr(q) 0027 { 0028 if (simIface.isValid()) { 0029 active = simIface.active(); 0030 simIdentifier = simIface.simIdentifier(); 0031 imsi = simIface.imsi(); 0032 eid = simIface.eid(); 0033 operatorIdentifier = simIface.operatorIdentifier(); 0034 operatorName = simIface.operatorName(); 0035 emergencyNumbers = simIface.emergencyNumbers(); 0036 preferredNetworks = simIface.preferredNetworks(); 0037 #if MM_CHECK_VERSION(1, 20, 0) 0038 gid1 = simIface.gid1(); 0039 gid2 = simIface.gid2(); 0040 simType = (MMSimType)simIface.simType(); 0041 esimStatus = (MMSimEsimStatus)simIface.esimStatus(); 0042 removability = (MMSimRemovability)simIface.removability(); 0043 #endif 0044 } 0045 } 0046 0047 ModemManager::Sim::Sim(const QString &path, QObject *parent) 0048 : QObject(parent) 0049 , d_ptr(new SimPrivate(path, this)) 0050 { 0051 Q_D(Sim); 0052 #ifdef MMQT_STATIC 0053 QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0054 path, 0055 QLatin1String(DBUS_INTERFACE_PROPS), 0056 QStringLiteral("PropertiesChanged"), 0057 d, 0058 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0059 #else 0060 QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0061 path, 0062 QLatin1String(DBUS_INTERFACE_PROPS), 0063 QStringLiteral("PropertiesChanged"), 0064 d, 0065 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0066 #endif 0067 } 0068 0069 ModemManager::Sim::~Sim() 0070 { 0071 delete d_ptr; 0072 } 0073 0074 bool ModemManager::Sim::active() const 0075 { 0076 Q_D(const Sim); 0077 return d->active; 0078 } 0079 0080 QString ModemManager::Sim::simIdentifier() const 0081 { 0082 Q_D(const Sim); 0083 return d->simIdentifier; 0084 } 0085 0086 QString ModemManager::Sim::imsi() const 0087 { 0088 Q_D(const Sim); 0089 return d->imsi; 0090 } 0091 0092 QString ModemManager::Sim::eid() const 0093 { 0094 Q_D(const Sim); 0095 return d->eid; 0096 } 0097 0098 QString ModemManager::Sim::operatorIdentifier() const 0099 { 0100 Q_D(const Sim); 0101 return d->operatorIdentifier; 0102 } 0103 0104 QString ModemManager::Sim::operatorName() const 0105 { 0106 Q_D(const Sim); 0107 return d->operatorName; 0108 } 0109 0110 QStringList ModemManager::Sim::emergencyNumbers() const 0111 { 0112 Q_D(const Sim); 0113 return d->emergencyNumbers; 0114 } 0115 0116 QVariantMap ModemManager::Sim::preferredNetworks() const 0117 { 0118 Q_D(const Sim); 0119 return d->preferredNetworks; 0120 } 0121 0122 #if MM_CHECK_VERSION(1, 20, 0) 0123 QByteArray ModemManager::Sim::gid1() const 0124 { 0125 Q_D(const Sim); 0126 return d->gid1; 0127 } 0128 0129 QByteArray ModemManager::Sim::gid2() const 0130 { 0131 Q_D(const Sim); 0132 return d->gid2; 0133 } 0134 0135 MMSimType ModemManager::Sim::simType() const 0136 { 0137 Q_D(const Sim); 0138 return d->simType; 0139 } 0140 0141 MMSimEsimStatus ModemManager::Sim::esimStatus() const 0142 { 0143 Q_D(const Sim); 0144 return d->esimStatus; 0145 } 0146 0147 MMSimRemovability ModemManager::Sim::removability() const 0148 { 0149 Q_D(const Sim); 0150 return d->removability; 0151 } 0152 #endif 0153 0154 QDBusPendingReply<> ModemManager::Sim::sendPuk(const QString &puk, const QString &pin) 0155 { 0156 Q_D(Sim); 0157 return d->simIface.SendPuk(puk, pin); 0158 } 0159 0160 QDBusPendingReply<> ModemManager::Sim::sendPin(const QString &pin) 0161 { 0162 Q_D(Sim); 0163 return d->simIface.SendPin(pin); 0164 } 0165 0166 QDBusPendingReply<> ModemManager::Sim::enablePin(const QString &pin, bool enabled) 0167 { 0168 Q_D(Sim); 0169 return d->simIface.EnablePin(pin, enabled); 0170 } 0171 0172 QDBusPendingReply<> ModemManager::Sim::changePin(const QString &oldPin, const QString &newPin) 0173 { 0174 Q_D(Sim); 0175 return d->simIface.ChangePin(oldPin, newPin); 0176 } 0177 0178 QDBusPendingReply<> ModemManager::Sim::setPreferredNetworks(QVariantMap preferredNetworks) 0179 { 0180 Q_D(Sim); 0181 return d->simIface.SetPreferredNetworks(preferredNetworks); 0182 } 0183 0184 QString ModemManager::Sim::uni() const 0185 { 0186 Q_D(const Sim); 0187 return d->uni; 0188 } 0189 0190 void ModemManager::Sim::setTimeout(int timeout) 0191 { 0192 Q_D(Sim); 0193 d->simIface.setTimeout(timeout); 0194 } 0195 0196 int ModemManager::Sim::timeout() const 0197 { 0198 Q_D(const Sim); 0199 return d->simIface.timeout(); 0200 } 0201 0202 void ModemManager::SimPrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps) 0203 { 0204 Q_Q(Sim); 0205 Q_UNUSED(invalidatedProps); 0206 qCDebug(MMQT) << interface << properties.keys(); 0207 0208 if (interface == QLatin1String(MMQT_DBUS_INTERFACE_SIM)) { 0209 QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_ACTIVE)); 0210 if (it != properties.constEnd()) { 0211 active = it->toBool(); 0212 Q_EMIT q->activeChanged(active); 0213 } 0214 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_SIMIDENTIFIER)); 0215 if (it != properties.constEnd()) { 0216 simIdentifier = it->toString(); 0217 Q_EMIT q->simIdentifierChanged(simIdentifier); 0218 } 0219 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_IMSI)); 0220 if (it != properties.constEnd()) { 0221 imsi = it->toString(); 0222 Q_EMIT q->imsiChanged(imsi); 0223 } 0224 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_EID)); 0225 if (it != properties.constEnd()) { 0226 eid = it->toString(); 0227 Q_EMIT q->eidChanged(eid); 0228 } 0229 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_OPERATORIDENTIFIER)); 0230 if (it != properties.constEnd()) { 0231 operatorIdentifier = it->toString(); 0232 Q_EMIT q->operatorIdentifierChanged(operatorIdentifier); 0233 } 0234 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_OPERATORNAME)); 0235 if (it != properties.constEnd()) { 0236 operatorName = it->toString(); 0237 Q_EMIT q->operatorNameChanged(operatorName); 0238 } 0239 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_EMERGENCYNUMBERS)); 0240 if (it != properties.constEnd()) { 0241 emergencyNumbers = it->toStringList(); 0242 Q_EMIT q->emergencyNumbersChanged(emergencyNumbers); 0243 } 0244 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_PREFERREDNETWORKS)); 0245 if (it != properties.constEnd()) { 0246 preferredNetworks = it->toMap(); 0247 Q_EMIT q->preferredNetworksChanged(preferredNetworks); 0248 } 0249 #if MM_CHECK_VERSION(1, 20, 0) 0250 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_GID1)); 0251 if (it != properties.constEnd()) { 0252 gid1 = it->toByteArray(); 0253 Q_EMIT q->gid1Changed(gid1); 0254 } 0255 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_GID2)); 0256 if (it != properties.constEnd()) { 0257 gid2 = it->toByteArray(); 0258 Q_EMIT q->gid1Changed(gid2); 0259 } 0260 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_SIMTYPE)); 0261 if (it != properties.constEnd()) { 0262 simType = (MMSimType)it->toUInt(); 0263 Q_EMIT q->simTypeChanged(simType); 0264 } 0265 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_ESIMSTATUS)); 0266 if (it != properties.constEnd()) { 0267 esimStatus = (MMSimEsimStatus)it->toUInt(); 0268 Q_EMIT q->esimStatusChanged(esimStatus); 0269 } 0270 it = properties.constFind(QLatin1String(MM_SIM_PROPERTY_REMOVABILITY)); 0271 if (it != properties.constEnd()) { 0272 removability = (MMSimRemovability)it->toUInt(); 0273 Q_EMIT q->removabilityChanged(removability); 0274 } 0275 #endif 0276 } 0277 } 0278 0279 #include "moc_sim.cpp" 0280 #include "moc_sim_p.cpp"