Skip to content

Commit

Permalink
[libqofono] Expose SIM LockedByMdm property. Contributes to JB#38478
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Adams committed Aug 8, 2017
1 parent 6916cd0 commit 0f43079
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/dbus/ofono_manager.xml
Expand Up @@ -2,6 +2,12 @@
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="">
<interface name="org.ofono.Manager">
<method name="GetLockedByMdmImsiArray">
<arg type="as" direction="out"/>
</method>
<method name="SetLockedByMdmImsiArray">
<arg type="as" direction="in"/>
</method>
<method name="GetModems">
<arg type="a(oa{sv})" direction="out"/>
<annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="ObjectPathPropertiesList"/>
Expand Down
70 changes: 70 additions & 0 deletions src/qofonomanager.cpp
Expand Up @@ -21,12 +21,15 @@ class QOfonoManager::Private
{
public:
OfonoManager *ofonoManager;
QStringList lockedByMdmImsiArray;
QStringList modems;
bool available;

Private() : ofonoManager(NULL), available(false) {}

void getModems(QOfonoManager *manager);
void getLockedByMdmImsiArray(QOfonoManager *manager);
void setLockedByMdmImsiArray(QOfonoManager *manager, const QStringList &imsis);
};

void QOfonoManager::Private::getModems(QOfonoManager *manager)
Expand All @@ -39,6 +42,26 @@ void QOfonoManager::Private::getModems(QOfonoManager *manager)
}
}

void QOfonoManager::Private::getLockedByMdmImsiArray(QOfonoManager *manager)
{
if (ofonoManager) {
connect(new QDBusPendingCallWatcher(
ofonoManager->GetLockedByMdmImsiArray(), ofonoManager),
SIGNAL(finished(QDBusPendingCallWatcher*)), manager,
SLOT(onGetLockedByMdmImsiArrayFinished(QDBusPendingCallWatcher*)));
}
}

void QOfonoManager::Private::setLockedByMdmImsiArray(QOfonoManager *manager, const QStringList &imsis)
{
if (ofonoManager) {
connect(new QDBusPendingCallWatcher(
ofonoManager->SetLockedByMdmImsiArray(imsis), ofonoManager),
SIGNAL(finished(QDBusPendingCallWatcher*)), manager,
SLOT(onSetLockedByMdmImsiArrayFinished(QDBusPendingCallWatcher*)));
}
}

QOfonoManager::QOfonoManager(QObject *parent) :
QObject(parent),
d_ptr(new Private)
Expand All @@ -64,6 +87,21 @@ QOfonoManager::~QOfonoManager()
delete d_ptr;
}

QStringList QOfonoManager::lockedByMdmImsiArray() const
{
return d_ptr->lockedByMdmImsiArray;
}

void QOfonoManager::setLockedByMdmImsiArray(const QStringList &imsis)
{
if (d_ptr->lockedByMdmImsiArray != imsis) {
d_ptr->setLockedByMdmImsiArray(this, imsis);
// optimistically assume success.
d_ptr->lockedByMdmImsiArray = imsis;
Q_EMIT lockedByMdmImsiArrayChanged(imsis);
}
}

QStringList QOfonoManager::modems()
{
return d_ptr->modems;
Expand Down Expand Up @@ -147,6 +185,37 @@ void QOfonoManager::onGetModemsFinished(QDBusPendingCallWatcher* watcher)
}
}

void QOfonoManager::onGetLockedByMdmImsiArrayFinished(QDBusPendingCallWatcher* watcher)
{
QDBusPendingReply<QStringList> reply(*watcher);
watcher->deleteLater();
if (reply.isError()) {
if (qofono::isTimeout(reply.error())) {
qDebug() << "Retrying GetLockedByMdmImsiArray...";
d_ptr->getLockedByMdmImsiArray(this);
} else {
qWarning() << reply.error();
}
} else {
const QStringList data = reply.value();
if (d_ptr->lockedByMdmImsiArray != data) {
d_ptr->lockedByMdmImsiArray = data;
Q_EMIT lockedByMdmImsiArrayChanged(data);
}
}
}

void QOfonoManager::onSetLockedByMdmImsiArrayFinished(QDBusPendingCallWatcher* watcher)
{
QDBusPendingReply<void> reply(*watcher);
watcher->deleteLater();
if (reply.isError()) {
qWarning() << reply.error();
} else {
d_ptr->getLockedByMdmImsiArray(this);
}
}

void QOfonoManager::connectToOfono(const QString &)
{
if (!d_ptr->ofonoManager) {
Expand All @@ -159,6 +228,7 @@ void QOfonoManager::connectToOfono(const QString &)
connect(mgr,
SIGNAL(ModemRemoved(QDBusObjectPath)),
SLOT(onModemRemoved(QDBusObjectPath)));
d_ptr->getLockedByMdmImsiArray(this);
d_ptr->getModems(this);
} else {
delete mgr;
Expand Down
6 changes: 6 additions & 0 deletions src/qofonomanager.h
Expand Up @@ -35,6 +35,9 @@ class QOFONOSHARED_EXPORT QOfonoManager : public QObject
explicit QOfonoManager(QObject *parent = 0);
~QOfonoManager();

QStringList lockedByMdmImsiArray() const;
void setLockedByMdmImsiArray(const QStringList &imsis);

QStringList modems();
QString defaultModem();
bool available() const;
Expand All @@ -48,11 +51,14 @@ class QOFONOSHARED_EXPORT QOfonoManager : public QObject
void availableChanged(bool available);
void modemsChanged(const QStringList &modems);
void defaultModemChanged(const QString &modem);
void lockedByMdmImsiArrayChanged(const QStringList &imsis);

private slots:
void onModemAdded(const QDBusObjectPath &path, const QVariantMap &var);
void onModemRemoved(const QDBusObjectPath &path);
void onGetModemsFinished(QDBusPendingCallWatcher*);
void onGetLockedByMdmImsiArrayFinished(QDBusPendingCallWatcher*);
void onSetLockedByMdmImsiArrayFinished(QDBusPendingCallWatcher*);
void connectToOfono(const QString &);
void ofonoUnregistered(const QString &);

Expand Down
8 changes: 8 additions & 0 deletions src/qofonosimmanager.cpp
Expand Up @@ -32,6 +32,7 @@ static const QString kPreferredLanguages(QLatin1String("PreferredLanguages"));
static const QString kRetries(QLatin1String("Retries"));
static const QString kFixedDialing(QLatin1String("FixedDialing"));
static const QString kBarredDialing(QLatin1String("BarredDialing"));
static const QString kLockedByMdm(QLatin1String("LockedByMdm"));

namespace QOfonoSimManagerPrivate
{
Expand Down Expand Up @@ -173,6 +174,8 @@ void QOfonoSimManager::propertyChanged(const QString &property, const QVariant &
Q_EMIT fixedDialingChanged(value.value<bool>());
} else if (property == kBarredDialing) {
Q_EMIT barredDialingChanged(value.value<bool>());
} else if (property == kLockedByMdm) {
Q_EMIT lockedByMdmChanged(value.value<bool>());
}
}

Expand Down Expand Up @@ -246,6 +249,11 @@ bool QOfonoSimManager::barredDialing() const
return getBool(kBarredDialing);
}

bool QOfonoSimManager::lockedByMdm() const
{
return getBool(kLockedByMdm);
}

void QOfonoSimManager::setSubscriberNumbers(const QStringList &numbers)
{
setProperty(kSubscriberNumbers, numbers);
Expand Down
3 changes: 3 additions & 0 deletions src/qofonosimmanager.h
Expand Up @@ -43,6 +43,7 @@ class QOFONOSHARED_EXPORT QOfonoSimManager : public QOfonoModemInterface
Q_PROPERTY(QVariantMap pinRetries READ pinRetries NOTIFY pinRetriesChanged)
Q_PROPERTY(bool fixedDialing READ fixedDialing NOTIFY fixedDialingChanged)
Q_PROPERTY(bool barredDialing READ barredDialing NOTIFY barredDialingChanged)
Q_PROPERTY(bool lockedByMdm READ lockedByMdm NOTIFY lockedByMdmChanged)

public:
class SharedPointer;
Expand Down Expand Up @@ -95,6 +96,7 @@ class QOFONOSHARED_EXPORT QOfonoSimManager : public QOfonoModemInterface
QVariantMap pinRetries() const; //
bool fixedDialing() const;
bool barredDialing() const;
bool lockedByMdm() const;
bool isValid() const;

Q_SIGNALS:
Expand All @@ -112,6 +114,7 @@ class QOFONOSHARED_EXPORT QOfonoSimManager : public QOfonoModemInterface
void pinRetriesChanged(const QVariantMap &pinRetries);
void fixedDialingChanged(bool fixedDialing);
void barredDialingChanged(bool barredDialing);
void lockedByMdmChanged(bool lockedByMdm);

void enterPinComplete(QOfonoSimManager::Error error, const QString &errorString);
void resetPinComplete(QOfonoSimManager::Error error, const QString &errorString);
Expand Down

0 comments on commit 0f43079

Please sign in to comment.