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 #include "sim.h" 0008 0009 #include <QList> 0010 #include <QString> 0011 0012 #include <NetworkManagerQt/CdmaSetting> 0013 #include <NetworkManagerQt/ConnectionSettings> 0014 #include <NetworkManagerQt/GsmSetting> 0015 #include <NetworkManagerQt/Manager> 0016 #include <NetworkManagerQt/ModemDevice> 0017 #include <NetworkManagerQt/Settings> 0018 0019 #include <ModemManagerQt/GenericTypes> 0020 #include <ModemManagerQt/Manager> 0021 #include <ModemManagerQt/Modem3Gpp> 0022 #include <ModemManagerQt/ModemDevice> 0023 0024 class Modem; 0025 class AvailableNetwork; 0026 0027 class ModemDetails : public QObject 0028 { 0029 Q_OBJECT 0030 // modemmanager device 0031 Q_PROPERTY(QStringList accessTechnologies READ accessTechnologies NOTIFY accessTechnologiesChanged) // currently used tech 0032 Q_PROPERTY(QString device READ device NOTIFY deviceChanged) 0033 Q_PROPERTY(QString deviceIdentifier READ deviceIdentifier NOTIFY deviceIdentifierChanged) 0034 Q_PROPERTY(QStringList drivers READ drivers NOTIFY driversChanged) 0035 Q_PROPERTY(QString equipmentIdentifier READ equipmentIdentifier NOTIFY equipmentIdentifierChanged) 0036 // TODO add bands 0037 Q_PROPERTY(bool isEnabled READ isEnabled NOTIFY isEnabledChanged) 0038 Q_PROPERTY(QString manufacturer READ manufacturer NOTIFY manufacturerChanged) 0039 Q_PROPERTY(QString model READ model NOTIFY modelChanged) 0040 Q_PROPERTY(QStringList ownNumbers READ ownNumbers NOTIFY ownNumbersChanged) 0041 Q_PROPERTY(QString plugin READ plugin NOTIFY pluginChanged) 0042 Q_PROPERTY(QString powerState READ powerState NOTIFY powerStateChanged) 0043 Q_PROPERTY(QString revision READ revision NOTIFY revisionChanged) 0044 Q_PROPERTY(uint signalQuality READ signalQuality NOTIFY signalQualityChanged) 0045 Q_PROPERTY(QString simPath READ simPath NOTIFY simPathChanged) 0046 Q_PROPERTY(QString state READ state NOTIFY stateChanged) 0047 Q_PROPERTY(QString stateFailedReason READ stateFailedReason NOTIFY stateFailedReasonChanged) 0048 0049 // modemmanager 3gpp device 0050 Q_PROPERTY(QString operatorCode READ operatorCode NOTIFY operatorCodeChanged) 0051 Q_PROPERTY(QString operatorName READ operatorName NOTIFY operatorNameChanged) 0052 Q_PROPERTY(QString registrationState READ registrationState NOTIFY registrationStateChanged) 0053 Q_PROPERTY(QList<AvailableNetwork *> networks READ networks NOTIFY networksChanged) 0054 Q_PROPERTY(bool isScanningNetworks READ isScanningNetworks NOTIFY isScanningNetworksChanged) 0055 0056 // networkmanager device 0057 Q_PROPERTY(QString firmwareVersion READ firmwareVersion NOTIFY firmwareVersionChanged) 0058 Q_PROPERTY(QString interfaceName READ interfaceName NOTIFY interfaceNameChanged) 0059 Q_PROPERTY(QString metered READ metered NOTIFY meteredChanged) 0060 0061 public: 0062 ModemDetails(QObject *parent = nullptr, Modem *modem = nullptr); 0063 ModemDetails &operator=(ModemDetails &&other); 0064 void swap(ModemDetails &other); 0065 0066 QStringList accessTechnologies(); 0067 QString device(); 0068 QString deviceIdentifier(); 0069 QStringList drivers(); 0070 QString equipmentIdentifier(); 0071 bool isEnabled(); 0072 QString manufacturer(); 0073 uint maxActiveBearers(); 0074 uint maxBearers(); 0075 QString model(); 0076 QStringList ownNumbers(); 0077 QString plugin(); 0078 QString powerState(); 0079 QString revision(); 0080 uint signalQuality(); 0081 QString simPath(); 0082 QString state(); 0083 QString stateFailedReason(); 0084 0085 QString operatorCode(); 0086 QString operatorName(); 0087 QString registrationState(); 0088 0089 Q_INVOKABLE void scanNetworks(); 0090 QList<AvailableNetwork *> networks(); 0091 bool isScanningNetworks(); 0092 void scanNetworksFinished(QDBusPendingCallWatcher *call); 0093 0094 QString firmwareVersion(); 0095 QString interfaceName(); 0096 QString metered(); 0097 0098 Q_SIGNALS: 0099 void accessTechnologiesChanged(); 0100 void deviceChanged(); 0101 void deviceIdentifierChanged(); 0102 void driversChanged(); 0103 void equipmentIdentifierChanged(); 0104 void isEnabledChanged(); 0105 void manufacturerChanged(); 0106 void modelChanged(); 0107 void ownNumbersChanged(); 0108 void pluginChanged(); 0109 void powerStateChanged(); 0110 void revisionChanged(); 0111 void signalQualityChanged(); 0112 void simPathChanged(); 0113 void stateChanged(); 0114 void stateFailedReasonChanged(); 0115 void supportedCapabilitiesChanged(); 0116 0117 void operatorCodeChanged(); 0118 void operatorNameChanged(); 0119 void registrationStateChanged(); 0120 void networksChanged(); 0121 void isScanningNetworksChanged(); 0122 0123 void firmwareVersionChanged(); 0124 void interfaceNameChanged(); 0125 void meteredChanged(); 0126 0127 private: 0128 void updateNMSignals(); 0129 0130 Modem *m_modem; 0131 0132 QDBusPendingCallWatcher *m_scanNetworkWatcher; 0133 bool m_isScanningNetworks; 0134 QList<AvailableNetwork *> m_cachedScannedNetworks; 0135 }; 0136 0137 class AvailableNetwork : public QObject 0138 { 0139 Q_OBJECT 0140 Q_PROPERTY(bool isCurrentlyUsed READ isCurrentlyUsed NOTIFY isCurrentlyUsedChanged) 0141 Q_PROPERTY(QString operatorLong READ operatorLong NOTIFY operatorLongChanged) 0142 Q_PROPERTY(QString operatorShort READ operatorShort NOTIFY operatorShortChanged) 0143 Q_PROPERTY(QString operatorCode READ operatorCode NOTIFY operatorCodeChanged) 0144 Q_PROPERTY(QString accessTechnology READ accessTechnology NOTIFY accessTechnologyChanged) 0145 0146 public: 0147 AvailableNetwork(QObject *parent = nullptr, 0148 ModemManager::Modem3gpp::Ptr mm3gppDevice = nullptr, 0149 bool isCurrentlyUsed = false, 0150 QString operatorLong = "", 0151 QString operatorShort = "", 0152 QString operatorCode = "", 0153 MMModemAccessTechnology accessTechnology = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN); 0154 0155 bool isCurrentlyUsed(); 0156 QString operatorLong(); 0157 QString operatorShort(); 0158 QString operatorCode(); 0159 QString accessTechnology(); 0160 0161 Q_INVOKABLE void registerToNetwork(); 0162 0163 Q_SIGNALS: 0164 void isCurrentlyUsedChanged(); 0165 void operatorLongChanged(); 0166 void operatorShortChanged(); 0167 void operatorCodeChanged(); 0168 void accessTechnologyChanged(); 0169 0170 private: 0171 bool m_isCurrentlyUsed; 0172 QString m_operatorLong; 0173 QString m_operatorShort; 0174 QString m_operatorCode; 0175 QString m_accessTechnology; 0176 0177 ModemManager::Modem3gpp::Ptr m_mm3gppDevice; // this may be a nullptr if no sim is inserted 0178 };