started to add ble functions
added ble as sensor to java and c++ added sensorlistener for ble added ble to observation and onDataSensor in filter started to work on ble fingerprints for optimization
This commit is contained in:
@@ -8,6 +8,9 @@
|
||||
#include "linux/WiFiSensorLinux.h"
|
||||
#include "android/WiFiSensorAndroid.h"
|
||||
|
||||
#include "BLESensor.h"
|
||||
#include "android/BLESensorAndroid.h"
|
||||
|
||||
#include "AccelerometerSensor.h"
|
||||
#include "dummy/AccelerometerSensorDummy.h"
|
||||
#include "android/AccelerometerSensorAndroid.h"
|
||||
@@ -37,58 +40,61 @@ class SensorFactory {
|
||||
|
||||
private:
|
||||
|
||||
/** this one is a dirty hack, as static class member variables do not work header-only */
|
||||
static SensorFactory** getPtr() {
|
||||
static SensorFactory* ptr = nullptr;
|
||||
return &ptr;
|
||||
}
|
||||
/** this one is a dirty hack, as static class member variables do not work header-only */
|
||||
static SensorFactory** getPtr() {
|
||||
static SensorFactory* ptr = nullptr;
|
||||
return &ptr;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/** set the to-be-used sensor-fatory */
|
||||
static void set(SensorFactory* fac) {
|
||||
Assert::isNull(*getPtr(), "SensorFactory::set() was already called. currentely this is not intended");
|
||||
*getPtr() = fac;
|
||||
}
|
||||
/** set the to-be-used sensor-fatory */
|
||||
static void set(SensorFactory* fac) {
|
||||
Assert::isNull(*getPtr(), "SensorFactory::set() was already called. currentely this is not intended");
|
||||
*getPtr() = fac;
|
||||
}
|
||||
|
||||
/** get the currently configured sensory factory */
|
||||
static SensorFactory& get() {
|
||||
Assert::isNotNull(*getPtr(), "call SensorFactory::set() first to set an actual factory instance!");
|
||||
return **getPtr();
|
||||
}
|
||||
/** get the currently configured sensory factory */
|
||||
static SensorFactory& get() {
|
||||
Assert::isNotNull(*getPtr(), "call SensorFactory::set() first to set an actual factory instance!");
|
||||
return **getPtr();
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/** get the WiFi sensor */
|
||||
virtual WiFiSensor& getWiFi() = 0;
|
||||
/** get the WiFi sensor */
|
||||
virtual WiFiSensor& getWiFi() = 0;
|
||||
|
||||
/** get the Accelerometer sensor */
|
||||
virtual AccelerometerSensor& getAccelerometer() = 0;
|
||||
/** get the Accelerometer sensor */
|
||||
virtual AccelerometerSensor& getAccelerometer() = 0;
|
||||
|
||||
/** get the Gyroscope sensor */
|
||||
virtual GyroscopeSensor& getGyroscope() = 0;
|
||||
/** get the Gyroscope sensor */
|
||||
virtual GyroscopeSensor& getGyroscope() = 0;
|
||||
|
||||
/** get the Barometer sensor */
|
||||
virtual BarometerSensor& getBarometer() = 0;
|
||||
/** get the Barometer sensor */
|
||||
virtual BarometerSensor& getBarometer() = 0;
|
||||
|
||||
/** get the compass sensor */
|
||||
virtual CompassSensor& getCompass() = 0;
|
||||
/** get the compass sensor */
|
||||
virtual CompassSensor& getCompass() = 0;
|
||||
|
||||
/** get the gps sensor */
|
||||
virtual GPSSensor& getGPS() = 0;
|
||||
/** get the gps sensor */
|
||||
virtual GPSSensor& getGPS() = 0;
|
||||
|
||||
/** get the bluetooth low energy sensor */
|
||||
virtual BLESensor& getBLE() = 0;
|
||||
|
||||
|
||||
/** get the Step sensor */
|
||||
StepSensor& getSteps() {
|
||||
static StepSensor steps(getAccelerometer());
|
||||
return steps;
|
||||
}
|
||||
/** get the Step sensor */
|
||||
StepSensor& getSteps() {
|
||||
static StepSensor steps(getAccelerometer());
|
||||
return steps;
|
||||
}
|
||||
|
||||
/** get the Turn sensor */
|
||||
TurnSensor& getTurns() {
|
||||
static TurnSensor turns(getAccelerometer(), getGyroscope());
|
||||
return turns;
|
||||
}
|
||||
/** get the Turn sensor */
|
||||
TurnSensor& getTurns() {
|
||||
static TurnSensor turns(getAccelerometer(), getGyroscope());
|
||||
return turns;
|
||||
}
|
||||
|
||||
/** get the Activity sensor */
|
||||
ActivitySensor& getActivity() {
|
||||
|
||||
@@ -19,82 +19,81 @@
|
||||
* writes it to a file
|
||||
*/
|
||||
class SensorWriter :
|
||||
public SensorListener<AccelerometerData>,
|
||||
public SensorListener<GyroscopeData>,
|
||||
public SensorListener<BarometerData>,
|
||||
public SensorListener<AccelerometerData>,
|
||||
public SensorListener<GyroscopeData>,
|
||||
public SensorListener<BarometerData>,
|
||||
// public SensorListener<ActivityData>,
|
||||
// public SensorListener<StepData>,
|
||||
// public SensorListener<TurnData>,
|
||||
public SensorListener<WiFiMeasurements>,
|
||||
public SensorListener<GPSData>,
|
||||
public SensorListener<CompassData> {
|
||||
public SensorListener<WiFiMeasurements>,
|
||||
public SensorListener<GPSData>,
|
||||
public SensorListener<CompassData> {
|
||||
|
||||
private:
|
||||
|
||||
Offline::FileWriter writer;
|
||||
bool active = false;
|
||||
Offline::FileWriter writer;
|
||||
bool active = false;
|
||||
|
||||
public:
|
||||
|
||||
/** empty ctor */
|
||||
SensorWriter() {
|
||||
/** empty ctor */
|
||||
SensorWriter() {
|
||||
|
||||
// attach as listener to all sensors we want to store
|
||||
SensorFactory::get().getAccelerometer().addListener(this);
|
||||
SensorFactory::get().getGyroscope().addListener(this);
|
||||
SensorFactory::get().getBarometer().addListener(this);
|
||||
// attach as listener to all sensors we want to store
|
||||
SensorFactory::get().getAccelerometer().addListener(this);
|
||||
SensorFactory::get().getGyroscope().addListener(this);
|
||||
SensorFactory::get().getBarometer().addListener(this);
|
||||
// SensorFactory::get().getActivity().addListener(this);
|
||||
// SensorFactory::get().getSteps().addListener(this);
|
||||
// SensorFactory::get().getTurns().addListener(this);
|
||||
SensorFactory::get().getWiFi().addListener(this);
|
||||
SensorFactory::get().getCompass().addListener(this);
|
||||
SensorFactory::get().getGPS().addListener(this);
|
||||
|
||||
}
|
||||
SensorFactory::get().getWiFi().addListener(this);
|
||||
SensorFactory::get().getCompass().addListener(this);
|
||||
SensorFactory::get().getGPS().addListener(this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void start(const std::string& file) {
|
||||
writer.open(file);
|
||||
active = true;
|
||||
}
|
||||
void start(const std::string& file) {
|
||||
writer.open(file);
|
||||
active = true;
|
||||
}
|
||||
|
||||
void stop() {
|
||||
active = false;
|
||||
writer.close();
|
||||
}
|
||||
void stop() {
|
||||
active = false;
|
||||
writer.close();
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
virtual void onSensorData(Sensor<AccelerometerData>* , const Timestamp ts, const AccelerometerData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
virtual void onSensorData(Sensor<AccelerometerData>* , const Timestamp ts, const AccelerometerData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
|
||||
virtual void onSensorData(Sensor<GyroscopeData>* , const Timestamp ts, const GyroscopeData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
virtual void onSensorData(Sensor<GyroscopeData>* , const Timestamp ts, const GyroscopeData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
|
||||
virtual void onSensorData(Sensor<BarometerData>* , const Timestamp ts, const BarometerData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
virtual void onSensorData(Sensor<BarometerData>* , const Timestamp ts, const BarometerData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
|
||||
virtual void onSensorData(Sensor<WiFiMeasurements>* , const Timestamp ts, const WiFiMeasurements& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
virtual void onSensorData(Sensor<WiFiMeasurements>* , const Timestamp ts, const WiFiMeasurements& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
|
||||
virtual void onSensorData(Sensor<GPSData>* , const Timestamp ts, const GPSData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
virtual void onSensorData(Sensor<GPSData>* , const Timestamp ts, const GPSData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
|
||||
virtual void onSensorData(Sensor<CompassData>* , const Timestamp ts, const CompassData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
virtual void onSensorData(Sensor<CompassData>* , const Timestamp ts, const CompassData& data) override {
|
||||
if (!active) {return;}
|
||||
writer.add(ts, data);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef TURNSENSOR_H
|
||||
#define TURNSENSOR_H
|
||||
|
||||
#include <Indoor/sensors/imu/PoseDetection.h>
|
||||
#include <Indoor/sensors/imu/TurnDetection.h>
|
||||
#include "AccelerometerSensor.h"
|
||||
#include "GyroscopeSensor.h"
|
||||
|
||||
18
sensors/android/BLESensorAndroid.cpp
Normal file
18
sensors/android/BLESensorAndroid.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifdef ANDROID
|
||||
|
||||
#include "BLESensorAndroid.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
/** called after each successful WiFi scan */
|
||||
JNIEXPORT void JNICALL Java_indoor_java_BLE_onScanComplete(JNIEnv* env, jobject jobj, jbyteArray arrayID) {
|
||||
(void) env; (void) jobj;
|
||||
jsize length = env->GetArrayLength(arrayID);
|
||||
jbyte* data = env->GetByteArrayElements(arrayID, 0);
|
||||
std::string str((char*)data, length);
|
||||
env->ReleaseByteArrayElements(arrayID, data, JNI_ABORT);
|
||||
BLESensorAndroid::get().handle(str);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "../SensorFactory.h"
|
||||
|
||||
#include "BLESensorAndroid.h"
|
||||
#include "WiFiSensorAndroid.h"
|
||||
#include "AccelerometerSensorAndroid.h"
|
||||
#include "GyroscopeSensorAndroid.h"
|
||||
@@ -20,29 +21,33 @@ class SensorFactoryAndroid : public SensorFactory {
|
||||
|
||||
public:
|
||||
|
||||
WiFiSensor& getWiFi() override {
|
||||
return WiFiSensorAndroid::get();
|
||||
}
|
||||
WiFiSensor& getWiFi() override {
|
||||
return WiFiSensorAndroid::get();
|
||||
}
|
||||
|
||||
AccelerometerSensor& getAccelerometer() override {
|
||||
return AccelerometerSensorAndroid::get();
|
||||
}
|
||||
AccelerometerSensor& getAccelerometer() override {
|
||||
return AccelerometerSensorAndroid::get();
|
||||
}
|
||||
|
||||
GyroscopeSensor& getGyroscope() override {
|
||||
return GyroscopeSensorAndroid::get();
|
||||
}
|
||||
GyroscopeSensor& getGyroscope() override {
|
||||
return GyroscopeSensorAndroid::get();
|
||||
}
|
||||
|
||||
BarometerSensor& getBarometer() override {
|
||||
return BarometerSensorAndroid::get();
|
||||
}
|
||||
BarometerSensor& getBarometer() override {
|
||||
return BarometerSensorAndroid::get();
|
||||
}
|
||||
|
||||
CompassSensor& getCompass() override {
|
||||
return CompassSensorAndroid::get();
|
||||
}
|
||||
CompassSensor& getCompass() override {
|
||||
return CompassSensorAndroid::get();
|
||||
}
|
||||
|
||||
GPSSensor& getGPS() override {
|
||||
return GPSSensorAndroid::get();
|
||||
}
|
||||
GPSSensor& getGPS() override {
|
||||
return GPSSensorAndroid::get();
|
||||
}
|
||||
|
||||
BLESensor& getBLE() override {
|
||||
return BLESensorAndroid::get();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user