diff --git a/HISTORY.txt b/HISTORY.txt index 54dc5c6d0..513b368a5 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -1,4 +1,9 @@ Short summary of changes. For a complete list see the git log. + +2012-10-06 +Receiver port can now be configured as PPM *and* PWM inputs. +Pin 1 is PPM, other pins are PWM inputs. + 2012-07-27 Added the ability to load stylesheets from external file according to operating system: macos.qss, linux.qss, windows.qss diff --git a/flight/CopterControl/System/pios_board.c b/flight/CopterControl/System/pios_board.c index ccbae3058..d0e8dc8cb 100644 --- a/flight/CopterControl/System/pios_board.c +++ b/flight/CopterControl/System/pios_board.c @@ -662,6 +662,33 @@ void PIOS_Board_Init(void) { } #endif /* PIOS_INCLUDE_PPM */ break; + case HWSETTINGS_CC_RCVRPORT_PPMPWM: + /* This is a combination of PPM and PWM inputs */ +#if defined(PIOS_INCLUDE_PPM) + { + uint32_t pios_ppm_id; + PIOS_PPM_Init(&pios_ppm_id, &pios_ppm_cfg); + + uint32_t pios_ppm_rcvr_id; + if (PIOS_RCVR_Init(&pios_ppm_rcvr_id, &pios_ppm_rcvr_driver, pios_ppm_id)) { + PIOS_Assert(0); + } + pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_PPM] = pios_ppm_rcvr_id; + } +#endif /* PIOS_INCLUDE_PPM */ +#if defined(PIOS_INCLUDE_PWM) + { + uint32_t pios_pwm_id; + PIOS_PWM_Init(&pios_pwm_id, &pios_pwm_with_ppm_cfg); + + uint32_t pios_pwm_rcvr_id; + if (PIOS_RCVR_Init(&pios_pwm_rcvr_id, &pios_pwm_rcvr_driver, pios_pwm_id)) { + PIOS_Assert(0); + } + pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_PWM] = pios_pwm_rcvr_id; + } +#endif /* PIOS_INCLUDE_PWM */ + break; } #if defined(PIOS_INCLUDE_GCSRCVR) @@ -683,6 +710,7 @@ void PIOS_Board_Init(void) { case HWSETTINGS_CC_RCVRPORT_DISABLED: case HWSETTINGS_CC_RCVRPORT_PWM: case HWSETTINGS_CC_RCVRPORT_PPM: + case HWSETTINGS_CC_RCVRPORT_PPMPWM: PIOS_Servo_Init(&pios_servo_cfg); break; case HWSETTINGS_CC_RCVRPORT_PPMOUTPUTS: diff --git a/flight/PiOS/STM32F10x/pios_dsm.c b/flight/PiOS/STM32F10x/pios_dsm.c index cb838b56b..b35560d5d 100644 --- a/flight/PiOS/STM32F10x/pios_dsm.c +++ b/flight/PiOS/STM32F10x/pios_dsm.c @@ -128,7 +128,7 @@ static void PIOS_DSM_Bind(struct pios_dsm_dev *dsm_dev, uint8_t bind) GPIO_SetBits(cfg->bind.gpio, cfg->bind.init.GPIO_Pin); /* on CC works up to 140ms, guess bind window is around 20-140ms after power up */ - PIOS_DELAY_WaitmS(60); + PIOS_DELAY_WaitmS(20); for (int i = 0; i < bind ; i++) { /* RX line, drive low for 120us */ diff --git a/flight/board_hw_defs/coptercontrol/board_hw_defs.c b/flight/board_hw_defs/coptercontrol/board_hw_defs.c index cc6ec4552..403657199 100644 --- a/flight/board_hw_defs/coptercontrol/board_hw_defs.c +++ b/flight/board_hw_defs/coptercontrol/board_hw_defs.c @@ -1134,6 +1134,19 @@ const struct pios_pwm_cfg pios_pwm_cfg = { .channels = pios_tim_rcvrport_all_channels, .num_channels = NELEMENTS(pios_tim_rcvrport_all_channels), }; + +const struct pios_pwm_cfg pios_pwm_with_ppm_cfg = { + .tim_ic_init = { + .TIM_ICPolarity = TIM_ICPolarity_Rising, + .TIM_ICSelection = TIM_ICSelection_DirectTI, + .TIM_ICPrescaler = TIM_ICPSC_DIV1, + .TIM_ICFilter = 0x0, + }, + /* Leave the first channel for PPM use and use the rest for PWM */ + .channels = &pios_tim_rcvrport_all_channels[1], + .num_channels = NELEMENTS(pios_tim_rcvrport_all_channels) - 1, +}; + #endif #if defined(PIOS_INCLUDE_I2C) diff --git a/ground/openpilotgcs/share/share.pro b/ground/openpilotgcs/share/share.pro index ad1f45b68..3c2a517b8 100644 --- a/ground/openpilotgcs/share/share.pro +++ b/ground/openpilotgcs/share/share.pro @@ -9,8 +9,9 @@ equals(copydata, 1) { for(dir, DATACOLLECTIONS) { exists($$GCS_SOURCE_TREE/share/openpilotgcs/$$dir) { macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() - !macx:data_copy.commands += $(MKDIR) $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() - !macx:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() + win32:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() + unix:data_copy.commands += $(MKDIR) $$targetPath(\"$$GCS_DATA_PATH/$$dir\") $$addNewline() + unix:data_copy.commands += $(COPY_DIR) $$targetPath(\"$$GCS_SOURCE_TREE/share/openpilotgcs/$$dir\") $$targetPath(\"$$GCS_DATA_PATH/\") $$addNewline() } } diff --git a/ground/openpilotgcs/src/libs/utils/mylistwidget.h b/ground/openpilotgcs/src/libs/utils/mylistwidget.h index 40059927e..176063681 100644 --- a/ground/openpilotgcs/src/libs/utils/mylistwidget.h +++ b/ground/openpilotgcs/src/libs/utils/mylistwidget.h @@ -42,7 +42,7 @@ class QTCREATOR_UTILS_EXPORT MyListWidget : public QListWidget { Q_OBJECT public: - MyListWidget(QWidget *parent) : QListWidget(parent), m_iconAbove(false) { } + MyListWidget(QWidget *parent) : QListWidget(parent), m_iconAbove(false) {} void setIconAbove(bool iconAbove) { m_iconAbove = iconAbove; } protected: QStyleOptionViewItem viewOptions() const; diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp index 3db71a316..639052e57 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp @@ -48,20 +48,24 @@ MyTabbedStackWidget::MyTabbedStackWidget(QWidget *parent, bool isVertical, bool toplevelLayout->addWidget(m_stackWidget); m_listWidget->setFlow(QListView::TopToBottom); m_listWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + m_listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } else { toplevelLayout = new QVBoxLayout; toplevelLayout->addWidget(m_stackWidget); toplevelLayout->addWidget(m_listWidget); m_listWidget->setFlow(QListView::LeftToRight); m_listWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + m_listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); } - if (m_iconAbove && m_vertical) + + if (m_iconAbove && m_vertical) { m_listWidget->setFixedWidth(90); // this should be computed instead + } toplevelLayout->setSpacing(0); toplevelLayout->setContentsMargins(0, 0, 0, 0); - m_listWidget->setSpacing(0); m_listWidget->setContentsMargins(0, 0, 0, 0); + m_listWidget->setSpacing(0); m_stackWidget->setContentsMargins(0, 0, 0, 0); setLayout(toplevelLayout); diff --git a/ground/openpilotgcs/src/plugins/config/configgadget.qrc b/ground/openpilotgcs/src/plugins/config/configgadget.qrc index ffdb93e66..532ed8b95 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadget.qrc +++ b/ground/openpilotgcs/src/plugins/config/configgadget.qrc @@ -1,23 +1,32 @@ images/help2.png - images/Airframe.png - images/Servo.png images/ahrs-calib.svg - images/AHRS-v1.3.png images/paper-plane.svg images/curve-bg.svg images/multirotor-shapes.svg images/ccpm_setup.svg images/PipXtreme.png - images/Transmitter.png images/help.png images/coptercontrol.svg - images/hw_config.png - images/gyroscope.png - images/TX.svg images/TX2.svg - images/camera.png - images/txpid.png + images/output_selected.png + images/output_normal.png + images/input_selected.png + images/input_normal.png + images/hardware_normal.png + images/hardware_selected.png + images/vehicle_normal.png + images/vehicle_selected.png + images/ins_selected.png + images/ins_normal.png + images/stabilization_selected.png + images/stabilization_normal.png + images/autotune_selected.png + images/autotune_normal.png + images/txpid_selected.png + images/txpid_normal.png + images/camstab_selected.png + images/camstab_normal.png diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 5a94ae5b1..12276bbca 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -67,33 +67,61 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) // ********************* QWidget *qwd; + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new DefaultHwSettingsWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/vehicle_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/vehicle_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigVehicleTypeWidget(this); - ftw->insertTab(ConfigGadgetWidget::aircraft, qwd, QIcon(":/configgadget/images/Airframe.png"), QString("Aircraft")); + ftw->insertTab(ConfigGadgetWidget::aircraft, qwd, *icon, QString("Vehicle")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/input_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/input_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigInputWidget(this); - ftw->insertTab(ConfigGadgetWidget::input, qwd, QIcon(":/configgadget/images/Transmitter.png"), QString("Input")); + ftw->insertTab(ConfigGadgetWidget::input, qwd, *icon, QString("Input")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/output_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/output_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigOutputWidget(this); - ftw->insertTab(ConfigGadgetWidget::output, qwd, QIcon(":/configgadget/images/Servo.png"), QString("Output")); + ftw->insertTab(ConfigGadgetWidget::output, qwd, *icon, QString("Output")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new DefaultAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/stabilization_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/stabilization_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigStabilizationWidget(this); - ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Stabilization")); + ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, *icon, QString("Stabilization")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/autotune_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/autotune_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigAutotuneWidget(this); - ftw->insertTab(ConfigGadgetWidget::autotune, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Autotune")); + ftw->insertTab(ConfigGadgetWidget::autotune, qwd, *icon, QString("Autotune")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/camstab_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/camstab_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigCameraStabilizationWidget(this); - ftw->insertTab(ConfigGadgetWidget::camerastabilization, qwd, QIcon(":/configgadget/images/camera.png"), QString("Camera Stab")); + ftw->insertTab(ConfigGadgetWidget::camerastabilization, qwd, *icon, QString("Camera Stab")); + icon = new QIcon(); + icon->addFile(":/configgadget/images/txpid_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/txpid_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigTxPIDWidget(this); - ftw->insertTab(ConfigGadgetWidget::txpid, qwd, QIcon(":/configgadget/images/txpid.png"), QString("TxPID")); + ftw->insertTab(ConfigGadgetWidget::txpid, qwd, *icon, QString("TxPID")); + ftw->setCurrentIndex(ConfigGadgetWidget::hardware); // ********************* // Listen to autopilot connection events @@ -103,8 +131,9 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) connect(telMngr, SIGNAL(disconnected()), this, SLOT(onAutopilotDisconnect())); // And check whether by any chance we are not already connected - if (telMngr->isConnected()) + if (telMngr->isConnected()) { onAutopilotConnect(); + } help = 0; connect(ftw,SIGNAL(currentAboutToShow(int,bool*)),this,SLOT(tabAboutToChange(int,bool*)));//,Qt::BlockingQueuedConnection); @@ -115,7 +144,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) if (pipxStatusObj != NULL ) { connect(pipxStatusObj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(updatePipXStatus(UAVObject*))); } else { - qDebug() << "Error: Object is unknown (PipXStatus)."; + qDebug() << "Error: Object is unknown (PipXStatus)."; } // Create the timer that is used to timeout the connection to the PipX. @@ -126,8 +155,6 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) ConfigGadgetWidget::~ConfigGadgetWidget() { - // Do nothing - // TODO: properly delete all the tabs in ftw before exiting } @@ -141,18 +168,25 @@ void ConfigGadgetWidget::startInputWizard() void ConfigGadgetWidget::resizeEvent(QResizeEvent *event) { - QWidget::resizeEvent(event); } void ConfigGadgetWidget::onAutopilotDisconnect() { ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); + + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); QWidget *qwd = new DefaultAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); + + icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new DefaultHwSettingsWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); emit autopilotDisconnected(); @@ -172,56 +206,64 @@ void ConfigGadgetWidget::onAutopilotConnect() { // Delete the INS panel, replace with CC Panel: ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); + + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); QWidget *qwd = new ConfigCCAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Attitude")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); + + icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Selected, QIcon::Off); qwd = new ConfigCCHWWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - } else if ((board & 0xff00) == 256 ) { - // Mainboard family - Q_ASSERT(0); - /* - ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - ftw->removeTab(ConfigGadgetWidget::sensors); - QWidget *qwd = new ConfigAHRSWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); - ftw->removeTab(ConfigGadgetWidget::hardware); - qwd = new ConfigProHWWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); - ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - */ } else if ((board & 0xff00) == 0x0900) { // Revolution sensor calibration ftw->setCurrentIndex(ConfigGadgetWidget::hardware); ftw->removeTab(ConfigGadgetWidget::sensors); + + QIcon *icon = new QIcon(); + icon->addFile(":/configgadget/images/ins_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/ins_selected.png", QSize(), QIcon::Selected, QIcon::Off); QWidget *qwd = new ConfigRevoWidget(this); - ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Revo")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, *icon, QString("Revo")); ftw->removeTab(ConfigGadgetWidget::hardware); + + icon = new QIcon(); + icon->addFile(":/configgadget/images/hardware_normal.png", QSize(), QIcon::Normal, QIcon::Off); + icon->addFile(":/configgadget/images/hardware_selected.png", QSize(), QIcon::Normal, QIcon::On); qwd = new ConfigProHWWidget(this); - ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, *icon, QString("Hardware")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); + } else { + //Unknown board + Q_ASSERT(0); } } emit autopilotConnected(); } -void ConfigGadgetWidget::tabAboutToChange(int i,bool * proceed) +void ConfigGadgetWidget::tabAboutToChange(int i, bool * proceed) { Q_UNUSED(i); - *proceed=true; - ConfigTaskWidget * wid=qobject_cast(ftw->currentWidget()); - if(!wid) + *proceed = true; + ConfigTaskWidget * wid = qobject_cast(ftw->currentWidget()); + if(!wid) { return; + } if(wid->isDirty()) { int ans=QMessageBox::warning(this,tr("Unsaved changes"),tr("The tab you are leaving has unsaved changes," "if you proceed they will be lost." "Do you still want to proceed?"),QMessageBox::Yes,QMessageBox::No); - if(ans==QMessageBox::No) + if(ans==QMessageBox::No) { *proceed=false; - else + } else { wid->setDirty(false); + } } } diff --git a/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png b/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png new file mode 100644 index 000000000..5c7ca95f1 Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/autotune_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/autotune_selected.png b/ground/openpilotgcs/src/plugins/config/images/autotune_selected.png new file mode 100644 index 000000000..53fe7cf0c Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/autotune_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/camstab_normal.png b/ground/openpilotgcs/src/plugins/config/images/camstab_normal.png new file mode 100644 index 000000000..07cf6c6c4 Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/camstab_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/camstab_selected.png b/ground/openpilotgcs/src/plugins/config/images/camstab_selected.png new file mode 100644 index 000000000..30b82f0fe Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/camstab_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/hardware_normal.png b/ground/openpilotgcs/src/plugins/config/images/hardware_normal.png new file mode 100644 index 000000000..077d9712e Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/hardware_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/hardware_selected.png b/ground/openpilotgcs/src/plugins/config/images/hardware_selected.png new file mode 100644 index 000000000..83611be21 Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/hardware_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/input_normal.png b/ground/openpilotgcs/src/plugins/config/images/input_normal.png new file mode 100644 index 000000000..e5315ced7 Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/input_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/input_selected.png b/ground/openpilotgcs/src/plugins/config/images/input_selected.png new file mode 100644 index 000000000..b4c2340ee Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/input_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/ins_normal.png b/ground/openpilotgcs/src/plugins/config/images/ins_normal.png new file mode 100644 index 000000000..335f0ff34 Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/ins_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/ins_selected.png b/ground/openpilotgcs/src/plugins/config/images/ins_selected.png new file mode 100644 index 000000000..7e04f144f Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/ins_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/output_normal.png b/ground/openpilotgcs/src/plugins/config/images/output_normal.png new file mode 100644 index 000000000..f5754786c Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/output_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/output_selected.png b/ground/openpilotgcs/src/plugins/config/images/output_selected.png new file mode 100644 index 000000000..016272b5e Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/output_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/stabilization_normal.png b/ground/openpilotgcs/src/plugins/config/images/stabilization_normal.png new file mode 100644 index 000000000..7d6c750cd Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/stabilization_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/stabilization_selected.png b/ground/openpilotgcs/src/plugins/config/images/stabilization_selected.png new file mode 100644 index 000000000..7394f23ed Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/stabilization_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/txpid_normal.png b/ground/openpilotgcs/src/plugins/config/images/txpid_normal.png new file mode 100644 index 000000000..79d2d1d7f Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/txpid_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/txpid_selected.png b/ground/openpilotgcs/src/plugins/config/images/txpid_selected.png new file mode 100644 index 000000000..0e4fe57d1 Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/txpid_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/vehicle_normal.png b/ground/openpilotgcs/src/plugins/config/images/vehicle_normal.png new file mode 100644 index 000000000..ef96bb78d Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/vehicle_normal.png differ diff --git a/ground/openpilotgcs/src/plugins/config/images/vehicle_selected.png b/ground/openpilotgcs/src/plugins/config/images/vehicle_selected.png new file mode 100644 index 000000000..292c6026e Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/vehicle_selected.png differ diff --git a/ground/openpilotgcs/src/plugins/scope/plotdata.cpp b/ground/openpilotgcs/src/plugins/scope/plotdata.cpp index 57b17c193..c916b9cc5 100644 --- a/ground/openpilotgcs/src/plugins/scope/plotdata.cpp +++ b/ground/openpilotgcs/src/plugins/scope/plotdata.cpp @@ -165,7 +165,7 @@ bool ChronoPlotData::append(UAVObject* obj) //Perform scope math, if necessary if (mathFunction == "Boxcar average" || mathFunction == "Standard deviation"){ - //Put the new value at the front + //Put the new value at the back yDataHistory->append( currentValue ); // calculate average value diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp index 7b53a060f..9798df0e7 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp @@ -677,13 +677,13 @@ int ScopeGadgetWidget::csvLoggingAddData() } else { - ss << QString().sprintf("%3.6g",plotData2->yData->last()); + ss << QString().sprintf("%3.10g",plotData2->yData->last()); m_csvLoggingDataValid=1; } } else { - ss << QString().sprintf("%3.6g",plotData2->yDataHistory->last()); + ss << QString().sprintf("%3.10g",plotData2->yData->last()); m_csvLoggingDataValid=1; } } diff --git a/shared/uavobjectdefinition/hwsettings.xml b/shared/uavobjectdefinition/hwsettings.xml index b225c6715..113f059fe 100644 --- a/shared/uavobjectdefinition/hwsettings.xml +++ b/shared/uavobjectdefinition/hwsettings.xml @@ -1,7 +1,7 @@ Selection of optional hardware configurations. - +