Updated Wizard for X9 radios. (#4910)

This commit is contained in:
Sebastien Charpentier
2017-11-11 09:46:38 +01:00
committed by Bertrand Songis
parent f0f3e35bf6
commit 7ca3f60999
4 changed files with 89 additions and 98 deletions
@@ -138,7 +138,7 @@ local function init()
end
-- Engine Menu
local engineModeItems = {"No", "Yes..."}
local engineModeItems = {"No", "Yes"}
local function drawEngineMenu()
lcd.clear()
lcd.drawText(1, 0, "Has your model got an engine?", 0)
@@ -206,7 +206,7 @@ local function elevonsMenu(event)
end
-- Rudder menu
local rudderModeItems = {"No", "Yes..."}
local rudderModeItems = {"No", "Yes"}
local function drawRudderMenu()
lcd.clear()
@@ -308,10 +308,10 @@ local function applySettings()
if engineMode == 1 then
addMix(thrCH1, MIXSRC_FIRST_INPUT+defaultChannel(2), "Engine")
end
addMix(elevCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elev1-E", 50)
addMix(elevCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Elev1-A", 50, 1)
addMix(elevCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elev2-E", 50)
addMix(elevCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "Elev2-A", -50, 1)
addMix(elevCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevL-E", 50)
addMix(elevCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "ElevL-A", 50, 1)
addMix(elevCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "ElevR-E", 50)
addMix(elevCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "ElevR-A", -50, 1)
if rudderMode == 1 then
addMix(rudCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder")
end
@@ -319,6 +319,7 @@ end
local function drawNextLine(x, y, label, channel)
lcd.drawText(x, y, label, 0);
lcd.drawText(x+48, y, ":", 0);
lcd.drawSource(x+52, y, MIXSRC_CH1+channel, 0)
y = y + 8
if y > 50 then
@@ -335,17 +336,16 @@ local function drawConfirmationMenu()
lcd.drawText(48, 1, "Ready to go?", 0);
lcd.drawFilledRectangle(0, 0, LCD_W, 9, 0)
if engineMode == 1 then
x, y = drawNextLine(x, y, "Throttle:", thrCH1)
x, y = drawNextLine(x, y, "Throttle", thrCH1)
end
x, y = drawNextLine(x, y, "Elevons:", elevCH1)
x, y = drawNextLine(x, y, "Elevons:", elevCH2)
x, y = drawNextLine(x, y, "Elev L", elevCH1)
x, y = drawNextLine(x, y, "Elev R", elevCH2)
if rudderMode == 1 then
drawNextLine(x, y, "Rudder:", rudCH1)
end
lcd.drawText(48, LCD_H-8, "[Enter Long] to confirm", 0);
lcd.drawText(48, LCD_H-8, "Long [ENT] to confirm", 0);
lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0)
lcd.drawPixmap(LCD_W-18, 0, "confirm-tick.bmp")
lcd.drawPixmap(0, LCD_H-17, "confirm-plane.bmp")
lcd.drawPixmap(LCD_W-18, LCD_H-17, "confirm-tick.bmp")
fieldsMax = 0
end
@@ -27,7 +27,6 @@ local dirty = true
local edit = false
local field = 0
local fieldsMax = 0
local comboBoxMode = 0 -- Scrap variable
-- Model settings
local thrCH1 = 0
@@ -140,11 +139,9 @@ local function drawThrottleMenu()
lcd.clear()
lcd.drawText(1, 0, "Select multicopter throttle channel", 0)
lcd.drawFilledRectangle(0, 0, LCD_W, 8, GREY_DEFAULT+FILL_WHITE)
lcd.drawCombobox(0, 8, LCD_W/2, {"..."}, comboBoxMode, getFieldFlags(1))
lcd.drawLine(LCD_W/2-1, 18, LCD_W/2-1, LCD_H-1, DOTTED, 0)
lcd.drawPixmap(120, 8, "multi-thr.bmp")
lcd.drawText(20, LCD_H-16, "Assign Throttle", 0);
lcd.drawText(20, LCD_H-8, "Channel", 0);
lcd.drawText(25, LCD_H-16, "Assign channel", 0);
lcd.drawText(LCD_W/2-19, LCD_H-8, ">>>", 0);
lcd.drawSource(113, LCD_H-8, MIXSRC_CH1+thrCH1, getFieldFlags(0))
fieldsMax = 0
@@ -164,11 +161,9 @@ local function drawRollMenu()
lcd.clear()
lcd.drawText(1, 0, "Select multicopter roll channel", 0)
lcd.drawFilledRectangle(0, 0, LCD_W, 8, GREY_DEFAULT+FILL_WHITE)
lcd.drawCombobox(0, 8, LCD_W/2, {"..."}, comboBoxMode, getFieldFlags(1))
lcd.drawLine(LCD_W/2-1, 18, LCD_W/2-1, LCD_H-1, DOTTED, 0)
lcd.drawPixmap(120, 8, "multi-roll.bmp")
lcd.drawText(20, LCD_H-16, "Assign Roll", 0);
lcd.drawText(20, LCD_H-8, "Channel", 0);
lcd.drawText(25, LCD_H-16, "Assign channel", 0);
lcd.drawText(LCD_W/2-19, LCD_H-8, ">>>", 0);
lcd.drawSource(113, LCD_H-8, MIXSRC_CH1+rollCH1, getFieldFlags(0))
fieldsMax = 0
@@ -188,11 +183,9 @@ local function drawPitchMenu()
lcd.clear()
lcd.drawText(1, 0, "Select multicopter pitch channel", 0)
lcd.drawFilledRectangle(0, 0, LCD_W, 8, GREY_DEFAULT+FILL_WHITE)
lcd.drawCombobox(0, 8, LCD_W/2, {"..."}, comboBoxMode, getFieldFlags(1))
lcd.drawLine(LCD_W/2-1, 18, LCD_W/2-1, LCD_H-1, DOTTED, 0)
lcd.drawPixmap(120, 8, "multi-pitch.bmp")
lcd.drawText(20, LCD_H-16, "Assign Pitch", 0);
lcd.drawText(20, LCD_H-8, "Channel", 0);
lcd.drawText(25, LCD_H-16, "Assign channel", 0);
lcd.drawText(LCD_W/2-19, LCD_H-8, ">>>", 0);
lcd.drawSource(113, LCD_H-8, MIXSRC_CH1+pitchCH1, getFieldFlags(0))
fieldsMax = 0
@@ -212,11 +205,9 @@ local function drawYawMenu()
lcd.clear()
lcd.drawText(1, 0, "Select multicopter yaw channel", 0)
lcd.drawFilledRectangle(0, 0, LCD_W, 8, GREY_DEFAULT+FILL_WHITE)
lcd.drawCombobox(0, 8, LCD_W/2, {"..."}, comboBoxMode, getFieldFlags(1))
lcd.drawLine(LCD_W/2-1, 18, LCD_W/2-1, LCD_H-1, DOTTED, 0)
lcd.drawPixmap(120, 8, "multi-yaw.bmp")
lcd.drawText(20, LCD_H-16, "Assign Yaw", 0);
lcd.drawText(20, LCD_H-8, "Channel", 0);
lcd.drawText(25, LCD_H-16, "Assign channel", 0);
lcd.drawText(LCD_W/2-19, LCD_H-8, ">>>", 0);
lcd.drawSource(113, LCD_H-8, MIXSRC_CH1+yawCH1, getFieldFlags(0))
fieldsMax = 0
@@ -234,6 +225,7 @@ end
-- Confirmation Menu
local function drawNextLine(x, y, label, channel)
lcd.drawText(x, y, label, 0);
lcd.drawText(x+48, y, ":", 0);
lcd.drawSource(x+52, y, MIXSRC_CH1+channel, 0)
y = y + 8
if y > 50 then
@@ -249,14 +241,13 @@ local function drawConfirmationMenu()
lcd.clear()
lcd.drawText(48, 1, "Ready to go?", 0);
lcd.drawFilledRectangle(0, 0, LCD_W, 9, 0)
x, y = drawNextLine(x, y, "Throttle:", thrCH1)
x, y = drawNextLine(x, y, "Roll:", rollCH1)
x, y = drawNextLine(x, y, "Pitch:", pitchCH1)
x, y = drawNextLine(x, y, "Yaw:", yawCH1)
lcd.drawText(48, LCD_H-8, "[Enter Long] to confirm", 0);
x, y = drawNextLine(x, y, "Throttle", thrCH1)
x, y = drawNextLine(x, y, "Roll", rollCH1)
x, y = drawNextLine(x, y, "Pitch", pitchCH1)
x, y = drawNextLine(x, y, "Yaw", yawCH1)
lcd.drawText(48, LCD_H-8, "Long [ENT] to confirm", 0);
lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0)
lcd.drawPixmap(LCD_W-18, 0, "confirm-tick.bmp")
lcd.drawPixmap(0, LCD_H-17, "confirm-plane.bmp")
lcd.drawPixmap(LCD_W-18, LCD_H-17, "confirm-tick.bmp")
fieldsMax = 0
end
@@ -35,16 +35,16 @@ local engineMode = 1
local thrCH1 = 0
local aileronsMode = 1
local ailCH1 = 0
local ailCH2 = 4
local ailCH2 = 5
local flapsMode = 0
local flapsCH1 = 5
local flapsCH2 = 6
local flapsCH1 = 6
local flapsCH2 = 7
local brakesMode = 0
local brakesCH1 = 8
local brakesCH2 = 9
local tailMode = 1
local eleCH1 = 0
local eleCH2 = 7
local eleCH2 = 4
local rudCH1 = 0
local servoPage = nil
@@ -149,7 +149,7 @@ local function init()
end
-- Engine Menu
local engineModeItems = {"No", "Yes..."}
local engineModeItems = {"No", "Yes"}
local function drawEngineMenu()
lcd.clear()
lcd.drawText(1, 0, "Has your model got an engine?", 0)
@@ -186,7 +186,7 @@ local function engineMenu(event)
end
-- Ailerons Menu
local aileronsModeItems = {"No", "Yes...", "Yes, 2 channels..."}
local aileronsModeItems = {"No", "Yes", "Yes, 2 channels"}
local function drawAileronsMenu()
lcd.clear()
lcd.drawText(1, 0, "Has your model got ailerons?", 0)
@@ -233,7 +233,7 @@ local function aileronsMenu(event)
end
-- Flaps Menu
local flapsModeItems = {"No", "Yes...", "Yes, 2 channels..."}
local flapsModeItems = {"No", "Yes", "Yes, 2 channels"}
local function drawFlapsMenu()
lcd.clear()
lcd.drawText(1, 0, "Has your model got flaps?", 0)
@@ -280,7 +280,7 @@ local function flapsMenu(event)
end
-- Airbrakes Menu
local brakesModeItems = {"No", "Yes...", "Yes, 2 channels..."}
local brakesModeItems = {"No", "Yes", "Yes, 2 channels"}
local function drawBrakesMenu()
lcd.clear()
lcd.drawText(1, 0, "Has your model got air brakes?", 0)
@@ -327,7 +327,7 @@ local function brakesMenu(event)
end
-- Tail Menu
local tailModeItems = {"Ele(1ch), no Rud...", "Ele(1ch) + Rud...", "Ele(2ch) + Rud...", "V-Tail..."}
local tailModeItems = {"Ele(1ch)", "Ele(1ch) + Rudder(1ch)", "Ele(2ch) + Rudder(1ch)", "V-Tail(2ch)"}
local function drawTailMenu()
lcd.clear()
lcd.drawText(1, 0, "Which is the tail config on your model?", 0)
@@ -435,6 +435,7 @@ end
-- Confirmation Menu
local function drawNextLine(x, y, label, channel)
lcd.drawText(x, y, label, 0);
lcd.drawText(x+48, y, ":", 0);
lcd.drawSource(x+52, y, MIXSRC_CH1+channel, 0)
y = y + 8
if y > 50 then
@@ -451,40 +452,41 @@ local function drawConfirmationMenu()
lcd.drawText(48, 1, "Ready to go?", 0);
lcd.drawFilledRectangle(0, 0, LCD_W, 9, 0)
if engineMode == 1 then
x, y = drawNextLine(x, y, "Throttle:", thrCH1)
x, y = drawNextLine(x, y, "Throttle", thrCH1)
end
if aileronsMode > 0 then
x, y = drawNextLine(x, y, "Ailerons:", ailCH1)
if aileronsMode == 2 then
x, y = drawNextLine(x, y, "Ailerons:", ailCH2)
end
if aileronsMode == 1 then
x, y = drawNextLine(x, y, "Ail", ailCH1)
elseif aileronsMode == 2 then
x, y = drawNextLine(x, y, "Ail L", ailCH1)
x, y = drawNextLine(x, y, "Ail R", ailCH2)
end
if flapsMode > 0 then
x, y = drawNextLine(x, y, "Flaps:", flapsCH1)
if flapsMode == 2 then
x, y = drawNextLine(x, y, "Flaps:", flapsCH2)
end
if flapsMode == 1 then
x, y = drawNextLine(x, y, "Flaps", flapsCH1)
elsif flapsMode == 2 then
x, y = drawNextLine(x, y, "Flap L", flapsCH1)
x, y = drawNextLine(x, y, "Flap R", flapsCH2)
end
if brakesMode > 0 then
x, y = drawNextLine(x, y, "Brakes:", brakesCH1)
if brakesMode == 2 then
x, y = drawNextLine(x, y, "Brakes:", brakesCH2)
end
if brakesMode == 1 then
x, y = drawNextLine(x, y, "Brakes", brakesCH1)
elseif brakesMode == 2 then
x, y = drawNextLine(x, y, "Brake L", brakesCH1)
x, y = drawNextLine(x, y, "Brake R", brakesCH2)
end
if tailMode == 3 then
x, y = drawNextLine(x, y, "V-Tail:", eleCH1)
x, y = drawNextLine(x, y, "V-Tail:", eleCH2)
x, y = drawNextLine(x, y, "V-Tail L", eleCH1)
x, y = drawNextLine(x, y, "V-Tail R", eleCH2)
else
x, y = drawNextLine(x, y, "Elevator:", eleCH1)
if tailMode == 2 then
x, y = drawNextLine(x, y, "Elevator:", eleCH2)
x, y = drawNextLine(x, y, "Rudder", rudCH1)
if tailMode == 1 then
x, y = drawNextLine(x, y, "Elev", eleCH1)
elseif tailMode == 2 then
x, y = drawNextLine(x, y, "Elev L", eleCH1)
x, y = drawNextLine(x, y, "Elev R", eleCH2)
end
drawNextLine(x, y, "Rudder:", rudCH1)
end
lcd.drawText(48, LCD_H-8, "[Enter Long] to confirm", 0);
lcd.drawText(48, LCD_H-8, "Long [ENT] to confirm", 0);
lcd.drawFilledRectangle(0, LCD_H-9, LCD_W, 9, 0)
lcd.drawPixmap(LCD_W-18, 0, "confirm-tick.bmp")
lcd.drawPixmap(0, LCD_H-17, "confirm-plane.bmp")
lcd.drawPixmap(LCD_W-18, LCD_H-17, "confirm-tick.bmp")
fieldsMax = 0
end
@@ -505,36 +507,38 @@ local function applySettings()
if engineMode > 0 then
addMix(thrCH1, MIXSRC_FIRST_INPUT+defaultChannel(2), "Engine")
end
if aileronsMode > 0 then
addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Aileron")
if aileronsMode == 2 then
addMix(ailCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "Aileron", -100)
end
if aileronsMode == 1 then
addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail")
elseif aileronsMode == 2 then
addMix(ailCH1, MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail L")
addMix(ailCH2, MIXSRC_FIRST_INPUT+defaultChannel(3), "Ail R", -100)
end
if flapsMode > 0 then
addMix(flapsCH1, MIXSRC_SA, "Flap")
if flapsMode == 2 then
addMix(flapsCH2, MIXSRC_SA, "Flap")
end
if flapsMode == 1 then
addMix(flapsCH1, MIXSRC_SA, "Flaps")
elseif flapsMode == 2 then
addMix(flapsCH1, MIXSRC_SA, "Flap L")
addMix(flapsCH2, MIXSRC_SA, "Flap R")
end
if brakesMode > 0 then
addMix(brakesCH1, MIXSRC_SE, "Brake")
if brakesMode == 2 then
addMix(brakesCH2, MIXSRC_SE, "Brake")
end
if brakesMode == 1 then
addMix(brakesCH1, MIXSRC_SE, "Brakes")
elseif brakesMode == 2 then
addMix(brakesCH1, MIXSRC_SE, "Brake L")
addMix(brakesCH2, MIXSRC_SE, "Brake R")
end
if tailMode == 3 then
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-Tail-E", 50)
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-Tail-R", 50, 1)
addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-Tail-E", 50)
addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-Tail-R", -50, 1)
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-Ele L", 50)
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-Rud L", 50, 1)
addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "V-Ele R", 50)
addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(0), "V-Rud R", -50, 1)
else
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elevator")
if tailMode > 0 then
addMix(rudCH1, MIXSRC_FIRST_INPUT+defaultChannel(0), "Rudder")
end
if tailMode == 2 then
addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elevator")
if tailMode == 1 then
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elevator")
elseif tailMode == 2 then
addMix(eleCH1, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elev L")
addMix(eleCH2, MIXSRC_FIRST_INPUT+defaultChannel(1), "Elev R")
end
end
end
@@ -20,7 +20,6 @@ local dirty = true
-- Model types
local modelType = 0
local MODELTYPE_PLANE = 0
--local MODELTYPE_HELI = 1
local MODELTYPE_DELTA = 1
local MODELTYPE_QUAD = 2
@@ -39,18 +38,16 @@ end
-- Model Type Menu
local function modelTypeSurround(index)
lcd.drawRectangle(12+47*index, 13, 48, 48)
lcd.drawPixmap(17+47*index, 8, "mark.bmp")
lcd.drawRectangle(17+65*index, 14, 48, 48)
lcd.drawPixmap(22+65*index, 9, "mark.bmp")
end
local function drawModelChoiceMenu()
lcd.clear()
lcd.drawScreenTitle("", 0, 0)
-- lcd.drawText(58, 13, "Select model type", 0)
lcd.drawPixmap( 16, 17, "plane.bmp")
--lcd.drawPixmap( 63, 17, "heli.bmp")
lcd.drawPixmap(63, 17, "delta.bmp")
lcd.drawPixmap(110, 17, "quadri.bmp")
lcd.drawScreenTitle("Select model type", 0, 0)
lcd.drawPixmap(21, 18, "plane.bmp")
lcd.drawPixmap(86, 18, "delta.bmp")
lcd.drawPixmap(151, 18, "quadri.bmp")
modelTypeSurround(modelType)
end
@@ -62,7 +59,6 @@ local function modelTypeMenu(event)
if event == EVT_ENTER_BREAK then
if modelType == MODELTYPE_PLANE then
return "plane.lua"
elseif modelType == MODELTYPE_HELI then
elseif modelType == MODELTYPE_DELTA then
return "delta.lua"
elseif modelType == MODELTYPE_QUAD then