Пример #1
0
/**
  * Erase all settings from the board
  */
void ConfigPlugin::eraseAllSettings()
{
    QMessageBox msgBox;
    msgBox.setText(tr("Are you sure you want to erase all board settings?."));
    msgBox.setInformativeText(tr("All settings stored in your board flash will be deleted."));
    msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
    msgBox.setDefaultButton(QMessageBox::Ok);
    if (msgBox.exec() != QMessageBox::Ok)
            return;

    settingsErased = false;
    ObjectPersistence* objper = ObjectPersistence::GetInstance(getObjectManager());
    Q_ASSERT(objper);

    connect(objper, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(eraseDone(UAVObject *)));

    ObjectPersistence::DataFields data = objper->getData();
    data.Operation = ObjectPersistence::OPERATION_FULLERASE;

    // No need for manual updated event, this is triggered by setData
    // based on UAVO meta data
    objper->setData(data);
    objper->updated();
    QTimer::singleShot(FLASH_ERASE_TIMEOUT_MS,this,SLOT(eraseFailed()));

}
Пример #2
0
void ConfigPlugin::eraseFailed()
{
    if (settingsErased)
        return;

    ObjectPersistence* objper = ObjectPersistence::GetInstance(getObjectManager());

    ObjectPersistence::DataFields data = objper->getData();
    if(data.Operation == ObjectPersistence::OPERATION_FULLERASE) {
        // First attempt via flash erase failed.  Fall back on erase all settings
        data.Operation = ObjectPersistence::OPERATION_DELETE;
        data.Selection = ObjectPersistence::SELECTION_ALLSETTINGS;
        objper->setData(data);
        objper->updated();
        QTimer::singleShot(FLASH_ERASE_TIMEOUT_MS,this,SLOT(eraseFailed()));
    } else {
        disconnect(objper, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(eraseDone(UAVObject *)));
        QMessageBox msgBox;
        msgBox.setText(tr("Error trying to erase settings."));
        msgBox.setInformativeText(tr("Power-cycle your board after removing all blades. Settings might be inconsistent."));
        msgBox.setStandardButtons(QMessageBox::Ok);
        msgBox.setDefaultButton(QMessageBox::Ok);
        msgBox.exec();
    }
}
Пример #3
0
/**
  * Erase all settings from the board
  */
void ConfigPlugin::eraseAllSettings()
{
    QMessageBox msgBox;
    msgBox.setText(tr("Are you sure you want to erase all board settings?."));
    msgBox.setInformativeText(tr("All settings stored in your board flash will be deleted."));
    msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
    msgBox.setDefaultButton(QMessageBox::Ok);
    if (msgBox.exec() != QMessageBox::Ok)
            return;

    settingsErased = false;

    //TODO: Replace the second and third [in eraseDone()] pop-up dialogs with a progress indicator,
    // counter, or infinite chain of `......` tied to the original dialog box
    msgBox.setText(tr("Settings will now erase."));
    msgBox.setInformativeText(tr("Press <OK> and then please wait until a completion box appears. This can take up to 90 seconds."));
    msgBox.setStandardButtons(QMessageBox::Ok);
    msgBox.exec();


    ObjectPersistence* objper = ObjectPersistence::GetInstance(getObjectManager());
    Q_ASSERT(objper);

    connect(objper, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(eraseDone(UAVObject *)));

    ObjectPersistence::DataFields data = objper->getData();
    data.Operation = ObjectPersistence::OPERATION_FULLERASE;

    // No need for manual updated event, this is triggered by setData
    // based on UAVO meta data
    objper->setData(data);
    objper->updated();
    QTimer::singleShot(FLASH_ERASE_TIMEOUT_MS,this,SLOT(eraseFailed()));

}
Пример #4
0
void ConfigPlugin::eraseDone(UAVObject * obj)
{
    QMessageBox msgBox;
    ObjectPersistence* objper = ObjectPersistence::GetInstance(getObjectManager());
    ObjectPersistence::DataFields data = objper->getData();
    Q_ASSERT(obj->getInstID() == objper->getInstID());

    if(data.Operation != ObjectPersistence::OPERATION_COMPLETED) {
        return;
    }

    disconnect(objper, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(eraseDone(UAVObject *)));
    if (data.Operation == ObjectPersistence::OPERATION_COMPLETED) {
        settingsErased = true;
        msgBox.setText(tr("Settings are now erased."));
        msgBox.setInformativeText(tr("Please wait for the status LED to begin flashing regularly (up to a minute) then power-cycle your board to complete reset."));
    } else {
        msgBox.setText(tr("Error trying to erase settings."));
        msgBox.setInformativeText(tr("Power-cycle your board after removing all blades. Settings might be inconsistent."));
    }
    msgBox.setStandardButtons(QMessageBox::Ok);
    msgBox.setDefaultButton(QMessageBox::Ok);
    msgBox.exec();
}