diff options
author | Eckhart Koppen <eckhart.koppen@nokia.com> | 2011-04-20 11:52:57 +0300 |
---|---|---|
committer | Eckhart Koppen <eckhart.koppen@nokia.com> | 2011-04-20 11:52:57 +0300 |
commit | fb3e9bc2d941462f1244aaf0ea79425a307f883d (patch) | |
tree | afce91959098ec887ce466abc6e40342261df3db /src/connectivity/nfc | |
parent | c61d909c7b815319e40ba27d7f84e92aa5f1f946 (diff) | |
parent | 6f0dc7cc40dd63763a581a7fb6d4e76649b8026c (diff) |
Merge branch 'master' into 1.2.0v1.2.0
Diffstat (limited to 'src/connectivity/nfc')
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 */ /* |