mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-11-29 07:24:13 +01:00
Merge branch 'next' into corvuscorax/OP-1216_flight-control-refurbishment
This commit is contained in:
commit
82a196b8cf
@ -211,6 +211,7 @@ inline QString msgSendArgumentFailed()
|
|||||||
|
|
||||||
void mainMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
void mainMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(context);
|
||||||
QFile file(QDir::tempPath() + "/gcs.log");
|
QFile file(QDir::tempPath() + "/gcs.log");
|
||||||
|
|
||||||
if (file.open(QIODevice::Append | QIODevice::Text)) {
|
if (file.open(QIODevice::Append | QIODevice::Text)) {
|
||||||
|
@ -229,7 +229,7 @@ template<typename T, bool Align> inline void ei_conditional_aligned_delete(T *pt
|
|||||||
template<typename Scalar, typename Integer>
|
template<typename Scalar, typename Integer>
|
||||||
inline static Integer ei_alignmentOffset(const Scalar* array, Integer size)
|
inline static Integer ei_alignmentOffset(const Scalar* array, Integer size)
|
||||||
{
|
{
|
||||||
typedef typename ei_packet_traits<Scalar>::type Packet;
|
typedef typename ei_packet_traits<Scalar>::type Packet __attribute__ ((unused));
|
||||||
enum { PacketSize = ei_packet_traits<Scalar>::size,
|
enum { PacketSize = ei_packet_traits<Scalar>::size,
|
||||||
PacketAlignedMask = PacketSize-1
|
PacketAlignedMask = PacketSize-1
|
||||||
};
|
};
|
||||||
|
@ -34,7 +34,7 @@ using namespace projections;
|
|||||||
|
|
||||||
namespace internals {
|
namespace internals {
|
||||||
Core::Core() : MouseWheelZooming(false), currentPosition(0, 0), currentPositionPixel(0, 0), LastLocationInBounds(-1, -1), sizeOfMapArea(0, 0)
|
Core::Core() : MouseWheelZooming(false), currentPosition(0, 0), currentPositionPixel(0, 0), LastLocationInBounds(-1, -1), sizeOfMapArea(0, 0)
|
||||||
, minOfTiles(0, 0), maxOfTiles(0, 0), zoom(0), isDragging(false), TooltipTextPadding(10, 10), loaderLimit(5), maxzoom(21), started(false), runningThreads(0)
|
, minOfTiles(0, 0), maxOfTiles(0, 0), zoom(0), isDragging(false), TooltipTextPadding(10, 10), loaderLimit(5), maxzoom(21), runningThreads(0), started(false)
|
||||||
{
|
{
|
||||||
mousewheelzoomtype = MouseWheelZoomType::MousePositionAndCenter;
|
mousewheelzoomtype = MouseWheelZoomType::MousePositionAndCenter;
|
||||||
SetProjection(new MercatorProjection());
|
SetProjection(new MercatorProjection());
|
||||||
|
@ -88,14 +88,15 @@ QVector <double> LKS94Projection::DTM10(const QVector <double> & lonlat)
|
|||||||
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
||||||
double semiMajor = 6378137.0; // major axis
|
double semiMajor = 6378137.0; // major axis
|
||||||
double semiMinor = 6356752.3142451793; // minor axis
|
double semiMinor = 6356752.3142451793; // minor axis
|
||||||
double ab; // Semi_major / semi_minor
|
|
||||||
double ba; // Semi_minor / semi_major
|
|
||||||
double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
|
||||||
|
|
||||||
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor); // e^2
|
// double ab; // Semi_major / semi_minor
|
||||||
ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
// double ba; // Semi_minor / semi_major
|
||||||
ba = semiMinor / semiMajor;
|
// double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
||||||
ab = semiMajor / semiMinor;
|
|
||||||
|
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor); // e^2
|
||||||
|
// ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
||||||
|
// ba = semiMinor / semiMajor;
|
||||||
|
// ab = semiMajor / semiMinor;
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
@ -121,14 +122,14 @@ QVector <double> LKS94Projection::MTD10(QVector <double> & pnt)
|
|||||||
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
||||||
double semiMajor = 6378137.0; // major axis
|
double semiMajor = 6378137.0; // major axis
|
||||||
double semiMinor = 6356752.3141403561; // minor axis
|
double semiMinor = 6356752.3141403561; // minor axis
|
||||||
double ab; // Semi_major / semi_minor
|
// double ab; // Semi_major / semi_minor
|
||||||
double ba; // Semi_minor / semi_major
|
// double ba; // Semi_minor / semi_major
|
||||||
double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
||||||
|
|
||||||
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor); // e^2
|
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor); // e^2
|
||||||
ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
||||||
ba = semiMinor / semiMajor;
|
// ba = semiMinor / semiMajor;
|
||||||
ab = semiMajor / semiMinor;
|
// ab = semiMajor / semiMinor;
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
@ -201,11 +202,13 @@ QVector <double> LKS94Projection::DTM00(QVector <double> & lonlat)
|
|||||||
double metersPerUnit = 1.0;
|
double metersPerUnit = 1.0;
|
||||||
|
|
||||||
double e0, e1, e2, e3; // eccentricity constants
|
double e0, e1, e2, e3; // eccentricity constants
|
||||||
double e, es, esp; // eccentricity constants
|
// double e;
|
||||||
|
double es;
|
||||||
|
double esp; // eccentricity constants
|
||||||
double ml0; // small value m
|
double ml0; // small value m
|
||||||
|
|
||||||
es = 1.0 - pow(semiMinor / semiMajor, 2);
|
es = 1.0 - pow(semiMinor / semiMajor, 2);
|
||||||
e = sqrt(es);
|
// e = sqrt(es);
|
||||||
e0 = e0fn(es);
|
e0 = e0fn(es);
|
||||||
e1 = e1fn(es);
|
e1 = e1fn(es);
|
||||||
e2 = e2fn(es);
|
e2 = e2fn(es);
|
||||||
@ -262,14 +265,15 @@ QVector <double> LKS94Projection::DTM01(QVector <double> & lonlat)
|
|||||||
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
||||||
double semiMajor = 6378137.0; // major axis
|
double semiMajor = 6378137.0; // major axis
|
||||||
double semiMinor = 6356752.3141403561; // minor axis
|
double semiMinor = 6356752.3141403561; // minor axis
|
||||||
double ab; // Semi_major / semi_minor
|
|
||||||
double ba; // Semi_minor / semi_major
|
|
||||||
double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
|
||||||
|
|
||||||
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor);
|
// double ab; // Semi_major / semi_minor
|
||||||
ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
// double ba; // Semi_minor / semi_major
|
||||||
ba = semiMinor / semiMajor;
|
// double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
||||||
ab = semiMajor / semiMinor;
|
|
||||||
|
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor);
|
||||||
|
// ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
||||||
|
// ba = semiMinor / semiMajor;
|
||||||
|
// ab = semiMajor / semiMinor;
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
@ -294,14 +298,14 @@ QVector <double> LKS94Projection::MTD01(QVector <double> & pnt)
|
|||||||
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
double es; // Eccentricity squared : (a^2 - b^2)/a^2
|
||||||
double semiMajor = 6378137.0; // major axis
|
double semiMajor = 6378137.0; // major axis
|
||||||
double semiMinor = 6356752.3142451793; // minor axis
|
double semiMinor = 6356752.3142451793; // minor axis
|
||||||
double ab; // Semi_major / semi_minor
|
// double ab; // Semi_major / semi_minor
|
||||||
double ba; // Semi_minor / semi_major
|
// double ba; // Semi_minor / semi_major
|
||||||
double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
double ses; // Second eccentricity squared : (a^2 - b^2)/b^2
|
||||||
|
|
||||||
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor);
|
es = 1.0 - (semiMinor * semiMinor) / (semiMajor * semiMajor);
|
||||||
ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
ses = (pow(semiMajor, 2) - pow(semiMinor, 2)) / pow(semiMinor, 2);
|
||||||
ba = semiMinor / semiMajor;
|
// ba = semiMinor / semiMajor;
|
||||||
ab = semiMajor / semiMinor;
|
// ab = semiMajor / semiMinor;
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
@ -378,12 +382,14 @@ QVector <double> LKS94Projection::MTD11(QVector <double> & p)
|
|||||||
double metersPerUnit = 1.0;
|
double metersPerUnit = 1.0;
|
||||||
|
|
||||||
double e0, e1, e2, e3; // eccentricity constants
|
double e0, e1, e2, e3; // eccentricity constants
|
||||||
double e, es, esp; // eccentricity constants
|
// double e;
|
||||||
|
double es;
|
||||||
|
double esp; // eccentricity constants
|
||||||
double ml0; // small value m
|
double ml0; // small value m
|
||||||
|
|
||||||
es = (semiMinor * semiMinor) / (semiMajor * semiMajor);
|
es = (semiMinor * semiMinor) / (semiMajor * semiMajor);
|
||||||
es = 1.0 - es;
|
es = 1.0 - es;
|
||||||
e = sqrt(es);
|
// e = sqrt(es);
|
||||||
e0 = e0fn(es);
|
e0 = e0fn(es);
|
||||||
e1 = e1fn(es);
|
e1 = e1fn(es);
|
||||||
e2 = e2fn(es);
|
e2 = e2fn(es);
|
||||||
|
@ -56,7 +56,7 @@ Point MercatorProjectionYandex::FromLatLngToPixel(double lat, double lng, const
|
|||||||
}
|
}
|
||||||
internals::PointLatLng MercatorProjectionYandex::FromPixelToLatLng(const int &x, const int &y, const int &zoom)
|
internals::PointLatLng MercatorProjectionYandex::FromPixelToLatLng(const int &x, const int &y, const int &zoom)
|
||||||
{
|
{
|
||||||
Size s = GetTileMatrixSizePixel(zoom);
|
// Size s = GetTileMatrixSizePixel(zoom);
|
||||||
|
|
||||||
// double mapSizeX = s.Width();
|
// double mapSizeX = s.Width();
|
||||||
// double mapSizeY = s.Height();
|
// double mapSizeY = s.Height();
|
||||||
|
@ -31,7 +31,8 @@
|
|||||||
#include <QGraphicsSceneMouseEvent>
|
#include <QGraphicsSceneMouseEvent>
|
||||||
|
|
||||||
namespace mapcontrol {
|
namespace mapcontrol {
|
||||||
MapGraphicItem::MapGraphicItem(internals::Core *core, Configuration *configuration) : core(core), config(configuration), MapRenderTransform(1), maxZoom(17), minZoom(2), zoomReal(0), isSelected(false), rotation(0), zoomDigi(0)
|
MapGraphicItem::MapGraphicItem(internals::Core *core, Configuration *configuration) : core(core), config(configuration), MapRenderTransform(1),
|
||||||
|
maxZoom(17), minZoom(2), zoomReal(0), zoomDigi(0), isSelected(false), rotation(0)
|
||||||
{
|
{
|
||||||
dragons.load(QString::fromUtf8(":/markers/images/dragons1.jpg"));
|
dragons.load(QString::fromUtf8(":/markers/images/dragons1.jpg"));
|
||||||
showTileGridLines = false;
|
showTileGridLines = false;
|
||||||
|
@ -31,8 +31,8 @@
|
|||||||
namespace mapcontrol {
|
namespace mapcontrol {
|
||||||
double UAVItem::groundspeed_mps_filt = 0;
|
double UAVItem::groundspeed_mps_filt = 0;
|
||||||
|
|
||||||
UAVItem::UAVItem(MapGraphicItem *map, OPMapWidget *parent, QString uavPic) : map(map), mapwidget(parent), showtrail(true), showtrailline(true), trailtime(5), traildistance(50), autosetreached(true)
|
UAVItem::UAVItem(MapGraphicItem *map, OPMapWidget *parent, QString uavPic) : map(map), mapwidget(parent), altitude(0), showtrail(true), showtrailline(true),
|
||||||
, autosetdistance(100), altitude(0), showUAVInfo(false)
|
trailtime(5), traildistance(50), autosetreached(true), autosetdistance(100), showUAVInfo(false)
|
||||||
{
|
{
|
||||||
pic.load(uavPic);
|
pic.load(uavPic);
|
||||||
this->setFlag(QGraphicsItem::ItemIsMovable, false);
|
this->setFlag(QGraphicsItem::ItemIsMovable, false);
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
#include "homeitem.h"
|
#include "homeitem.h"
|
||||||
|
|
||||||
namespace mapcontrol {
|
namespace mapcontrol {
|
||||||
WayPointCircle::WayPointCircle(WayPointItem *center, WayPointItem *radius, bool clockwise, MapGraphicItem *map, QColor color) : my_center(center),
|
WayPointCircle::WayPointCircle(WayPointItem *center, WayPointItem *radius, bool clockwise, MapGraphicItem *map, QColor color) : QGraphicsEllipseItem(map),
|
||||||
my_radius(radius), my_map(map), QGraphicsEllipseItem(map), myColor(color), myClockWise(clockwise)
|
my_center(center), my_radius(radius), my_map(map), myColor(color), myClockWise(clockwise)
|
||||||
{
|
{
|
||||||
connect(center, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(refreshLocations()));
|
connect(center, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(refreshLocations()));
|
||||||
connect(radius, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(refreshLocations()));
|
connect(radius, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(refreshLocations()));
|
||||||
@ -40,8 +40,8 @@ WayPointCircle::WayPointCircle(WayPointItem *center, WayPointItem *radius, bool
|
|||||||
connect(map, SIGNAL(childSetOpacity(qreal)), this, SLOT(setOpacitySlot(qreal)));
|
connect(map, SIGNAL(childSetOpacity(qreal)), this, SLOT(setOpacitySlot(qreal)));
|
||||||
}
|
}
|
||||||
|
|
||||||
WayPointCircle::WayPointCircle(HomeItem *radius, WayPointItem *center, bool clockwise, MapGraphicItem *map, QColor color) : my_center(center),
|
WayPointCircle::WayPointCircle(HomeItem *radius, WayPointItem *center, bool clockwise, MapGraphicItem *map, QColor color) : QGraphicsEllipseItem(map),
|
||||||
my_radius(radius), my_map(map), QGraphicsEllipseItem(map), myColor(color), myClockWise(clockwise)
|
my_center(center), my_radius(radius), my_map(map), myColor(color), myClockWise(clockwise)
|
||||||
{
|
{
|
||||||
connect(radius, SIGNAL(homePositionChanged(internals::PointLatLng, float)), this, SLOT(refreshLocations()));
|
connect(radius, SIGNAL(homePositionChanged(internals::PointLatLng, float)), this, SLOT(refreshLocations()));
|
||||||
connect(center, SIGNAL(localPositionChanged(QPointF)), this, SLOT(refreshLocations()));
|
connect(center, SIGNAL(localPositionChanged(QPointF)), this, SLOT(refreshLocations()));
|
||||||
|
@ -337,7 +337,7 @@ void WayPointItem::SetReached(const bool &value)
|
|||||||
picture.load(QString::fromUtf8(":/markers/images/bigMarkerGreen.png"));
|
picture.load(QString::fromUtf8(":/markers/images/bigMarkerGreen.png"));
|
||||||
} else {
|
} else {
|
||||||
if (!isMagic) {
|
if (!isMagic) {
|
||||||
if (this->flags() & QGraphicsItem::ItemIsMovable == QGraphicsItem::ItemIsMovable) {
|
if ((this->flags() & QGraphicsItem::ItemIsMovable) == QGraphicsItem::ItemIsMovable) {
|
||||||
picture.load(QString::fromUtf8(":/markers/images/marker.png"));
|
picture.load(QString::fromUtf8(":/markers/images/marker.png"));
|
||||||
} else {
|
} else {
|
||||||
picture.load(QString::fromUtf8(":/markers/images/waypoint_marker2.png"));
|
picture.load(QString::fromUtf8(":/markers/images/waypoint_marker2.png"));
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
#include "homeitem.h"
|
#include "homeitem.h"
|
||||||
|
|
||||||
namespace mapcontrol {
|
namespace mapcontrol {
|
||||||
WayPointLine::WayPointLine(WayPointItem *from, WayPointItem *to, MapGraphicItem *map, QColor color) : source(from),
|
WayPointLine::WayPointLine(WayPointItem *from, WayPointItem *to, MapGraphicItem *map, QColor color) : QGraphicsLineItem(map),
|
||||||
destination(to), my_map(map), QGraphicsLineItem(map), myColor(color)
|
source(from), destination(to), my_map(map), myColor(color)
|
||||||
{
|
{
|
||||||
this->setLine(to->pos().x(), to->pos().y(), from->pos().x(), from->pos().y());
|
this->setLine(to->pos().x(), to->pos().y(), from->pos().x(), from->pos().y());
|
||||||
connect(from, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(refreshLocations()));
|
connect(from, SIGNAL(localPositionChanged(QPointF, WayPointItem *)), this, SLOT(refreshLocations()));
|
||||||
@ -47,8 +47,8 @@ WayPointLine::WayPointLine(WayPointItem *from, WayPointItem *to, MapGraphicItem
|
|||||||
connect(map, SIGNAL(childSetOpacity(qreal)), this, SLOT(setOpacitySlot(qreal)));
|
connect(map, SIGNAL(childSetOpacity(qreal)), this, SLOT(setOpacitySlot(qreal)));
|
||||||
}
|
}
|
||||||
|
|
||||||
WayPointLine::WayPointLine(HomeItem *from, WayPointItem *to, MapGraphicItem *map, QColor color) : source(from),
|
WayPointLine::WayPointLine(HomeItem *from, WayPointItem *to, MapGraphicItem *map, QColor color) : QGraphicsLineItem(map),
|
||||||
destination(to), my_map(map), QGraphicsLineItem(map), myColor(color)
|
source(from), destination(to), my_map(map), myColor(color)
|
||||||
{
|
{
|
||||||
this->setLine(to->pos().x(), to->pos().y(), from->pos().x(), from->pos().y());
|
this->setLine(to->pos().x(), to->pos().y(), from->pos().x(), from->pos().y());
|
||||||
connect(from, SIGNAL(homePositionChanged(internals::PointLatLng, float)), this, SLOT(refreshLocations()));
|
connect(from, SIGNAL(homePositionChanged(internals::PointLatLng, float)), this, SLOT(refreshLocations()));
|
||||||
|
@ -27,6 +27,9 @@ else {
|
|||||||
CONFIG += staticlib
|
CONFIG += staticlib
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# disable all warnings (no need for warnings as qwt sources are imported)
|
||||||
|
CONFIG += exceptions warn_off
|
||||||
|
|
||||||
unix:!mac:LIBS += -lrt
|
unix:!mac:LIBS += -lrt
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
@ -105,7 +105,7 @@ void LogFile::timerFired()
|
|||||||
// TODO: going back in time will be a problem
|
// TODO: going back in time will be a problem
|
||||||
while ((m_lastPlayed + ((time - m_timeOffset) * m_playbackSpeed) > m_lastTimeStamp)) {
|
while ((m_lastPlayed + ((time - m_timeOffset) * m_playbackSpeed) > m_lastTimeStamp)) {
|
||||||
m_lastPlayed += ((time - m_timeOffset) * m_playbackSpeed);
|
m_lastPlayed += ((time - m_timeOffset) * m_playbackSpeed);
|
||||||
if (m_file.bytesAvailable() < sizeof(dataSize)) {
|
if (m_file.bytesAvailable() < (qint64)sizeof(dataSize)) {
|
||||||
stopReplay();
|
stopReplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ void LogFile::timerFired()
|
|||||||
|
|
||||||
emit readyRead();
|
emit readyRead();
|
||||||
|
|
||||||
if (m_file.bytesAvailable() < sizeof(m_lastTimeStamp)) {
|
if (m_file.bytesAvailable() < (qint64)sizeof(m_lastTimeStamp)) {
|
||||||
stopReplay();
|
stopReplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ bool XmlConfig::readXmlFile(QIODevice &device, QSettings::SettingsMap &map)
|
|||||||
.arg(errorLine)
|
.arg(errorLine)
|
||||||
.arg(errorColumn)
|
.arg(errorColumn)
|
||||||
.arg(errorStr);
|
.arg(errorStr);
|
||||||
qFatal(err.toLatin1().data());
|
qFatal("%s", err.toLatin1().data());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
root = domDoc.documentElement();
|
root = domDoc.documentElement();
|
||||||
@ -99,7 +99,7 @@ void XmlConfig::handleNode(QDomElement *node, QSettings::SettingsMap &map, QStri
|
|||||||
}
|
}
|
||||||
|
|
||||||
// qDebug() << "Node: " << ": " << path << " Children: " << node->childNodes().length();
|
// qDebug() << "Node: " << ": " << path << " Children: " << node->childNodes().length();
|
||||||
for (uint i = 0; i < node->childNodes().length(); ++i) {
|
for (int i = 0; i < node->childNodes().length(); ++i) {
|
||||||
QDomNode child = node->childNodes().item(i);
|
QDomNode child = node->childNodes().item(i);
|
||||||
if (child.isElement()) {
|
if (child.isElement()) {
|
||||||
handleNode(static_cast<QDomElement *>(&child), map, path);
|
handleNode(static_cast<QDomElement *>(&child), map, path);
|
||||||
|
@ -1447,7 +1447,7 @@ void ConfigCcpmWidget::setSwashplateLevel(int percent)
|
|||||||
ActuatorCommand::DataFields actuatorCommandData = actuatorCommand->getData();
|
ActuatorCommand::DataFields actuatorCommandData = actuatorCommand->getData();
|
||||||
|
|
||||||
for (int i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) {
|
for (int i = 0; i < CCPM_MAX_SWASH_SERVOS; i++) {
|
||||||
double value;
|
double value = 0;
|
||||||
if (level == 0) {
|
if (level == 0) {
|
||||||
value = newSwashLvlConfiguration.Neutral[i];
|
value = newSwashLvlConfiguration.Neutral[i];
|
||||||
} else if (level > 0) {
|
} else if (level > 0) {
|
||||||
|
@ -78,6 +78,7 @@ ConfigCustomWidget::~ConfigCustomWidget()
|
|||||||
|
|
||||||
void ConfigCustomWidget::setupUI(QString frameType)
|
void ConfigCustomWidget::setupUI(QString frameType)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(frameType);
|
||||||
Q_ASSERT(m_aircraft);
|
Q_ASSERT(m_aircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +92,9 @@ void ConfigCustomWidget::registerWidgets(ConfigTaskWidget &parent)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ConfigCustomWidget::resetActuators(GUIConfigDataUnion *configData)
|
void ConfigCustomWidget::resetActuators(GUIConfigDataUnion *configData)
|
||||||
{}
|
{
|
||||||
|
Q_UNUSED(configData);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Helper function to refresh the UI widget values
|
Helper function to refresh the UI widget values
|
||||||
@ -219,6 +222,7 @@ QString ConfigCustomWidget::updateConfigObjectsFromWidgets()
|
|||||||
*/
|
*/
|
||||||
bool ConfigCustomWidget::throwConfigError(int numMotors)
|
bool ConfigCustomWidget::throwConfigError(int numMotors)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(numMotors);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,6 +269,8 @@ SpinBoxDelegate::SpinBoxDelegate(QObject *parent) :
|
|||||||
QWidget *SpinBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
|
QWidget *SpinBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option,
|
||||||
const QModelIndex &index) const
|
const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(option);
|
||||||
|
Q_UNUSED(index);
|
||||||
QSpinBox *editor = new QSpinBox(parent);
|
QSpinBox *editor = new QSpinBox(parent);
|
||||||
|
|
||||||
editor->setMinimum(-127);
|
editor->setMinimum(-127);
|
||||||
@ -295,5 +301,6 @@ void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, c
|
|||||||
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
|
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
|
||||||
const QModelIndex &index) const
|
const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(index);
|
||||||
editor->setGeometry(option.rect);
|
editor->setGeometry(option.rect);
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,6 @@ void VehicleConfig::setConfigData(GUIConfigDataUnion configData)
|
|||||||
// get an instance of systemsettings
|
// get an instance of systemsettings
|
||||||
SystemSettings *systemSettings = SystemSettings::GetInstance(getUAVObjectManager());
|
SystemSettings *systemSettings = SystemSettings::GetInstance(getUAVObjectManager());
|
||||||
Q_ASSERT(systemSettings);
|
Q_ASSERT(systemSettings);
|
||||||
SystemSettings::DataFields systemSettingsData = systemSettings->getData();
|
|
||||||
|
|
||||||
UAVObjectField *guiConfig = systemSettings->getField("GUIConfigData");
|
UAVObjectField *guiConfig = systemSettings->getField("GUIConfigData");
|
||||||
Q_ASSERT(guiConfig);
|
Q_ASSERT(guiConfig);
|
||||||
|
@ -214,6 +214,7 @@ void ConfigCCAttitudeWidget::openHelp()
|
|||||||
|
|
||||||
void ConfigCCAttitudeWidget::setAccelFiltering(bool active)
|
void ConfigCCAttitudeWidget::setAccelFiltering(bool active)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(active);
|
||||||
setDirty(true);
|
setDirty(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -914,7 +914,7 @@ void ConfigInputWidget::setMoveFromCommand(int command)
|
|||||||
// CHANNELNUMBER_ACCESSORY1=6,
|
// CHANNELNUMBER_ACCESSORY1=6,
|
||||||
// CHANNELNUMBER_ACCESSORY2=7
|
// CHANNELNUMBER_ACCESSORY2=7
|
||||||
|
|
||||||
txMovements movement;
|
txMovements movement = moveLeftVerticalStick;
|
||||||
|
|
||||||
switch (command) {
|
switch (command) {
|
||||||
case ManualControlSettings::CHANNELNUMBER_ROLL:
|
case ManualControlSettings::CHANNELNUMBER_ROLL:
|
||||||
@ -1032,10 +1032,10 @@ void ConfigInputWidget::setTxMovement(txMovements movement)
|
|||||||
void ConfigInputWidget::moveTxControls()
|
void ConfigInputWidget::moveTxControls()
|
||||||
{
|
{
|
||||||
QTransform trans;
|
QTransform trans;
|
||||||
QGraphicsItem *item;
|
QGraphicsItem *item = NULL;
|
||||||
txMovementType move;
|
txMovementType move = vertical;
|
||||||
int limitMax;
|
int limitMax = 0;
|
||||||
int limitMin;
|
int limitMin = 0;
|
||||||
static bool auxFlag = false;
|
static bool auxFlag = false;
|
||||||
|
|
||||||
switch (currentMovement) {
|
switch (currentMovement) {
|
||||||
|
@ -896,11 +896,8 @@ void ConfigRevoWidget::doStartNoiseMeasurement()
|
|||||||
|
|
||||||
Q_UNUSED(lock);
|
Q_UNUSED(lock);
|
||||||
|
|
||||||
RevoCalibration *revoCalibration = RevoCalibration::GetInstance(getObjectManager());
|
|
||||||
HomeLocation *homeLocation = HomeLocation::GetInstance(getObjectManager());
|
HomeLocation *homeLocation = HomeLocation::GetInstance(getObjectManager());
|
||||||
Q_ASSERT(revoCalibration);
|
|
||||||
Q_ASSERT(homeLocation);
|
Q_ASSERT(homeLocation);
|
||||||
RevoCalibration::DataFields revoCalibrationData = revoCalibration->getData();
|
|
||||||
HomeLocation::DataFields homeLocationData = homeLocation->getData();
|
HomeLocation::DataFields homeLocationData = homeLocation->getData();
|
||||||
|
|
||||||
// check if Homelocation is set
|
// check if Homelocation is set
|
||||||
|
@ -54,8 +54,8 @@ private:
|
|||||||
// Milliseconds between automatic 'Instant Updates'
|
// Milliseconds between automatic 'Instant Updates'
|
||||||
static const int AUTOMATIC_UPDATE_RATE = 500;
|
static const int AUTOMATIC_UPDATE_RATE = 500;
|
||||||
|
|
||||||
int m_pidBankCount;
|
|
||||||
int boardModel;
|
int boardModel;
|
||||||
|
int m_pidBankCount;
|
||||||
int m_currentPIDBank;
|
int m_currentPIDBank;
|
||||||
protected:
|
protected:
|
||||||
QString mapObjectName(const QString objectName);
|
QString mapObjectName(const QString objectName);
|
||||||
|
@ -123,7 +123,6 @@ void FancyTabBar::mouseMoveEvent(QMouseEvent *e)
|
|||||||
m_hoverRect = QRect();
|
m_hoverRect = QRect();
|
||||||
|
|
||||||
if (m_hoverIndex >= 0) {
|
if (m_hoverIndex >= 0) {
|
||||||
QRect oldHoverRect = m_hoverRect;
|
|
||||||
m_hoverRect = tabRect(m_hoverIndex);
|
m_hoverRect = tabRect(m_hoverIndex);
|
||||||
m_hoverControl.start();
|
m_hoverControl.start();
|
||||||
}
|
}
|
||||||
|
@ -1756,7 +1756,7 @@ Setup the flight mode channel on the RC Input tab if you have not done so alread
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2" rowspan="2">
|
<item row="1" column="2" rowspan="2">
|
||||||
<widget class="QFrame" name="frame">
|
<widget class="QFrame" name="frame1">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>120</width>
|
<width>120</width>
|
||||||
|
@ -272,16 +272,6 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
<zorder>GenerateCurve</zorder>
|
|
||||||
<zorder>CurveSettings</zorder>
|
|
||||||
<zorder>CurveType</zorder>
|
|
||||||
<zorder>CurveMin</zorder>
|
|
||||||
<zorder>minLabel</zorder>
|
|
||||||
<zorder>CurveMax</zorder>
|
|
||||||
<zorder>maxLabel</zorder>
|
|
||||||
<zorder>CurveStep</zorder>
|
|
||||||
<zorder>stepLabel</zorder>
|
|
||||||
<zorder>verticalSpacer</zorder>
|
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
|
@ -56,10 +56,10 @@ signals:
|
|||||||
void channelChanged(int index, int value);
|
void channelChanged(int index, int value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Ui::outputChannelForm ui;
|
||||||
/// Channel index
|
/// Channel index
|
||||||
int m_index;
|
int m_index;
|
||||||
bool m_inChannelTest;
|
bool m_inChannelTest;
|
||||||
Ui::outputChannelForm ui;
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void linkToggled(bool state);
|
void linkToggled(bool state);
|
||||||
|
@ -495,7 +495,7 @@ margin:1px;</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="11">
|
<item row="1" column="11">
|
||||||
<widget class="QFrame" name="frame">
|
<widget class="QFrame" name="frame_1">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>45</width>
|
<width>45</width>
|
||||||
|
@ -24133,7 +24133,7 @@ border-radius: 5;</string>
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="gridGroupBox">
|
<widget class="QGroupBox" name="gridGroupBox_1">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Cruise Control</string>
|
<string>Cruise Control</string>
|
||||||
</property>
|
</property>
|
||||||
|
@ -105,6 +105,7 @@ void ConnectionManager::addWidget(QWidget *widget)
|
|||||||
*/
|
*/
|
||||||
bool ConnectionManager::connectDevice(DevListItem device)
|
bool ConnectionManager::connectDevice(DevListItem device)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(device);
|
||||||
QString deviceName = m_availableDevList->itemData(m_availableDevList->currentIndex(), Qt::ToolTipRole).toString();
|
QString deviceName = m_availableDevList->itemData(m_availableDevList->currentIndex(), Qt::ToolTipRole).toString();
|
||||||
DevListItem connection_device = findDevice(deviceName);
|
DevListItem connection_device = findDevice(deviceName);
|
||||||
|
|
||||||
|
@ -1110,7 +1110,7 @@ MimeType MimeDatabasePrivate::findByFile(const QFileInfo &f) const
|
|||||||
// Returns a mime type or Null one if none found
|
// Returns a mime type or Null one if none found
|
||||||
MimeType MimeDatabasePrivate::findByFile(const QFileInfo &f, unsigned *priorityPtr) const
|
MimeType MimeDatabasePrivate::findByFile(const QFileInfo &f, unsigned *priorityPtr) const
|
||||||
{
|
{
|
||||||
typedef QList<MimeMapEntry> MimeMapEntryList;
|
typedef QList<MimeMapEntry> MimeMapEntryList __attribute__((unused));
|
||||||
|
|
||||||
// Is the hierarchy set up in case we find several matches?
|
// Is the hierarchy set up in case we find several matches?
|
||||||
if (m_maxLevel < 0) {
|
if (m_maxLevel < 0) {
|
||||||
|
@ -181,7 +181,7 @@ bool UAVConfigInfo::askToAbort(int compat, QString message)
|
|||||||
msgBox.setInformativeText(tr("Do you want to continue the import?"));
|
msgBox.setInformativeText(tr("Do you want to continue the import?"));
|
||||||
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
|
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
|
||||||
|
|
||||||
int result;
|
int result = QMessageBox::Abort;
|
||||||
|
|
||||||
switch (compat) {
|
switch (compat) {
|
||||||
case FullyCompatible:
|
case FullyCompatible:
|
||||||
|
@ -43,6 +43,7 @@ QPointer<QTextBrowser> m_textedit;
|
|||||||
|
|
||||||
void DebugGadgetWidget::customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
void DebugGadgetWidget::customMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(context);
|
||||||
QString txt;
|
QString txt;
|
||||||
QColor color = Qt::black;
|
QColor color = Qt::black;
|
||||||
|
|
||||||
|
@ -193,6 +193,102 @@ void FlightLogManager::retrieveLogs(int flightToRetrieve)
|
|||||||
setDisableControls(false);
|
setDisableControls(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FlightLogManager::exportToOPL(QString fileName)
|
||||||
|
{
|
||||||
|
// Fix the file name
|
||||||
|
fileName.replace(QString(".opl"), QString("%1.opl"));
|
||||||
|
|
||||||
|
// Loop and create a new file for each flight.
|
||||||
|
int currentEntry = 0;
|
||||||
|
int currentFlight = 0;
|
||||||
|
quint32 adjustedBaseTime = 0;
|
||||||
|
// Continue until all entries are exported
|
||||||
|
while (currentEntry < m_logEntries.count()) {
|
||||||
|
if (m_adjustExportedTimestamps) {
|
||||||
|
adjustedBaseTime = m_logEntries[currentEntry]->getFlightTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get current flight
|
||||||
|
currentFlight = m_logEntries[currentEntry]->getFlight();
|
||||||
|
|
||||||
|
LogFile logFile;
|
||||||
|
logFile.useProvidedTimeStamp(true);
|
||||||
|
|
||||||
|
// Set the file name to contain flight number
|
||||||
|
logFile.setFileName(fileName.arg(tr("_flight-%1").arg(currentFlight + 1)));
|
||||||
|
logFile.open(QIODevice::WriteOnly);
|
||||||
|
UAVTalk uavTalk(&logFile, m_objectManager);
|
||||||
|
|
||||||
|
// Export entries until no more available or flight changes
|
||||||
|
while (currentEntry < m_logEntries.count() && m_logEntries[currentEntry]->getFlight() == currentFlight) {
|
||||||
|
ExtendedDebugLogEntry *entry = m_logEntries[currentEntry];
|
||||||
|
|
||||||
|
// Only log uavobjects
|
||||||
|
if (entry->getType() == ExtendedDebugLogEntry::TYPE_UAVOBJECT) {
|
||||||
|
// Set timestamp that should be logged for this entry
|
||||||
|
logFile.setNextTimeStamp(entry->getFlightTime() - adjustedBaseTime);
|
||||||
|
|
||||||
|
// Use UAVTalk to log complete message to file
|
||||||
|
uavTalk.sendObject(entry->uavObject(), false, false);
|
||||||
|
qDebug() << entry->getFlightTime() - adjustedBaseTime << "=" << entry->toStringBrief();
|
||||||
|
}
|
||||||
|
currentEntry++;
|
||||||
|
}
|
||||||
|
|
||||||
|
logFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FlightLogManager::exportToCSV(QString fileName)
|
||||||
|
{
|
||||||
|
QFile csvFile(fileName);
|
||||||
|
if (csvFile.open(QFile::WriteOnly | QFile::Truncate)) {
|
||||||
|
QTextStream csvStream(&csvFile);
|
||||||
|
quint32 baseTime = 0;
|
||||||
|
quint32 currentFlight = 0;
|
||||||
|
csvStream << "Flight" << '\t' << "Flight Time" << '\t' << "Entry" << '\t' << "Data" << '\n';
|
||||||
|
foreach (ExtendedDebugLogEntry *entry , m_logEntries) {
|
||||||
|
if(m_adjustExportedTimestamps && entry->getFlight() != currentFlight) {
|
||||||
|
currentFlight = entry->getFlight();
|
||||||
|
baseTime = entry->getFlightTime();
|
||||||
|
}
|
||||||
|
entry->toCSV(&csvStream, baseTime);
|
||||||
|
}
|
||||||
|
csvStream.flush();
|
||||||
|
csvFile.flush();
|
||||||
|
csvFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FlightLogManager::exportToXML(QString fileName)
|
||||||
|
{
|
||||||
|
QFile xmlFile(fileName);
|
||||||
|
if (xmlFile.open(QFile::WriteOnly | QFile::Truncate)) {
|
||||||
|
|
||||||
|
QXmlStreamWriter xmlWriter(&xmlFile);
|
||||||
|
xmlWriter.setAutoFormatting(true);
|
||||||
|
xmlWriter.setAutoFormattingIndent(4);
|
||||||
|
|
||||||
|
xmlWriter.writeStartDocument("1.0", true);
|
||||||
|
xmlWriter.writeStartElement("logs");
|
||||||
|
xmlWriter.writeComment("This file was created by the flight log export in OpenPilot GCS.");
|
||||||
|
|
||||||
|
quint32 baseTime = 0;
|
||||||
|
quint32 currentFlight = 0;
|
||||||
|
foreach (ExtendedDebugLogEntry *entry , m_logEntries) {
|
||||||
|
if(m_adjustExportedTimestamps && entry->getFlight() != currentFlight) {
|
||||||
|
currentFlight = entry->getFlight();
|
||||||
|
baseTime = entry->getFlightTime();
|
||||||
|
}
|
||||||
|
entry->toXML(&xmlWriter, baseTime);
|
||||||
|
}
|
||||||
|
xmlWriter.writeEndElement();
|
||||||
|
xmlWriter.writeEndDocument();
|
||||||
|
xmlFile.flush();
|
||||||
|
xmlFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FlightLogManager::exportLogs()
|
void FlightLogManager::exportLogs()
|
||||||
{
|
{
|
||||||
if (m_logEntries.isEmpty()) {
|
if (m_logEntries.isEmpty()) {
|
||||||
@ -202,49 +298,31 @@ void FlightLogManager::exportLogs()
|
|||||||
setDisableControls(true);
|
setDisableControls(true);
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||||
|
|
||||||
QString fileName = QFileDialog::getSaveFileName(NULL, tr("Save Log"),
|
QString oplFilter = tr("OpenPilot Log file %1").arg("(*.opl)");
|
||||||
tr("OP-%0.opl").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm-ss")),
|
QString csvFilter = tr("Text file %1").arg("(*.csv)");
|
||||||
tr("OpenPilot Log (*.opl)"));
|
QString xmlFilter = tr("XML file %1").arg("(*.xml)");
|
||||||
|
|
||||||
|
QString selectedFilter = csvFilter;
|
||||||
|
|
||||||
|
QString fileName = QFileDialog::getSaveFileName(NULL, tr("Save Log Entries"),
|
||||||
|
QString("OP-%1").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm-ss")),
|
||||||
|
QString("%1;;%2;;%3").arg(oplFilter, csvFilter, xmlFilter), &selectedFilter);
|
||||||
if (!fileName.isEmpty()) {
|
if (!fileName.isEmpty()) {
|
||||||
// Loop and create a new file for each flight.
|
if (selectedFilter == oplFilter) {
|
||||||
fileName = fileName.replace(QString(".opl"), QString("%1.opl"));
|
if (!fileName.endsWith(".opl")) {
|
||||||
int currentEntry = 0;
|
fileName.append(".opl");
|
||||||
int currentFlight = 0;
|
|
||||||
quint32 adjustedBaseTime = 0;
|
|
||||||
// Continue until all entries are exported
|
|
||||||
while (currentEntry < m_logEntries.count()) {
|
|
||||||
if (m_adjustExportedTimestamps) {
|
|
||||||
adjustedBaseTime = m_logEntries[currentEntry]->getFlightTime();
|
|
||||||
}
|
}
|
||||||
|
exportToOPL(fileName);
|
||||||
// Get current flight
|
} else if (selectedFilter == csvFilter) {
|
||||||
currentFlight = m_logEntries[currentEntry]->getFlight();
|
if (!fileName.endsWith(".csv")) {
|
||||||
|
fileName.append(".csv");
|
||||||
LogFile logFile;
|
|
||||||
logFile.useProvidedTimeStamp(true);
|
|
||||||
|
|
||||||
// Set the file name to contain flight number
|
|
||||||
logFile.setFileName(fileName.arg(tr("_flight-%1").arg(currentFlight + 1)));
|
|
||||||
logFile.open(QIODevice::WriteOnly);
|
|
||||||
UAVTalk uavTalk(&logFile, m_objectManager);
|
|
||||||
|
|
||||||
// Export entries until no more available or flight changes
|
|
||||||
while (currentEntry < m_logEntries.count() && m_logEntries[currentEntry]->getFlight() == currentFlight) {
|
|
||||||
ExtendedDebugLogEntry *entry = m_logEntries[currentEntry];
|
|
||||||
|
|
||||||
// Only log uavobjects
|
|
||||||
if (entry->getType() == ExtendedDebugLogEntry::TYPE_UAVOBJECT) {
|
|
||||||
// Set timestamp that should be logged for this entry
|
|
||||||
logFile.setNextTimeStamp(entry->getFlightTime() - adjustedBaseTime);
|
|
||||||
|
|
||||||
// Use UAVTalk to log complete message to file
|
|
||||||
uavTalk.sendObject(entry->uavObject(), false, false);
|
|
||||||
qDebug() << entry->getFlightTime() - adjustedBaseTime << "=" << entry->toStringBrief();
|
|
||||||
}
|
|
||||||
currentEntry++;
|
|
||||||
}
|
}
|
||||||
|
exportToCSV(fileName);
|
||||||
logFile.close();
|
} else if (selectedFilter == xmlFilter) {
|
||||||
|
if (!fileName.endsWith(".xml")) {
|
||||||
|
fileName.append(".xml");
|
||||||
|
}
|
||||||
|
exportToXML(fileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,6 +375,33 @@ QString ExtendedDebugLogEntry::getLogString()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ExtendedDebugLogEntry::toXML(QXmlStreamWriter *xmlWriter, quint32 baseTime)
|
||||||
|
{
|
||||||
|
xmlWriter->writeStartElement("entry");
|
||||||
|
xmlWriter->writeAttribute("flight", QString::number(getFlight() + 1));
|
||||||
|
xmlWriter->writeAttribute("flighttime", QString::number(getFlightTime() - baseTime));
|
||||||
|
xmlWriter->writeAttribute("entry", QString::number(getEntry()));
|
||||||
|
if (getType() == DebugLogEntry::TYPE_TEXT) {
|
||||||
|
xmlWriter->writeAttribute("type", "text");
|
||||||
|
xmlWriter->writeTextElement("message", QString((const char *)getData().Data));
|
||||||
|
} else if (getType() == DebugLogEntry::TYPE_UAVOBJECT) {
|
||||||
|
xmlWriter->writeAttribute("type", "uavobject");
|
||||||
|
m_object->toXML(xmlWriter);
|
||||||
|
}
|
||||||
|
xmlWriter->writeEndElement(); //entry
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtendedDebugLogEntry::toCSV(QTextStream *csvStream, quint32 baseTime)
|
||||||
|
{
|
||||||
|
QString data;
|
||||||
|
if (getType() == DebugLogEntry::TYPE_TEXT) {
|
||||||
|
data = QString((const char *)getData().Data);
|
||||||
|
} else if (getType() == DebugLogEntry::TYPE_UAVOBJECT) {
|
||||||
|
data = m_object->toString().replace("\n", "").replace("\t", "");
|
||||||
|
}
|
||||||
|
*csvStream << QString::number(getFlight() + 1) << '\t' << QString::number(getFlightTime() - baseTime) << '\t' << QString::number(getEntry()) << '\t' << data << '\n';
|
||||||
|
}
|
||||||
|
|
||||||
void ExtendedDebugLogEntry::setData(const DebugLogEntry::DataFields &data, UAVObjectManager *objectManager)
|
void ExtendedDebugLogEntry::setData(const DebugLogEntry::DataFields &data, UAVObjectManager *objectManager)
|
||||||
{
|
{
|
||||||
DebugLogEntry::setData(data);
|
DebugLogEntry::setData(data);
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QQmlListProperty>
|
#include <QQmlListProperty>
|
||||||
#include <QSemaphore>
|
#include <QSemaphore>
|
||||||
|
#include <QXmlStreamWriter>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
#include "uavobjectmanager.h"
|
#include "uavobjectmanager.h"
|
||||||
#include "debuglogentry.h"
|
#include "debuglogentry.h"
|
||||||
@ -46,6 +48,8 @@ public:
|
|||||||
~ExtendedDebugLogEntry();
|
~ExtendedDebugLogEntry();
|
||||||
|
|
||||||
QString getLogString();
|
QString getLogString();
|
||||||
|
void toXML(QXmlStreamWriter *xmlWriter, quint32 baseTime);
|
||||||
|
void toCSV(QTextStream *csvStream, quint32 baseTime);
|
||||||
UAVDataObject *uavObject()
|
UAVDataObject *uavObject()
|
||||||
{
|
{
|
||||||
return m_object;
|
return m_object;
|
||||||
@ -157,6 +161,11 @@ private:
|
|||||||
bool m_disableExport;
|
bool m_disableExport;
|
||||||
bool m_cancelDownload;
|
bool m_cancelDownload;
|
||||||
bool m_adjustExportedTimestamps;
|
bool m_adjustExportedTimestamps;
|
||||||
|
|
||||||
|
void exportToOPL(QString fileName);
|
||||||
|
void exportToCSV(QString fileName);
|
||||||
|
void exportToXML(QString fileName);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FLIGHTLOGMANAGER_H
|
#endif // FLIGHTLOGMANAGER_H
|
||||||
|
@ -146,10 +146,10 @@ void GCSControlGadget::sticksChangedLocally(double leftX, double leftY, double r
|
|||||||
double oldYaw = manualControlCommand->getField("Yaw")->getDouble();
|
double oldYaw = manualControlCommand->getField("Yaw")->getDouble();
|
||||||
double oldThrottle = manualControlCommand->getField("Throttle")->getDouble();
|
double oldThrottle = manualControlCommand->getField("Throttle")->getDouble();
|
||||||
|
|
||||||
double newRoll;
|
double newRoll = 0.0;
|
||||||
double newPitch;
|
double newPitch = 0.0;
|
||||||
double newYaw;
|
double newYaw = 0.0;
|
||||||
double newThrottle;
|
double newThrottle = 0.0;
|
||||||
|
|
||||||
// Remap left X/Y and right X/Y to RPYT depending on mode
|
// Remap left X/Y and right X/Y to RPYT depending on mode
|
||||||
switch (controlsMode) {
|
switch (controlsMode) {
|
||||||
@ -248,7 +248,10 @@ void GCSControlGadget::gamepads(quint8 count)
|
|||||||
|
|
||||||
void GCSControlGadget::readUDPCommand()
|
void GCSControlGadget::readUDPCommand()
|
||||||
{
|
{
|
||||||
double pitch, yaw, roll, throttle;
|
double pitch = 0.0;
|
||||||
|
double yaw = 0.0;
|
||||||
|
double roll = 0.0;
|
||||||
|
double throttle = 0.0;
|
||||||
|
|
||||||
while (control_sock->hasPendingDatagrams()) {
|
while (control_sock->hasPendingDatagrams()) {
|
||||||
QByteArray datagram;
|
QByteArray datagram;
|
||||||
|
@ -247,15 +247,15 @@ void FGSimulator::processUpdate(const QByteArray & inp)
|
|||||||
// Get rollRate (deg/s)
|
// Get rollRate (deg/s)
|
||||||
float rollRate = fields[9].toFloat();
|
float rollRate = fields[9].toFloat();
|
||||||
// Get yaw (deg)
|
// Get yaw (deg)
|
||||||
float yaw = fields[10].toFloat();
|
float yaw = fields[10].toFloat();
|
||||||
// Get yawRate (deg/s)
|
// Get yawRate (deg/s)
|
||||||
float yawRate = fields[11].toFloat();
|
float yawRate = fields[11].toFloat();
|
||||||
// Get latitude (deg)
|
// Get latitude (deg)
|
||||||
float latitude = fields[12].toFloat();
|
float latitude = fields[12].toFloat();
|
||||||
// Get longitude (deg)
|
// Get longitude (deg)
|
||||||
float longitude = fields[13].toFloat();
|
float longitude = fields[13].toFloat();
|
||||||
// Get heading (deg)
|
// Get heading (deg)
|
||||||
float heading = fields[14].toFloat();
|
// float heading = fields[14].toFloat();
|
||||||
// Get altitude (m)
|
// Get altitude (m)
|
||||||
float altitude_msl = fields[15].toFloat() * FT2M;
|
float altitude_msl = fields[15].toFloat() * FT2M;
|
||||||
// Get altitudeAGL (m)
|
// Get altitudeAGL (m)
|
||||||
|
@ -410,14 +410,10 @@ void Simulator::updateUAVOs(Output2Hardware out)
|
|||||||
homeData.Latitude = out.latitude; // Already in *10^7 integer format
|
homeData.Latitude = out.latitude; // Already in *10^7 integer format
|
||||||
homeData.Longitude = out.longitude; // Already in *10^7 integer format
|
homeData.Longitude = out.longitude; // Already in *10^7 integer format
|
||||||
homeData.Altitude = out.agl;
|
homeData.Altitude = out.agl;
|
||||||
double LLA[3];
|
|
||||||
LLA[0] = out.latitude;
|
|
||||||
LLA[1] = out.longitude;
|
|
||||||
LLA[2] = out.altitude;
|
|
||||||
|
|
||||||
homeData.Be[0] = 0;
|
homeData.Be[0] = 0;
|
||||||
homeData.Be[1] = 0;
|
homeData.Be[1] = 0;
|
||||||
homeData.Be[2] = 0;
|
homeData.Be[2] = 0;
|
||||||
posHome->setData(homeData);
|
posHome->setData(homeData);
|
||||||
posHome->updated();
|
posHome->updated();
|
||||||
|
|
||||||
@ -498,13 +494,13 @@ void Simulator::updateUAVOs(Output2Hardware out)
|
|||||||
|
|
||||||
AttitudeSettings::DataFields attSettData = attSettings->getData();
|
AttitudeSettings::DataFields attSettData = attSettings->getData();
|
||||||
float accelKp = attSettData.AccelKp * 0.1666666666666667;
|
float accelKp = attSettData.AccelKp * 0.1666666666666667;
|
||||||
float accelKi = attSettData.AccelKp * 0.1666666666666667;
|
// float accelKi = attSettData.AccelKp * 0.1666666666666667;
|
||||||
float yawBiasRate = attSettData.YawBiasRate;
|
float yawBiasRate = attSettData.YawBiasRate;
|
||||||
|
|
||||||
// calibrate sensors on arming
|
// calibrate sensors on arming
|
||||||
if (flightStatus->getData().Armed == FlightStatus::ARMED_ARMING) {
|
if (flightStatus->getData().Armed == FlightStatus::ARMED_ARMING) {
|
||||||
accelKp = 2.0;
|
accelKp = 2.0;
|
||||||
accelKi = 0.9;
|
// accelKi = 0.9;
|
||||||
}
|
}
|
||||||
|
|
||||||
float gyro[3] = { out.rollRate, out.pitchRate, out.yawRate };
|
float gyro[3] = { out.rollRate, out.pitchRate, out.yawRate };
|
||||||
|
@ -176,11 +176,9 @@ private:
|
|||||||
double yellowMax;
|
double yellowMax;
|
||||||
double greenMin;
|
double greenMin;
|
||||||
double greenMax;
|
double greenMax;
|
||||||
|
|
||||||
double factor;
|
double factor;
|
||||||
bool useOpenGLFlag;
|
|
||||||
|
|
||||||
int decimalPlaces;
|
int decimalPlaces;
|
||||||
|
bool useOpenGLFlag;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LINEARDIALGADGETCONFIGURATION_H
|
#endif // LINEARDIALGADGETCONFIGURATION_H
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
<layout class="QHBoxLayout" name="horizontalLayout_66">
|
||||||
<property name="topMargin">
|
<property name="topMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
|
@ -42,4 +42,6 @@ LoggingGadget::~LoggingGadget()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LoggingGadget::loadConfiguration(IUAVGadgetConfiguration *config)
|
void LoggingGadget::loadConfiguration(IUAVGadgetConfiguration *config)
|
||||||
{}
|
{
|
||||||
|
Q_UNUSED(config);
|
||||||
|
}
|
||||||
|
@ -48,9 +48,8 @@ PositionField::PositionField(QWidget *parent) :
|
|||||||
setScene(new QGraphicsScene(this));
|
setScene(new QGraphicsScene(this));
|
||||||
setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
|
||||||
|
|
||||||
m_renderer = new QSvgRenderer();
|
m_renderer = new QSvgRenderer();
|
||||||
bool success = m_renderer->load(QString(":/magicwaypoint/images/positionfield.svg"));
|
m_renderer->load(QString(":/magicwaypoint/images/positionfield.svg"));
|
||||||
Q_ASSERT(success);
|
|
||||||
|
|
||||||
m_background = new QGraphicsSvgItem();
|
m_background = new QGraphicsSvgItem();
|
||||||
m_background->setSharedRenderer(m_renderer);
|
m_background->setSharedRenderer(m_renderer);
|
||||||
|
@ -46,9 +46,9 @@ QStringList NotificationItem::retryValues;
|
|||||||
|
|
||||||
NotificationItem::NotificationItem(QObject *parent)
|
NotificationItem::NotificationItem(QObject *parent)
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
, _currentUpdatePlayed(false)
|
|
||||||
, isNowPlaying(0)
|
, isNowPlaying(0)
|
||||||
, _isPlayed(false)
|
, _isPlayed(false)
|
||||||
|
, _currentUpdatePlayed(false)
|
||||||
, _timer(NULL)
|
, _timer(NULL)
|
||||||
, _expireTimer(NULL)
|
, _expireTimer(NULL)
|
||||||
, _soundCollectionPath("")
|
, _soundCollectionPath("")
|
||||||
|
@ -144,6 +144,7 @@ void NotifyItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model
|
|||||||
|
|
||||||
void NotifyItemDelegate::selectRow(const QString & text)
|
void NotifyItemDelegate::selectRow(const QString & text)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(text);
|
||||||
QComboBox *combo = qobject_cast<QComboBox *>(sender());
|
QComboBox *combo = qobject_cast<QComboBox *>(sender());
|
||||||
QTableWidget *table = new QTableWidget;
|
QTableWidget *table = new QTableWidget;
|
||||||
|
|
||||||
|
@ -351,13 +351,6 @@ void SoundNotifyPlugin::stateChanged(QMediaPlayer::State newstate)
|
|||||||
playNotification(notification);
|
playNotification(notification);
|
||||||
qNotifyDebug() << "end playNotification";
|
qNotifyDebug() << "end playNotification";
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (newstate == QMediaPlayer::ServiceMissingError) {
|
|
||||||
if (phonon.mo->error() == 0) {
|
|
||||||
qDebug() << "Phonon::ErrorState: ErrorType = " << phonon.mo->error();
|
|
||||||
phonon.mo->stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,7 +640,8 @@ void NotifyPluginOptionsPage::on_FinishedPlaying()
|
|||||||
|
|
||||||
void NotifyPluginOptionsPage::on_toggled_checkEnableSound(bool state)
|
void NotifyPluginOptionsPage::on_toggled_checkEnableSound(bool state)
|
||||||
{
|
{
|
||||||
bool state1 = 1 ^ state;
|
Q_UNUSED(state);
|
||||||
|
// bool state1 = 1 ^ state;
|
||||||
|
|
||||||
// QList<Phonon::Path> listOutputs = _testSound->outputPaths();
|
// QList<Phonon::Path> listOutputs = _testSound->outputPaths();
|
||||||
// Phonon::AudioOutput *audioOutput = (Phonon::AudioOutput *)listOutputs.last().sink();
|
// Phonon::AudioOutput *audioOutput = (Phonon::AudioOutput *)listOutputs.last().sink();
|
||||||
|
@ -186,6 +186,7 @@ QStringList NotifyTableModel::mimeTypes() const
|
|||||||
bool NotifyTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row,
|
bool NotifyTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row,
|
||||||
int column, const QModelIndex & parent)
|
int column, const QModelIndex & parent)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(column);
|
||||||
if (action == Qt::IgnoreAction) {
|
if (action == Qt::IgnoreAction) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -233,11 +234,9 @@ bool NotifyTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool success = insertRows(rows + direction, 1, QModelIndex());
|
insertRows(rows + direction, 1, QModelIndex());
|
||||||
Q_ASSERT(success);
|
|
||||||
_list.replace(rows + direction, item);
|
_list.replace(rows + direction, item);
|
||||||
success = removeRows(dragged, 1, QModelIndex());
|
removeRows(dragged, 1, QModelIndex());
|
||||||
Q_ASSERT(success);
|
|
||||||
if (direction == UP_DIRECTION) {
|
if (direction == UP_DIRECTION) {
|
||||||
++rows;
|
++rows;
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ public:
|
|||||||
NotifyTableModel(QList<NotificationItem *> & parentList, QObject *parent = 0);
|
NotifyTableModel(QList<NotificationItem *> & parentList, QObject *parent = 0);
|
||||||
int rowCount(const QModelIndex & parent = QModelIndex()) const
|
int rowCount(const QModelIndex & parent = QModelIndex()) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(parent);
|
||||||
return _list.count();
|
return _list.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1205,9 +1205,9 @@ int HID_API_EXPORT_CALL hid_get_indexed_string(hid_device *dev, int string_index
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
HID_API_EXPORT const wchar_t * HID_API_CALL hid_error(hid_device *dev)
|
HID_API_EXPORT const wchar_t * HID_API_CALL hid_error(hid_device *dev __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,19 +92,14 @@ modelMapProxy::overlayType modelMapProxy::overlayTranslate(int type)
|
|||||||
case MapDataDelegate::MODE_DRIVEVECTOR:
|
case MapDataDelegate::MODE_DRIVEVECTOR:
|
||||||
return OVERLAY_LINE;
|
return OVERLAY_LINE;
|
||||||
|
|
||||||
break;
|
|
||||||
case MapDataDelegate::MODE_FLYCIRCLERIGHT:
|
case MapDataDelegate::MODE_FLYCIRCLERIGHT:
|
||||||
case MapDataDelegate::MODE_DRIVECIRCLERIGHT:
|
case MapDataDelegate::MODE_DRIVECIRCLERIGHT:
|
||||||
return OVERLAY_CIRCLE_RIGHT;
|
return OVERLAY_CIRCLE_RIGHT;
|
||||||
|
|
||||||
break;
|
|
||||||
case MapDataDelegate::MODE_FLYCIRCLELEFT:
|
case MapDataDelegate::MODE_FLYCIRCLELEFT:
|
||||||
case MapDataDelegate::MODE_DRIVECIRCLELEFT:
|
case MapDataDelegate::MODE_DRIVECIRCLELEFT:
|
||||||
return OVERLAY_CIRCLE_LEFT;
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
break;
|
return OVERLAY_CIRCLE_LEFT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +292,11 @@ void modelMapProxy::dataChanged(const QModelIndex &topLeft, const QModelIndex &b
|
|||||||
void modelMapProxy::rowsInserted(const QModelIndex &parent, int first, int last)
|
void modelMapProxy::rowsInserted(const QModelIndex &parent, int first, int last)
|
||||||
{
|
{
|
||||||
Q_UNUSED(parent);
|
Q_UNUSED(parent);
|
||||||
for (int x = first; x < last + 1; x++) {
|
Q_UNUSED(first);
|
||||||
|
Q_UNUSED(last);
|
||||||
|
|
||||||
|
/*
|
||||||
|
for (int x = first; x < last + 1; x++) {
|
||||||
QModelIndex index;
|
QModelIndex index;
|
||||||
WayPointItem *item;
|
WayPointItem *item;
|
||||||
internals::PointLatLng latlng;
|
internals::PointLatLng latlng;
|
||||||
@ -325,7 +324,8 @@ void modelMapProxy::rowsInserted(const QModelIndex &parent, int first, int last)
|
|||||||
} else {
|
} else {
|
||||||
item = myMap->WPInsert(latlng, altitude, desc, x);
|
item = myMap->WPInsert(latlng, altitude, desc, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
refreshOverlays();
|
refreshOverlays();
|
||||||
}
|
}
|
||||||
void modelMapProxy::deleteWayPoint(int number)
|
void modelMapProxy::deleteWayPoint(int number)
|
||||||
|
@ -51,10 +51,10 @@ public:
|
|||||||
void editWaypoint(mapcontrol::WayPointItem *waypoint_item);
|
void editWaypoint(mapcontrol::WayPointItem *waypoint_item);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::opmap_edit_waypoint_dialog *ui;
|
|
||||||
QDataWidgetMapper *mapper;
|
QDataWidgetMapper *mapper;
|
||||||
QAbstractItemModel *model;
|
QAbstractItemModel *model;
|
||||||
QItemSelectionModel *itemSelection;
|
QItemSelectionModel *itemSelection;
|
||||||
|
Ui::opmap_edit_waypoint_dialog *ui;
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -490,13 +490,6 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
<zorder></zorder>
|
|
||||||
<zorder></zorder>
|
|
||||||
<zorder></zorder>
|
|
||||||
<zorder></zorder>
|
|
||||||
<zorder>verticalSpacer</zorder>
|
|
||||||
<zorder>line</zorder>
|
|
||||||
<zorder>label_7</zorder>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -153,7 +153,7 @@ void PathActionEditorTreeModel::addSingleField(int index, UAVObjectField *field,
|
|||||||
data.append(QString("[%1]").arg((field->getElementNames())[index]));
|
data.append(QString("[%1]").arg((field->getElementNames())[index]));
|
||||||
}
|
}
|
||||||
|
|
||||||
FieldTreeItem *item;
|
FieldTreeItem *item = NULL;
|
||||||
UAVObjectField::FieldType type = field->getType();
|
UAVObjectField::FieldType type = field->getType();
|
||||||
// hack: list available actions in an enum
|
// hack: list available actions in an enum
|
||||||
if (field->getName().compare("Action") == 0 && type == UAVObjectField::UINT8) {
|
if (field->getName().compare("Action") == 0 && type == UAVObjectField::UINT8) {
|
||||||
@ -423,8 +423,9 @@ void PathActionEditorTreeModel::newInstance(UAVObject *obj)
|
|||||||
|
|
||||||
void PathActionEditorTreeModel::objUpdated(UAVObject *obj)
|
void PathActionEditorTreeModel::objUpdated(UAVObject *obj)
|
||||||
{
|
{
|
||||||
quint16 index = m_objManager->getObject("WaypointActive")->getField("Index")->getValue().toInt();
|
Q_UNUSED(obj);
|
||||||
quint16 action;
|
quint16 index = m_objManager->getObject("WaypointActive")->getField("Index")->getValue().toInt();
|
||||||
|
quint16 action = 0;
|
||||||
|
|
||||||
foreach(TreeItem * child, m_waypointsTree->treeChildren()) {
|
foreach(TreeItem * child, m_waypointsTree->treeChildren()) {
|
||||||
ObjectTreeItem *objItem = dynamic_cast<ObjectTreeItem *>(child);
|
ObjectTreeItem *objItem = dynamic_cast<ObjectTreeItem *>(child);
|
||||||
|
@ -108,6 +108,7 @@ void TreeItem::apply()
|
|||||||
|
|
||||||
void TreeItem::setHighlight(bool highlight)
|
void TreeItem::setHighlight(bool highlight)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(highlight)
|
||||||
// m_highlight = highlight;
|
// m_highlight = highlight;
|
||||||
m_changed = false;
|
m_changed = false;
|
||||||
}
|
}
|
||||||
|
@ -162,6 +162,7 @@ void PfdQmlGadgetWidget::setAltitudeFactor(double factor)
|
|||||||
|
|
||||||
void PfdQmlGadgetWidget::setOpenGLEnabled(bool arg)
|
void PfdQmlGadgetWidget::setOpenGLEnabled(bool arg)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(arg);
|
||||||
setTerrainEnabled(m_terrainEnabled);
|
setTerrainEnabled(m_terrainEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +155,8 @@ void ConnectionDiagram::setupGraphicsScene()
|
|||||||
void ConnectionDiagram::setupGraphicsSceneItems(QList<QString> elementsToShow)
|
void ConnectionDiagram::setupGraphicsSceneItems(QList<QString> elementsToShow)
|
||||||
{
|
{
|
||||||
qreal z = 0;
|
qreal z = 0;
|
||||||
QRectF backgBounds = m_renderer->boundsOnElement("background");
|
|
||||||
|
// QRectF backgBounds = m_renderer->boundsOnElement("background");
|
||||||
|
|
||||||
foreach(QString elementId, elementsToShow) {
|
foreach(QString elementId, elementsToShow) {
|
||||||
if (m_renderer->elementExists(elementId)) {
|
if (m_renderer->elementExists(elementId)) {
|
||||||
|
@ -398,10 +398,9 @@ void VehicleConfigurationHelper::applySensorBiasConfiguration()
|
|||||||
|
|
||||||
void VehicleConfigurationHelper::applyStabilizationConfiguration()
|
void VehicleConfigurationHelper::applyStabilizationConfiguration()
|
||||||
{
|
{
|
||||||
StabilizationSettings *stabSettings = StabilizationSettings::GetInstance(m_uavoManager);
|
StabilizationSettings *stabSettings = StabilizationSettings::GetInstance(m_uavoManager);
|
||||||
|
|
||||||
Q_ASSERT(stabSettings);
|
Q_ASSERT(stabSettings);
|
||||||
StabilizationSettings::DataFields data = stabSettings->getData();
|
|
||||||
|
|
||||||
StabilizationSettings defaultSettings;
|
StabilizationSettings defaultSettings;
|
||||||
stabSettings->setData(defaultSettings.getData());
|
stabSettings->setData(defaultSettings.getData());
|
||||||
@ -715,11 +714,6 @@ GUIConfigDataUnion VehicleConfigurationHelper::getGUIConfigData()
|
|||||||
{
|
{
|
||||||
GUIConfigDataUnion configData;
|
GUIConfigDataUnion configData;
|
||||||
|
|
||||||
SystemSettings *systemSettings = SystemSettings::GetInstance(m_uavoManager);
|
|
||||||
|
|
||||||
Q_ASSERT(systemSettings);
|
|
||||||
SystemSettings::DataFields systemSettingsData = systemSettings->getData();
|
|
||||||
|
|
||||||
for (int i = 0; i < (int)(SystemSettings::GUICONFIGDATA_NUMELEM); i++) {
|
for (int i = 0; i < (int)(SystemSettings::GUICONFIGDATA_NUMELEM); i++) {
|
||||||
configData.UAVObject[i] = 0; // systemSettingsData.GUIConfigData[i];
|
configData.UAVObject[i] = 0; // systemSettingsData.GUIConfigData[i];
|
||||||
}
|
}
|
||||||
@ -731,7 +725,7 @@ void VehicleConfigurationHelper::setupQuadCopter()
|
|||||||
{
|
{
|
||||||
mixerChannelSettings channels[10];
|
mixerChannelSettings channels[10];
|
||||||
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
||||||
SystemSettings::AirframeTypeOptions frame;
|
SystemSettings::AirframeTypeOptions frame = SystemSettings::AIRFRAMETYPE_QUADX;
|
||||||
|
|
||||||
switch (m_configSource->getVehicleSubType()) {
|
switch (m_configSource->getVehicleSubType()) {
|
||||||
case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS:
|
case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS:
|
||||||
@ -821,7 +815,7 @@ void VehicleConfigurationHelper::setupHexaCopter()
|
|||||||
{
|
{
|
||||||
mixerChannelSettings channels[10];
|
mixerChannelSettings channels[10];
|
||||||
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
||||||
SystemSettings::AirframeTypeOptions frame;
|
SystemSettings::AirframeTypeOptions frame = SystemSettings::AIRFRAMETYPE_HEXA;
|
||||||
|
|
||||||
switch (m_configSource->getVehicleSubType()) {
|
switch (m_configSource->getVehicleSubType()) {
|
||||||
case VehicleConfigurationSource::MULTI_ROTOR_HEXA:
|
case VehicleConfigurationSource::MULTI_ROTOR_HEXA:
|
||||||
@ -1000,7 +994,7 @@ void VehicleConfigurationHelper::setupOctoCopter()
|
|||||||
{
|
{
|
||||||
mixerChannelSettings channels[10];
|
mixerChannelSettings channels[10];
|
||||||
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
GUIConfigDataUnion guiSettings = getGUIConfigData();
|
||||||
SystemSettings::AirframeTypeOptions frame;
|
SystemSettings::AirframeTypeOptions frame = SystemSettings::AIRFRAMETYPE_OCTO;
|
||||||
|
|
||||||
switch (m_configSource->getVehicleSubType()) {
|
switch (m_configSource->getVehicleSubType()) {
|
||||||
case VehicleConfigurationSource::MULTI_ROTOR_OCTO:
|
case VehicleConfigurationSource::MULTI_ROTOR_OCTO:
|
||||||
|
@ -46,6 +46,7 @@ MonitorGadget::~MonitorGadget()
|
|||||||
*/
|
*/
|
||||||
void MonitorGadget::loadConfiguration(IUAVGadgetConfiguration *config)
|
void MonitorGadget::loadConfiguration(IUAVGadgetConfiguration *config)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(config);
|
||||||
// MonitorGadgetConfiguration *m = qobject_cast<MonitorGadgetConfiguration *>(config);
|
// MonitorGadgetConfiguration *m = qobject_cast<MonitorGadgetConfiguration *>(config);
|
||||||
|
|
||||||
// m_widget->setSystemFile(m->getSystemFile()); // Triggers widget repaint
|
// m_widget->setSystemFile(m->getSystemFile()); // Triggers widget repaint
|
||||||
|
@ -47,6 +47,7 @@ IUAVGadgetConfiguration *MonitorGadgetConfiguration::clone()
|
|||||||
*/
|
*/
|
||||||
void MonitorGadgetConfiguration::saveConfig(QSettings *qSettings) const
|
void MonitorGadgetConfiguration::saveConfig(QSettings *qSettings) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(qSettings);
|
||||||
// qSettings->setValue("acFilename", Utils::PathUtils().RemoveDataPath(m_acFilename));
|
// qSettings->setValue("acFilename", Utils::PathUtils().RemoveDataPath(m_acFilename));
|
||||||
// qSettings->setValue("bgFilename", Utils::PathUtils().RemoveDataPath(m_bgFilename));
|
// qSettings->setValue("bgFilename", Utils::PathUtils().RemoveDataPath(m_bgFilename));
|
||||||
// qSettings->setValue("enableVbo", m_enableVbo);
|
// qSettings->setValue("enableVbo", m_enableVbo);
|
||||||
|
@ -81,5 +81,6 @@ IUAVGadgetConfiguration *MonitorGadgetFactory::createConfiguration(QSettings *qS
|
|||||||
|
|
||||||
IOptionsPage *MonitorGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config)
|
IOptionsPage *MonitorGadgetFactory::createOptionsPage(IUAVGadgetConfiguration *config)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(config);
|
||||||
return 0; // new MonitorGadgetOptionsPage(qobject_cast<MonitorGadgetConfiguration *>(config));
|
return 0; // new MonitorGadgetOptionsPage(qobject_cast<MonitorGadgetConfiguration *>(config));
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,9 @@
|
|||||||
|
|
||||||
MonitorGadgetOptionsPage::MonitorGadgetOptionsPage(MonitorGadgetConfiguration *config, QObject *parent)
|
MonitorGadgetOptionsPage::MonitorGadgetOptionsPage(MonitorGadgetConfiguration *config, QObject *parent)
|
||||||
: IOptionsPage(parent)
|
: IOptionsPage(parent)
|
||||||
{}
|
{
|
||||||
|
Q_UNUSED(config);
|
||||||
|
}
|
||||||
|
|
||||||
MonitorGadgetOptionsPage::~MonitorGadgetOptionsPage()
|
MonitorGadgetOptionsPage::~MonitorGadgetOptionsPage()
|
||||||
{}
|
{}
|
||||||
|
@ -111,8 +111,8 @@ public slots:
|
|||||||
private:
|
private:
|
||||||
QColor m_recentlyUpdatedColor;
|
QColor m_recentlyUpdatedColor;
|
||||||
QColor m_manuallyChangedColor;
|
QColor m_manuallyChangedColor;
|
||||||
int m_recentlyUpdatedTimeout;
|
|
||||||
bool m_onlyHilightChangedValues;
|
bool m_onlyHilightChangedValues;
|
||||||
|
int m_recentlyUpdatedTimeout;
|
||||||
bool m_useCategorizedView;
|
bool m_useCategorizedView;
|
||||||
bool m_useScientificView;
|
bool m_useScientificView;
|
||||||
bool m_showMetaData;
|
bool m_showMetaData;
|
||||||
|
@ -94,13 +94,8 @@ void UAVObjectBrowserWidget::showMetaData(bool show)
|
|||||||
|
|
||||||
void UAVObjectBrowserWidget::categorize(bool categorize)
|
void UAVObjectBrowserWidget::categorize(bool categorize)
|
||||||
{
|
{
|
||||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
|
||||||
|
|
||||||
Q_ASSERT(pm);
|
|
||||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
|
||||||
Q_ASSERT(objManager);
|
|
||||||
|
|
||||||
UAVObjectTreeModel *tmpModel = m_model;
|
UAVObjectTreeModel *tmpModel = m_model;
|
||||||
|
|
||||||
m_model = new UAVObjectTreeModel(0, categorize, m_viewoptions->cbScientific->isChecked());
|
m_model = new UAVObjectTreeModel(0, categorize, m_viewoptions->cbScientific->isChecked());
|
||||||
m_model->setRecentlyUpdatedColor(m_recentlyUpdatedColor);
|
m_model->setRecentlyUpdatedColor(m_recentlyUpdatedColor);
|
||||||
m_model->setManuallyChangedColor(m_manuallyChangedColor);
|
m_model->setManuallyChangedColor(m_manuallyChangedColor);
|
||||||
@ -115,13 +110,8 @@ void UAVObjectBrowserWidget::categorize(bool categorize)
|
|||||||
|
|
||||||
void UAVObjectBrowserWidget::useScientificNotation(bool scientific)
|
void UAVObjectBrowserWidget::useScientificNotation(bool scientific)
|
||||||
{
|
{
|
||||||
ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
|
|
||||||
|
|
||||||
Q_ASSERT(pm);
|
|
||||||
UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();
|
|
||||||
Q_ASSERT(objManager);
|
|
||||||
|
|
||||||
UAVObjectTreeModel *tmpModel = m_model;
|
UAVObjectTreeModel *tmpModel = m_model;
|
||||||
|
|
||||||
m_model = new UAVObjectTreeModel(0, m_viewoptions->cbCategorized->isChecked(), scientific);
|
m_model = new UAVObjectTreeModel(0, m_viewoptions->cbCategorized->isChecked(), scientific);
|
||||||
m_model->setRecentlyUpdatedColor(m_recentlyUpdatedColor);
|
m_model->setRecentlyUpdatedColor(m_recentlyUpdatedColor);
|
||||||
m_model->setManuallyChangedColor(m_manuallyChangedColor);
|
m_model->setManuallyChangedColor(m_manuallyChangedColor);
|
||||||
|
@ -207,7 +207,7 @@ void UAVObjectTreeModel::addSingleField(int index, UAVObjectField *field, TreeIt
|
|||||||
data.append(QString("[%1]").arg((field->getElementNames())[index]));
|
data.append(QString("[%1]").arg((field->getElementNames())[index]));
|
||||||
}
|
}
|
||||||
|
|
||||||
FieldTreeItem *item;
|
FieldTreeItem *item = NULL;
|
||||||
UAVObjectField::FieldType type = field->getType();
|
UAVObjectField::FieldType type = field->getType();
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case UAVObjectField::BITFIELD:
|
case UAVObjectField::BITFIELD:
|
||||||
|
@ -110,12 +110,12 @@ private:
|
|||||||
TreeItem *m_rootItem;
|
TreeItem *m_rootItem;
|
||||||
TopTreeItem *m_settingsTree;
|
TopTreeItem *m_settingsTree;
|
||||||
TopTreeItem *m_nonSettingsTree;
|
TopTreeItem *m_nonSettingsTree;
|
||||||
|
bool m_useScientificFloatNotation;
|
||||||
|
bool m_categorize;
|
||||||
int m_recentlyUpdatedTimeout;
|
int m_recentlyUpdatedTimeout;
|
||||||
QColor m_recentlyUpdatedColor;
|
QColor m_recentlyUpdatedColor;
|
||||||
QColor m_manuallyChangedColor;
|
QColor m_manuallyChangedColor;
|
||||||
bool m_onlyHilightChangedValues;
|
bool m_onlyHilightChangedValues;
|
||||||
bool m_useScientificFloatNotation;
|
|
||||||
bool m_categorize;
|
|
||||||
|
|
||||||
// Highlight manager to handle highlighting of tree items.
|
// Highlight manager to handle highlighting of tree items.
|
||||||
HighLightManager *m_highlightManager;
|
HighLightManager *m_highlightManager;
|
||||||
|
@ -519,6 +519,19 @@ QString UAVObject::toStringData()
|
|||||||
return sout;
|
return sout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UAVObject::toXML(QXmlStreamWriter *xmlWriter)
|
||||||
|
{
|
||||||
|
xmlWriter->writeStartElement("object");
|
||||||
|
xmlWriter->writeAttribute("name", getName());
|
||||||
|
xmlWriter->writeAttribute("id", QString("%1-%2").arg(getObjID(), 1, 16).toUpper().arg(getInstID()));
|
||||||
|
xmlWriter->writeStartElement("fields");
|
||||||
|
foreach(UAVObjectField* field , fields) {
|
||||||
|
field->toXML(xmlWriter);
|
||||||
|
}
|
||||||
|
xmlWriter->writeEndElement(); // fields
|
||||||
|
xmlWriter->writeEndElement(); // object
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emit the transactionCompleted event (used by the UAVTalk plugin)
|
* Emit the transactionCompleted event (used by the UAVTalk plugin)
|
||||||
*/
|
*/
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <QXmlStreamWriter>
|
||||||
#include "uavobjectfield.h"
|
#include "uavobjectfield.h"
|
||||||
|
|
||||||
#define UAVOBJ_ACCESS_SHIFT 0
|
#define UAVOBJ_ACCESS_SHIFT 0
|
||||||
@ -127,6 +128,7 @@ public:
|
|||||||
QString toString();
|
QString toString();
|
||||||
QString toStringBrief();
|
QString toStringBrief();
|
||||||
QString toStringData();
|
QString toStringData();
|
||||||
|
void toXML(QXmlStreamWriter *xmlWriter);
|
||||||
void emitTransactionCompleted(bool success);
|
void emitTransactionCompleted(bool success);
|
||||||
void emitNewInstance(UAVObject *);
|
void emitNewInstance(UAVObject *);
|
||||||
|
|
||||||
|
@ -654,6 +654,24 @@ QString UAVObjectField::toString()
|
|||||||
return sout;
|
return sout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UAVObjectField::toXML(QXmlStreamWriter *xmlWriter)
|
||||||
|
{
|
||||||
|
xmlWriter->writeStartElement("field");
|
||||||
|
xmlWriter->writeAttribute("name", getName());
|
||||||
|
xmlWriter->writeAttribute("type", getTypeAsString());
|
||||||
|
if (!getUnits().isEmpty()) {
|
||||||
|
xmlWriter->writeAttribute("unit", getUnits());
|
||||||
|
}
|
||||||
|
for (unsigned int n = 0; n < numElements; ++n) {
|
||||||
|
xmlWriter->writeStartElement("value");
|
||||||
|
if(getElementNames().size() > 1) {
|
||||||
|
xmlWriter->writeAttribute("name", getElementNames().at(n));
|
||||||
|
}
|
||||||
|
xmlWriter->writeCharacters(getValue(n).toString());
|
||||||
|
xmlWriter->writeEndElement(); // value
|
||||||
|
}
|
||||||
|
xmlWriter->writeEndElement(); // field
|
||||||
|
}
|
||||||
|
|
||||||
qint32 UAVObjectField::pack(quint8 *dataOut)
|
qint32 UAVObjectField::pack(quint8 *dataOut)
|
||||||
{
|
{
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
#include <QXmlStreamWriter>
|
||||||
|
|
||||||
class UAVObject;
|
class UAVObject;
|
||||||
|
|
||||||
@ -72,6 +73,7 @@ public:
|
|||||||
bool isNumeric();
|
bool isNumeric();
|
||||||
bool isText();
|
bool isText();
|
||||||
QString toString();
|
QString toString();
|
||||||
|
void toXML(QXmlStreamWriter *xmlWriter);
|
||||||
|
|
||||||
bool isWithinLimits(QVariant var, quint32 index, int board = 0);
|
bool isWithinLimits(QVariant var, quint32 index, int board = 0);
|
||||||
QVariant getMaxLimit(quint32 index, int board = 0);
|
QVariant getMaxLimit(quint32 index, int board = 0);
|
||||||
|
@ -316,12 +316,11 @@ int UAVObjectUtilManager::setHomeLocation(double LLA[3], bool save_to_sdcard)
|
|||||||
{
|
{
|
||||||
double Be[3];
|
double Be[3];
|
||||||
|
|
||||||
int result = Utils::HomeLocationUtil().getDetails(LLA, Be);
|
Utils::HomeLocationUtil().getDetails(LLA, Be);
|
||||||
|
|
||||||
Q_ASSERT(result == 0);
|
|
||||||
|
|
||||||
// save the new settings
|
// save the new settings
|
||||||
HomeLocation *homeLocation = HomeLocation::GetInstance(obm);
|
HomeLocation *homeLocation = HomeLocation::GetInstance(obm);
|
||||||
|
|
||||||
Q_ASSERT(homeLocation != NULL);
|
Q_ASSERT(homeLocation != NULL);
|
||||||
|
|
||||||
HomeLocation::DataFields homeLocationData = homeLocation->getData();
|
HomeLocation::DataFields homeLocationData = homeLocation->getData();
|
||||||
|
@ -404,7 +404,7 @@ void ConfigTaskWidget::widgetsContentsChanged()
|
|||||||
{
|
{
|
||||||
QWidget *emitter = ((QWidget *)sender());
|
QWidget *emitter = ((QWidget *)sender());
|
||||||
emit widgetContentsChanged(emitter);
|
emit widgetContentsChanged(emitter);
|
||||||
double scale;
|
double scale = 1.0;
|
||||||
QVariant value;
|
QVariant value;
|
||||||
|
|
||||||
foreach(WidgetBinding * binding, m_widgetBindingsPerWidget.values(emitter)) {
|
foreach(WidgetBinding * binding, m_widgetBindingsPerWidget.values(emitter)) {
|
||||||
|
@ -64,7 +64,7 @@ public:
|
|||||||
uint32_t TxError;
|
uint32_t TxError;
|
||||||
uint16_t flags;
|
uint16_t flags;
|
||||||
port(QString name);
|
port(QString name);
|
||||||
~port();
|
virtual ~port();
|
||||||
portstatus status();
|
portstatus status();
|
||||||
private:
|
private:
|
||||||
portstatus mstatus;
|
portstatus mstatus;
|
||||||
|
@ -47,8 +47,8 @@ private:
|
|||||||
QQueue<QByteArray> queue;
|
QQueue<QByteArray> queue;
|
||||||
QMutex mutex;
|
QMutex mutex;
|
||||||
QMutex sendbufmutex;
|
QMutex sendbufmutex;
|
||||||
bool datapending;
|
|
||||||
bool endthread;
|
bool endthread;
|
||||||
|
bool datapending;
|
||||||
uint16_t sendstatus;
|
uint16_t sendstatus;
|
||||||
uint16_t receivestatus;
|
uint16_t receivestatus;
|
||||||
QWaitCondition sendwait;
|
QWaitCondition sendwait;
|
||||||
|
@ -225,6 +225,7 @@ void DeviceWidget::dfuStatus(QString str)
|
|||||||
|
|
||||||
void DeviceWidget::confirmCB(int value)
|
void DeviceWidget::confirmCB(int value)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(value);
|
||||||
updateButtons(true);
|
updateButtons(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,7 +278,7 @@ void DeviceWidget::loadFirmware()
|
|||||||
|
|
||||||
QByteArray desc = loadedFW.right(100);
|
QByteArray desc = loadedFW.right(100);
|
||||||
QPixmap px;
|
QPixmap px;
|
||||||
if (loadedFW.length() > m_dfu->devices[deviceID].SizeOfCode) {
|
if (loadedFW.length() > (int)m_dfu->devices[deviceID].SizeOfCode) {
|
||||||
myDevice->lblCRCL->setText(tr("Can't calculate, file too big for device"));
|
myDevice->lblCRCL->setText(tr("Can't calculate, file too big for device"));
|
||||||
} else {
|
} else {
|
||||||
myDevice->lblCRCL->setText(QString::number(DFUObject::CRCFromQBArray(loadedFW, m_dfu->devices[deviceID].SizeOfCode)));
|
myDevice->lblCRCL->setText(QString::number(DFUObject::CRCFromQBArray(loadedFW, m_dfu->devices[deviceID].SizeOfCode)));
|
||||||
|
@ -246,7 +246,7 @@ bool DFUObject::UploadData(qint32 const & numberOfBytes, QByteArray & data)
|
|||||||
buf[1] = OP_DFU::Upload; // DFU Command
|
buf[1] = OP_DFU::Upload; // DFU Command
|
||||||
int packetsize;
|
int packetsize;
|
||||||
float percentage;
|
float percentage;
|
||||||
int laspercentage;
|
int laspercentage = 0;
|
||||||
for (qint32 packetcount = 0; packetcount < numberOfPackets; ++packetcount) {
|
for (qint32 packetcount = 0; packetcount < numberOfPackets; ++packetcount) {
|
||||||
percentage = (float)(packetcount + 1) / numberOfPackets * 100;
|
percentage = (float)(packetcount + 1) / numberOfPackets * 100;
|
||||||
if (laspercentage != (int)percentage) {
|
if (laspercentage != (int)percentage) {
|
||||||
@ -433,7 +433,7 @@ bool DFUObject::StartDownloadT(QByteArray *fw, qint32 const & numberOfBytes, Tra
|
|||||||
qDebug() << "StartDownload:" << numberOfPackets << "packets" << " Last Packet Size=" << lastPacketCount << " " << result << " bytes sent";
|
qDebug() << "StartDownload:" << numberOfPackets << "packets" << " Last Packet Size=" << lastPacketCount << " " << result << " bytes sent";
|
||||||
}
|
}
|
||||||
float percentage;
|
float percentage;
|
||||||
int laspercentage;
|
int laspercentage = 0;
|
||||||
|
|
||||||
// Now get those packets:
|
// Now get those packets:
|
||||||
for (qint32 x = 0; x < numberOfPackets; ++x) {
|
for (qint32 x = 0; x < numberOfPackets; ++x) {
|
||||||
@ -637,8 +637,8 @@ bool DFUObject::findDevices()
|
|||||||
buf[7] = 0;
|
buf[7] = 0;
|
||||||
buf[8] = 0;
|
buf[8] = 0;
|
||||||
buf[9] = 0;
|
buf[9] = 0;
|
||||||
int result = sendData(buf, BUF_LEN);
|
sendData(buf, BUF_LEN);
|
||||||
result = receiveData(buf, BUF_LEN);
|
receiveData(buf, BUF_LEN);
|
||||||
devices[x].ID = buf[14];
|
devices[x].ID = buf[14];
|
||||||
devices[x].ID = devices[x].ID << 8 | (quint8)buf[15];
|
devices[x].ID = devices[x].ID << 8 | (quint8)buf[15];
|
||||||
devices[x].BL_Version = buf[7];
|
devices[x].BL_Version = buf[7];
|
||||||
@ -749,7 +749,7 @@ OP_DFU::Status DFUObject::UploadFirmwareT(const QString &sfile, const bool &veri
|
|||||||
pad = pad - arr.length();
|
pad = pad - arr.length();
|
||||||
arr.append(QByteArray(pad, 255));
|
arr.append(QByteArray(pad, 255));
|
||||||
}
|
}
|
||||||
if (devices[device].SizeOfCode < arr.length()) {
|
if (devices[device].SizeOfCode < (quint32)arr.length()) {
|
||||||
if (debug) {
|
if (debug) {
|
||||||
qDebug() << "ERROR file to big for device";
|
qDebug() << "ERROR file to big for device";
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ public:
|
|||||||
// DFUObject(bool debug);
|
// DFUObject(bool debug);
|
||||||
DFUObject(bool debug, bool use_serial, QString port);
|
DFUObject(bool debug, bool use_serial, QString port);
|
||||||
|
|
||||||
~DFUObject();
|
virtual ~DFUObject();
|
||||||
|
|
||||||
// Service commands:
|
// Service commands:
|
||||||
bool enterDFU(int const &devNumber);
|
bool enterDFU(int const &devNumber);
|
||||||
|
@ -11,6 +11,10 @@ macx {
|
|||||||
QMAKE_CXXFLAGS += -fpermissive
|
QMAKE_CXXFLAGS += -fpermissive
|
||||||
}
|
}
|
||||||
|
|
||||||
|
!macx {
|
||||||
|
QMAKE_CXXFLAGS += -Wno-enum-compare
|
||||||
|
}
|
||||||
|
|
||||||
HEADERS += uploadergadget.h \
|
HEADERS += uploadergadget.h \
|
||||||
uploadergadgetconfiguration.h \
|
uploadergadgetconfiguration.h \
|
||||||
uploadergadgetfactory.h \
|
uploadergadgetfactory.h \
|
||||||
|
Loading…
Reference in New Issue
Block a user