File indexing completed on 2024-04-28 15:32:58

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 <QDBusObjectPath>
0016 #include <QObject>
0017 #include <QSharedPointer>
0018 
0019 #include "bearer.h"
0020 #include "generictypes.h"
0021 #include "interface.h"
0022 #include "modem.h"
0023 #include "modemmessaging.h"
0024 #include "sim.h"
0025 
0026 namespace ModemManager
0027 {
0028 class ModemDevicePrivate;
0029 
0030 class MODEMMANAGERQT_EXPORT ModemDevice : public QObject
0031 {
0032     Q_OBJECT
0033     Q_DECLARE_PRIVATE(ModemDevice)
0034 
0035     Q_PROPERTY(QString uni READ uni)
0036 public:
0037     typedef QSharedPointer<ModemDevice> Ptr;
0038     typedef QList<Ptr> List;
0039 
0040     enum InterfaceType {
0041         ModemInterface,
0042         SimpleInterface,
0043         GsmInterface,
0044         GsmUssdInterface,
0045         CdmaInterface,
0046         MessagingInterface,
0047         LocationInterface,
0048         TimeInterface,
0049         FirmwareInterface,
0050         OmaInterface,
0051         SignalInterface,
0052         VoiceInterface,
0053     };
0054 
0055     explicit ModemDevice(const QString &path, QObject *parent = nullptr);
0056     ~ModemDevice() override;
0057 
0058     QString uni() const;
0059 
0060     bool hasInterface(InterfaceType type) const;
0061     ModemManager::Interface::List interfaces() const;
0062     ModemManager::Interface::Ptr interface(InterfaceType type) const;
0063 
0064     ModemManager::ModemMessaging::Ptr messagingInterface();
0065     ModemManager::Modem::Ptr modemInterface();
0066 
0067     ModemManager::Bearer::Ptr findBearer(const QString &uni);
0068     ModemManager::Bearer::List bearers() const;
0069     ModemManager::Sim::Ptr sim() const;
0070 
0071     bool isGsmModem() const;
0072     bool isCdmaModem() const;
0073 
0074 Q_SIGNALS:
0075     void simAdded(const QString &udi);
0076     void simRemoved(const QString &udi);
0077 
0078     void bearerAdded(const QString &udi); // TODO emit these signals in the next version
0079     void bearerRemoved(const QString &udi);
0080 
0081     void interfaceAdded(InterfaceType type);
0082     void interfaceRemoved(InterfaceType type);
0083 
0084 protected:
0085     MODEMMANAGERQT_NO_EXPORT explicit ModemDevice(ModemDevicePrivate &dd, QObject *parent = nullptr);
0086 
0087 private:
0088     ModemDevicePrivate *const d_ptr;
0089 };
0090 } // namespace ModemManager
0091 
0092 #endif