FrSky VFAS first commit for Kilrah's tests ...

This commit is contained in:
bsongis
2012-07-06 14:19:32 +00:00
parent a3c768e899
commit 4b7cc132b1
10 changed files with 34 additions and 22 deletions
+21 -13
View File
@@ -264,6 +264,12 @@ void parseTelemHubByte(uint8_t byte)
frskyData.hub.maxCurrent = frskyData.hub.current;
break;
case offsetof(FrskyHubData, volts_ap):
frskyData.hub.vfas = ((frskyData.hub.volts_bp * 100 + frskyData.hub.volts_bp) * 21) / 11;
/* TODO later if (!frskyData.hub.minVfas || frskyData.hub.minVfas > frskyData.hub.vfas)
frskyData.hub.minVfas = frskyData.hub.vfas; */
break;
case offsetof(FrskyHubData, baroAltitude_bp):
// First received barometer altitude => Altitude offset
if (!frskyData.hub.baroAltitudeOffset)
@@ -625,24 +631,25 @@ void check_frsky()
}
#endif
uint16_t voltage = 0;
for (uint8_t i=0; i<frskyData.hub.cellsCount; i++)
voltage += frskyData.hub.cellVolts[i];
voltage /= 5;
frskyData.hub.cellsSum = voltage;
if (g_model.frsky.voltsSource >= FRSKY_SOURCE_A1) {
uint8_t channel = g_model.frsky.voltsSource - FRSKY_SOURCE_A1;
voltage = applyChannelRatio(channel, frskyData.analog[channel].value);
}
uint16_t current = frskyData.hub.current;
if (g_model.frsky.currentSource >= FRSKY_SOURCE_A1) {
uint8_t channel = g_model.frsky.currentSource - FRSKY_SOURCE_A1;
current = applyChannelRatio(channel, frskyData.analog[channel].value);
}
frskyData.currentPrescale += current;
uint16_t voltage = 0;
if (g_model.frsky.voltsSource >= FRSKY_SOURCE_A1) {
uint8_t channel = g_model.frsky.voltsSource - FRSKY_SOURCE_A1;
voltage = applyChannelRatio(channel, frskyData.analog[channel].value);
}
else {
for (uint8_t i=0; i<frskyData.hub.cellsCount; i++)
voltage += frskyData.hub.cellVolts[i];
voltage /= 5;
}
frskyData.voltage = voltage;
frskyData.power = current * voltage / 100;
frskyData.currentPrescale += current;
if (frskyData.currentPrescale >= currentConsumptionBoundary) {
frskyData.currentConsumption += 1;
frskyData.currentPrescale -= currentConsumptionBoundary;
@@ -956,10 +963,11 @@ void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, ui
}
case TELEM_CELL-1:
case TELEM_VFAS-1:
putsTelemetryValue(x, y, val, UNIT_VOLTS, att|PREC2);
break;
case TELEM_VOLTAGE-1:
case TELEM_CELLS_SUM-1:
putsTelemetryValue(x, y, val, UNIT_VOLTS, att|PREC1);
break;