Commit 437053dd authored by Lorenz Meier's avatar Lorenz Meier

Merge branch 'master' of github.com:mavlink/qgroundcontrol

parents f00c9608 fd1272ea
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include <QDebug> #include <QDebug>
#include <QCoreApplication> #include <QCoreApplication>
#include <QFile> #include <QFile>
#include <QRegularExpression>
#include "QGC.h" #include "QGC.h"
#include "QGCAudioWorker.h" #include "QGCAudioWorker.h"
...@@ -89,7 +90,7 @@ QGCAudioWorker::~QGCAudioWorker() ...@@ -89,7 +90,7 @@ QGCAudioWorker::~QGCAudioWorker()
#endif #endif
} }
void QGCAudioWorker::say(QString text, int severity) void QGCAudioWorker::say(QString inText, int severity)
{ {
static bool threadInit = false; static bool threadInit = false;
if (!threadInit) { if (!threadInit) {
...@@ -99,6 +100,7 @@ void QGCAudioWorker::say(QString text, int severity) ...@@ -99,6 +100,7 @@ void QGCAudioWorker::say(QString text, int severity)
if (!muted) if (!muted)
{ {
QString text = _fixMillisecondString(inText);
// Prepend high priority text with alert beep // Prepend high priority text with alert beep
if (severity < GAudioOutput::AUDIO_SEVERITY_CRITICAL) { if (severity < GAudioOutput::AUDIO_SEVERITY_CRITICAL) {
beep(); beep();
...@@ -139,7 +141,7 @@ void QGCAudioWorker::say(QString text, int severity) ...@@ -139,7 +141,7 @@ void QGCAudioWorker::say(QString text, int severity)
#else #else
// Make sure there isn't an unused variable warning when speech output is disabled // Make sure there isn't an unused variable warning when speech output is disabled
Q_UNUSED(text); Q_UNUSED(inText);
#endif #endif
} }
} }
...@@ -170,3 +172,40 @@ bool QGCAudioWorker::isMuted() ...@@ -170,3 +172,40 @@ bool QGCAudioWorker::isMuted()
{ {
return this->muted; return this->muted;
} }
bool QGCAudioWorker::_getMillisecondString(const QString& string, QString& match, int& number) {
QRegularExpression re("([0-9]*ms)");
QRegularExpressionMatchIterator i = re.globalMatch(string);
while (i.hasNext()) {
QRegularExpressionMatch qmatch = i.next();
if (qmatch.hasMatch()) {
match = qmatch.captured(0);
number = qmatch.captured(0).replace("ms", "").toInt();
return true;
}
}
return false;
}
QString QGCAudioWorker::_fixMillisecondString(const QString& string) {
QString match;
QString newNumber;
QString result = string;
int number;
if(_getMillisecondString(string, match, number) && number > 1000) {
if(number < 60000) {
int seconds = number / 1000;
newNumber = QString("%1 second%2").arg(seconds).arg(seconds > 1 ? "s" : "");
} else {
int minutes = number / 60000;
int seconds = (number - (minutes * 60000)) / 1000;
if (!seconds) {
newNumber = QString("%1 minute%2").arg(minutes).arg(minutes > 1 ? "s" : "");
} else {
newNumber = QString("%1 minute%2 and %3 second%4").arg(minutes).arg(minutes > 1 ? "s" : "").arg(seconds).arg(seconds > 1 ? "s" : "");
}
}
result.replace(match, newNumber);
}
return result;
}
...@@ -50,6 +50,9 @@ protected: ...@@ -50,6 +50,9 @@ protected:
bool emergency; ///< Emergency status flag bool emergency; ///< Emergency status flag
QTimer *emergencyTimer; QTimer *emergencyTimer;
bool muted; bool muted;
private:
QString _fixMillisecondString(const QString& string);
bool _getMillisecondString(const QString& string, QString& match, int& number);
}; };
#endif // QGCAUDIOWORKER_H #endif // QGCAUDIOWORKER_H
...@@ -102,3 +102,14 @@ void MockQGCUASParamManager::_loadParams(void) ...@@ -102,3 +102,14 @@ void MockQGCUASParamManager::_loadParams(void)
_mapParams[paramName] = paramValue; _mapParams[paramName] = paramValue;
} }
} }
QList<int> MockQGCUASParamManager::getComponentForParam(const QString& parameter) const
{
if (_mapParams.contains(parameter)) {
QList<int> list;
list << 50;
return list;
} else {
return QList<int>();
}
}
...@@ -77,7 +77,7 @@ public: ...@@ -77,7 +77,7 @@ public:
public: public:
// Unimplemented QGCUASParamManagerInterface overrides // Unimplemented QGCUASParamManagerInterface overrides
virtual QList<int> getComponentForParam(const QString& parameter) const { Q_ASSERT(false); Q_UNUSED(parameter); return _bogusQListInt; } virtual QList<int> getComponentForParam(const QString& parameter) const;
virtual void setParamDescriptions(const QMap<QString,QString>& paramDescs) { Q_ASSERT(false); Q_UNUSED(paramDescs); } virtual void setParamDescriptions(const QMap<QString,QString>& paramDescs) { Q_ASSERT(false); Q_UNUSED(paramDescs); }
virtual int countPendingParams() { Q_ASSERT(false); return 0; } virtual int countPendingParams() { Q_ASSERT(false); return 0; }
virtual UASParameterDataModel* dataModel() { Q_ASSERT(false); return NULL; } virtual UASParameterDataModel* dataModel() { Q_ASSERT(false); return NULL; }
......
...@@ -924,6 +924,11 @@ void PX4RCCalibration::_writeCalibration(void) ...@@ -924,6 +924,11 @@ void PX4RCCalibration::_writeCalibration(void)
paramMgr->setPendingParam(0, _rgFunctionInfo[i].parameterName, paramChannel); paramMgr->setPendingParam(0, _rgFunctionInfo[i].parameterName, paramChannel);
} }
// If the RC_CHAN_COUNT parameter is available write the channel count
if (paramMgr->getComponentForParam("RC_CHAN_CNT").count() != 0) {
paramMgr->setPendingParam(0, "RC_CHAN_CNT", _chanCount);
}
//let the param mgr manage sending all the pending RC_foo updates and persisting after //let the param mgr manage sending all the pending RC_foo updates and persisting after
paramMgr->sendPendingParameters(true, true); paramMgr->sendPendingParameters(true, true);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment