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

0001 /*
0002     SPDX-FileCopyrightText: 2013, 2014 Lukas Tinkl <ltinkl@redhat.com>
0003     SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #ifndef MODEMMANAGERQT_MODEMDEVICE_H
0009 #define MODEMMANAGERQT_MODEMDEVICE_H
0010 
0011 #include <ModemManager/ModemManager.h>
0012 
0013 #include <modemmanagerqt_export.h>
0014 
0015 #include <QObject>
0016 #include <QSharedPointer>
0017 
0018 #include "bearer.h"
0019 #include "generictypes.h"
0020 #include "interface.h"
0021 #include "modem.h"
0022 #include "modemmessaging.h"
0023 #include "sim.h"
0024 
0025 namespace ModemManager
0026 {
0027 class ModemDevicePrivate;
0028 
0029 class MODEMMANAGERQT_EXPORT ModemDevice : public QObject
0030 {
0031     Q_OBJECT
0032     Q_DECLARE_PRIVATE(ModemDevice)
0033 
0034     Q_PROPERTY(QString uni READ uni)
0035 public:
0036     typedef QSharedPointer<ModemDevice> Ptr;
0037     typedef QList<Ptr> List;
0038 
0039     enum InterfaceType {
0040         ModemInterface,
0041         SimpleInterface,
0042         GsmInterface,
0043         GsmUssdInterface,
0044         CdmaInterface,
0045         MessagingInterface,
0046         LocationInterface,
0047         TimeInterface,
0048         FirmwareInterface,
0049         OmaInterface,
0050         SignalInterface,
0051         VoiceInterface,
0052     };
0053 
0054     explicit ModemDevice(const QString &path, QObject *parent = nullptr);
0055     ~ModemDevice() override;
0056 
0057     QString uni() const;
0058 
0059     bool hasInterface(InterfaceType type) const;
0060     ModemManager::Interface::List interfaces() const;
0061     ModemManager::Interface::Ptr interface(InterfaceType type) const;
0062 
0063     ModemManager::ModemMessaging::Ptr messagingInterface();
0064     ModemManager::Modem::Ptr modemInterface();
0065 
0066     ModemManager::Bearer::Ptr findBearer(const QString &uni);
0067     ModemManager::Bearer::List bearers() const;
0068     ModemManager::Sim::Ptr sim() const;
0069 
0070     bool isGsmModem() const;
0071     bool isCdmaModem() const;
0072 
0073 Q_SIGNALS:
0074     void simAdded(const QString &udi);
0075     void simRemoved(const QString &udi);
0076 
0077     void bearerAdded(const QString &udi); // TODO emit these signals in the next version
0078     void bearerRemoved(const QString &udi);
0079 
0080     void interfaceAdded(InterfaceType type);
0081     void interfaceRemoved(InterfaceType type);
0082 
0083 protected:
0084     MODEMMANAGERQT_NO_EXPORT explicit ModemDevice(ModemDevicePrivate &dd, QObject *parent = nullptr);
0085 
0086 private:
0087     ModemDevicePrivate *const d_ptr;
0088 };
0089 } // namespace ModemManager
0090 
0091 #endif