summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nfc/nfc.pro19
-rw-r--r--src/nfc/qnearfieldmanager.cpp2
-rw-r--r--src/nfc/qnearfieldmanager_neard.cpp62
-rw-r--r--src/nfc/qnearfieldmanager_neard_p.h (renamed from src/nfc/qnearfieldmanager_neard.h)8
4 files changed, 59 insertions, 32 deletions
diff --git a/src/nfc/nfc.pro b/src/nfc/nfc.pro
index 3d445415..8342cf2a 100644
--- a/src/nfc/nfc.pro
+++ b/src/nfc/nfc.pro
@@ -53,8 +53,7 @@ SOURCES += \
qqmlndefrecord.cpp \
qndefnfcsmartposterrecord.cpp \
qnearfieldsharemanager.cpp \
- qnearfieldsharetarget.cpp \
- qnearfieldmanager_neard.cpp
+ qnearfieldsharetarget.cpp
CONFIG(blackberry) {
NFC_BACKEND_AVAILABLE = yes
@@ -100,23 +99,27 @@ CONFIG(blackberry) {
}
}
-linux {
+linux:qtHaveModule(dbus) {
NFC_BACKEND_AVAILABLE = yes
QT += dbus
+ DEFINES += NEARD_NFC
+
PRIVATE_HEADERS += \
qllcpsocket_p_p.h \
qllcpserver_p_p.h \
- qnearfieldmanager_neard.h \
+ qnearfieldmanager_neard_p.h \
qnearfieldsharemanagerimpl_p.h \
- qnearfieldsharetargetimpl_p.h
+ qnearfieldsharetargetimpl_p.h \
+ qnearfieldtarget_neard_p.h
SOURCES += \
qllcpsocket_p.cpp \
qllcpserver_p.cpp \
qnearfieldsharemanagerimpl_p.cpp \
- qnearfieldsharetargetimpl_p.cpp
+ qnearfieldsharetargetimpl_p.cpp \
+ qnearfieldmanager_neard.cpp
include(neard/neard.pri)
}
@@ -162,6 +165,4 @@ isEmpty(NFC_BACKEND_AVAILABLE) {
qnearfieldsharetargetimpl_p.cpp
}
-HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS \
- qnearfieldmanager_neard.h \
- qnearfieldtarget_neard_p.h
+HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
diff --git a/src/nfc/qnearfieldmanager.cpp b/src/nfc/qnearfieldmanager.cpp
index 88656a6e..0f8c1a8f 100644
--- a/src/nfc/qnearfieldmanager.cpp
+++ b/src/nfc/qnearfieldmanager.cpp
@@ -46,6 +46,8 @@
#include "qnearfieldmanager_simulator_p.h"
#elif defined(QNX_NFC)
#include "qnearfieldmanager_qnx_p.h"
+#elif defined(NEARD_NFC)
+#include "qnearfieldmanager_neard_p.h"
#else
#include "qnearfieldmanagerimpl_p.h"
#endif
diff --git a/src/nfc/qnearfieldmanager_neard.cpp b/src/nfc/qnearfieldmanager_neard.cpp
index 6bf82236..76ea6635 100644
--- a/src/nfc/qnearfieldmanager_neard.cpp
+++ b/src/nfc/qnearfieldmanager_neard.cpp
@@ -39,33 +39,41 @@
**
****************************************************************************/
-#include "qnearfieldmanager_neard.h"
-#include "neard/adapter_p.h"
-#include "neard/manager_p.h"
+#include "qnearfieldmanager_neard_p.h"
#include "qnearfieldtarget_neard_p.h"
+#include "neard/manager_p.h"
+#include "neard/adapter_p.h"
+
QT_BEGIN_NAMESPACE
-// TODO We need a constructor that lets us select a adapter
+// TODO We need a constructor that lets us select an adapter
QNearFieldManagerPrivateImpl::QNearFieldManagerPrivateImpl()
- : m_adapter(0)
+ : QNearFieldManagerPrivate(), m_adapter(0), m_manager(0)
{
- // Look for a NFC adapter
- OrgNeardManagerInterface manager(QStringLiteral("org.neard"), QStringLiteral("/"),
- QDBusConnection::systemBus());
- QDBusPendingReply<QVariantMap> reply = manager.GetProperties();
+ m_manager = new OrgNeardManagerInterface(QStringLiteral("org.neard"), QStringLiteral("/"),
+ QDBusConnection::systemBus(), this);
+ if (!m_manager->isValid()) {
+ qDebug() << "Could not connect to manager" << "Neard daemon running?";
+ return;
+ }
+
+ QDBusPendingReply<QVariantMap> reply = m_manager->GetProperties();
reply.waitForFinished();
- if (reply.isError())
- qDebug() << "Error getting manager properties." << "Neard daemon running?";
+ if (reply.isError()) {
+ qDebug() << "Error getting manager properties.";
+ return;
+ }
+ // Now we check if the adapter still exists (it might have been unplugged)
const QDBusArgument &paths = reply.value().value(QStringLiteral("Adapters")).value<QDBusArgument>();
paths.beginArray();
while (!paths.atEnd()) {
QDBusObjectPath path;
paths >> path;
+ // Select the first adapter
m_adapterPath = path.path();
- //qDebug() << "path is" << m_adapterPath;
break;
}
paths.endArray();
@@ -78,23 +86,31 @@ QNearFieldManagerPrivateImpl::~QNearFieldManagerPrivateImpl()
bool QNearFieldManagerPrivateImpl::isAvailable() const
{
- OrgNeardManagerInterface manager(QStringLiteral("org.neard"), QStringLiteral("/"),
- QDBusConnection::systemBus());
- QDBusPendingReply<QVariantMap> reply = manager.GetProperties();
+ if (!m_manager->isValid() || m_adapterPath.isNull()) {
+ return false;
+ }
+
+ QDBusPendingReply<QVariantMap> reply = m_manager->GetProperties();
reply.waitForFinished();
- if (reply.isError())
- qDebug() << "Error getting manager properties." << "Neard daemon running?";
+ if (reply.isError()) {
+ qDebug() << "Error getting manager properties.";
+ return false;
+ }
- QDBusArgument paths = reply.value().value(QStringLiteral("Adapters")).value<QDBusArgument>();
+ // Now we check if the adapter still exists (it might have been unplugged)
+ const QDBusArgument &paths = reply.value().value(QStringLiteral("Adapters")).value<QDBusArgument>();
paths.beginArray();
while (!paths.atEnd()) {
QDBusObjectPath path;
paths >> path;
- //Check if the adapter exists
- if (path.path() == m_adapterPath)
+ // Check if the adapter exists
+ if (path.path() == m_adapterPath) {
+ paths.endArray();
return true;
+ }
}
+ paths.endArray();
return false;
}
@@ -109,7 +125,7 @@ bool QNearFieldManagerPrivateImpl::startTargetDetection()
//qDebug() << "Constructing interface with path" << m_adapterPath;
m_adapter = new OrgNeardAdapterInterface(QStringLiteral("org.neard"), m_adapterPath,
- QDBusConnection::systemBus());
+ QDBusConnection::systemBus(), this);
{
QDBusPendingReply<QVariantMap> reply = m_adapter->GetProperties();
@@ -143,7 +159,9 @@ bool QNearFieldManagerPrivateImpl::startTargetDetection()
void QNearFieldManagerPrivateImpl::stopTargetDetection()
{
- //qDebug() << "Stop target detection";
+ if (!isAvailable())
+ return;
+
QDBusPendingReply<> reply = m_adapter->StopPollLoop();
reply.waitForFinished();
// TODO Should we really power down the adapter?
diff --git a/src/nfc/qnearfieldmanager_neard.h b/src/nfc/qnearfieldmanager_neard_p.h
index 1848d16a..4984a531 100644
--- a/src/nfc/qnearfieldmanager_neard.h
+++ b/src/nfc/qnearfieldmanager_neard_p.h
@@ -46,7 +46,11 @@
#include "qnearfieldmanager.h"
#include "qnearfieldtarget.h"
-#include "neard/adapter_p.h"
+#include <QDBusObjectPath>
+#include <QDBusVariant>
+
+class OrgNeardAdapterInterface;
+class OrgNeardManagerInterface;
QT_BEGIN_NAMESPACE
@@ -81,6 +85,8 @@ private Q_SLOTS:
private:
QString m_adapterPath;
OrgNeardAdapterInterface *m_adapter;
+ OrgNeardManagerInterface *m_manager;
+
};
QT_END_NAMESPACE