#ifndef OFONOMODEM_H
#define OFONOMODEM_H
-#include <QtDBus/QtDBus>
#include <QtCore/QObject>
-#include "ofonointerface.h"
+#include <QtCore/QStringList>
#include "libofono-qt_global.h"
class OfonoModemManager;
+class OfonoInterface;
-class OFONO_QT_EXPORT OfonoModem : public OfonoInterface
+//! This class is used to access an oFono modem object and its properties
+/*!
+ * oFono modem properties are documented in
+ * http://git.kernel.org/?p=network/ofono/ofono.git;a=blob_plain;f=doc/modem-api.txt
+ */
+class OFONO_QT_EXPORT OfonoModem : public QObject
{
Q_OBJECT
+Q_PROPERTY(bool powered READ powered WRITE setPowered NOTIFY poweredChanged)
+Q_PROPERTY(bool online READ online WRITE setOnline NOTIFY onlineChanged)
+Q_PROPERTY(bool emergency READ emergency NOTIFY emergencyChanged)
+
+Q_PROPERTY(QString name READ name NOTIFY nameChanged)
+Q_PROPERTY(QString manufacturer READ manufacturer NOTIFY manufacturerChanged)
+Q_PROPERTY(QString model READ model NOTIFY modelChanged)
+Q_PROPERTY(QString revision READ revision NOTIFY revisionChanged)
+Q_PROPERTY(QString serial READ serial NOTIFY serialChanged)
+
+Q_PROPERTY(QStringList features READ features NOTIFY featuresChanged)
+Q_PROPERTY(QStringList interfaces READ interfaces NOTIFY interfacesChanged)
+
public:
- OfonoModem(QString modemId, QObject *parent);
+ //! How the modem object should select a modem
+ enum SelectionSetting {
+ AutomaticSelect, /*!< Select the first available modem automatically;
+ * if that modem becomes unavailable, select the first available
+ * modem again. */
+ ManualSelect /*!< Do not select a modem automatically,
+ * use the modem path provided in the constructor, and do not
+ * attempt to select another modem if the first one becomes
+ * unavailable. */
+ };
+
+ /*!
+ * \param setting sets the modem selection policy for the object
+ * \param modemPath if modem selection policy is ManualSelect, then this contains
+ * the D-Bus path to the modem object. Otherwise, it is ignored.
+ */
+ OfonoModem(SelectionSetting setting, const QString& modemPath, QObject *parent=0);
~OfonoModem();
+ //! Returns true if D-Bus modem object exists.
bool isValid() const;
- QString modemId() const;
+ //! Returns the D-Bus object path of the modem
+ QString path() const;
+
+ //! Get the D-Bus error name of the last operation.
+ /*!
+ * Returns the D-Bus error name of the last operation (setting a property
+ * or calling a method) if it has failed
+ */
+ QString errorName() const;
+
+ //! Get the D-Bus error message of the last operation.
+ /*!
+ * Returns the D-Bus error message of the last operation (setting a property
+ * or calling a method) if it has failed
+ */
+ QString errorMessage() const;
+
bool powered() const;
void setPowered(bool powered);
bool online() const;
QStringList interfaces() const;
signals:
+ //! Issued when a modem becomes unavailable or available again
void validityChanged(bool validity);
- void modemIdChanged(QString modemId);
+ //! Issued when the object has switched to another modem
+ void pathChanged(QString modemPath);
void poweredChanged(bool powered);
void setPoweredFailed();
void setOnlineFailed();
void emergencyChanged(bool emergency);
- void nameChanged(QString name);
- void manufacturerChanged(QString manufacturer);
- void modelChanged(QString model);
- void revisionChanged(QString revision);
- void serialChanged(QString serial);
+ void nameChanged(const QString &name);
+ void manufacturerChanged(const QString &manufacturer);
+ void modelChanged(const QString &model);
+ void revisionChanged(const QString &revision);
+ void serialChanged(const QString &serial);
- void featuresChanged(QStringList features);
- void interfacesChanged(QStringList interfaces);
+ void featuresChanged(const QStringList &features);
+ void interfacesChanged(const QStringList &interfaces);
private slots:
- void propertyChanged(const QString& property, const QVariant& value);
+ void propertyChanged(const QString &property, const QVariant &value);
void setPropertyFailed(const QString& property);
- void modemAdded(QString modem);
- void modemRemoved(QString modem);
+ void modemAdded(const QString &modem);
+ void modemRemoved(const QString &modem);
private:
void modemsChanged();
private:
OfonoModemManager *m_mm;
- bool m_autoChoose;
+ OfonoInterface *m_if;
+ SelectionSetting m_selectionSetting;
bool m_isValid;
};
#endif