Пример #1
0
int CopterControl::queryMaxGyroRate()
{
    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
    UAVObjectManager *uavoManager = pm->getObject<UAVObjectManager>();
    HwCopterControl *hwCopterControl = HwCopterControl::GetInstance(uavoManager);
    UAVObjectUtilManager* utilMngr = pm->getObject<UAVObjectUtilManager>();
    Q_ASSERT(hwCopterControl);
    Q_ASSERT(utilMngr);
    if (!hwCopterControl)
        return 0;
    HwCopterControl::DataFields settings = hwCopterControl->getData();

    int CC_Version = (utilMngr->getBoardModel() & 0x00FF);
    if(CC_Version == 1) return 500;

    switch(settings.GyroRange) {
    case HwCopterControl::GYRORANGE_250:
        return 250;
    case HwCopterControl::GYRORANGE_500:
        return 500;
    case HwCopterControl::GYRORANGE_1000:
        return 1000;
    case HwCopterControl::GYRORANGE_2000:
        return 2000;
    default:
        return 500;
    }
}
void ConfigStabilizationWidget::onBoardConnected()
{
    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
    UAVObjectUtilManager *utilMngr     = pm->getObject<UAVObjectUtilManager>();

    Q_ASSERT(utilMngr);
    boardModel = utilMngr->getBoardModel();
    // If Revolution board enable Althold tab, otherwise disable it
    ui->AltitudeHold->setEnabled((boardModel & 0xff00) == 0x0900);
}
ConfigCCHWWidget::ConfigCCHWWidget(QWidget *parent) : ConfigTaskWidget(parent)
{
    m_telemetry = new Ui_CC_HW_Widget();
    m_telemetry->setupUi(this);

    ExtensionSystem::PluginManager *pm=ExtensionSystem::PluginManager::instance();
    Core::Internal::GeneralSettings * settings=pm->getObject<Core::Internal::GeneralSettings>();
    if(!settings->useExpertMode())
        m_telemetry->saveTelemetryToRAM->setVisible(false);


    UAVObjectUtilManager* utilMngr = pm->getObject<UAVObjectUtilManager>();
    int id = utilMngr->getBoardModel();

    switch (id) {
    case 0x0101:
        m_telemetry->label_2->setPixmap(QPixmap(":/uploader/images/deviceID-0101.svg"));
        break;
    case 0x0301:
        m_telemetry->label_2->setPixmap(QPixmap(":/uploader/images/deviceID-0301.svg"));
        break;
    case 0x0401:
        m_telemetry->label_2->setPixmap(QPixmap(":/configgadget/images/coptercontrol.svg"));
        break;
    case 0x0402:
        m_telemetry->label_2->setPixmap(QPixmap(":/configgadget/images/coptercontrol.svg"));
        break;
    case 0x0201:
        m_telemetry->label_2->setPixmap(QPixmap(":/uploader/images/deviceID-0201.svg"));
        break;
    default:
        m_telemetry->label_2->setPixmap(QPixmap(":/configgadget/images/coptercontrol.svg"));
        break;
    }
    addApplySaveButtons(m_telemetry->saveTelemetryToRAM,m_telemetry->saveTelemetryToSD);
    addUAVObjectToWidgetRelation("HwCopterControl","FlexiPort",m_telemetry->cbFlexi);
    addUAVObjectToWidgetRelation("HwCopterControl","MainPort",m_telemetry->cbTele);
    addUAVObjectToWidgetRelation("HwCopterControl","RcvrPort",m_telemetry->cbRcvr);
    addUAVObjectToWidgetRelation("HwCopterControl","USB_HIDPort",m_telemetry->cbUsbHid);
    addUAVObjectToWidgetRelation("HwCopterControl","USB_VCPPort",m_telemetry->cbUsbVcp);
    addUAVObjectToWidgetRelation("ModuleSettings","TelemetrySpeed",m_telemetry->telemetrySpeed);
    addUAVObjectToWidgetRelation("ModuleSettings","GPSSpeed",m_telemetry->gpsSpeed);
    addUAVObjectToWidgetRelation("ModuleSettings","ComUsbBridgeSpeed",m_telemetry->comUsbBridgeSpeed);

    // Load UAVObjects to widget relations from UI file
    // using objrelation dynamic property
    autoLoadWidgets();

    connect(m_telemetry->cchwHelp,SIGNAL(clicked()),this,SLOT(openHelp()));
    enableControls(false);
    populateWidgets();
    refreshWidgetsValues();
    forceConnectedState();
}
Пример #4
0
void ConfigGadgetWidget::onAutopilotConnect()
{
    // qDebug() << "ConfigGadgetWidget::onAutopilotConnect";

    // Check what Board type we are talking to, and if necessary, remove/add tabs in the config gadget
    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
    UAVObjectUtilManager *utilMngr     = pm->getObject<UAVObjectUtilManager>();

    if (utilMngr) {
        int board = utilMngr->getBoardModel();
        if ((board & 0xff00) == 0x0400) {
            // CopterControl family
            ConfigTaskWidget *widget;
            widget = new ConfigCCAttitudeWidget(this);
            widget->bind();
            stackWidget->replaceTab(ConfigGadgetWidget::Sensors, widget);
            widget = new ConfigCCHWWidget(this);
            widget->bind();
            stackWidget->replaceTab(ConfigGadgetWidget::Hardware, widget);
        } else if ((board & 0xff00) == 0x0900) {
            // Revolution family
            ConfigTaskWidget *widget;
            widget = new ConfigRevoWidget(this);
            widget->bind();
            stackWidget->replaceTab(ConfigGadgetWidget::Sensors, widget);
            if (board == 0x0903 || board == 0x0904) {
                widget = new ConfigRevoHWWidget(this);
            } else if (board == 0x0905) {
                widget = new ConfigRevoNanoHWWidget(this);
            }
            widget->bind();
            stackWidget->replaceTab(ConfigGadgetWidget::Hardware, widget);
        } else if ((board & 0xff00) == 0x9200) {
            // Sparky2
            ConfigTaskWidget *widget;
            widget = new ConfigRevoWidget(this);
            widget->bind();
            stackWidget->replaceTab(ConfigGadgetWidget::Sensors, widget);
            widget = new ConfigSparky2HWWidget(this);
            widget->bind();
            stackWidget->replaceTab(ConfigGadgetWidget::Hardware, widget);
        } else {
            // Unknown board
            qWarning() << "Unknown board " << board;
        }
    }
}
Пример #5
0
SetupWizard::CONTROLLER_TYPE ControllerPage::getControllerType()
{
    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
    UAVObjectUtilManager* utilMngr = pm->getObject<UAVObjectUtilManager>();
    int id = utilMngr->getBoardModel();

    switch (id) {
    case 0x0301:
        return SetupWizard::CONTROLLER_PIPX;
    case 0x0401:
        return SetupWizard::CONTROLLER_CC;
    case 0x0402:
        return SetupWizard::CONTROLLER_CC3D;
    case 0x0901:
        return SetupWizard::CONTROLLER_REVO;
    default:
        return SetupWizard::CONTROLLER_UNKNOWN;
    }
}
ConfigCCHWWidget::ConfigCCHWWidget(QWidget *parent) : ConfigTaskWidget(parent)
{
    m_telemetry = new Ui_CC_HW_Widget();
    m_telemetry->setupUi(this);

    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
    Core::Internal::GeneralSettings *settings = pm->getObject<Core::Internal::GeneralSettings>();
    if (!settings->useExpertMode()) {
        m_telemetry->saveTelemetryToRAM->setVisible(false);
    }


    UAVObjectUtilManager *utilMngr = pm->getObject<UAVObjectUtilManager>();
    int id = utilMngr->getBoardModel();

    switch (id) {
    case 0x0101:
        m_telemetry->label_2->setPixmap(QPixmap(":/uploader/images/deviceID-0101.svg"));
        break;
    case 0x0301:
        m_telemetry->label_2->setPixmap(QPixmap(":/uploader/images/deviceID-0301.svg"));
        break;
    case 0x0401:
        m_telemetry->label_2->setPixmap(QPixmap(":/configgadget/images/coptercontrol.svg"));
        break;
    case 0x0402:
        m_telemetry->label_2->setPixmap(QPixmap(":/configgadget/images/coptercontrol.svg"));
        break;
    case 0x0201:
        m_telemetry->label_2->setPixmap(QPixmap(":/uploader/images/deviceID-0201.svg"));
        break;
    default:
        m_telemetry->label_2->setPixmap(QPixmap(":/configgadget/images/coptercontrol.svg"));
        break;
    }
    addApplySaveButtons(m_telemetry->saveTelemetryToRAM, m_telemetry->saveTelemetryToSD);
    addWidgetBinding("HwSettings", "CC_FlexiPort", m_telemetry->cbFlexi);
    addWidgetBinding("HwSettings", "CC_MainPort", m_telemetry->cbTele);
    addWidgetBinding("HwSettings", "CC_RcvrPort", m_telemetry->cbRcvr);
    addWidgetBinding("HwSettings", "USB_HIDPort", m_telemetry->cbUsbHid);
    addWidgetBinding("HwSettings", "USB_VCPPort", m_telemetry->cbUsbVcp);
    addWidgetBinding("HwSettings", "TelemetrySpeed", m_telemetry->telemetrySpeed);
    addWidgetBinding("HwSettings", "GPSSpeed", m_telemetry->gpsSpeed);
    // Add Gps protocol configuration

    HwSettings *hwSettings = HwSettings::GetInstance(getObjectManager());
    HwSettings::DataFields hwSettingsData = hwSettings->getData();

    if (hwSettingsData.OptionalModules[HwSettings::OPTIONALMODULES_GPS] != HwSettings::OPTIONALMODULES_ENABLED) {
        m_telemetry->gpsProtocol->setEnabled(false);
        m_telemetry->gpsProtocol->setToolTip(tr("Enable GPS module and reboot the board to be able to select GPS protocol"));
    } else {
        addWidgetBinding("GPSSettings", "DataProtocol", m_telemetry->gpsProtocol);
    }

    addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_telemetry->comUsbBridgeSpeed);
    connect(m_telemetry->cchwHelp, SIGNAL(clicked()), this, SLOT(openHelp()));
    enableSaveButtons(false);
    populateWidgets();
    refreshWidgetsValues();
    forceConnectedState();
}
void UsageTrackerPlugin::collectUsageParameters(QMap<QString, QString> &parameters)
{
    ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
    UAVObjectUtilManager *utilMngr     = pm->getObject<UAVObjectUtilManager>();

    QByteArray description = utilMngr->getBoardDescription();
    deviceDescriptorStruct devDesc;

    if (UAVObjectUtilManager::descriptionToStructure(description, devDesc)) {
        int boardModel = utilMngr->getBoardModel();
        parameters["board_type"]   = "0x" + QString::number(boardModel, 16).toLower();
        parameters["board_serial"] = utilMngr->getBoardCPUSerial().toHex();
        parameters["bl_version"]   = QString::number(utilMngr->getBootloaderRevision());
        parameters["fw_tag"] = devDesc.gitTag;
        parameters["fw_hash"] = devDesc.gitHash;
        parameters["os_version"]   = QSysInfo::prettyProductName() + " " + QSysInfo::currentCpuArchitecture();
        parameters["os_threads"]   = QString::number(QThread::idealThreadCount());
        parameters["os_timezone"]  = QTimeZone::systemTimeZoneId();
        parameters["gcs_version"]  = VersionInfo::revision();

        // Configuration parameters
        ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
        UAVObjectManager *objManager = pm->getObject<UAVObjectManager>();

        parameters["conf_receiver"] = getUAVFieldValue(objManager, "ManualControlSettings", "ChannelGroups", 0);
        parameters["conf_vehicle"]  = getUAVFieldValue(objManager, "SystemSettings", "AirframeType");

        if ((boardModel & 0xff00) == 0x0400) {
            // CopterControl family
            parameters["conf_rport"] = getUAVFieldValue(objManager, "HwSettings", "CC_RcvrPort");
            parameters["conf_mport"] = getUAVFieldValue(objManager, "HwSettings", "CC_MainPort");
            parameters["conf_fport"] = getUAVFieldValue(objManager, "HwSettings", "CC_FlexiPort");
        } else if ((boardModel & 0xff00) == 0x0900) {
            // Revolution family
            parameters["conf_rport"]  = getUAVFieldValue(objManager, "HwSettings", "RM_RcvrPort");
            parameters["conf_mport"]  = getUAVFieldValue(objManager, "HwSettings", "RM_MainPort");
            parameters["conf_fport"]  = getUAVFieldValue(objManager, "HwSettings", "RM_FlexiPort");
            parameters["conf_fusion"] = getUAVFieldValue(objManager, "RevoSettings", "FusionAlgorithm");
        }

        parameters["conf_uport"]    = getUAVFieldValue(objManager, "HwSettings", "USB_HIDPort");
        parameters["conf_vport"]    = getUAVFieldValue(objManager, "HwSettings", "USB_VCPPort");

        parameters["conf_rotation"] = QString("[%1:%2:%3]")
                                      .arg(getUAVFieldValue(objManager, "AttitudeSettings", "BoardRotation", 0))
                                      .arg(getUAVFieldValue(objManager, "AttitudeSettings", "BoardRotation", 1))
                                      .arg(getUAVFieldValue(objManager, "AttitudeSettings", "BoardRotation", 2));
        parameters["conf_pidr"] = QString("[%1:%2:%3:%4][%5:%6:%7:%8][%9:%10:%11:%12]")
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollRatePID", 0))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollRatePID", 1))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollRatePID", 2))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollRatePID", 3))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchRatePID", 0))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchRatePID", 1))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchRatePID", 2))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchRatePID", 3))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawRatePID", 0))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawRatePID", 1))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawRatePID", 2))
                                  .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawRatePID", 3));
        parameters["conf_pia"] = QString("[%1:%2:%3][%4:%5:%6][%7:%8:%9]")
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollPI", 0))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollPI", 1))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "RollPI", 2))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchPI", 0))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchPI", 1))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "PitchPI", 2))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawPI", 0))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawPI", 1))
                                 .arg(getUAVFieldValue(objManager, "StabilizationSettingsBank1", "YawPI", 2));

        parameters["conf_tps"]     = getUAVFieldValue(objManager, "StabilizationSettingsBank1", "EnableThrustPIDScaling");
        parameters["conf_piro"]    = getUAVFieldValue(objManager, "StabilizationSettingsBank1", "EnablePiroComp");

        parameters["conf_fmcount"] = getUAVFieldValue(objManager, "ManualControlSettings", "FlightModeNumber");
        parameters["conf_fmodes"]  = QString("[%1:%2:%3]").arg(getUAVFieldValue(objManager, "FlightModeSettings", "FlightModePosition", 0))
                                     .arg(getUAVFieldValue(objManager, "FlightModeSettings", "FlightModePosition", 1))
                                     .arg(getUAVFieldValue(objManager, "FlightModeSettings", "FlightModePosition", 2));
    }
}