diff --git a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua index 50a8c7dde..3f99b5dbb 100644 --- a/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/horus/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -72,7 +72,7 @@ local function incrField(step) end else local min, max = 0, 0 - if field.type <= 5 then + if ((field.type <= 5) or (field.type == 8)) then min = field.min max = field.max step = field.step * step @@ -239,25 +239,21 @@ local function fieldFloatLoad(field, data, offset) field.default = fieldGetValue(data, offset+12, 4) fieldUnsignedToSigned(field, 4) field.prec = data[offset+16] - if field.prec > 2 then - field.prec = 2 + if field.prec > 3 then + field.prec = 3 end field.step = fieldGetValue(data, offset+17, 4) field.unit, offset = fieldGetString(data, offset+21) end +local function formatFloat(num, decimals) + local mult = 10^(decimals or 0) + local val = num / mult + return string.format("%." .. decimals .. "f", val) +end + local function fieldFloatDisplay(field, y, attr) - local attrnum - if field.prec == 1 then - attrnum = LEFT + attr + PREC1 - elseif field.prec == 2 then - attrnum = LEFT + attr + PREC2 - else - attrnum = LEFT + attr - end - -- lcd.drawNumber(140, y, field.value, attrnum) -- NOTE: original code getLastPos not available in Horus - -- lcd.drawText(lcd.getLastPos(), y, field.unit, attr) -- NOTE: original code getLastPos not available in Horus - lcd.drawText(140, y, field.value .. field.unit, attr) -- NOTE: Concenated fields instead of get lastPos + lcd.drawText(140, y, formatFloat(field.value, field.prec) .. field.unit, attr) end local function fieldFloatSave(field) diff --git a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua index 8ccdbf285..b6115d088 100644 --- a/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/taranis-x7/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -72,7 +72,7 @@ local function incrField(step) end else local min, max = 0, 0 - if field.type <= 5 then + if ((field.type <= 5) or (field.type == 8)) then min = field.min max = field.max step = field.step * step @@ -238,23 +238,21 @@ local function fieldFloatLoad(field, data, offset) field.default = fieldGetValue(data, offset+12, 4) fieldUnsignedToSigned(field, 4) field.prec = data[offset+16] - if field.prec > 2 then - field.prec = 2 + if field.prec > 3 then + field.prec = 3 end field.step = fieldGetValue(data, offset+17, 4) field.unit, offset = fieldGetString(data, offset+21) end +local function formatFloat(num, decimals) + local mult = 10^(decimals or 0) + local val = num / mult + return string.format("%." .. decimals .. "f", val) +end + local function fieldFloatDisplay(field, y, attr) - local attrnum - if field.prec == 1 then - attrnum = LEFT + attr + PREC1 - elseif field.prec == 2 then - attrnum = LEFT + attr + PREC2 - else - attrnum = LEFT + attr - end - lcd.drawNumber(89, y, field.value, attrnum) + lcd.drawText(89, y, formatFloat(field.value, field.prec), LEFT + attr) lcd.drawText(lcd.getLastPos(), y, field.unit, attr) end diff --git a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua index 58416af36..833ec6d83 100644 --- a/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua +++ b/radio/sdcard/taranis-x9/SCRIPTS/TOOLS/CROSSFIRE/device.lua @@ -72,7 +72,7 @@ local function incrField(step) end else local min, max = 0, 0 - if field.type <= 5 then + if ((field.type <= 5) or (field.type == 8)) then min = field.min max = field.max step = field.step * step @@ -238,23 +238,21 @@ local function fieldFloatLoad(field, data, offset) field.default = fieldGetValue(data, offset+12, 4) fieldUnsignedToSigned(field, 4) field.prec = data[offset+16] - if field.prec > 2 then - field.prec = 2 + if field.prec > 3 then + field.prec = 3 end field.step = fieldGetValue(data, offset+17, 4) field.unit, offset = fieldGetString(data, offset+21) end +local function formatFloat(num, decimals) + local mult = 10^(decimals or 0) + local val = num / mult + return string.format("%." .. decimals .. "f", val) +end + local function fieldFloatDisplay(field, y, attr) - local attrnum - if field.prec == 1 then - attrnum = LEFT + attr + PREC1 - elseif field.prec == 2 then - attrnum = LEFT + attr + PREC2 - else - attrnum = LEFT + attr - end - lcd.drawNumber(140, y, field.value, attrnum) + lcd.drawText(140, y, formatFloat(field.value, field.prec), LEFT + attr) lcd.drawText(lcd.getLastPos(), y, field.unit, attr) end