-
Notifications
You must be signed in to change notification settings - Fork 0
/
bluetooth.cpp
114 lines (108 loc) · 3.15 KB
/
bluetooth.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "bluetooth.h"
bluetooth::bluetooth(QObject *parent) : QObject(parent)
{
discoveryAgent = new QBluetoothDeviceDiscoveryAgent();
discoveryAgent->setLowEnergyDiscoveryTimeout(5000);
re = new QTimer();
connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
this, SLOT(addDevice(QBluetoothDeviceInfo)));
connect(discoveryAgent, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error)),
this, SLOT(deviceScanError(QBluetoothDeviceDiscoveryAgent::Error)));
connect(discoveryAgent, SIGNAL(finished()), this, SLOT(scanFinished()));
connect(re,SIGNAL(timeout()),this,SLOT(scanStart()));
discoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
}
bluetooth::~bluetooth()
{
delete discoveryAgent;
delete re;
qDeleteAll(deviceList);
}
void bluetooth::addDevice(const QBluetoothDeviceInfo &info)
{
if(info.coreConfigurations() & QBluetoothDeviceInfo::LowEnergyCoreConfiguration)
{
if(info.name().contains("Kastmine"))
{
QBluetoothDeviceInfo inf = info;
Device *dev = new Device(inf);
connect(dev,SIGNAL(devCon(QString)),this,SLOT(devConnected(QString)));
connect(dev,SIGNAL(devDis(QString)),this,SLOT(devDisconnected(QString)));
connect(dev,SIGNAL(Packet(QString,QByteArray)),this,SLOT(newPacket(QString,QByteArray)));
connect(dev,SIGNAL(errorMsg(QString)),this,SLOT(errorMsg_(QString)));
deviceList.append(dev);
}
}
}
void bluetooth::remDevice(const QBluetoothDeviceInfo &info)
{
for(auto &a : deviceList)
{
if(a->getAddress() == info.address())
{
deviceList.removeOne(a);
}
}
}
void bluetooth::deviceScanError(QBluetoothDeviceDiscoveryAgent::Error er)
{
emit errorMsg(QString("Error from Bluetooth discovery: %1").arg(discoveryAgent->errorString()));
}
void bluetooth::scanFinished()
{
//discoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
re->start(300000);
}
void bluetooth::scanStart()
{
discoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
}
void bluetooth::devConnected(QString id)
{
emit dConnect(id);
}
void bluetooth::devDisconnected(QString id)
{
emit dDisconnect(id);
}
QString bluetooth::read(QString id)
{
for(auto a : deviceList)
{
if(a->getName() == id)
{
QString tmp = a->read();
return tmp;
}
}
return QString("No Data");
}
void bluetooth::write(QString id, QString data)
{
for(auto a : deviceList)
{
if(a->getName() == id)
{
a->write(data);
qDebug() << "Message:" << data << "has sent to device:" << id;
}
}
}
void bluetooth::disconnectDevice(QString id)
{
for(auto a : deviceList)
{
if(a->getName() == id)
{
a->disconnectIt();
}
}
}
void bluetooth::newPacket(QString id, QByteArray data)
{
emit newData(id,data);
}
void bluetooth::errorMsg_(QString error)
{
emit errorMsg(error);
}