8 changed files with 487 additions and 9 deletions
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
#include "AP2ConfigWidget.h" |
||||
|
||||
AP2ConfigWidget::AP2ConfigWidget(QWidget *parent) : QWidget(parent) |
||||
{ |
||||
m_uas = 0; |
||||
connect(UASManager::instance(),SIGNAL(activeUASSet(UASInterface*)),this,SLOT(activeUASSet(UASInterface*))); |
||||
activeUASSet(UASManager::instance()->getActiveUAS()); |
||||
} |
||||
void AP2ConfigWidget::activeUASSet(UASInterface *uas) |
||||
{ |
||||
if (!uas) return; |
||||
if (m_uas) |
||||
{ |
||||
disconnect(m_uas,SIGNAL(parameterChanged(int,int,QString,QVariant)),this,SLOT(parameterChanged(int,int,QString,QVariant))); |
||||
} |
||||
m_uas = uas; |
||||
connect(m_uas,SIGNAL(parameterChanged(int,int,QString,QVariant)),this,SLOT(parameterChanged(int,int,QString,QVariant))); |
||||
} |
||||
|
||||
void AP2ConfigWidget::parameterChanged(int uas, int component, QString parameterName, QVariant value) |
||||
{ |
||||
|
||||
} |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
#ifndef AP2CONFIGWIDGET_H |
||||
#define AP2CONFIGWIDGET_H |
||||
|
||||
#include <QWidget> |
||||
#include "UASManager.h" |
||||
#include "UASInterface.h" |
||||
class AP2ConfigWidget : public QWidget |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
explicit AP2ConfigWidget(QWidget *parent = 0); |
||||
protected: |
||||
UASInterface *m_uas; |
||||
signals: |
||||
|
||||
public slots: |
||||
virtual void activeUASSet(UASInterface *uas); |
||||
virtual void parameterChanged(int uas, int component, QString parameterName, QVariant value); |
||||
}; |
||||
|
||||
#endif // AP2CONFIGWIDGET_H
|
@ -1,11 +1,238 @@
@@ -1,11 +1,238 @@
|
||||
#include "BatteryMonitorConfig.h" |
||||
#include <QMessageBox> |
||||
|
||||
|
||||
BatteryMonitorConfig::BatteryMonitorConfig(QWidget *parent) : QWidget(parent) |
||||
BatteryMonitorConfig::BatteryMonitorConfig(QWidget *parent) : AP2ConfigWidget(parent) |
||||
{ |
||||
ui.setupUi(this); |
||||
ui.monitorComboBox->addItem("0: Disabled"); |
||||
ui.monitorComboBox->addItem("3: Battery Volts"); |
||||
ui.monitorComboBox->addItem("4: Voltage and Current"); |
||||
|
||||
ui.sensorComboBox->addItem("0: Other"); |
||||
ui.sensorComboBox->addItem("1: AttoPilot 45A"); |
||||
ui.sensorComboBox->addItem("2: AttoPilot 90A"); |
||||
ui.sensorComboBox->addItem("3: AttoPilot 180A"); |
||||
ui.sensorComboBox->addItem("4: 3DR Power Module"); |
||||
|
||||
ui.apmVerComboBox->addItem("0: APM1"); |
||||
ui.apmVerComboBox->addItem("1: APM2 - 2.5 non 3DR"); |
||||
ui.apmVerComboBox->addItem("2: APM2.5 - 3DR Power Module"); |
||||
ui.apmVerComboBox->addItem("3: PX4"); |
||||
|
||||
connect(ui.monitorComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(monitorCurrentIndexChanged(int))); |
||||
connect(ui.sensorComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(sensorCurrentIndexChanged(int))); |
||||
connect(ui.apmVerComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(apmVerCurrentIndexChanged(int))); |
||||
|
||||
connect(ui.calcDividerLineEdit,SIGNAL(editingFinished()),this,SLOT(calcDividerSet())); |
||||
connect(ui.ampsPerVoltsLineEdit,SIGNAL(editingFinished()),this,SLOT(ampsPerVoltSet())); |
||||
connect(ui.battCapacityLineEdit,SIGNAL(editingFinished()),this,SLOT(batteryCapacitySet())); |
||||
|
||||
ui.alertOnLowCheckBox->setVisible(false); |
||||
|
||||
} |
||||
void BatteryMonitorConfig::calcDividerSet() |
||||
{ |
||||
bool ok = false; |
||||
float newval = ui.calcDividerLineEdit->text().toFloat(&ok); |
||||
if (!ok) |
||||
{ |
||||
//Error parsing;
|
||||
QMessageBox::information(0,"Error","Invalid number entered for voltage divider. Please try again"); |
||||
return; |
||||
} |
||||
m_uas->setParameter(0,"VOLT_DIVIDER",newval); |
||||
} |
||||
void BatteryMonitorConfig::ampsPerVoltSet() |
||||
{ |
||||
bool ok = false; |
||||
float newval = ui.ampsPerVoltsLineEdit->text().toFloat(&ok); |
||||
if (!ok) |
||||
{ |
||||
//Error parsing;
|
||||
QMessageBox::information(0,"Error","Invalid number entered for amps per volts. Please try again"); |
||||
return; |
||||
} |
||||
m_uas->setParameter(0,"AMPS_PER_VOLT",newval); |
||||
} |
||||
void BatteryMonitorConfig::batteryCapacitySet() |
||||
{ |
||||
bool ok = false; |
||||
float newval = ui.battCapacityLineEdit->text().toFloat(&ok); |
||||
if (!ok) |
||||
{ |
||||
//Error parsing;
|
||||
QMessageBox::information(0,"Error","Invalid number entered for amps per volts. Please try again"); |
||||
return; |
||||
} |
||||
m_uas->setParameter(0,"BATT_CAPACITY",newval); |
||||
} |
||||
|
||||
void BatteryMonitorConfig::monitorCurrentIndexChanged(int index) |
||||
{ |
||||
if (!m_uas) |
||||
{ |
||||
QMessageBox::information(0,tr("Error"),tr("Please connect to a MAV before attempting to set configuration")); |
||||
return; |
||||
} |
||||
if (index == 0) |
||||
{ |
||||
m_uas->setParameter(0,"BATT_VOLT_PIN",-1); |
||||
m_uas->setParameter(0,"BATT_CURR_PIN",-1); |
||||
m_uas->setParameter(0,"BATT_MONITOR",0); |
||||
ui.sensorComboBox->setEnabled(false); |
||||
ui.apmVerComboBox->setEnabled(false); |
||||
ui.measuredVoltsLineEdit->setEnabled(false); |
||||
ui.measuredVoltsLineEdit->setEnabled(false); |
||||
ui.calcDividerLineEdit->setEnabled(false); |
||||
ui.calcVoltsLineEdit->setEnabled(false); |
||||
ui.ampsPerVoltsLineEdit->setEnabled(false); |
||||
} |
||||
else if (index == 1) |
||||
{ |
||||
m_uas->setParameter(0,"BATT_MONITOR",3); |
||||
ui.sensorComboBox->setEnabled(false); |
||||
ui.apmVerComboBox->setEnabled(true); |
||||
ui.measuredVoltsLineEdit->setEnabled(true); |
||||
ui.calcDividerLineEdit->setEnabled(true); |
||||
ui.calcVoltsLineEdit->setEnabled(false); |
||||
ui.ampsPerVoltsLineEdit->setEnabled(false); |
||||
} |
||||
else if (index == 2) |
||||
{ |
||||
m_uas->setParameter(0,"BATT_MONITOR",4); |
||||
ui.sensorComboBox->setEnabled(true); |
||||
ui.apmVerComboBox->setEnabled(true); |
||||
ui.measuredVoltsLineEdit->setEnabled(true); |
||||
ui.calcDividerLineEdit->setEnabled(true); |
||||
ui.calcVoltsLineEdit->setEnabled(false); |
||||
ui.ampsPerVoltsLineEdit->setEnabled(true); |
||||
} |
||||
|
||||
|
||||
} |
||||
void BatteryMonitorConfig::sensorCurrentIndexChanged(int index) |
||||
{ |
||||
float maxvolt = 0; |
||||
float maxamps = 0; |
||||
float mvpervolt = 0; |
||||
float mvperamp = 0; |
||||
float topvolt = 0; |
||||
float topamps = 0; |
||||
|
||||
if (index == 1) |
||||
{ |
||||
//atto 45
|
||||
maxvolt = 13.6; |
||||
maxamps = 44.7; |
||||
mvpervolt = 242.3; |
||||
mvperamp = 73.20; |
||||
} |
||||
else if (index == 2) |
||||
{ |
||||
//atto 90
|
||||
maxvolt = 50; |
||||
maxamps = 89.4; |
||||
mvpervolt = 63.69; |
||||
mvperamp = 36.60; |
||||
} |
||||
else if (index == 3) |
||||
{ |
||||
//atto 180
|
||||
maxvolt = 50; |
||||
maxamps = 178.8; |
||||
mvpervolt = 63.69; |
||||
mvperamp = 18.30; |
||||
} |
||||
else if (index == 4) |
||||
{ |
||||
//3dr
|
||||
maxvolt = 50; |
||||
maxamps = 90; |
||||
mvpervolt = 100; |
||||
mvperamp = 55.55; |
||||
} |
||||
if (index == 0) |
||||
{ |
||||
//Other
|
||||
ui.ampsPerVoltsLineEdit->setEnabled(true); |
||||
ui.calcDividerLineEdit->setEnabled(true); |
||||
ui.measuredVoltsLineEdit->setEnabled(true); |
||||
} |
||||
else |
||||
{ |
||||
topvolt = (maxvolt * mvpervolt) / 1000.0; |
||||
topamps = (maxamps * mvperamp) / 1000.0; |
||||
|
||||
ui.calcDividerLineEdit->setText(QString::number(maxvolt/topvolt)); |
||||
ui.ampsPerVoltsLineEdit->setText(QString::number(maxamps / topamps)); |
||||
ui.ampsPerVoltsLineEdit->setEnabled(false); |
||||
ui.calcDividerLineEdit->setEnabled(false); |
||||
ui.measuredVoltsLineEdit->setEnabled(false); |
||||
} |
||||
} |
||||
|
||||
void BatteryMonitorConfig::apmVerCurrentIndexChanged(int index) |
||||
{ |
||||
|
||||
} |
||||
|
||||
BatteryMonitorConfig::~BatteryMonitorConfig() |
||||
{ |
||||
} |
||||
|
||||
void BatteryMonitorConfig::parameterChanged(int uas, int component, QString parameterName, QVariant value) |
||||
{ |
||||
if (parameterName == "VOLT_DIVIDER") |
||||
{ |
||||
ui.calcDividerLineEdit->setText(QString::number(value.toFloat(),'f',4)); |
||||
} |
||||
else if (parameterName == "AMP_PER_VOLT") |
||||
{ |
||||
ui.ampsPerVoltsLineEdit->setText(QString::number(value.toFloat(),'g',2)); |
||||
|
||||
} |
||||
else if (parameterName == "BATT_MONITOR") |
||||
{ |
||||
if (value.toInt() == 0) //0: Disable
|
||||
{ |
||||
ui.monitorComboBox->setCurrentIndex(0); |
||||
} |
||||
else if (value.toInt() == 3) //3: Battery volts
|
||||
{ |
||||
ui.monitorComboBox->setCurrentIndex(1); |
||||
} |
||||
else if (value.toInt() == 4) //4: Voltage and Current
|
||||
{ |
||||
ui.monitorComboBox->setCurrentIndex(2); |
||||
} |
||||
|
||||
} |
||||
else if (parameterName == "BATT_CAPACITY") |
||||
{ |
||||
ui.battCapacityLineEdit->setText(QString::number(value.toFloat())); |
||||
} |
||||
else if (parameterName == "BATT_VOLT_PIN") |
||||
{ |
||||
int ivalue = value.toInt(); |
||||
if (ivalue == 0) //APM1
|
||||
{ |
||||
ui.apmVerComboBox->setCurrentIndex(0); |
||||
} |
||||
else if (ivalue == 1) //APM2
|
||||
{ |
||||
ui.apmVerComboBox->setCurrentIndex(1); |
||||
} |
||||
else if (ivalue == 13) //APM2.5
|
||||
{ |
||||
ui.apmVerComboBox->setCurrentIndex(2); |
||||
} |
||||
else if (ivalue == 100) //PX4
|
||||
{ |
||||
ui.apmVerComboBox->setCurrentIndex(3); |
||||
} |
||||
} |
||||
else if (parameterName == "BATT_CURR_PIN") |
||||
{ |
||||
//Unused at the moment, everything is off BATT_VOLT_PIN
|
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue