1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-23 08:15:17 +03:00

[Taranis] Issue #554 - Companion part done

This commit is contained in:
Bertrand Songis 2014-01-27 17:25:43 +01:00
parent cde59a2b22
commit 80a6c4727d
8 changed files with 139 additions and 93 deletions

View file

@ -624,17 +624,57 @@ void ModelData::setDefault(uint8_t id)
sprintf(name, "MODEL%02d", id+1);
}
unsigned int ModelData::getTrimFlightPhase(uint8_t idx, int8_t phase)
int ModelData::getTrimValue(int phaseIdx, int trimIdx)
{
// if (phase == -1) phase = getFlightPhase();
for (uint8_t i=0; i<C9X_MAX_PHASES; i++) {
if (phase == 0 || phaseData[phase].trimRef[idx] < 0) return phase;
phase = phaseData[phase].trimRef[idx];
int result = 0;
for (int i=0; i<C9X_MAX_PHASES; i++) {
PhaseData & phase = phaseData[phaseIdx];
if (phase.trimMode[trimIdx] < 0) {
return result;
}
else {
if (phase.trimRef[trimIdx] == phaseIdx || phaseIdx == 0) {
return result + phase.trim[trimIdx];
}
else {
phaseIdx = phase.trimRef[trimIdx];
if (phase.trimMode[trimIdx] == 0)
result = 0;
else
result += phase.trim[trimIdx];
}
}
}
return 0;
}
void ModelData::setTrimValue(int phaseIdx, int trimIdx, int value)
{
for (uint8_t i=0; i<C9X_MAX_PHASES; i++) {
PhaseData & phase = phaseData[phaseIdx];
int mode = phase.trimMode[trimIdx];
int p = phase.trimRef[trimIdx];
int & trim = phase.trim[trimIdx];
if (mode < 0)
return;
if (p == phaseIdx || phaseIdx == 0) {
trim = value;
break;;
}
else if (mode == 0) {
phaseIdx = p;
}
else {
trim = value - getTrimValue(p, trimIdx);
if (trim < -500)
trim = -500;
if (trim > 500)
trim = 500;
break;
}
}
}
void ModelData::removeGlobalVar(int & var)
{
if (var >= 126 && var <= 130)