From 75db725f02da5e56fc716182669ea98c3b7fbfc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alberto=20Garci=CC=81a=20Hierro?= Date: Mon, 9 Oct 2017 19:12:47 +0100 Subject: [PATCH] Perform UI-side conversion for alt_alarm too alt_alarm now performs unit conversion on the UI if the FC firmware version is greater than 1.7.3 --- tabs/osd.js | 68 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/tabs/osd.js b/tabs/osd.js index 7bf5eb50..cc5446c6 100644 --- a/tabs/osd.js +++ b/tabs/osd.js @@ -251,6 +251,42 @@ FONT.embed_dot = function(str) { var OSD = OSD || {}; +// common functions for altitude and negative altitude alarms +function altitude_alarm_unit(osd_data) { + if (OSD.data.unit_mode === 0) { + return 'ft'; + } + return 'm'; +} + +function altitude_alarm_to_display(osd_data, value) { + if (OSD.data.unit_mode === 0) { + // meters to feet + return Math.round(value * 3.28084) + } + return value; +} + +function altitude_alarm_from_display(osd_data, value) { + if (OSD.data.unit_mode === 0) { + // feet to meters + return Math.round(value / 3.28084); + } + return value; +} + +// Used to wrap altitude conversion functions for firmwares up +// to 1.7.3, since the altitude alarm used either m or feet +// depending on the OSD display unit used (hence, no conversion) +function altitude_alarm_display_function(fn) { + return function(osd_data, value) { + if (semver.gt(CONFIG.flightControllerVersion, '1.7.3')) { + return fn(osd_data, value) + } + return value; + } +} + // parsed fc output and output to fc, used by to OSD.msp.encode OSD.initData = function () { OSD.data = { @@ -302,12 +338,9 @@ OSD.constants = { }, { name: 'MAX_ALTITUDE', - unit: function(osd_data) { - if (OSD.data.unit_mode === 0) { - return 'ft'; - } - return 'm'; - }, + unit: altitude_alarm_unit, + to_display: altitude_alarm_display_function(altitude_alarm_to_display), + from_display: altitude_alarm_display_function(altitude_alarm_from_display), }, { name: 'DIST', @@ -340,26 +373,9 @@ OSD.constants = { }, { name: 'MAX_NEG_ALTITUDE', - unit: function(osd_data) { - if (OSD.data.unit_mode === 0) { - return 'ft'; - } - return 'm'; - }, - to_display: function(osd_data, value) { - if (OSD.data.unit_mode === 0) { - // meters to feet - return Math.round(value * 3.28084) - } - return value; - }, - from_display: function(osd_data, value) { - if (OSD.data.unit_mode === 0) { - // feet to meters - return Math.round(value / 3.28084); - } - return value; - }, + unit: altitude_alarm_unit, + to_display: altitude_alarm_to_display, + from_display: altitude_alarm_from_display, }, ],