-
Notifications
You must be signed in to change notification settings - Fork 0
/
NfcMaster.cpp
78 lines (66 loc) · 2.13 KB
/
NfcMaster.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <QNearFieldManager>
#include <QNearFieldTarget>
#include <QNdefNfcUriRecord>
#include <QNdefMessage>
#include <QLlcpSocket>
#include <QDebug>
#include <QVariant>
#include <QUrl>
#include "NfcMaster.h"
//"urn:nfc:xsn:nokia.com:moko";
struct NfcMasterPrivate {
QNearFieldManager* nfcMgr;
QLlcpSocket* nfcSocket;
QVariant msg;
};
NfcMaster::NfcMaster(QObject *parent) :
QObject(parent) {
d = new NfcMasterPrivate;
d->nfcMgr = NULL;
d->nfcSocket = new QLlcpSocket(this);
}
NfcMaster::~NfcMaster() {
delete d;
}
void NfcMaster::start(QVariant msgToWrite) {
qDebug()<<Q_FUNC_INFO<<msgToWrite;
d->msg = msgToWrite;
if(!d->nfcMgr) {
d->nfcMgr = new QNearFieldManager(this);
connect(d->nfcMgr,SIGNAL(targetDetected(QNearFieldTarget*)),
this,SLOT(onTargetDetected(QNearFieldTarget*)),
Qt::UniqueConnection);
connect(d->nfcMgr,SIGNAL(targetLost(QNearFieldTarget*)),
this,SLOT(onTargetLost(QNearFieldTarget*)),
Qt::UniqueConnection);
}
bool started = d->nfcMgr->startTargetDetection();
Q_UNUSED(started)
}
void NfcMaster::onTargetDetected(QNearFieldTarget *target) {
qDebug()<<Q_FUNC_INFO;
qDebug()<<Q_FUNC_INFO<<"supported accessmethods:"<<target->accessMethods();
QNearFieldTarget::RequestId id = target->sendCommand("/usr/bin/gallery");
qDebug()<<"req id is valid "<<id.isValid();
// Send url to peer nfc device is not working :(
// QUrl url = QUrl::fromUserInput(QString("www.google.com"));
// if(url.isValid())
// qDebug()<<Q_FUNC_INFO<<" url is valid";
// QNdefMessage msg;
// QNdefNfcUriRecord rec;
// rec.setUri(url);
// msg.append(rec);
// QNearFieldTarget::RequestId id = target->writeNdefMessages(QList<QNdefMessage>()<<msg);
// qDebug()<<"req id is valid "<<id.isValid();
}
void NfcMaster::onTargetLost(QNearFieldTarget *target) {
qDebug()<<Q_FUNC_INFO;
target->deleteLater();
}
void NfcMaster::onSocketError(QLlcpSocket::SocketError socketError) {
qDebug()<<Q_FUNC_INFO<<socketError;
}
void NfcMaster::onSocketConnected() {
qDebug()<<Q_FUNC_INFO;
}
// eof