6#include "pcsc/qpcscmanager_p.h"
7#include "pcsc/qpcsccard_p.h"
8#include <QtCore/QLoggingCategory>
9#include <QtCore/QThread>
13using namespace Qt::StringLiterals;
15Q_DECLARE_LOGGING_CATEGORY(QT_NFC_PCSC)
18
19
20
21
22
23
24QNearFieldManagerPrivateImpl::QNearFieldManagerPrivateImpl()
26 qCDebug(QT_NFC_PCSC) << Q_FUNC_INFO;
28 m_worker =
new QPcscManager;
29 m_workerThread =
new QThread(
this);
30 m_workerThread->setObjectName(u"QtNfcThread"_s);
31 m_worker->moveToThread(m_workerThread);
33 connect(m_worker, &QPcscManager::cardInserted,
this,
34 &QNearFieldManagerPrivateImpl::onCardInserted);
35 connect(
this, &QNearFieldManagerPrivateImpl::startTargetDetectionRequest, m_worker,
36 &QPcscManager::onStartTargetDetectionRequest);
37 connect(
this, &QNearFieldManagerPrivateImpl::stopTargetDetectionRequest, m_worker,
38 &QPcscManager::onStopTargetDetectionRequest);
40 m_workerThread->start();
44
45
48 qCDebug(QT_NFC_PCSC) << Q_FUNC_INFO;
52 QMetaObject::invokeMethod(m_worker, &QObject::deleteLater, Qt::QueuedConnection);
53 m_workerThread->wait();
63 switch (accessMethod) {
64 case QNearFieldTarget::TagTypeSpecificAccess:
65 case QNearFieldTarget::NdefAccess:
74 qCDebug(QT_NFC_PCSC) << Q_FUNC_INFO;
76 Q_EMIT startTargetDetectionRequest(accessMethod);
83 Q_UNUSED(errorMessage);
85 qCDebug(QT_NFC_PCSC) << Q_FUNC_INFO;
87 Q_EMIT stopTargetDetectionRequest();
91
92
93
94
95
97 QNearFieldTarget::AccessMethods accessMethods,
100 qCDebug(QT_NFC_PCSC) << Q_FUNC_INFO;
104 connect(priv, &QNearFieldTargetPrivateImpl::disconnectRequest, card,
105 &QPcscCard::onDisconnectRequest);
106 connect(priv, &QNearFieldTargetPrivateImpl::destroyed, card, &QPcscCard::onTargetDestroyed);
107 connect(priv, &QNearFieldTargetPrivateImpl::sendCommandRequest, card,
108 &QPcscCard::onSendCommandRequest);
109 connect(priv, &QNearFieldTargetPrivateImpl::readNdefMessagesRequest, card,
110 &QPcscCard::onReadNdefMessagesRequest);
111 connect(priv, &QNearFieldTargetPrivateImpl::writeNdefMessagesRequest, card,
112 &QPcscCard::onWriteNdefMessagesRequest);
117 connect(card, &QPcscCard::disconnected, priv, &QNearFieldTargetPrivateImpl::onDisconnected);
119 connect(card, &QPcscCard::requestCompleted, priv,
120 &QNearFieldTargetPrivateImpl::onRequestCompleted);
124 auto target =
new QNearFieldTarget(priv,
this);
126 Q_EMIT targetDetected(target);
130 QMetaObject::invokeMethod(card, &QPcscCard::enableAutodelete, Qt::QueuedConnection);
135 Q_EMIT targetLost(target->q_ptr);
bool isEnabled() const override
bool isSupported(QNearFieldTarget::AccessMethod accessMethod) const override
bool startTargetDetection(QNearFieldTarget::AccessMethod accessMethod) override
~QNearFieldManagerPrivateImpl()
void stopTargetDetection(const QString &errorMessage) override
void onTargetLost(QNearFieldTargetPrivate *target)
void targetLost(QNearFieldTargetPrivate *target)
void onNdefMessageRead(const QNdefMessage &message)
void ndefMessageRead(const QNdefMessage &message)
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")