File indexing completed on 2024-05-05 05:36:40
0001 // SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include "modem.h" 0007 0008 #include <QList> 0009 #include <QString> 0010 0011 #include <NetworkManagerQt/CdmaSetting> 0012 #include <NetworkManagerQt/ConnectionSettings> 0013 #include <NetworkManagerQt/GsmSetting> 0014 #include <NetworkManagerQt/Manager> 0015 #include <NetworkManagerQt/ModemDevice> 0016 #include <NetworkManagerQt/Settings> 0017 0018 #include <ModemManagerQt/GenericTypes> 0019 #include <ModemManagerQt/Manager> 0020 #include <ModemManagerQt/Modem3Gpp> 0021 #include <ModemManagerQt/ModemDevice> 0022 0023 #include <QCoroDBusPendingReply> 0024 0025 class Modem; 0026 0027 class Sim : public QObject 0028 { 0029 Q_OBJECT 0030 Q_PROPERTY(bool enabled READ enabled NOTIFY enabledChanged) 0031 Q_PROPERTY(bool pinEnabled READ pinEnabled NOTIFY pinEnabledChanged) // if there is a PIN set on the SIM 0032 Q_PROPERTY(int unlockRetriesLeft READ unlockRetriesLeft NOTIFY unlockRetriesLeftChanged) 0033 Q_PROPERTY(bool locked READ locked NOTIFY lockedChanged) // if the SIM is currently locked (requires entering PIN) 0034 Q_PROPERTY(QString lockedReason READ lockedReason NOTIFY lockedReasonChanged) 0035 Q_PROPERTY(QString imsi READ imsi NOTIFY imsiChanged) 0036 Q_PROPERTY(QString eid READ eid NOTIFY eidChanged) // TODO (not in mm-qt) 0037 Q_PROPERTY(QString operatorIdentifier READ operatorIdentifier NOTIFY operatorIdentifierChanged) 0038 Q_PROPERTY(QString operatorName READ operatorName NOTIFY operatorNameChanged) 0039 Q_PROPERTY(QString simIdentifier READ simIdentifier NOTIFY simIdentifierChanged) 0040 Q_PROPERTY(QStringList emergencyNumbers READ emergencyNumbers NOTIFY emergencyNumbersChanged) 0041 Q_PROPERTY(QString uni READ uni NOTIFY uniChanged) 0042 Q_PROPERTY(QString displayId READ displayId NOTIFY displayIdChanged) 0043 Q_PROPERTY(Modem *modem READ modem NOTIFY modemChanged) 0044 0045 public: 0046 Sim(QObject *parent = nullptr, 0047 Modem *modem = nullptr, 0048 ModemManager::Sim::Ptr mmSim = ModemManager::Sim::Ptr{nullptr}, 0049 ModemManager::Modem::Ptr mmModem = ModemManager::Modem::Ptr{nullptr}, 0050 ModemManager::Modem3gpp::Ptr mmModem3gpp = ModemManager::Modem3gpp::Ptr{nullptr}); 0051 0052 bool enabled(); 0053 bool pinEnabled(); 0054 int unlockRetriesLeft(); 0055 bool locked(); 0056 QString lockedReason(); 0057 QString imsi(); 0058 QString eid(); // TODO add in mm-qt 0059 QString operatorIdentifier(); 0060 QString operatorName(); 0061 QString simIdentifier(); 0062 QStringList emergencyNumbers(); // TODO add in mm-qt 0063 QString uni(); 0064 QString displayId(); 0065 Modem *modem(); 0066 0067 Q_INVOKABLE QCoro::Task<void> togglePinEnabled(const QString &pin); 0068 Q_INVOKABLE QCoro::Task<void> changePin(const QString &oldPin, const QString &newPin); 0069 Q_INVOKABLE QCoro::Task<void> sendPin(const QString &pin); 0070 Q_INVOKABLE QCoro::Task<void> sendPuk(const QString &pin, const QString &puk); 0071 0072 Q_SIGNALS: 0073 void enabledChanged(); 0074 void pinEnabledChanged(); 0075 void unlockRetriesLeftChanged(); 0076 void lockedChanged(); 0077 void lockedReasonChanged(); 0078 void imsiChanged(); 0079 void eidChanged(); 0080 void operatorIdentifierChanged(); 0081 void operatorNameChanged(); 0082 void simIdentifierChanged(); 0083 void emergencyNumbersChanged(); 0084 void uniChanged(); 0085 void displayIdChanged(); 0086 void modemChanged(); 0087 0088 private: 0089 Modem *m_modem; 0090 ModemManager::Sim::Ptr m_mmSim; 0091 ModemManager::Modem::Ptr m_mmModem; 0092 ModemManager::Modem3gpp::Ptr m_mmModem3gpp; // this may be a nullptr if no sim is inserted 0093 };