added gps support
added compass support added ui elements for gps and compass added support for writing sensor data
This commit is contained in:
37
ui/debug/PlotGPS.cpp
Normal file
37
ui/debug/PlotGPS.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
#include "PlotGPS.h"
|
||||
#include <QPainter>
|
||||
|
||||
PlotGPS::PlotGPS(QWidget *parent) : QWidget(parent) {
|
||||
|
||||
setMinimumWidth(32);
|
||||
setMinimumHeight(96);
|
||||
|
||||
}
|
||||
|
||||
void PlotGPS::add(const Timestamp ts, const GPSData& data) {
|
||||
(void) ts;
|
||||
this->gpsData = data;
|
||||
}
|
||||
|
||||
void PlotGPS::paintEvent(QPaintEvent* evt) {
|
||||
|
||||
(void) evt;
|
||||
QPainter p(this);
|
||||
|
||||
// frame
|
||||
p.fillRect(0,0,width(),height(),QColor(255,255,255,192));
|
||||
p.setPen(Qt::black);
|
||||
p.drawRect(0,0,width()-1,height()-1);
|
||||
|
||||
// turn [relative]
|
||||
const QPen pen(Qt::black);
|
||||
p.setPen(pen);
|
||||
p.drawText(4, 1*12, QString::number(gpsData.tsReceived.ms()));
|
||||
p.drawText(4, 2*12, QString::number(gpsData.lat));
|
||||
p.drawText(4, 3*12, QString::number(gpsData.lon));
|
||||
p.drawText(4, 4*12, QString::number(gpsData.alt));
|
||||
p.drawText(4, 5*12, QString::number(gpsData.accuracy));
|
||||
|
||||
p.end();
|
||||
|
||||
}
|
||||
32
ui/debug/PlotGPS.h
Normal file
32
ui/debug/PlotGPS.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef PLOTGPS_H
|
||||
#define PLOTGPS_H
|
||||
|
||||
|
||||
#include <QWidget>
|
||||
#include "../sensors/GPSSensor.h"
|
||||
|
||||
#include <Indoor/data/Timestamp.h>
|
||||
|
||||
class PlotGPS : public QWidget {
|
||||
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
|
||||
GPSData gpsData;
|
||||
|
||||
public:
|
||||
|
||||
explicit PlotGPS(QWidget *parent = 0);
|
||||
|
||||
void add(const Timestamp ts, const GPSData& data);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
void paintEvent(QPaintEvent*);
|
||||
|
||||
};
|
||||
|
||||
#endif // PLOTGPS_H
|
||||
@@ -17,7 +17,16 @@ PlotTurns::PlotTurns(QWidget *parent) : QWidget(parent) {
|
||||
|
||||
void PlotTurns::add(const Timestamp ts, const TurnData& data) {
|
||||
(void) ts;
|
||||
this->data = data;
|
||||
this->turnData = data;
|
||||
static int i = 0;
|
||||
if (++i % 4 == 0) {
|
||||
QMetaObject::invokeMethod(this, "update", Qt::QueuedConnection);
|
||||
}
|
||||
}
|
||||
|
||||
void PlotTurns::add(const Timestamp ts, const CompassData& data) {
|
||||
(void) ts;
|
||||
this->compassData = data;
|
||||
static int i = 0;
|
||||
if (++i % 4 == 0) {
|
||||
QMetaObject::invokeMethod(this, "update", Qt::QueuedConnection);
|
||||
@@ -35,17 +44,26 @@ void PlotTurns::paintEvent(QPaintEvent* evt) {
|
||||
const float cx = width() / 2;
|
||||
const float cy = height() / 2;
|
||||
|
||||
const float x1 = cx + std::cos(data.radSinceStart-M_PI_2) * s1;
|
||||
const float y1 = cy + std::sin(data.radSinceStart-M_PI_2) * s1;
|
||||
|
||||
p.fillRect(0,0,width(),height(),QColor(255,255,255,192));
|
||||
p.setPen(Qt::black);
|
||||
p.drawRect(0,0,width()-1,height()-1);
|
||||
|
||||
const QPen pen(Qt::black, 2);
|
||||
p.setPen(pen);
|
||||
// turn [relative]
|
||||
const float x1 = cx + std::cos(turnData.radSinceStart-M_PI_2) * s1;
|
||||
const float y1 = cy + std::sin(turnData.radSinceStart-M_PI_2) * s1;
|
||||
const QPen pen1(Qt::black, 2);
|
||||
p.setPen(pen1);
|
||||
p.drawLine(cx, cy, x1, y1);
|
||||
|
||||
// compass [absolute]
|
||||
if (compassData.isValid()) {
|
||||
const float x2 = cx + std::cos(compassData.azimuth) * s1;
|
||||
const float y2 = cy + std::sin(compassData.azimuth) * s1;
|
||||
const QPen pen2(Qt::gray, 2);
|
||||
p.setPen(pen2);
|
||||
p.drawLine(cx, cy, x2, y2);
|
||||
}
|
||||
|
||||
p.end();
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <QWidget>
|
||||
#include "../sensors/TurnSensor.h"
|
||||
#include "../sensors/CompassSensor.h"
|
||||
|
||||
#include <Indoor/data/Timestamp.h>
|
||||
|
||||
class PlotTurns : public QWidget {
|
||||
@@ -11,7 +13,8 @@ class PlotTurns : public QWidget {
|
||||
|
||||
private:
|
||||
|
||||
TurnData data;
|
||||
TurnData turnData;
|
||||
CompassData compassData;
|
||||
|
||||
public:
|
||||
|
||||
@@ -19,7 +22,7 @@ public:
|
||||
|
||||
void add(const Timestamp ts, const TurnData& data);
|
||||
|
||||
//QSize sizeHint() const {return QSize(96, 96);}
|
||||
void add(const Timestamp ts, const CompassData& data);
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "../sensors/SensorFactory.h"
|
||||
#include "PlotTurns.h"
|
||||
#include "PlotGPS.h"
|
||||
#include "PlotWiFiScan.h"
|
||||
|
||||
#include "../Settings.h"
|
||||
@@ -196,14 +197,17 @@ SensorDataWidget::SensorDataWidget(QWidget* parent) : QWidget(parent) {
|
||||
plotBaro = new PlotBaro(this);
|
||||
plotTurn = new PlotTurns(this);
|
||||
plotWiFi = new PlotWiFiScan(this);
|
||||
plotGPS = new PlotGPS(this);
|
||||
|
||||
// layout setup
|
||||
lay = new QGridLayout(this);
|
||||
lay->addWidget(plotGyro, 0, 0, 1, 4);
|
||||
lay->addWidget(plotAcc, 1, 0, 1, 4);
|
||||
lay->addWidget(plotBaro, 2, 0, 1, 4);
|
||||
|
||||
lay->addWidget(plotTurn, 3, 0, 1, 1);
|
||||
lay->addWidget(plotWiFi, 3, 1, 1, 3);
|
||||
lay->addWidget(plotGPS, 3, 1, 1, 1);
|
||||
lay->addWidget(plotWiFi, 3, 2, 1, 2);
|
||||
|
||||
// lay->setRowStretch(0, 1);
|
||||
// lay->setRowStretch(1, 1);
|
||||
@@ -221,6 +225,8 @@ SensorDataWidget::SensorDataWidget(QWidget* parent) : QWidget(parent) {
|
||||
SensorFactory::get().getTurns().addListener(this);
|
||||
SensorFactory::get().getWiFi().addListener(this);
|
||||
SensorFactory::get().getActivity().addListener(this);
|
||||
SensorFactory::get().getCompass().addListener(this);
|
||||
SensorFactory::get().getGPS().addListener(this);
|
||||
|
||||
}
|
||||
|
||||
@@ -257,6 +263,16 @@ void SensorDataWidget::onSensorData(Sensor<TurnData>* sensor, const Timestamp ts
|
||||
((PlotTurns*)plotTurn)->add(ts, data);
|
||||
}
|
||||
|
||||
void SensorDataWidget::onSensorData(Sensor<CompassData>* sensor, const Timestamp ts, const CompassData& data) {
|
||||
(void) sensor;
|
||||
((PlotTurns*)plotTurn)->add(ts, data);
|
||||
}
|
||||
|
||||
void SensorDataWidget::onSensorData(Sensor<GPSData>* sensor, const Timestamp ts, const GPSData& data) {
|
||||
(void) sensor;
|
||||
((PlotGPS*)plotGPS)->add(ts, data);
|
||||
}
|
||||
|
||||
void SensorDataWidget::onSensorData(Sensor<WiFiMeasurements>* sensor, const Timestamp ts, const WiFiMeasurements& data) {
|
||||
(void) sensor;
|
||||
((PlotWiFiScan*)plotWiFi)->add(ts, data);
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "../sensors/TurnSensor.h"
|
||||
#include "../sensors/WiFiSensor.h"
|
||||
#include "../sensors/ActivitySensor.h"
|
||||
#include "../sensors/GPSSensor.h"
|
||||
#include "../sensors/CompassSensor.h"
|
||||
|
||||
class PlotWidget;
|
||||
class QGridLayout;
|
||||
@@ -26,7 +28,9 @@ class SensorDataWidget :
|
||||
public SensorListener<ActivityData>,
|
||||
public SensorListener<StepData>,
|
||||
public SensorListener<TurnData>,
|
||||
public SensorListener<WiFiMeasurements> {
|
||||
public SensorListener<WiFiMeasurements>,
|
||||
public SensorListener<GPSData>,
|
||||
public SensorListener<CompassData> {
|
||||
|
||||
|
||||
Q_OBJECT
|
||||
@@ -43,18 +47,21 @@ public:
|
||||
void onSensorData(Sensor<TurnData>* sensor, const Timestamp ts, const TurnData& data) override;
|
||||
void onSensorData(Sensor<WiFiMeasurements>* sensor, const Timestamp ts, const WiFiMeasurements& data) override;
|
||||
void onSensorData(Sensor<ActivityData>* sensor, const Timestamp ts, const ActivityData& data) override;
|
||||
void onSensorData(Sensor<GPSData>* sensor, const Timestamp ts, const GPSData& data) override;
|
||||
void onSensorData(Sensor<CompassData>* sensor, const Timestamp ts, const CompassData& data) override;
|
||||
|
||||
private:
|
||||
|
||||
PlotWidget* plotGyro;
|
||||
PlotWidget* plotAcc;
|
||||
PlotWidget* plotBaro;
|
||||
|
||||
QWidget* plotTurn;
|
||||
QWidget* plotWiFi;
|
||||
QWidget* plotGPS;
|
||||
|
||||
QGridLayout* lay;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // SENSORDATAWIDGET_H
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define PLOTTI_H
|
||||
|
||||
#include <QWidget>
|
||||
#include "../misc/fixc11.h"
|
||||
#include "Plot.h"
|
||||
|
||||
/** widget to render one plot */
|
||||
|
||||
Reference in New Issue
Block a user