This commit is contained in:
pls.153 2023-06-16 10:00:31 +02:00
parent c77d993496
commit f9e657fa83
5 changed files with 28 additions and 22 deletions

View file

@ -51,7 +51,16 @@ void BLE::scanServices() {
return; return;
} }
if (!currentDevice.isValid()) { if (!currentDevice.isValid()) {
currentDevice = devices.at(0); if (initialDeviceName.isNull()) {
currentDevice = devices.at(0);
} else {
for (auto device : qAsConst(devices)) {
if (device.name().contains(initialDeviceName, Qt::CaseInsensitive)) {
currentDevice = device;
break;
}
}
}
} }
services.clear(); services.clear();
qDebug() << "connecting to device..."; qDebug() << "connecting to device...";

View file

@ -26,6 +26,7 @@ public:
QBluetoothDeviceInfo currentDevice; // if not defined, first one discovered QBluetoothDeviceInfo currentDevice; // if not defined, first one discovered
QList<QBluetoothDeviceInfo> devices; QList<QBluetoothDeviceInfo> devices;
void setCurrentDevice(const QBluetoothDeviceInfo&); void setCurrentDevice(const QBluetoothDeviceInfo&);
QString initialDeviceName; // optional
// custom device filter (e.g. name filter) // custom device filter (e.g. name filter)
virtual bool deviceFilter(const QBluetoothDeviceInfo&) { return true; } virtual bool deviceFilter(const QBluetoothDeviceInfo&) { return true; }

View file

@ -12,29 +12,28 @@ QObject* ini() {
return qt; return qt;
} }
static QBluetoothDeviceInfo toDeviceInfo(const QVariantMap& map) {
return QBluetoothDeviceInfo(QBluetoothAddress(map.value("address").toString()),
map.value("name").toString(),
0);
}
QT::QT() : QObject() { QT::QT() : QObject() {
ble = new BLE_ME; ble = new BLE_ME;
} }
QVariant QT::setDevice(const QVariant& vMap) { QVariant QT::setDevice(const QVariant& vName) {
auto map = vMap.value<QVariantMap>(); auto name = vName.toString();
ble->setCurrentDevice(toDeviceInfo(map)); for (auto device : qAsConst(ble->devices)) {
return vMap; if (device.name().contains(name, Qt::CaseInsensitive)) {
ble->setCurrentDevice(device);
return vName;
}
}
return QVariant();
} }
QVariant QT::startDeviceDiscovery(const QVariant& vMap) { QVariant QT::startDeviceDiscovery(const QVariant& vName) {
auto map = vMap.value<QVariantMap>(); auto name = vName.toString();
if (!map.isEmpty()) { if (!name.isNull()) {
ble->currentDevice = toDeviceInfo(map); ble->initialDeviceName = name;
} }
ble->startDeviceDiscovery(); ble->startDeviceDiscovery();
return vMap; return vName;
} }
QVariant QT::read2() { QVariant QT::read2() {

View file

@ -1,10 +1,10 @@
(in-package :app) (in-package :app)
;; set here the name and address of your 2 devices ;; set here the 4 character short name of your 2 devices
;; (see debug output during device discovery) ;; (see debug output during device discovery)
(defvar *device-1* '(:name "Meshtastic_128c" :address "F4:12:FA:9D:12:8D")) (defvar *device-1* "128c")
(defvar *device-2* '(:name "Meshtastic_1c9c" :address "F4:12:FA:9D:1C:9D")) (defvar *device-2* "1c9c")
(defun ini () (defun ini ()
(qt:ini) (qt:ini)

View file

@ -22,11 +22,8 @@
#:start-config #:start-config
#:read-radio #:read-radio
#:received-from-radio #:received-from-radio
#:receiving-done
#:send-message #:send-message
#:send-to-radio #:send-to-radio
#:set-fixed-pin
#:set-ready
#:url-to-channel)) #:url-to-channel))
(defpackage :messages (defpackage :messages