summaryrefslogtreecommitdiffstats
path: root/src/connectivity/nfc
diff options
context:
space:
mode:
authorEckhart Koppen <eckhart.koppen@nokia.com>2011-04-20 11:52:57 +0300
committerEckhart Koppen <eckhart.koppen@nokia.com>2011-04-20 11:52:57 +0300
commitfb3e9bc2d941462f1244aaf0ea79425a307f883d (patch)
treeafce91959098ec887ce466abc6e40342261df3db /src/connectivity/nfc
parentc61d909c7b815319e40ba27d7f84e92aa5f1f946 (diff)
parent6f0dc7cc40dd63763a581a7fb6d4e76649b8026c (diff)
Merge branch 'master' into 1.2.0v1.2.0
Diffstat (limited to 'src/connectivity/nfc')
-rw-r--r--src/connectivity/nfc/maemo6/socketrequestor.cpp16
-rw-r--r--src/connectivity/nfc/nfc.pri14
-rw-r--r--src/connectivity/nfc/qdeclarativendefrecord.h2
-rw-r--r--src/connectivity/nfc/qllcpserver.cpp1
-rw-r--r--src/connectivity/nfc/qllcpsocket.cpp1
-rw-r--r--src/connectivity/nfc/qndeffilter.cpp1
-rw-r--r--src/connectivity/nfc/qndefmessage.cpp1
-rw-r--r--src/connectivity/nfc/qndefnfctextrecord.cpp1
-rw-r--r--src/connectivity/nfc/qndefnfcurirecord.cpp1
-rw-r--r--src/connectivity/nfc/qndefrecord.cpp1
-rw-r--r--src/connectivity/nfc/qnearfieldmanager.cpp1
-rw-r--r--src/connectivity/nfc/qnearfieldmanager_maemo6.cpp2
-rw-r--r--src/connectivity/nfc/qnearfieldtagmifare_symbian.cpp11
-rw-r--r--src/connectivity/nfc/qnearfieldtagmifare_symbian_p.h4
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype1.cpp55
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype1.h4
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype1_symbian.cpp8
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype1_symbian_p.h4
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype2.cpp14
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype2.h6
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype2_symbian.cpp9
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype2_symbian_p.h4
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype3.cpp1
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype3_symbian.cpp11
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype3_symbian_p.h4
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype4.cpp1
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype4_symbian.cpp8
-rw-r--r--src/connectivity/nfc/qnearfieldtagtype4_symbian_p.h4
-rw-r--r--src/connectivity/nfc/qnearfieldtarget.cpp36
-rw-r--r--src/connectivity/nfc/qnearfieldtarget.h6
-rw-r--r--src/connectivity/nfc/qnearfieldtarget_maemo6.cpp41
-rw-r--r--src/connectivity/nfc/qnearfieldtarget_maemo6_p.h25
-rw-r--r--src/connectivity/nfc/symbian/debug.h19
-rw-r--r--src/connectivity/nfc/symbian/llcpsockettype1_symbian.cpp2
-rw-r--r--src/connectivity/nfc/symbian/llcpsockettype2_symbian.h2
-rw-r--r--src/connectivity/nfc/symbian/nearfieldmanager_symbian.cpp1
-rw-r--r--src/connectivity/nfc/symbian/nearfieldndeftarget_symbian.cpp1
-rw-r--r--src/connectivity/nfc/symbian/nearfieldtag_symbian.cpp1
-rw-r--r--src/connectivity/nfc/symbian/nearfieldtagimpl_symbian.h26
-rw-r--r--src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.cpp14
-rw-r--r--src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.h7
-rw-r--r--src/connectivity/nfc/symbian/nearfieldtagndefrequest_symbian.cpp6
-rw-r--r--src/connectivity/nfc/symbian/nearfieldtargetfactory_symbian.cpp1
43 files changed, 248 insertions, 130 deletions
diff --git a/src/connectivity/nfc/maemo6/socketrequestor.cpp b/src/connectivity/nfc/maemo6/socketrequestor.cpp
index 5961f5bd47..37fcd936d3 100644
--- a/src/connectivity/nfc/maemo6/socketrequestor.cpp
+++ b/src/connectivity/nfc/maemo6/socketrequestor.cpp
@@ -505,14 +505,14 @@ void SocketRequestorPrivate::sendRequestAccess(const QString &adaptor, const QSt
return;
dbus_message_iter_init_append(message, &args);
- const char *cdata = path.toUtf8().constData();
- if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_OBJECT_PATH, &cdata)) {
+ const QByteArray p = path.toUtf8();
+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_OBJECT_PATH, p.constData())) {
dbus_message_unref(message);
return;
}
- cdata = kind.toUtf8().constData();
- if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &cdata)) {
+ const QByteArray k = kind.toUtf8();
+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, k.constData())) {
dbus_message_unref(message);
return;
}
@@ -543,14 +543,14 @@ void SocketRequestorPrivate::sendCancelAccessRequest(const QString &adaptor, con
return;
dbus_message_iter_init_append(message, &args);
- const char *cdata = path.toUtf8().constData();
- if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_OBJECT_PATH, &cdata)) {
+ const QByteArray p = path.toUtf8();
+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_OBJECT_PATH, p.constData())) {
dbus_message_unref(message);
return;
}
- cdata = kind.toUtf8().constData();
- if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &cdata)) {
+ const QByteArray k = kind.toUtf8();
+ if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, k.constData())) {
dbus_message_unref(message);
return;
}
diff --git a/src/connectivity/nfc/nfc.pri b/src/connectivity/nfc/nfc.pri
index faab00e302..49da2a65dd 100644
--- a/src/connectivity/nfc/nfc.pri
+++ b/src/connectivity/nfc/nfc.pri
@@ -13,7 +13,8 @@ PUBLIC_HEADERS += \
nfc/qllcpsocket.h \
nfc/qnearfieldtagtype3.h \
nfc/qnearfieldtagtype4.h \
- nfc/qllcpserver.h
+ nfc/qllcpserver.h \
+ nfc/qdeclarativendefrecord.h
PRIVATE_HEADERS += \
nfc/qndefrecord_p.h \
@@ -36,15 +37,8 @@ SOURCES += \
nfc/qllcpsocket.cpp \
nfc/qnearfieldtagtype4.cpp \
nfc/qtlv.cpp \
- nfc/qllcpserver.cpp
-
-contains(QT_CONFIG,declarative) {
- PUBLIC_HEADERS += \
- nfc/qdeclarativendefrecord.h
-
- SOURCES += \
- nfc/qdeclarativendefrecord.cpp
-}
+ nfc/qllcpserver.cpp \
+ nfc/qdeclarativendefrecord.cpp
maemo6|meego {
NFC_BACKEND_AVAILABLE = yes
diff --git a/src/connectivity/nfc/qdeclarativendefrecord.h b/src/connectivity/nfc/qdeclarativendefrecord.h
index e554198adf..709b0e2e9b 100644
--- a/src/connectivity/nfc/qdeclarativendefrecord.h
+++ b/src/connectivity/nfc/qdeclarativendefrecord.h
@@ -62,7 +62,7 @@ class Q_CONNECTIVITY_EXPORT QDeclarativeNdefRecord : public QObject
public:
explicit QDeclarativeNdefRecord(QObject *parent = 0);
- QDeclarativeNdefRecord(const QNdefRecord &record, QObject *parent = 0);
+ explicit QDeclarativeNdefRecord(const QNdefRecord &record, QObject *parent = 0);
QString recordType() const;
void setRecordType(const QString &t);
diff --git a/src/connectivity/nfc/qllcpserver.cpp b/src/connectivity/nfc/qllcpserver.cpp
index 4ba9fd40c4..97d5f1c3ec 100644
--- a/src/connectivity/nfc/qllcpserver.cpp
+++ b/src/connectivity/nfc/qllcpserver.cpp
@@ -59,6 +59,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
This class makes it possible to accept incoming LLCP socket connections.
diff --git a/src/connectivity/nfc/qllcpsocket.cpp b/src/connectivity/nfc/qllcpsocket.cpp
index 60baeaa376..8285666bbe 100644
--- a/src/connectivity/nfc/qllcpsocket.cpp
+++ b/src/connectivity/nfc/qllcpsocket.cpp
@@ -56,6 +56,7 @@ QTM_BEGIN_NAMESPACE
/*!
\class QLlcpSocket
\brief The QLlcpSocket class provides an NFC LLCP socket.
+ \since 1.2
\ingroup connectivity-nfc
\inmodule QtConnectivity
diff --git a/src/connectivity/nfc/qndeffilter.cpp b/src/connectivity/nfc/qndeffilter.cpp
index ccc4e38558..cf22e4e2b2 100644
--- a/src/connectivity/nfc/qndeffilter.cpp
+++ b/src/connectivity/nfc/qndeffilter.cpp
@@ -51,6 +51,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
The QNdefFilter encapsulates the structure of an NDEF message and is used by
QNearFieldManager::registerNdefMessageHandler() to match NDEF message that have a particular
diff --git a/src/connectivity/nfc/qndefmessage.cpp b/src/connectivity/nfc/qndefmessage.cpp
index 05e5409559..6e8c5b9f4a 100644
--- a/src/connectivity/nfc/qndefmessage.cpp
+++ b/src/connectivity/nfc/qndefmessage.cpp
@@ -50,6 +50,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
A QNdefMessage is a collection of 0 or more QNdefRecords. QNdefMessage inherits from
QList<QNdefRecord> and therefore the standard QList functions can be used to manipulate the
diff --git a/src/connectivity/nfc/qndefnfctextrecord.cpp b/src/connectivity/nfc/qndefnfctextrecord.cpp
index cb1bedd632..91b9ff04b4 100644
--- a/src/connectivity/nfc/qndefnfctextrecord.cpp
+++ b/src/connectivity/nfc/qndefnfctextrecord.cpp
@@ -52,6 +52,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
RTD-Text encapsulates a user displayable text record.
*/
diff --git a/src/connectivity/nfc/qndefnfcurirecord.cpp b/src/connectivity/nfc/qndefnfcurirecord.cpp
index a4657abcf0..d5413a6c29 100644
--- a/src/connectivity/nfc/qndefnfcurirecord.cpp
+++ b/src/connectivity/nfc/qndefnfcurirecord.cpp
@@ -54,6 +54,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
RTD-URI encapsulates a URI.
*/
diff --git a/src/connectivity/nfc/qndefrecord.cpp b/src/connectivity/nfc/qndefrecord.cpp
index cb4b441e56..777666e0db 100644
--- a/src/connectivity/nfc/qndefrecord.cpp
+++ b/src/connectivity/nfc/qndefrecord.cpp
@@ -53,6 +53,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
QNdefRecord and derived classes are used to parse the contents of
\l {QNdefMessage}{NDEF messages} and create new NDEF messages.
diff --git a/src/connectivity/nfc/qnearfieldmanager.cpp b/src/connectivity/nfc/qnearfieldmanager.cpp
index 2f7c88b4e8..46b7fbfedc 100644
--- a/src/connectivity/nfc/qnearfieldmanager.cpp
+++ b/src/connectivity/nfc/qnearfieldmanager.cpp
@@ -63,6 +63,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
NFC Forum devices support two modes of communications. The first mode, peer-to-peer
communications, is used to communicate between two NFC Forum devices. The second mode,
diff --git a/src/connectivity/nfc/qnearfieldmanager_maemo6.cpp b/src/connectivity/nfc/qnearfieldmanager_maemo6.cpp
index 0fc6f35a04..795b466c01 100644
--- a/src/connectivity/nfc/qnearfieldmanager_maemo6.cpp
+++ b/src/connectivity/nfc/qnearfieldmanager_maemo6.cpp
@@ -440,7 +440,7 @@ void QNearFieldManagerPrivateImpl::_q_targetLost(const QDBusObjectPath &targetPa
// haven't seen target so just drop this event
if (!nearFieldTarget) {
// We either haven't seen target (started after target was detected by system) or the
- // application deleted the target. Remove from map and dont emit anything.
+ // application deleted the target. Remove from map and don't emit anything.
m_targets.remove(targetPath.path());
return;
}
diff --git a/src/connectivity/nfc/qnearfieldtagmifare_symbian.cpp b/src/connectivity/nfc/qnearfieldtagmifare_symbian.cpp
index eb7238555a..bc90ff9b20 100644
--- a/src/connectivity/nfc/qnearfieldtagmifare_symbian.cpp
+++ b/src/connectivity/nfc/qnearfieldtagmifare_symbian.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -52,7 +52,6 @@ QNearFieldTagMifareSymbian::QNearFieldTagMifareSymbian(CNearFieldNdefTarget *tag
QNearFieldTagMifareSymbian::~QNearFieldTagMifareSymbian()
{
- delete mTag;
}
QByteArray QNearFieldTagMifareSymbian::uid() const
@@ -65,14 +64,14 @@ bool QNearFieldTagMifareSymbian::hasNdefMessage()
return _hasNdefMessage();
}
-void QNearFieldTagMifareSymbian::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagMifareSymbian::readNdefMessages()
{
- _ndefMessages();
+ return _ndefMessages();
}
-void QNearFieldTagMifareSymbian::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagMifareSymbian::writeNdefMessages(const QList<QNdefMessage> &messages)
{
- _setNdefMessages(messages);
+ return _setNdefMessages(messages);
}
QNearFieldTarget::RequestId QNearFieldTagMifareSymbian::sendCommand(const QByteArray &command)
diff --git a/src/connectivity/nfc/qnearfieldtagmifare_symbian_p.h b/src/connectivity/nfc/qnearfieldtagmifare_symbian_p.h
index 73eb6d2736..5e595bf84f 100644
--- a/src/connectivity/nfc/qnearfieldtagmifare_symbian_p.h
+++ b/src/connectivity/nfc/qnearfieldtagmifare_symbian_p.h
@@ -77,8 +77,8 @@ public:
}
// NdefAccess
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
// TagTypeSpecificAccess
RequestId sendCommand(const QByteArray &command);
diff --git a/src/connectivity/nfc/qnearfieldtagtype1.cpp b/src/connectivity/nfc/qnearfieldtagtype1.cpp
index e2c64e5d55..8ff5d2290c 100644
--- a/src/connectivity/nfc/qnearfieldtagtype1.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype1.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -55,6 +55,7 @@ QTM_BEGIN_NAMESPACE
\class QNearFieldTagType1
\brief The QNearFieldTagType1 class provides an interface for communicating with an NFC Tag
Type 1 tag.
+ \since 1.2
\ingroup connectivity-nfc
\inmodule QtConnectivity
@@ -99,6 +100,7 @@ public:
void progressToNextNdefReadMessageState();
ReadNdefMessageState m_readNdefMessageState;
+ QNearFieldTarget::RequestId m_readNdefRequestId;
QTlvReader *m_tlvReader;
QNearFieldTarget::RequestId m_nextExpectedRequestId;
@@ -114,6 +116,7 @@ public:
void progressToNextNdefWriteMessageState();
WriteNdefMessageState m_writeNdefMessageState;
+ QNearFieldTarget::RequestId m_writeNdefRequestId;
QList<QNdefMessage> m_ndefWriteMessages;
QTlvWriter *m_tlvWriter;
@@ -137,7 +140,8 @@ void QNearFieldTagType1Private::progressToNextNdefReadMessageState()
if (data.isEmpty()) {
m_readNdefMessageState = NotReadingNdefMessage;
m_nextExpectedRequestId = QNearFieldTarget::RequestId();
- emit q->error(QNearFieldTarget::NdefReadError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefReadError, m_readNdefRequestId);
+ m_readNdefRequestId = QNearFieldTarget::RequestId();
break;
}
@@ -147,7 +151,8 @@ void QNearFieldTagType1Private::progressToNextNdefReadMessageState()
if (!(hr0 & 0x10)) {
m_readNdefMessageState = NotReadingNdefMessage;
m_nextExpectedRequestId = QNearFieldTarget::RequestId();
- emit q->error(QNearFieldTarget::NdefReadError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefReadError, m_readNdefRequestId);
+ m_readNdefRequestId = QNearFieldTarget::RequestId();
break;
}
@@ -161,7 +166,8 @@ void QNearFieldTagType1Private::progressToNextNdefReadMessageState()
if (ndefMagicNumber != 0xe1) {
m_readNdefMessageState = NotReadingNdefMessage;
- emit q->error(QNearFieldTarget::NdefReadError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefReadError, m_readNdefRequestId);
+ m_readNdefRequestId = QNearFieldTarget::RequestId();
break;
}
@@ -188,6 +194,8 @@ void QNearFieldTagType1Private::progressToNextNdefReadMessageState()
delete m_tlvReader;
m_tlvReader = 0;
m_readNdefMessageState = NotReadingNdefMessage;
+ emit q->requestCompleted(m_readNdefRequestId);
+ m_readNdefRequestId = QNearFieldTarget::RequestId();
}
break;
}
@@ -208,7 +216,8 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
if (data.isEmpty()) {
m_writeNdefMessageState = NotWritingNdefMessage;
m_nextExpectedRequestId = QNearFieldTarget::RequestId();
- emit q->error(QNearFieldTarget::NdefWriteError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefWriteError, m_writeNdefRequestId);
+ m_writeNdefRequestId = QNearFieldTarget::RequestId();
break;
}
@@ -218,7 +227,8 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
if (!(hr0 & 0x10)) {
m_writeNdefMessageState = NotWritingNdefMessage;
m_nextExpectedRequestId = QNearFieldTarget::RequestId();
- emit q->error(QNearFieldTarget::NdefWriteError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefWriteError, m_writeNdefRequestId);
+ m_writeNdefRequestId = QNearFieldTarget::RequestId();
break;
}
@@ -232,7 +242,8 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
if (ndefMagicNumber != 0xe1) {
m_writeNdefMessageState = NotWritingNdefMessage;
- emit q->error(QNearFieldTarget::NdefWriteError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefWriteError, m_writeNdefRequestId);
+ m_writeNdefRequestId = QNearFieldTarget::RequestId();
break;
}
@@ -285,13 +296,16 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState()
delete m_tlvWriter;
m_tlvWriter = 0;
emit q->ndefMessagesWritten();
+ emit q->requestCompleted(m_writeNdefRequestId);
+ m_writeNdefRequestId = QNearFieldTarget::RequestId();
} else {
m_nextExpectedRequestId = m_tlvWriter->requestId();
if (!m_nextExpectedRequestId.isValid()) {
m_writeNdefMessageState = NotWritingNdefMessage;
delete m_tlvWriter;
m_tlvWriter = 0;
- emit q->error(QNearFieldTarget::NdefWriteError, QNearFieldTarget::RequestId());
+ emit q->error(QNearFieldTarget::NdefWriteError, m_writeNdefRequestId);
+ m_writeNdefRequestId = QNearFieldTarget::RequestId();
}
}
break;
@@ -412,30 +426,43 @@ bool QNearFieldTagType1::hasNdefMessage()
/*!
\reimp
*/
-void QNearFieldTagType1::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagType1::readNdefMessages()
{
Q_D(QNearFieldTagType1);
- if (d->m_readNdefMessageState == QNearFieldTagType1Private::NotReadingNdefMessage)
+ d->m_readNdefRequestId = RequestId(new RequestIdPrivate);
+
+ if (d->m_readNdefMessageState == QNearFieldTagType1Private::NotReadingNdefMessage) {
d->progressToNextNdefReadMessageState();
- else
- emit error(NdefReadError, RequestId());
+ } else {
+ QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
+ Q_ARG(QNearFieldTarget::Error, NdefReadError),
+ Q_ARG(QNearFieldTarget::RequestId, d->m_readNdefRequestId));
+ }
+
+ return d->m_readNdefRequestId;
}
/*!
\reimp
*/
-void QNearFieldTagType1::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagType1::writeNdefMessages(const QList<QNdefMessage> &messages)
{
Q_D(QNearFieldTagType1);
+ d->m_writeNdefRequestId = RequestId(new RequestIdPrivate);
+
if (d->m_readNdefMessageState == QNearFieldTagType1Private::NotReadingNdefMessage &&
d->m_writeNdefMessageState == QNearFieldTagType1Private::NotWritingNdefMessage) {
d->m_ndefWriteMessages = messages;
d->progressToNextNdefWriteMessageState();
} else {
- emit error(NdefWriteError, RequestId());
+ QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
+ Q_ARG(QNearFieldTarget::Error, NdefWriteError),
+ Q_ARG(QNearFieldTarget::RequestId, d->m_readNdefRequestId));
}
+
+ return d->m_writeNdefRequestId;
}
/*!
diff --git a/src/connectivity/nfc/qnearfieldtagtype1.h b/src/connectivity/nfc/qnearfieldtagtype1.h
index 40b8849f15..78610270d6 100644
--- a/src/connectivity/nfc/qnearfieldtagtype1.h
+++ b/src/connectivity/nfc/qnearfieldtagtype1.h
@@ -68,8 +68,8 @@ public:
Type type() const { return NfcTagType1; }
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
quint8 version();
virtual int memorySize();
diff --git a/src/connectivity/nfc/qnearfieldtagtype1_symbian.cpp b/src/connectivity/nfc/qnearfieldtagtype1_symbian.cpp
index a7e25a4edc..520dc5f2ba 100644
--- a/src/connectivity/nfc/qnearfieldtagtype1_symbian.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype1_symbian.cpp
@@ -342,18 +342,18 @@ bool QNearFieldTagType1Symbian::hasNdefMessage()
return _hasNdefMessage();
}
-void QNearFieldTagType1Symbian::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagType1Symbian::readNdefMessages()
{
BEGIN
- _ndefMessages();
END
+ return _ndefMessages();
}
-void QNearFieldTagType1Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagType1Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
{
BEGIN
- _setNdefMessages(messages);
END
+ return _setNdefMessages(messages);
}
/*
diff --git a/src/connectivity/nfc/qnearfieldtagtype1_symbian_p.h b/src/connectivity/nfc/qnearfieldtagtype1_symbian_p.h
index 2228eaaadd..3832cb05c6 100644
--- a/src/connectivity/nfc/qnearfieldtagtype1_symbian_p.h
+++ b/src/connectivity/nfc/qnearfieldtagtype1_symbian_p.h
@@ -78,8 +78,8 @@ public:
WriteMode mode = EraseAndWrite);
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
bool isProcessingCommand() const { return _isProcessingRequest(); }
RequestId sendCommand(const QByteArray &command);
diff --git a/src/connectivity/nfc/qnearfieldtagtype2.cpp b/src/connectivity/nfc/qnearfieldtagtype2.cpp
index d76dcf384a..89ca022424 100644
--- a/src/connectivity/nfc/qnearfieldtagtype2.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype2.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qnearfieldtagtype2.h"
+#include "qnearfieldtarget_p.h"
#include <QtCore/QVariant>
#include <QtCore/QCoreApplication>
@@ -53,6 +54,7 @@ QTM_BEGIN_NAMESPACE
\class QNearFieldTagType2
\brief The QNearFieldTagType2 class provides an interface for communicating with an NFC Tag
Type 2 tag.
+ \since 1.2
\ingroup connectivity-nfc
\inmodule QtConnectivity
@@ -122,21 +124,19 @@ bool QNearFieldTagType2::hasNdefMessage()
/*!
\reimp
*/
-void QNearFieldTagType2::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagType2::readNdefMessages()
{
- qDebug() << Q_FUNC_INFO << "is unimplemeted";
- emit error(QNearFieldTarget::UnsupportedError, RequestId());
+ return RequestId();
}
/*!
\reimp
*/
-void QNearFieldTagType2::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagType2::writeNdefMessages(const QList<QNdefMessage> &messages)
{
Q_UNUSED(messages);
- qDebug() << Q_FUNC_INFO << "is unimplemeted";
- emit error(QNearFieldTarget::UnsupportedError, RequestId());
+ return RequestId();
}
/*!
diff --git a/src/connectivity/nfc/qnearfieldtagtype2.h b/src/connectivity/nfc/qnearfieldtagtype2.h
index 54c6eb4277..3c7c7ed111 100644
--- a/src/connectivity/nfc/qnearfieldtagtype2.h
+++ b/src/connectivity/nfc/qnearfieldtagtype2.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -63,8 +63,8 @@ public:
Type type() const { return NfcTagType2; }
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
quint8 version();
int memorySize();
diff --git a/src/connectivity/nfc/qnearfieldtagtype2_symbian.cpp b/src/connectivity/nfc/qnearfieldtagtype2_symbian.cpp
index e12dd10cc8..c6342c9ffa 100644
--- a/src/connectivity/nfc/qnearfieldtagtype2_symbian.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype2_symbian.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -38,6 +38,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+
#include <nfctag.h>
#include <QVariant>
#include "qnearfieldtagtype2_symbian_p.h"
@@ -206,18 +207,18 @@ bool QNearFieldTagType2Symbian::hasNdefMessage()
return _hasNdefMessage();
}
-void QNearFieldTagType2Symbian::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagType2Symbian::readNdefMessages()
{
BEGIN
END
return _ndefMessages();
}
-void QNearFieldTagType2Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagType2Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
{
BEGIN
END
- _setNdefMessages(messages);
+ return _setNdefMessages(messages);
}
QByteArray QNearFieldTagType2Symbian::uid() const
diff --git a/src/connectivity/nfc/qnearfieldtagtype2_symbian_p.h b/src/connectivity/nfc/qnearfieldtagtype2_symbian_p.h
index df3768fbc6..fef3a5877b 100644
--- a/src/connectivity/nfc/qnearfieldtagtype2_symbian_p.h
+++ b/src/connectivity/nfc/qnearfieldtagtype2_symbian_p.h
@@ -70,8 +70,8 @@ public:
bool isProcessingCommand() const { return _isProcessingRequest(); }
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
void setAccessMethods(const QNearFieldTarget::AccessMethods& accessMethods)
{
diff --git a/src/connectivity/nfc/qnearfieldtagtype3.cpp b/src/connectivity/nfc/qnearfieldtagtype3.cpp
index 0583a645af..0dc54ccd01 100644
--- a/src/connectivity/nfc/qnearfieldtagtype3.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype3.cpp
@@ -47,6 +47,7 @@ QTM_BEGIN_NAMESPACE
\class QNearFieldTagType3
\brief The QNearFieldTagType3 class provides an interface for communicating with an NFC Tag
Type 3 tag.
+ \since 1.2
\ingroup connectivity-nfc
\inmodule QtConnectivity
diff --git a/src/connectivity/nfc/qnearfieldtagtype3_symbian.cpp b/src/connectivity/nfc/qnearfieldtagtype3_symbian.cpp
index c40a6e8590..76971ffbf6 100644
--- a/src/connectivity/nfc/qnearfieldtagtype3_symbian.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype3_symbian.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -38,6 +38,7 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+
#include <nfctag.h>
#include "qnearfieldtagtype3_symbian_p.h"
#include <nfctype3connection.h>
@@ -193,14 +194,14 @@ bool QNearFieldTagType3Symbian::hasNdefMessage()
return _hasNdefMessage();
}
-void QNearFieldTagType3Symbian::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagType3Symbian::readNdefMessages()
{
- _ndefMessages();
+ return _ndefMessages();
}
-void QNearFieldTagType3Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagType3Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
{
- _setNdefMessages(messages);
+ return _setNdefMessages(messages);
}
QNearFieldTarget::RequestId QNearFieldTagType3Symbian::sendCommand(const QByteArray &command)
diff --git a/src/connectivity/nfc/qnearfieldtagtype3_symbian_p.h b/src/connectivity/nfc/qnearfieldtagtype3_symbian_p.h
index e42f7ed875..c77096b6f1 100644
--- a/src/connectivity/nfc/qnearfieldtagtype3_symbian_p.h
+++ b/src/connectivity/nfc/qnearfieldtagtype3_symbian_p.h
@@ -71,8 +71,8 @@ public:
}
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
#if 0
quint16 systemCode();
diff --git a/src/connectivity/nfc/qnearfieldtagtype4.cpp b/src/connectivity/nfc/qnearfieldtagtype4.cpp
index 8e6df27f68..6d18f01f34 100644
--- a/src/connectivity/nfc/qnearfieldtagtype4.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype4.cpp
@@ -47,6 +47,7 @@ QTM_BEGIN_NAMESPACE
\class QNearFieldTagType4
\brief The QNearFieldTagType4 class provides an interface for communicating with an NFC Tag
Type 4 tag.
+ \since 1.2
\ingroup connectivity-nfc
\inmodule QtConnectivity
diff --git a/src/connectivity/nfc/qnearfieldtagtype4_symbian.cpp b/src/connectivity/nfc/qnearfieldtagtype4_symbian.cpp
index 44b40067c4..0d18236822 100644
--- a/src/connectivity/nfc/qnearfieldtagtype4_symbian.cpp
+++ b/src/connectivity/nfc/qnearfieldtagtype4_symbian.cpp
@@ -261,14 +261,14 @@ bool QNearFieldTagType4Symbian::hasNdefMessage()
return ( (nLen > 0) && (nLen < maxNdefLen -2) );
}
-void QNearFieldTagType4Symbian::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTagType4Symbian::readNdefMessages()
{
- _ndefMessages();
+ return _ndefMessages();
}
-void QNearFieldTagType4Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagType4Symbian::writeNdefMessages(const QList<QNdefMessage> &messages)
{
- _setNdefMessages(messages);
+ return _setNdefMessages(messages);
}
QNearFieldTarget::RequestId QNearFieldTagType4Symbian::sendCommand(const QByteArray &command)
diff --git a/src/connectivity/nfc/qnearfieldtagtype4_symbian_p.h b/src/connectivity/nfc/qnearfieldtagtype4_symbian_p.h
index 0ec06de261..34d9233c86 100644
--- a/src/connectivity/nfc/qnearfieldtagtype4_symbian_p.h
+++ b/src/connectivity/nfc/qnearfieldtagtype4_symbian_p.h
@@ -69,8 +69,8 @@ public:
quint8 version();
bool hasNdefMessage();
- void readNdefMessages();
- void writeNdefMessages(const QList<QNdefMessage> &messages);
+ RequestId readNdefMessages();
+ RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
RequestId sendCommand(const QByteArray &command);
RequestId sendCommands(const QList<QByteArray> &commands);
diff --git a/src/connectivity/nfc/qnearfieldtarget.cpp b/src/connectivity/nfc/qnearfieldtarget.cpp
index 0e44fa58a7..cabf257a50 100644
--- a/src/connectivity/nfc/qnearfieldtarget.cpp
+++ b/src/connectivity/nfc/qnearfieldtarget.cpp
@@ -58,6 +58,7 @@ QTM_BEGIN_NAMESPACE
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
QNearFieldTarget provides a generic interface for communicating with an NFC target device.
Both NFC Forum devices and NFC Forum Tag targets are supported by this class. All target
@@ -236,6 +237,14 @@ bool QNearFieldTarget::RequestId::operator==(const RequestId &other) const
}
/*!
+ \internal
+*/
+bool QNearFieldTarget::RequestId::operator!=(const RequestId &other) const
+{
+ return d != other.d;
+}
+
+/*!
Assigns a copy of \a other to this request id and returns a reference to this request id.
*/
QNearFieldTarget::RequestId &QNearFieldTarget::RequestId::operator=(const RequestId &other)
@@ -251,6 +260,7 @@ QNearFieldTarget::QNearFieldTarget(QObject *parent)
: QObject(parent), d_ptr(new QNearFieldTargetPrivate)
{
qRegisterMetaType<RequestId>("QNearFieldTarget::RequestId");
+ qRegisterMetaType<Error>("QNearFieldTarget::Error");
}
/*!
@@ -305,29 +315,37 @@ bool QNearFieldTarget::hasNdefMessage()
}
/*!
- Starts reading NDEF messages stored on the near field target. An ndefMessageRead() signal will
- be emitted for each NDEF message. If an error occurs the error() signal will be emitted.
+ Starts reading NDEF messages stored on the near field target. Returns a request id which can
+ be used to track the completion status of the request. An invalid request id will be returned
+ if the target does not support reading NDEF messages.
+
+ An ndefMessageRead() signal will be emitted for each NDEF message. The requestCompleted()
+ signal will be emitted was all NDEF messages have been read. The error() signal is emitted if
+ an error occurs.
\note Symbian^3 and Maemo 6 only support read one NDEF message.
*/
-void QNearFieldTarget::readNdefMessages()
+QNearFieldTarget::RequestId QNearFieldTarget::readNdefMessages()
{
- emit error(UnsupportedError, RequestId());
+ return RequestId();
}
/*!
- Writes the NDEF messages in \a messages to the target. The ndefMessagesWritten() signal will be
- emitted when the write operation completes successfully; otherwise the error() signal is
- emitted.
+ Writes the NDEF messages in \a messages to the target. Returns a request id which can be used
+ to track the completion status of the request. An invalid request id will be returned if the
+ target does not support reading NDEF messages.
+
+ The ndefMessagesWritten() signal will be emitted when the write operation completes
+ successfully; otherwise the error() signal is emitted.
\note Symbian^3 and Maemo 6 only support writing one NDEF message. Only the first NDEF message
in the list will be written, others are silently dropped.
*/
-void QNearFieldTarget::writeNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTarget::writeNdefMessages(const QList<QNdefMessage> &messages)
{
Q_UNUSED(messages);
- emit error(UnsupportedError, RequestId());
+ return RequestId();
}
/*!
diff --git a/src/connectivity/nfc/qnearfieldtarget.h b/src/connectivity/nfc/qnearfieldtarget.h
index 9a79ef05a8..070fd1bf04 100644
--- a/src/connectivity/nfc/qnearfieldtarget.h
+++ b/src/connectivity/nfc/qnearfieldtarget.h
@@ -87,6 +87,7 @@ public:
enum Error {
NoError,
+ UnknownError,
UnsupportedError,
TargetOutOfRangeError,
NoResponseError,
@@ -111,6 +112,7 @@ public:
bool operator<(const RequestId &other) const;
bool operator==(const RequestId &other) const;
+ bool operator!=(const RequestId &other) const;
RequestId &operator=(const RequestId &other);
QSharedDataPointer<RequestIdPrivate> d;
@@ -129,8 +131,8 @@ public:
// NdefAccess
virtual bool hasNdefMessage();
- virtual void readNdefMessages();
- virtual void writeNdefMessages(const QList<QNdefMessage> &messages);
+ virtual RequestId readNdefMessages();
+ virtual RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
// TagTypeSpecificAccess
virtual RequestId sendCommand(const QByteArray &command);
diff --git a/src/connectivity/nfc/qnearfieldtarget_maemo6.cpp b/src/connectivity/nfc/qnearfieldtarget_maemo6.cpp
index 391da696fa..0a5850cbe8 100644
--- a/src/connectivity/nfc/qnearfieldtarget_maemo6.cpp
+++ b/src/connectivity/nfc/qnearfieldtarget_maemo6.cpp
@@ -53,35 +53,39 @@ void PendingCallWatcher::addSendCommand(const QDBusPendingReply<QByteArray> &rep
m_pendingCommands.insert(watcher, id);
}
-void PendingCallWatcher::addReadNdefMessages(const QDBusPendingReply<QList<QByteArray> > &reply)
+void PendingCallWatcher::addReadNdefMessages(const QDBusPendingReply<QList<QByteArray> > &reply,
+ const QNearFieldTarget::RequestId &id)
{
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
this, SLOT(readNdefMessagesFinished(QDBusPendingCallWatcher*)));
- m_pendingNdefReads.append(watcher);
+ m_pendingNdefReads.insert(watcher, id);
}
-void PendingCallWatcher::addWriteNdefMessages(const QDBusPendingReply<> &reply)
+void PendingCallWatcher::addWriteNdefMessages(const QDBusPendingReply<> &reply,
+ const QNearFieldTarget::RequestId &id)
{
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
this, SLOT(writeNdefMessages(QDBusPendingCallWatcher*)));
- m_pendingNdefWrites.append(watcher);
+ m_pendingNdefWrites.insert(watcher, id);
}
void PendingCallWatcher::sendCommandFinished(QDBusPendingCallWatcher *watcher)
{
QNearFieldTarget::RequestId id = m_pendingCommands.take(watcher);
- if (!id.isValid())
+ if (!id.isValid()) {
+ watcher->deleteLater();
return;
+ }
QDBusPendingReply<QByteArray> reply = *watcher;
if (reply.isError()) {
QMetaObject::invokeMethod(parent(), "error",
- Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NoError),
+ Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnknownError),
Q_ARG(QNearFieldTarget::RequestId, id));
} else {
const QByteArray data = reply.argumentAt<0>();
@@ -95,11 +99,18 @@ void PendingCallWatcher::sendCommandFinished(QDBusPendingCallWatcher *watcher)
void PendingCallWatcher::readNdefMessagesFinished(QDBusPendingCallWatcher *watcher)
{
+ QNearFieldTarget::RequestId id = m_pendingNdefReads.take(watcher);
+
+ if (!id.isValid()) {
+ watcher->deleteLater();
+ return;
+ }
+
QDBusPendingReply<QList<QByteArray> > reply = *watcher;
if (reply.isError()) {
QMetaObject::invokeMethod(parent(), "error",
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NdefReadError),
- Q_ARG(QNearFieldTarget::RequestId, QNearFieldTarget::RequestId()));
+ Q_ARG(QNearFieldTarget::RequestId, id));
} else {
const QList<QByteArray> data = reply.argumentAt<0>();
foreach (const QByteArray &m, data) {
@@ -112,24 +123,34 @@ void PendingCallWatcher::readNdefMessagesFinished(QDBusPendingCallWatcher *watch
QMetaObject::invokeMethod(parent(), "ndefMessageRead", Q_ARG(QNdefMessage, message));
}
+
+ QMetaObject::invokeMethod(parent(), "requestCompleted",
+ Q_ARG(QNearFieldTarget::RequestId, id));
}
- m_pendingNdefReads.removeOne(watcher);
watcher->deleteLater();
}
void PendingCallWatcher::writeNdefMessages(QDBusPendingCallWatcher *watcher)
{
+ QNearFieldTarget::RequestId id = m_pendingNdefWrites.take(watcher);
+
+ if (!id.isValid()) {
+ watcher->deleteLater();
+ return;
+ }
+
QDBusPendingReply<> reply = *watcher;
if (reply.isError()) {
QMetaObject::invokeMethod(parent(), "error",
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NdefWriteError),
- Q_ARG(QNearFieldTarget::RequestId, QNearFieldTarget::RequestId()));
+ Q_ARG(QNearFieldTarget::RequestId, id));
} else {
QMetaObject::invokeMethod(parent(), "ndefMessagesWritten");
+ QMetaObject::invokeMethod(parent(), "requestCompleted",
+ Q_ARG(QNearFieldTarget::RequestId, id));
}
- m_pendingNdefWrites.removeOne(watcher);
watcher->deleteLater();
}
diff --git a/src/connectivity/nfc/qnearfieldtarget_maemo6_p.h b/src/connectivity/nfc/qnearfieldtarget_maemo6_p.h
index 7919076ade..6cb07cac29 100644
--- a/src/connectivity/nfc/qnearfieldtarget_maemo6_p.h
+++ b/src/connectivity/nfc/qnearfieldtarget_maemo6_p.h
@@ -73,8 +73,10 @@ public:
void addSendCommand(const QDBusPendingReply<QByteArray> &reply,
const QNearFieldTarget::RequestId &id);
- void addReadNdefMessages(const QDBusPendingReply<QList<QByteArray> > &reply);
- void addWriteNdefMessages(const QDBusPendingReply<> &reply);
+ void addReadNdefMessages(const QDBusPendingReply<QList<QByteArray> > &reply,
+ const QNearFieldTarget::RequestId &id);
+ void addWriteNdefMessages(const QDBusPendingReply<> &reply,
+ const QNearFieldTarget::RequestId &id);
private slots:
void sendCommandFinished(QDBusPendingCallWatcher *watcher);
@@ -83,8 +85,8 @@ private slots:
private:
QMap<QDBusPendingCallWatcher *, QNearFieldTarget::RequestId> m_pendingCommands;
- QList<QDBusPendingCallWatcher *> m_pendingNdefReads;
- QList<QDBusPendingCallWatcher *> m_pendingNdefWrites;
+ QMap<QDBusPendingCallWatcher *, QNearFieldTarget::RequestId> m_pendingNdefReads;
+ QMap<QDBusPendingCallWatcher *, QNearFieldTarget::RequestId> m_pendingNdefWrites;
};
template <typename T>
@@ -134,21 +136,28 @@ public:
return true;
}
- void readNdefMessages()
+ QNearFieldTarget::RequestId readNdefMessages()
{
+ QNearFieldTarget::RequestId id(new QNearFieldTarget::RequestIdPrivate);
+
QDBusPendingReply<QList<QByteArray> > reply = m_tag->ReadNDEFData();
- m_callWatcher->addReadNdefMessages(reply);
+ m_callWatcher->addReadNdefMessages(reply, id);
+
+ return id;
}
- void writeNdefMessages(const QList<QNdefMessage> &messages)
+ QNearFieldTarget::RequestId writeNdefMessages(const QList<QNdefMessage> &messages)
{
+ QNearFieldTarget::RequestId id(new QNearFieldTarget::RequestIdPrivate);
QList<QByteArray> rawMessages;
foreach (const QNdefMessage &message, messages)
rawMessages.append(message.toByteArray());
QDBusPendingReply<> reply = m_tag->WriteNDEFData(rawMessages);
- m_callWatcher->addWriteNdefMessages(reply);
+ m_callWatcher->addWriteNdefMessages(reply, id);
+
+ return id;
}
QNearFieldTarget::RequestId sendCommand(const QByteArray &command)
diff --git a/src/connectivity/nfc/symbian/debug.h b/src/connectivity/nfc/symbian/debug.h
index 236b675c6f..6dbd9204a2 100644
--- a/src/connectivity/nfc/symbian/debug.h
+++ b/src/connectivity/nfc/symbian/debug.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -43,11 +43,18 @@
#define DEBUG_H_
#include <QDebug>
-#define SYMBIAN_NFC_DEBUG
+//#define SYMBIAN_NFC_DEBUG
-#define BEGIN qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<" Begin";
-#define END qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<" End";
-#define BEGIN_END qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<" BEGIN_End";
-#define LOG(a) qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<a;
+#ifdef SYMBIAN_NFC_DEBUG
+# define BEGIN qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<" Begin";
+# define END qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<" End";
+# define BEGIN_END qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<" BEGIN_End";
+# define LOG(a) qDebug()<<__PRETTY_FUNCTION__<<" Line: "<<__LINE__ <<a;
+#else
+# define BEGIN
+# define END
+# define BEGIN_END
+# define LOG(a)
+#endif
#endif /* DEBUG_H_ */
diff --git a/src/connectivity/nfc/symbian/llcpsockettype1_symbian.cpp b/src/connectivity/nfc/symbian/llcpsockettype1_symbian.cpp
index a2913cf258..3f73cbd990 100644
--- a/src/connectivity/nfc/symbian/llcpsockettype1_symbian.cpp
+++ b/src/connectivity/nfc/symbian/llcpsockettype1_symbian.cpp
@@ -238,7 +238,6 @@ void CLlcpSocketType1::FrameReceived(MLlcpConnLessTransporter* aConnection)
{
BEGIN
iRemotePort = aConnection->SsapL();
- qDebug() << "FrameReceived " << iRemotePort;
// StartTransportAndReceive(aConnection);
// Only accepting one incoming remote connection
TInt error = KErrNone;
@@ -349,7 +348,6 @@ TInt CLlcpSocketType1::CreateConnection(TUint8 portNum)
if (error == KErrNone)
{
iRemotePort = portNum;
- qDebug() << "CreateConnection " << iRemotePort;
error = StartTransportAndReceive(llcpConnection);
}
END
diff --git a/src/connectivity/nfc/symbian/llcpsockettype2_symbian.h b/src/connectivity/nfc/symbian/llcpsockettype2_symbian.h
index 30ced1b3e2..7ba20995fb 100644
--- a/src/connectivity/nfc/symbian/llcpsockettype2_symbian.h
+++ b/src/connectivity/nfc/symbian/llcpsockettype2_symbian.h
@@ -93,7 +93,7 @@ public:
void AttachCallbackHandler(QtMobility::QLlcpSocketPrivate* aCallback);
private:
// Constructor
- CLlcpSocketType2(MLlcpConnOrientedTransporter* aTransporter = NULL,QtMobility::QLlcpSocketPrivate* aCallback = NULL);
+ explicit CLlcpSocketType2(MLlcpConnOrientedTransporter* aTransporter = NULL,QtMobility::QLlcpSocketPrivate* aCallback = NULL);
// Second phase constructor
void ConstructL();
void ConnectToServiceL( const TDesC8& aServiceName);
diff --git a/src/connectivity/nfc/symbian/nearfieldmanager_symbian.cpp b/src/connectivity/nfc/symbian/nearfieldmanager_symbian.cpp
index 62c785e2bc..cb9a9ea5ac 100644
--- a/src/connectivity/nfc/symbian/nearfieldmanager_symbian.cpp
+++ b/src/connectivity/nfc/symbian/nearfieldmanager_symbian.cpp
@@ -53,6 +53,7 @@
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
\internal
A Symbian implementation class to support symbian NFC backend.
diff --git a/src/connectivity/nfc/symbian/nearfieldndeftarget_symbian.cpp b/src/connectivity/nfc/symbian/nearfieldndeftarget_symbian.cpp
index 20a0dffc5a..89fc82bc7b 100644
--- a/src/connectivity/nfc/symbian/nearfieldndeftarget_symbian.cpp
+++ b/src/connectivity/nfc/symbian/nearfieldndeftarget_symbian.cpp
@@ -238,6 +238,7 @@ void CNearFieldNdefTarget::HandleError( TInt aError )
//TODO: consider it carefully
//iMessages = 0;
}
+ iCurrentOperation = ENull;
END
}
diff --git a/src/connectivity/nfc/symbian/nearfieldtag_symbian.cpp b/src/connectivity/nfc/symbian/nearfieldtag_symbian.cpp
index 7e08630d64..8355008248 100644
--- a/src/connectivity/nfc/symbian/nearfieldtag_symbian.cpp
+++ b/src/connectivity/nfc/symbian/nearfieldtag_symbian.cpp
@@ -52,6 +52,7 @@
\ingroup connectivity-nfc
\inmodule QtConnectivity
\internal
+ \since 1.2
*/
CNearFieldTag::CNearFieldTag(MNfcTag * aNfcTag, RNfcServer& aNfcServer) : CActive(EPriorityStandard),
diff --git a/src/connectivity/nfc/symbian/nearfieldtagimpl_symbian.h b/src/connectivity/nfc/symbian/nearfieldtagimpl_symbian.h
index 883e5c6f69..31946f7204 100644
--- a/src/connectivity/nfc/symbian/nearfieldtagimpl_symbian.h
+++ b/src/connectivity/nfc/symbian/nearfieldtagimpl_symbian.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -86,6 +86,7 @@ public: // From MNearFieldTargetOperation
void EmitNdefMessageRead(const QNdefMessage &message);
void EmitNdefMessagesWritten();
+ void EmitRequestCompleted(const QNearFieldTarget::RequestId &id);
void EmitError(int error, const QNearFieldTarget::RequestId &id);
public:
@@ -149,12 +150,31 @@ void QNearFieldTagImpl<TAGTYPE>::EmitNdefMessagesWritten()
}
template<typename TAGTYPE>
-void QNearFieldTagImpl<TAGTYPE>::EmitError(int error, const QNearFieldTarget::RequestId &id)
+void QNearFieldTagImpl<TAGTYPE>::EmitRequestCompleted(const QNearFieldTarget::RequestId &id)
{
BEGIN
TAGTYPE * tag = static_cast<TAGTYPE *>(this);
int err;
- QT_TRYCATCH_ERROR(err, emit tag->error(SymbianError2QtError(error), id));
+ QT_TRYCATCH_ERROR(err, emit tag->requestCompleted(id));
+ Q_UNUSED(err);
+ END
+}
+
+template<typename TAGTYPE>
+void QNearFieldTagImpl<TAGTYPE>::EmitError(int error, const QNearFieldTarget::RequestId &id)
+{
+ BEGIN
+ TAGTYPE * tag = static_cast<TAGTYPE *>(this);
+
+ int err = KErrNone;
+ try {
+ QMetaObject::invokeMethod(tag, "error", Qt::QueuedConnection,
+ Q_ARG(QNearFieldTarget::Error, SymbianError2QtError(error)),
+ Q_ARG(QNearFieldTarget::RequestId, id));
+ } catch (const std::exception &ex) {
+ err = qt_symbian_exception2Error(ex);
+ }
+
Q_UNUSED(err);
END
}
diff --git a/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.cpp b/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.cpp
index 48ecc4bcf3..ccd434ae1c 100644
--- a/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.cpp
+++ b/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -274,7 +274,7 @@ bool QNearFieldTagImplCommon::_hasNdefMessage()
}
-void QNearFieldTagImplCommon::_ndefMessages()
+QNearFieldTarget::RequestId QNearFieldTagImplCommon::_ndefMessages()
{
BEGIN
NearFieldTagNdefRequest * readNdefRequest = new NearFieldTagNdefRequest(*this);
@@ -301,13 +301,15 @@ void QNearFieldTagImplCommon::_ndefMessages()
}
else
{
- EmitError(KErrNoMemory, QNearFieldTarget::RequestId());
+ EmitError(KErrNoMemory, requestId);
}
END
+
+ return requestId;
}
-void QNearFieldTagImplCommon::_setNdefMessages(const QList<QNdefMessage> &messages)
+QNearFieldTarget::RequestId QNearFieldTagImplCommon::_setNdefMessages(const QList<QNdefMessage> &messages)
{
BEGIN
NearFieldTagNdefRequest * writeNdefRequest = new NearFieldTagNdefRequest(*this);
@@ -335,9 +337,11 @@ void QNearFieldTagImplCommon::_setNdefMessages(const QList<QNdefMessage> &messag
}
else
{
- EmitError(KErrNoMemory, QNearFieldTarget::RequestId());
+ EmitError(KErrNoMemory, requestId);
}
END
+
+ return requestId;
}
diff --git a/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.h b/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.h
index 4aefa988b3..1d5aec7fc6 100644
--- a/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.h
+++ b/src/connectivity/nfc/symbian/nearfieldtagimplcommon_symbian.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -72,6 +72,7 @@ public:
virtual void EmitNdefMessageRead(const QNdefMessage &message) = 0;
virtual void EmitNdefMessagesWritten() = 0;
+ virtual void EmitRequestCompleted(const QNearFieldTarget::RequestId &id) = 0;
virtual void EmitError(int error, const QNearFieldTarget::RequestId &id) = 0;
virtual void HandleResponse(const QNearFieldTarget::RequestId &id, const QByteArray &command, const QByteArray &response, bool emitRequestCompleted) = 0;
virtual void HandleResponse(const QNearFieldTarget::RequestId &id, const QVariantList& response, int error) = 0;
@@ -83,8 +84,8 @@ public:
protected:
bool _hasNdefMessage();
- void _ndefMessages();
- void _setNdefMessages(const QList<QNdefMessage> &messages);
+ QNearFieldTarget::RequestId _ndefMessages();
+ QNearFieldTarget::RequestId _setNdefMessages(const QList<QNdefMessage> &messages);
void _setAccessMethods(const QNearFieldTarget::AccessMethods& accessMethods)
{
diff --git a/src/connectivity/nfc/symbian/nearfieldtagndefrequest_symbian.cpp b/src/connectivity/nfc/symbian/nearfieldtagndefrequest_symbian.cpp
index 974c593fab..7b73c0a76b 100644
--- a/src/connectivity/nfc/symbian/nearfieldtagndefrequest_symbian.cpp
+++ b/src/connectivity/nfc/symbian/nearfieldtagndefrequest_symbian.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -123,7 +123,7 @@ void NearFieldTagNdefRequest::ProcessEmitSignal(TInt aError)
LOG("error code is "<<aError<<" request type is "<<iType);
if (aError != KErrNone)
{
- iOperator.EmitError(aError, QNearFieldTarget::RequestId());
+ iOperator.EmitError(aError, iId);
}
else
{
@@ -137,10 +137,12 @@ void NearFieldTagNdefRequest::ProcessEmitSignal(TInt aError)
LOG("emit signal ndef message read");
iOperator.EmitNdefMessageRead(iReadMessages.at(i));
}
+ iOperator.EmitRequestCompleted(iId);
}
else if (EWriteRequest == iType)
{
iOperator.EmitNdefMessagesWritten();
+ iOperator.EmitRequestCompleted(iId);
}
}
END
diff --git a/src/connectivity/nfc/symbian/nearfieldtargetfactory_symbian.cpp b/src/connectivity/nfc/symbian/nearfieldtargetfactory_symbian.cpp
index 19a1a34c84..f62d568d13 100644
--- a/src/connectivity/nfc/symbian/nearfieldtargetfactory_symbian.cpp
+++ b/src/connectivity/nfc/symbian/nearfieldtargetfactory_symbian.cpp
@@ -60,6 +60,7 @@
\ingroup connectivity-nfc
\inmodule QtConnectivity
+ \since 1.2
*/
/*