mirror of
https://gitlab.com/eql/lqml.git
synced 2026-01-08 02:02:49 -08:00
example 'meshtastic': send phone GPS position to radio; revisions
This commit is contained in:
parent
80acb3c92d
commit
9699a0ce6f
28 changed files with 1566 additions and 79 deletions
|
|
@ -31,7 +31,9 @@ void BLE::startDeviceDiscovery() {
|
|||
|
||||
void BLE::addDevice(const QBluetoothDeviceInfo& device) {
|
||||
if (deviceFilter(device)) {
|
||||
qDebug() << "device added:" << device.name();
|
||||
QString name(device.name());
|
||||
qDebug() << "device added:" << name;
|
||||
Q_EMIT deviceDiscovered(name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public:
|
|||
|
||||
Q_SIGNALS:
|
||||
// notify
|
||||
void deviceDiscovered(const QString&);
|
||||
void mainServiceReady();
|
||||
void deviceDisconnecting();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,15 @@
|
|||
#include "qt.h"
|
||||
#include "ble_meshtastic.h"
|
||||
#include <ecl_fun.h>
|
||||
#include <QSqlQuery>
|
||||
#include <QSqlError>
|
||||
#include <QtDebug>
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
#include <QtAndroid>
|
||||
#include <QAndroidJniEnvironment>
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QObject* ini() {
|
||||
|
|
@ -15,7 +21,12 @@ QObject* ini() {
|
|||
}
|
||||
|
||||
QT::QT() : QObject() {
|
||||
// BLE
|
||||
ble = new BLE_ME;
|
||||
ble->connect(ble, &BLE::deviceDiscovered,
|
||||
[](const QString& fullName) {
|
||||
ecl_fun("radios:device-discovered", fullName.right(4));
|
||||
});
|
||||
}
|
||||
|
||||
// BLE_ME
|
||||
|
|
@ -47,6 +58,48 @@ QVariant QT::write2(const QVariant& bytes) {
|
|||
return QVariant();
|
||||
}
|
||||
|
||||
// GPS
|
||||
|
||||
#ifdef Q_OS_ANDROID
|
||||
static void clearEventualExceptions() {
|
||||
QAndroidJniEnvironment env;
|
||||
if (env->ExceptionCheck()) {
|
||||
env->ExceptionClear();
|
||||
}
|
||||
}
|
||||
|
||||
static qlonglong getLongField(const char* name) {
|
||||
QAndroidJniObject activity = QtAndroid::androidActivity();
|
||||
return static_cast<qlonglong>(activity.getField<jlong>(name));
|
||||
}
|
||||
|
||||
static double getDoubleField(const char* name) {
|
||||
QAndroidJniObject activity = QtAndroid::androidActivity();
|
||||
return static_cast<double>(activity.getField<jdouble>(name));
|
||||
}
|
||||
#endif
|
||||
|
||||
QVariant QT::iniPositioning() {
|
||||
#ifdef Q_OS_ANDROID
|
||||
QtAndroid::runOnAndroidThread([] {
|
||||
QAndroidJniObject activity = QtAndroid::androidActivity();
|
||||
activity.callMethod<void>("iniLocation", "()V");
|
||||
clearEventualExceptions();
|
||||
});
|
||||
#endif
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QVariant QT::lastPosition() {
|
||||
QVariantList pos;
|
||||
#ifdef Q_OS_ANDROID
|
||||
pos << getDoubleField("_position_lat_")
|
||||
<< getDoubleField("_position_lon_")
|
||||
<< QString::number(getLongField("_position_time_")); // 'QString': see QML 'lastPosition()'
|
||||
#endif
|
||||
return pos;
|
||||
}
|
||||
|
||||
// SQLite
|
||||
|
||||
QVariant QT::iniDb(const QVariant& name) {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@ public:
|
|||
Q_INVOKABLE QVariant read2();
|
||||
Q_INVOKABLE QVariant write2(const QVariant&);
|
||||
|
||||
// GPS
|
||||
Q_INVOKABLE QVariant iniPositioning();
|
||||
Q_INVOKABLE QVariant lastPosition();
|
||||
|
||||
// SQLite
|
||||
Q_INVOKABLE QVariant iniDb(const QVariant&);
|
||||
Q_INVOKABLE QVariant sqlQuery(const QVariant&, const QVariant&);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
QT += bluetooth sql
|
||||
QT += bluetooth sql positioning
|
||||
TEMPLATE = lib
|
||||
CONFIG += c++17 plugin release no_keywords
|
||||
DEFINES += PLUGIN
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue