Multiplier added to FrSky telemetry A1/A2 ratio

Now it covers range 0V => 204.0V
This commit is contained in:
bsongis
2012-02-09 11:24:45 +00:00
parent a9ac3f2015
commit 11c8219f79
2 changed files with 17 additions and 4 deletions
+1 -1
View File
@@ -522,7 +522,7 @@ void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, ui
// A1 and A2
{
// TODO optimize this, avoid int32_t
int16_t converted_value = ((int32_t)val+g_model.frsky.channels[channel].offset) * g_model.frsky.channels[channel].ratio * 2 / 51;
int16_t converted_value = ((int32_t)val+g_model.frsky.channels[channel].offset) * (g_model.frsky.channels[channel].ratio << g_model.frsky.channels[channel].multiplier) * 2 / 51;
if (g_model.frsky.channels[channel].type >= UNIT_RAW) {
converted_value /= 10;
}
+16 -3
View File
@@ -1866,10 +1866,23 @@ void menuProcTelemetry(uint8_t event)
putsTelemetryChannel(TELEM_COL2, y, i, 255-g_model.frsky.channels[i].offset, (sub==subN && m_posHorz==0 ? blink:0)|NO_UNIT|LEFT);
lcd_putsnAtt(lcd_lastPos+1, y, STR_VTELEMUNIT+LEN_VTELEMUNIT*g_model.frsky.channels[i].type, LEN_VTELEMUNIT, (sub==subN && m_posHorz==1 ? blink:0));
if (sub==subN && (s_editMode>0 || p1valdiff)) {
if (m_posHorz == 0)
g_model.frsky.channels[i].ratio = checkIncDec(event, g_model.frsky.channels[i].ratio, 0, 255, EE_MODEL);
else
if (m_posHorz == 0) {
uint16_t ratio = checkIncDec(event, g_model.frsky.channels[i].ratio, 0, 256, EE_MODEL);
if (checkIncDec_Ret) {
if (ratio == 127 && g_model.frsky.channels[i].multiplier > 0) {
g_model.frsky.channels[i].multiplier--; g_model.frsky.channels[i].ratio = 255;
}
else if (ratio == 256) {
if (g_model.frsky.channels[i].multiplier < 3) { g_model.frsky.channels[i].multiplier++; g_model.frsky.channels[i].ratio = 128; }
}
else {
g_model.frsky.channels[i].ratio = ratio;
}
}
}
else {
CHECK_INCDEC_MODELVAR(event, g_model.frsky.channels[i].type, 0, UNIT_MAX-1);
}
}
}
subN++;