Warning, file /plasma/plasma-mobile/kcms/cellularnetwork/modem.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 // SPDX-FileCopyrightText: 2021-2022 Devin Lin <espidev@gmail.com> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include "cellularnetworksettings.h" 0007 #include "modemdetails.h" 0008 #include "profilesettings.h" 0009 #include "sim.h" 0010 0011 #include <QList> 0012 #include <QString> 0013 0014 #include <NetworkManagerQt/CdmaSetting> 0015 #include <NetworkManagerQt/ConnectionSettings> 0016 #include <NetworkManagerQt/GsmSetting> 0017 #include <NetworkManagerQt/Manager> 0018 #include <NetworkManagerQt/ModemDevice> 0019 #include <NetworkManagerQt/Settings> 0020 0021 #include <ModemManagerQt/GenericTypes> 0022 #include <ModemManagerQt/Manager> 0023 #include <ModemManagerQt/Modem3Gpp> 0024 #include <ModemManagerQt/ModemDevice> 0025 0026 #include <QCoroDBusPendingReply> 0027 0028 class ProfileSettings; 0029 class Sim; 0030 class AvailableNetwork; 0031 class ModemDetails; 0032 class MobileProviders; 0033 0034 // only supports GSM/UMTS/LTE 0035 class Modem : public QObject 0036 { 0037 Q_OBJECT 0038 Q_PROPERTY(ModemDetails *details READ modemDetails NOTIFY modemDetailsChanged) 0039 Q_PROPERTY(QString uni READ uni NOTIFY uniChanged) 0040 Q_PROPERTY(QString displayId READ displayId NOTIFY displayIdChanged) 0041 0042 Q_PROPERTY(bool isRoaming READ isRoaming WRITE setIsRoaming NOTIFY isRoamingChanged) 0043 Q_PROPERTY(bool hasSim READ hasSim NOTIFY hasSimChanged) 0044 Q_PROPERTY(QList<ProfileSettings *> profiles READ profileList NOTIFY profileListChanged) 0045 Q_PROPERTY(QString activeConnectionUni READ activeConnectionUni NOTIFY activeConnectionUniChanged) 0046 0047 Q_PROPERTY(bool mobileDataEnabled READ mobileDataEnabled WRITE setMobileDataEnabled NOTIFY mobileDataEnabledChanged) 0048 Q_PROPERTY(bool mobileDataSupported READ mobileDataSupported NOTIFY mobileDataSupportedChanged) 0049 Q_PROPERTY(bool needsAPNAdded READ needsAPNAdded NOTIFY mobileDataEnabledChanged) 0050 0051 public: 0052 Modem(QObject *parent = nullptr); 0053 Modem(QObject *parent, ModemManager::ModemDevice::Ptr mmModem, ModemManager::Modem::Ptr m_mmInterface); 0054 0055 ModemDetails *modemDetails() const; 0056 QString displayId() const; // splits uni and obtains the number suffix 0057 QString uni() const; 0058 QString activeConnectionUni() const; 0059 0060 Q_INVOKABLE QCoro::Task<void> reset(); 0061 0062 bool mobileDataEnabled() const; 0063 void setMobileDataEnabled(bool enabled); 0064 bool mobileDataSupported() const; 0065 bool needsAPNAdded() const; 0066 0067 bool isRoaming() const; 0068 QCoro::Task<void> setIsRoaming(bool roaming); 0069 bool hasSim() const; 0070 0071 // connection profiles 0072 QList<ProfileSettings *> &profileList(); 0073 void refreshProfiles(); 0074 Q_INVOKABLE QCoro::Task<void> activateProfile(const QString &connectionUni); 0075 Q_INVOKABLE QCoro::Task<void> addProfile(QString name, QString apn, QString username, QString password, QString networkType); 0076 Q_INVOKABLE QCoro::Task<void> removeProfile(const QString &connectionUni); 0077 Q_INVOKABLE QCoro::Task<void> updateProfile(QString connectionUni, QString name, QString apn, QString username, QString password, QString networkType); 0078 Q_INVOKABLE void addDetectedProfileSettings(); // detect modem connection settings (ex. apn) and add a new connection 0079 0080 QList<Sim *> sims(); 0081 0082 ModemManager::ModemDevice::Ptr mmModemDevice(); 0083 NetworkManager::ModemDevice::Ptr nmModemDevice(); 0084 ModemManager::Modem::Ptr mmModemInterface(); 0085 0086 Q_SIGNALS: 0087 void modemDetailsChanged(); 0088 void uniChanged(); 0089 void displayIdChanged(); 0090 void activeConnectionUniChanged(); 0091 0092 void nmModemChanged(); 0093 0094 void mobileDataEnabledChanged(); 0095 void mobileDataSupportedChanged(); 0096 void isRoamingChanged(); 0097 void simsChanged(); 0098 void hasSimChanged(); 0099 void profileListChanged(); 0100 0101 void couldNotAutodetectSettings(); 0102 0103 private: 0104 void findNetworkManagerDevice(); 0105 0106 QString nmDeviceStateStr(NetworkManager::Device::State state); 0107 0108 ModemDetails *m_details; 0109 0110 ModemManager::ModemDevice::Ptr m_mmModem; 0111 NetworkManager::ModemDevice::Ptr m_nmModem; // may be a nullptr if the nm modem hasn't been found yet 0112 ModemManager::Modem::Ptr m_mmInterface = nullptr; 0113 ModemManager::Modem3gpp::Ptr m_mm3gppDevice = nullptr; // this may be a nullptr if no sim is inserted 0114 0115 QList<Sim *> m_sims; 0116 QList<ProfileSettings *> m_profileList; 0117 0118 friend class ModemDetails; 0119 };