Пример #1
0
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ConvertOrientations::dataCheck()
{
  setErrorCondition(0);

  if(getInputType() == getOutputType())
  {
    QString ss = QObject::tr("Input and output orientation representation types must be different");
    setErrorCondition(-1000);
    notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
  }

  if( getInputType() < OrientationConverter<float>::GetMinIndex() || getInputType() > OrientationConverter<float>::GetMaxIndex() )
  {
    QString ss = QObject::tr("There was an error with teh selection of the input orientation type. The valid values range from 0 to %1").arg(OrientationConverter<float>::GetMaxIndex());
    setErrorCondition(-1001);
    notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
  }

  if( getOutputType() < OrientationConverter<float>::GetMinIndex() || getOutputType() > OrientationConverter<float>::GetMaxIndex() )
  {
    QString ss = QObject::tr("There was an error with the selection of the output orientation type. The valid values range from 0 to %1").arg(OrientationConverter<float>::GetMaxIndex());
    setErrorCondition(-1002);
    notifyErrorMessage(getHumanLabel(), ss, getErrorCondition());
  }

  // We need to return NOW because the next lines assume we have and index that is within
  // the valid bounds
  if(getErrorCondition() < 0) { return; }

  // Figure out what kind of Array the user selected
  // Get the input data and create the output Data appropriately
  IDataArray::Pointer iDataArrayPtr = getDataContainerArray()->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(this, getInputOrientationArrayPath());

  DataArrayPath outputArrayPath = getInputOrientationArrayPath();
  outputArrayPath.setDataArrayName(getOutputOrientationArrayName());

  FloatArrayType::Pointer fArray = std::dynamic_pointer_cast<FloatArrayType>(iDataArrayPtr);
  if(NULL != fArray.get())
  {
    QVector<int32_t> componentCounts = OrientationConverter<float>::GetComponentCounts();
    QVector<size_t> outputCDims(1, componentCounts[getOutputType()]);
    getDataContainerArray()->createNonPrereqArrayFromPath<DataArray<float>, AbstractFilter, float>(this, outputArrayPath, 0, outputCDims);
  }

  DoubleArrayType::Pointer dArray = std::dynamic_pointer_cast<DoubleArrayType>(iDataArrayPtr);
  if(NULL != dArray.get())
  {
    QVector<int32_t> componentCounts = OrientationConverter<double>::GetComponentCounts();
    QVector<size_t> outputCDims(1, componentCounts[getOutputType()]);
    getDataContainerArray()->createNonPrereqArrayFromPath<DataArray<double>, AbstractFilter, double>(this, outputArrayPath, 0, outputCDims);
  }


}
Пример #2
0
bool EDITOR::handleInputColumnSetUsingPattern(int joy, int button)
{
	if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return false;

	RowsSelection* current_selection = selection.getCopyOfCurrentRowsSelection();
	if (current_selection->size() == 0) return false;
	RowsSelection::iterator current_selection_begin(current_selection->begin());
	RowsSelection::iterator current_selection_end(current_selection->end());
	int pattern_offset = 0, current_pattern = taseditorConfig.currentPattern;

	for(RowsSelection::iterator it(current_selection_begin); it != current_selection_end; it++)
	{
		// skip lag frames
		if (taseditorConfig.autofirePatternSkipsLag && greenzone.lagLog.getLagInfoAtFrame(*it) == LAGGED_YES)
			continue;
		currMovieData.records[*it].setBitValue(joy, button, patterns[current_pattern][pattern_offset] != 0);
		pattern_offset++;
		if (pattern_offset >= (int)patterns[current_pattern].size())
			pattern_offset -= patterns[current_pattern].size();
	}
	int first_changes = history.registerChanges(MODTYPE_PATTERN, *current_selection_begin, *current_selection->rbegin(), 0, patternsNames[current_pattern].c_str());
	if (first_changes >= 0)
	{
		greenzone.invalidateAndUpdatePlayback(first_changes);
		return true;
	} else
		return false;
}
Пример #3
0
// ----------------------------------------------------------------------------------------------
// following functions use function parameters to determine range of frames
void EDITOR::toggleInput(int start, int end, int joy, int button, int consecutivenessTag)
{
	if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return;

	int check_frame = end;
	if (start > end)
	{
		// swap
		int temp_start = start;
		start = end;
		end = temp_start;
	}
	if (start < 0) start = end;
	if (end >= currMovieData.getNumRecords())
		return;

	if (currMovieData.records[check_frame].checkBit(joy, button))
	{
		// clear range
		for (int i = start; i <= end; ++i)
			currMovieData.records[i].clearBit(joy, button);
		greenzone.invalidateAndUpdatePlayback(history.registerChanges(MODTYPE_UNSET, start, end, 0, NULL, consecutivenessTag));
	} else
	{
		// set range
		for (int i = start; i <= end; ++i)
			currMovieData.records[i].setBit(joy, button);
		greenzone.invalidateAndUpdatePlayback(history.registerChanges(MODTYPE_SET, start, end, 0, NULL, consecutivenessTag));
	}
}
Пример #4
0
int HISTORY::registerImport(MovieData& md, char* filename)
{
	// create new snapshot
	SNAPSHOT snap;
	snap.init(md, taseditorConfig.enableHotChanges, getInputType(currMovieData));
	// check if there are Input differences from latest snapshot
	int real_pos = (historyStartPos + historyCursorPos) % historySize;
	int first_changes = snap.inputlog.findFirstChange(snapshots[real_pos].inputlog);
	if (first_changes >= 0)
	{
		// differences found
		snap.keyFrame = first_changes;
		snap.startFrame = 0;
		snap.endFrame = snap.inputlog.size - 1;
		// fill description:
		snap.modificationType = MODTYPE_IMPORT;
		strcat(snap.description, modCaptions[snap.modificationType]);
		// add filename to description
		strcat(snap.description, " ");
		strncat(snap.description, filename, SNAPSHOT_DESCRIPTION_MAX_LEN - strlen(snap.description) - 1);
		if (taseditorConfig.enableHotChanges)
		{
			// do not inherit old hotchanges, because imported Input (most likely) doesn't have direct connection with recent edits, so old hotchanges are irrelevant and should not be copied
			snap.inputlog.fillHotChanges(snapshots[real_pos].inputlog, first_changes);
		}
		addItemToHistoryLog(snap);
		// Replace current movie data with this snapshot's InputLog, not changing Greenzone's LagLog
		snap.inputlog.toMovie(currMovieData);
		pianoRoll.updateLinesCount();
		branches.setChangesMadeSinceBranch();
		project.setProjectChanged();
	}
	return first_changes;
}
Пример #5
0
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
void ConvertOrientations::readFilterParameters(AbstractFilterParametersReader* reader, int index)
{
  reader->openFilterGroup(this, index);
  setInputType(reader->readValue("InputType", getInputType() ) );
  setOutputType(reader->readValue("OutputType", getOutputType() ) );
  setInputOrientationArrayPath(reader->readDataArrayPath("InputOrientationArrayPath", getInputOrientationArrayPath()));
  setOutputOrientationArrayName(reader->readString("OutputOrientationArrayName", getOutputOrientationArrayName()));
  reader->closeFilterGroup();
}
Пример #6
0
	void generate(Lumix::OutputBlob& blob) override
	{
		if(!m_inputs[0]) return;
		if(!m_inputs[1]) return;

		m_inputs[0]->generate(blob);
		m_inputs[1]->generate(blob);

		auto input0_type = getInputType(0);
		bool is_matrix = input0_type == ShaderEditor::ValueType::MATRIX3 ||
						 input0_type == ShaderEditor::ValueType::MATRIX4;
		blob << "\t" << getValueTypeName(getInputType(1)) << " v" << m_id << " = ";

		if (m_operation == MULTIPLICATION && is_matrix)
		{
			blob << "mul(";
			m_inputs[0]->printReference(blob);
			blob << (", ");
			m_inputs[1]->printReference(blob);
			blob << (");\n");
		}
		else
		{
			m_inputs[0]->printReference(blob);
			switch (m_operation)
			{
				case MULTIPLICATION: blob << " * "; break;
				case DIVISION: blob << " / "; break;
				case ADDITION: blob << " + "; break;
				case SUBTRACTION: blob << " - "; break;
				default:
					ASSERT(false);
					blob << " * ";
					break;
			}
			m_inputs[1]->printReference(blob);
			blob << (";\n");
		}
	}
int main() {
	srand(time(NULL));
	
	int outputType = 0;
	int inputType = 0;
	int wordsInStream = 0;
	
	ifstream inFile;
	ofstream outFile;
	char fileContents[MAXFILECONTENTSLENGTH];
	
	inputType = getInputType(inFile);
	
	outputType = getOutputType(outFile);
	
	//user selected to read from file
	if (inputType == 1) 
		readFileContents(inFile, fileContents);
	
	//user selected to read from keyboard
	if (inputType == 2)
		readKeyboardContents(fileContents);
	
	wordsInStream = countInputStreamWords(fileContents);
	
	//just send a 0 to start it
	convertEs(fileContents, 0, outFile);
	
	//replace(fileContents, "s ", "es");
	
	//user selected to output to a file
	/*if (outputType == 1)
		toFile(outFile, fileContents);
	
	//user selected to putput to the screen
	if (outputType == 2)
		toScreen(fileContents);*/
	
	inFile.close();
	outFile.close();
	
	return 0;
}
Пример #8
0
bool EDITOR::handleInputColumnSet(int joy, int button)
{
	if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return false;

	RowsSelection* current_selection = selection.getCopyOfCurrentRowsSelection();
	if (current_selection->size() == 0) return false;
	RowsSelection::iterator current_selection_begin(current_selection->begin());
	RowsSelection::iterator current_selection_end(current_selection->end());

	//inspect the selected frames, if they are all set, then unset all, else set all
	bool newValue = false;
	for(RowsSelection::iterator it(current_selection_begin); it != current_selection_end; it++)
	{
		if (!(currMovieData.records[*it].checkBit(joy,button)))
		{
			newValue = true;
			break;
		}
	}
	// apply newValue
	for(RowsSelection::iterator it(current_selection_begin); it != current_selection_end; it++)
		currMovieData.records[*it].setBitValue(joy,button,newValue);

	int first_changes;
	if (newValue)
	{
		first_changes = history.registerChanges(MODTYPE_SET, *current_selection_begin, *current_selection->rbegin());
	} else
	{
		first_changes = history.registerChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin());
	}
	if (first_changes >= 0)
	{
		greenzone.invalidateAndUpdatePlayback(first_changes);
		return true;
	} else
		return false;
}
Пример #9
0
void EDITOR::setInputUsingPattern(int start, int end, int joy, int button, int consecutivenessTag)
{
	if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return;

	if (start > end)
	{
		// swap
		int temp_start = start;
		start = end;
		end = temp_start;
	}
	if (start < 0) start = end;
	if (end >= currMovieData.getNumRecords())
		return;

	int pattern_offset = 0, current_pattern = taseditorConfig.currentPattern;
	bool changes_made = false;
	bool value;

	for (int i = start; i <= end; ++i)
	{
		// skip lag frames
		if (taseditorConfig.autofirePatternSkipsLag && greenzone.lagLog.getLagInfoAtFrame(i) == LAGGED_YES)
			continue;
		value = (patterns[current_pattern][pattern_offset] != 0);
		if (currMovieData.records[i].checkBit(joy, button) != value)
		{
			changes_made = true;
			currMovieData.records[i].setBitValue(joy, button, value);
		}
		pattern_offset++;
		if (pattern_offset >= (int)patterns[current_pattern].size())
			pattern_offset -= patterns[current_pattern].size();
	}
	if (changes_made)
		greenzone.invalidateAndUpdatePlayback(history.registerChanges(MODTYPE_PATTERN, start, end, 0, patternsNames[current_pattern].c_str(), consecutivenessTag));
}
Пример #10
0
Attribute Parser::getAttributes(wstring tag, wstring content)
{
	Attribute attrs;
	wstring page = content;
	wstring onetag = L"";
	int foundS = 0;
	int foundE = 0;

	//초기화
	attrs.identity.isPre = false; attrs.identity.isP = false; attrs.identity.isCenter = false; attrs.identity.isAddress = false;
	attrs.font.isBold = false;  attrs.font.isCursive = false; attrs.font.underscore = false; 
	attrs.font.size = 20;

	if (tag == L"h1") attrs.font.size = 40;
	else if (tag == L"h2") attrs.font.size = 35;
	else if (tag == L"h3") attrs.font.size = 30;
	else if (tag == L"h4") attrs.font.size = 25;
	else if (tag == L"h5") attrs.font.size = 21;
	else if (tag == L"h6") attrs.font.size = 15;

	if (tag == L"pre") attrs.identity.isPre = true;
	if (tag == L"p") attrs.identity.isP = true;
	if (tag == L"center") attrs.identity.isCenter = true;
	if (tag == L"address") attrs.identity.isAddress = true;
	if (tag == L"address") attrs.font.isCursive = true;
	if (tag == L"b") attrs.font.isBold = true;
 
	//태그 전체를 읽어 parsing한다.
	foundS = page.find(L"<" + tag);
	foundE = page.find(L">");
	onetag = page.substr(foundS, foundE - foundS + 1);

	//form 속성
	if (tag == L"form")
	{
		attrs.form.action = getFormAction(onetag);
		attrs.form.method = getFormMethod(onetag);
	}

	//input 속성
	if (tag == L"input")
	{
		attrs.input.value = getInputValue(onetag);
		attrs.input.type = getInputType(onetag);
		attrs.input.name = getInputName(onetag);
	}

	//img 속성
	if (tag == L"img")
		attrs.img = getImgInfo(onetag);

	//span 속성
	if (tag == L"span")
		attrs.font.style = getSpanstyle(onetag);

	//a 속성
	if (tag == L"a") {
		attrs.hyper.href = getHyperRef(onetag);
		attrs.font.underscore = true;
		attrs.font.style = L"color:blue";
	}
		
	return attrs;
}
Пример #11
0
	ShaderEditor::ValueType getOutputType(int) const override
	{
		if (m_inputs[0]) return getInputType(0);
		return ShaderEditor::ValueType::VEC4;
	}
Пример #12
0
	ShaderEditor::ValueType getOutputType(int) const override
	{
		return m_inputs[1] ? getInputType(1) : ShaderEditor::ValueType::NONE;
	}
Пример #13
0
	ShaderEditor::ValueType getOutputType(int) const override 
	{
		return getInputType(1);
	}
Пример #14
0
QString SetupWizard::getSummaryText()
{
    QString summary = "";
    summary.append("<b>").append(tr("Controller type: ")).append("</b>");
    switch(getControllerType())
    {
        case CONTROLLER_CC:
            summary.append(tr("OpenPilot CopterControl"));
            break;
        case CONTROLLER_CC3D:
            summary.append(tr("OpenPilot CopterControl 3D"));
            break;
        case CONTROLLER_REVO:
            summary.append(tr("OpenPilot Revolution"));
            break;
        case CONTROLLER_PIPX:
            summary.append(tr("OpenPilot PipX Radio Modem"));
            break;
        default:
            summary.append(tr("Unknown"));
            break;
    }

    summary.append("<br>");
    summary.append("<b>").append(tr("Vehicle type: ")).append("</b>");
    switch (getVehicleType())
    {
        case VEHICLE_MULTI:
            summary.append(tr("Multirotor"));

            summary.append("<br>");
            summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>");
            switch (getVehicleSubType())
            {
                case SetupWizard::MULTI_ROTOR_TRI_Y:
                    summary.append(tr("Tricopter"));
                    break;
                case SetupWizard::MULTI_ROTOR_QUAD_X:
                    summary.append(tr("Quadcopter X"));
                    break;
                case SetupWizard::MULTI_ROTOR_QUAD_PLUS:
                    summary.append(tr("Quadcopter +"));
                    break;
                case SetupWizard::MULTI_ROTOR_HEXA:
                    summary.append(tr("Hexacopter"));
                    break;
                case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y:
                    summary.append(tr("Hexacopter Coax (Y6)"));
                    break;
                case SetupWizard::MULTI_ROTOR_HEXA_H:
                    summary.append(tr("Hexacopter X"));
                    break;
                case SetupWizard::MULTI_ROTOR_OCTO:
                    summary.append(tr("Octocopter"));
                    break;
                case SetupWizard::MULTI_ROTOR_OCTO_COAX_X:
                    summary.append(tr("Octocopter Coax X"));
                    break;
                case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS:
                    summary.append(tr("Octocopter Coax +"));
                    break;
                case SetupWizard::MULTI_ROTOR_OCTO_V:
                    summary.append(tr("Octocopter V"));
                    break;
                default:
                    summary.append(tr("Unknown"));
                    break;
            }

            break;
        case VEHICLE_FIXEDWING:
            summary.append(tr("Fixed wing"));
            break;
        case VEHICLE_HELI:
            summary.append(tr("Helicopter"));
            break;
        case VEHICLE_SURFACE:
            summary.append(tr("Surface vehicle"));
            break;
        default:
            summary.append(tr("Unknown"));
    }

    summary.append("<br>");
    summary.append("<b>").append(tr("Input type: ")).append("</b>");
    switch (getInputType())
    {
        case INPUT_PWM:
            summary.append(tr("PWM (One cable per channel)"));
            break;
        case INPUT_PPM:
            summary.append(tr("PPM (One cable for all channels)"));
            break;
        case INPUT_SBUS:
            summary.append(tr("Futaba S.Bus"));
            break;
        case INPUT_DSM2:
            summary.append(tr("Spektrum satellite (DSM2)"));
            break;
        case INPUT_DSMX10:
            summary.append(tr("Spektrum satellite (DSMX10BIT)"));
            break;
        case INPUT_DSMX11:
            summary.append(tr("Spektrum satellite (DSMX11BIT)"));
            break;
        default:
            summary.append(tr("Unknown"));
    }

    summary.append("<br>");
    summary.append("<b>").append(tr("ESC type: ")).append("</b>");
    switch (getESCType())
    {
        case ESC_LEGACY:
            summary.append(tr("Legacy ESC (50 Hz)"));
            break;
        case ESC_RAPID:
            summary.append(tr("Rapid ESC (400 Hz)"));
            break;
        default:
            summary.append(tr("Unknown"));
    }

    /*
    summary.append("<br>");
    summary.append("<b>").append(tr("Reboot required: ")).append("</b>");
    summary.append(isRestartNeeded() ? tr("<font color='red'>Yes</font>") : tr("<font color='green'>No</font>"));
    */
    return summary;
}
Пример #15
0
QString SetupWizard::getSummaryText()
{
    QString summary = "";

    summary.append("<b>").append(tr("Controller type: ")).append("</b>");
    switch (getControllerType()) {
    case CONTROLLER_CC:
        summary.append(tr("OpenPilot CopterControl"));
        break;
    case CONTROLLER_CC3D:
        summary.append(tr("OpenPilot CopterControl 3D"));
        break;
    case CONTROLLER_REVO:
        summary.append(tr("OpenPilot Revolution"));
        break;
    case CONTROLLER_NANO:
        summary.append(tr("OpenPilot Nano"));
        break;
    case CONTROLLER_OPLINK:
        summary.append(tr("OpenPilot OPLink Radio Modem"));
        break;
    case CONTROLLER_DISCOVERYF4:
        summary.append(tr("OpenPilot DiscoveryF4 Development Board"));
        break;
    default:
        summary.append(tr("Unknown"));
        break;
    }

    summary.append("<br>");
    summary.append("<b>").append(tr("Vehicle type: ")).append("</b>");
    switch (getVehicleType()) {
    case VEHICLE_MULTI:
        summary.append(tr("Multirotor"));

        summary.append("<br>");
        summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>");
        switch (getVehicleSubType()) {
        case SetupWizard::MULTI_ROTOR_TRI_Y:
            summary.append(tr("Tricopter"));
            break;
        case SetupWizard::MULTI_ROTOR_QUAD_X:
            summary.append(tr("Quadcopter X"));
            break;
        case SetupWizard::MULTI_ROTOR_QUAD_PLUS:
            summary.append(tr("Quadcopter +"));
            break;
        case SetupWizard::MULTI_ROTOR_HEXA:
            summary.append(tr("Hexacopter"));
            break;
        case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y:
            summary.append(tr("Hexacopter Coax (Y6)"));
            break;
        case SetupWizard::MULTI_ROTOR_HEXA_H:
            summary.append(tr("Hexacopter H"));
            break;
        case SetupWizard::MULTI_ROTOR_HEXA_X:
            summary.append(tr("Hexacopter X"));
            break;
        case SetupWizard::MULTI_ROTOR_OCTO:
            summary.append(tr("Octocopter"));
            break;
        case SetupWizard::MULTI_ROTOR_OCTO_COAX_X:
            summary.append(tr("Octocopter Coax X"));
            break;
        case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS:
            summary.append(tr("Octocopter Coax +"));
            break;
        case SetupWizard::MULTI_ROTOR_OCTO_V:
            summary.append(tr("Octocopter V"));
            break;
        default:
            summary.append(tr("Unknown"));
            break;
        }

        break;
    case VEHICLE_FIXEDWING:
        summary.append(tr("Fixed wing"));

        summary.append("<br>");
        summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>");
        switch (getVehicleSubType()) {
        case SetupWizard::FIXED_WING_DUAL_AILERON:
            summary.append(tr("Dual Aileron"));
            break;
        case SetupWizard::FIXED_WING_AILERON:
            summary.append(tr("Aileron"));
            break;
        case SetupWizard::FIXED_WING_ELEVON:
            summary.append(tr("Elevon"));
            break;
        default:
            summary.append(tr("Unknown"));
            break;
        }

        break;
    case VEHICLE_HELI:
        summary.append(tr("Helicopter"));
        break;
    case VEHICLE_SURFACE:
        summary.append(tr("Surface vehicle"));

        summary.append("<br>");
        summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>");
        switch (getVehicleSubType()) {
        case SetupWizard::GROUNDVEHICLE_CAR:
            summary.append(tr("Car"));
            break;
        case SetupWizard::GROUNDVEHICLE_DIFFERENTIAL:
            summary.append(tr("Tank"));
            break;
        case SetupWizard::GROUNDVEHICLE_MOTORCYCLE:
            summary.append(tr("Motorcycle"));
            break;
        default:
            summary.append(tr("Unknown"));
            break;
        }

        break;
    default:
        summary.append(tr("Unknown"));
    }

    summary.append("<br>");
    summary.append("<b>").append(tr("Input type: ")).append("</b>");
    switch (getInputType()) {
    case INPUT_PWM:
        summary.append(tr("PWM (One cable per channel)"));
        break;
    case INPUT_PPM:
        summary.append(tr("PPM (One cable for all channels)"));
        break;
    case INPUT_SBUS:
        summary.append(tr("Futaba S.Bus"));
        break;
    case INPUT_DSM:
        summary.append(tr("Spektrum Satellite"));
        break;
    default:
        summary.append(tr("Unknown"));
    }

    summary.append("<br>");
    summary.append("<b>").append(tr("Speed Controller (ESC) type: ")).append("</b>");
    switch (getEscType()) {
    case ESC_STANDARD:
        summary.append(tr("Standard ESC (%1 Hz)").arg(VehicleConfigurationHelper::LEGACY_ESC_FREQUENCY));
        break;
    case ESC_RAPID:
        summary.append(tr("Rapid ESC (%1 Hz)").arg(VehicleConfigurationHelper::RAPID_ESC_FREQUENCY));
        break;
    case ESC_SYNCHED:
        summary.append(tr("Synched ESC"));
        break;
    case ESC_ONESHOT:
        summary.append(tr("Oneshot ESC"));
        break;
    default:
        summary.append(tr("Unknown"));
    }

    // If Tricopter show tail servo speed
    if (getVehicleSubType() == MULTI_ROTOR_TRI_Y || getVehicleType() == VEHICLE_FIXEDWING
        || getVehicleSubType() == GROUNDVEHICLE_MOTORCYCLE || getVehicleSubType() == GROUNDVEHICLE_CAR) {
        summary.append("<br>");
        summary.append("<b>").append(tr("Servo type: ")).append("</b>");
        switch (getServoType()) {
        case SERVO_ANALOG:
            summary.append(tr("Analog Servos (50 Hz)"));
            break;
        case SERVO_DIGITAL:
            summary.append(tr("Digital Servos (333 Hz)"));
            break;
        default:
            summary.append(tr("Unknown"));
        }
    }

    // Show GPS Type
    if (getControllerType() == CONTROLLER_REVO || getControllerType() == CONTROLLER_NANO) {
        summary.append("<br>");
        summary.append("<b>").append(tr("GPS type: ")).append("</b>");
        switch (getGpsType()) {
        case GPS_PLATINUM:
            summary.append(tr("OpenPilot Platinum"));
            break;
        case GPS_UBX:
            summary.append(tr("OpenPilot v8 or Generic UBLOX GPS"));
            break;
        case GPS_NMEA:
            summary.append(tr("Generic NMEA GPS"));
            break;
        default:
            summary.append(tr("None"));
        }
    }

    // Show Airspeed sensor type
    if ((getControllerType() == CONTROLLER_REVO || getControllerType() == CONTROLLER_NANO) && getVehicleType() == VEHICLE_FIXEDWING) {
        summary.append("<br>");
        summary.append("<b>").append(tr("Airspeed Sensor: ")).append("</b>");
        switch (getAirspeedType()) {
        case AIRSPEED_ESTIMATE:
            summary.append(tr("Software Estimated"));
            break;
        case AIRSPEED_EAGLETREE:
            summary.append(tr("EagleTree on Flexi-Port"));
            break;
        case AIRSPEED_MS4525:
            summary.append(tr("MS4525 based on Flexi-Port"));
            break;
        default:
            summary.append(tr("Unknown"));
        }
    }
    return summary;
}
Пример #16
0
// virtual, so subclasses can be more descriptive
CString CProcess::getInputTypeDisplayName()
{
	return getFileTypeDisplayName(getInputType());
}