a lot!!! of changes
added main menu added debug display many debug widgets for plotting live data worked on android live sensors added offline-data sensor feeding some dummy data sensors worked on the map display added ui debug for grid-points, particles and weights added a cool dude to display the estimation added real filtering based on the Indoor components c++11 fixes for android compilation online and offline filtering support new resampling technique for testing map loading via dialog
This commit is contained in:
@@ -51,6 +51,6 @@ public:
|
||||
|
||||
};
|
||||
|
||||
#endif ANDROID
|
||||
#endif // ANDROID
|
||||
|
||||
#endif // ACCELEROMETERSENSORANDROID_H
|
||||
|
||||
55
sensors/android/BarometerSensorAndroid.h
Normal file
55
sensors/android/BarometerSensorAndroid.h
Normal file
@@ -0,0 +1,55 @@
|
||||
#ifndef BAROMETERSENSORANDROID_H
|
||||
#define BAROMETERSENSORANDROID_H
|
||||
|
||||
#ifdef ANDROID
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include "../BarometerSensor.h"
|
||||
|
||||
#include <QtSensors/QPressureSensor>
|
||||
|
||||
#include "../AccelerometerSensor.h"
|
||||
|
||||
class BarometerSensorAndroid : public BarometerSensor {
|
||||
|
||||
private:
|
||||
|
||||
QPressureSensor baro;
|
||||
|
||||
/** hidden ctor. use singleton */
|
||||
BarometerSensorAndroid() {
|
||||
;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/** singleton access */
|
||||
static BarometerSensorAndroid& get() {
|
||||
static BarometerSensorAndroid baro;
|
||||
return baro;
|
||||
}
|
||||
|
||||
void start() override {
|
||||
|
||||
auto onSensorData = [&] () {
|
||||
BarometerData data(baro.reading()->pressure());
|
||||
informListeners(data);
|
||||
};
|
||||
|
||||
baro.connect(&baro, &QPressureSensor::readingChanged, onSensorData);
|
||||
baro.start();
|
||||
|
||||
}
|
||||
|
||||
void stop() override {
|
||||
throw "TODO";
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif // BAROMETERSENSORANDROID_H
|
||||
59
sensors/android/GyroscopeSensorAndroid.h
Normal file
59
sensors/android/GyroscopeSensorAndroid.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#ifndef GYROSCOPESENSORANDROID_H
|
||||
#define GYROSCOPESENSORANDROID_H
|
||||
|
||||
#ifdef ANDROID
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include "../GyroscopeSensor.h"
|
||||
|
||||
#include <QtSensors/QGyroscope>
|
||||
|
||||
#include "../AccelerometerSensor.h"
|
||||
|
||||
class GyroscopeSensorAndroid : public GyroscopeSensor {
|
||||
|
||||
private:
|
||||
|
||||
QGyroscope gyro;
|
||||
|
||||
/** hidden ctor. use singleton */
|
||||
GyroscopeSensorAndroid() {
|
||||
;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/** singleton access */
|
||||
static GyroscopeSensorAndroid& get() {
|
||||
static GyroscopeSensorAndroid gyro;
|
||||
return gyro;
|
||||
}
|
||||
|
||||
float degToRad(const float deg) {
|
||||
return deg / 180.0f * M_PI;
|
||||
}
|
||||
|
||||
void start() override {
|
||||
|
||||
auto onSensorData = [&] () {
|
||||
GyroscopeData data(degToRad(gyro.reading()->x()), degToRad(gyro.reading()->y()), degToRad(gyro.reading()->z()));
|
||||
informListeners(data);
|
||||
};
|
||||
|
||||
gyro.connect(&gyro, &QGyroscope::readingChanged, onSensorData);
|
||||
gyro.start();
|
||||
|
||||
}
|
||||
|
||||
void stop() override {
|
||||
throw "TODO";
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // ANDROID
|
||||
|
||||
#endif // GYROSCOPESENSORANDROID_H
|
||||
41
sensors/android/SensorFactoryAndroid.h
Normal file
41
sensors/android/SensorFactoryAndroid.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#ifndef SENSORFACTORYANDROID_H
|
||||
#define SENSORFACTORYANDROID_H
|
||||
|
||||
#ifdef ANDROID
|
||||
|
||||
#include "../SensorFactory.h"
|
||||
|
||||
#include "WiFiSensorAndroid.h"
|
||||
#include "AccelerometerSensorAndroid.h"
|
||||
#include "GyroscopeSensorAndroid.h"
|
||||
#include "BarometerSensorAndroid.h"
|
||||
|
||||
/**
|
||||
* sensor factory that provides real hardware sensors from
|
||||
* an android smartphone that fire real data values
|
||||
*/
|
||||
class SensorFactoryAndroid : public SensorFactory {
|
||||
|
||||
public:
|
||||
|
||||
WiFiSensor& getWiFi() override {
|
||||
return WiFiSensorAndroid::get();
|
||||
}
|
||||
|
||||
AccelerometerSensor& getAccelerometer() override {
|
||||
return AccelerometerSensorAndroid::get();
|
||||
}
|
||||
|
||||
GyroscopeSensor& getGyroscope() override {
|
||||
return GyroscopeSensorAndroid::get();
|
||||
}
|
||||
|
||||
BarometerSensor& getBarometer() override {
|
||||
return BarometerSensorAndroid::get();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif // SENSORFACTORYANDROID_H
|
||||
20
sensors/android/WiFiSensorAndroid.cpp
Normal file
20
sensors/android/WiFiSensorAndroid.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifdef ANDROID
|
||||
|
||||
#include "WiFiSensorAndroid.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
/** called after each successful WiFi scan */
|
||||
JNIEXPORT void JNICALL Java_indoor_java_WiFi_onScanComplete(JNIEnv* env, jobject jobj, jbyteArray arrayID) {
|
||||
(void) env; (void) jobj;
|
||||
jsize length = env->GetArrayLength(arrayID);
|
||||
jboolean isCopy;
|
||||
jbyte* data = env->GetByteArrayElements(arrayID, &isCopy);
|
||||
std::string str((char*)data, length);
|
||||
env->ReleaseByteArrayElements(arrayID, data, JNI_ABORT);
|
||||
WiFiSensorAndroid::get().handle(str);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
void handle(const std::string& data) {
|
||||
|
||||
// to-be-constructed sensor data
|
||||
WiFiSensorData sensorData;
|
||||
WiFiMeasurements sensorData;
|
||||
|
||||
// parse each mac->rssi entry
|
||||
for (int i = 0; i < (int)data.length(); i += 17+1+2) {
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
const int8_t pad1 = data[i+18];
|
||||
const int8_t pad2 = data[i+19];
|
||||
if (pad1 != 0 || pad2 != 0) {Debug::error("padding error within WiFi scan result");}
|
||||
sensorData.entries.push_back(WiFiSensorDataEntry(bssid, rssi));
|
||||
sensorData.entries.push_back(WiFiMeasurement(AccessPoint(bssid), rssi));
|
||||
}
|
||||
|
||||
// call listeners
|
||||
@@ -60,20 +60,7 @@ public:
|
||||
};
|
||||
|
||||
|
||||
extern "C" {
|
||||
|
||||
/** called after each successful WiFi scan */
|
||||
JNIEXPORT void JNICALL Java_indoor_java_WiFi_onScanComplete(JNIEnv* env, jobject jobj, jbyteArray arrayID) {
|
||||
(void) env; (void) jobj;
|
||||
jsize length = env->GetArrayLength(arrayID);
|
||||
jboolean isCopy;
|
||||
jbyte* data = env->GetByteArrayElements(arrayID, &isCopy);
|
||||
std::string str((char*)data, length);
|
||||
env->ReleaseByteArrayElements(arrayID, data, JNI_ABORT);
|
||||
WiFiSensorAndroid::get().handle(str);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user