mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 22:28:12 +00:00
62aa58d32d
1. NEW Black&White Radios new model setup. Now it can setup completely a plane from zero 2. Color version; simplified code for Tail mixes, and fix Taileron setup
90 lines
3.5 KiB
Lua
90 lines
3.5 KiB
Lua
local Log, menuLib, modelLib, DEBUG_ON, SIMULATION_ON = ... -- Get DebugON from parameters
|
|
local MAIN_MENU_LIB_VERSION = "0.56"
|
|
local MODEL = modelLib.MODEL
|
|
|
|
local PHASE = menuLib.PHASE
|
|
local LINE_TYPE = menuLib.LINE_TYPE
|
|
|
|
local lastGoodMenu=0
|
|
|
|
-- Creates the menus to Render with the GUI
|
|
local function ST_LoadMenu(menuId)
|
|
local ctx = menuLib.DSM_Context
|
|
menuLib.clearMenuLines()
|
|
|
|
if (menuId==0x1000) then -- MAIN MENU
|
|
ctx.Menu = { MenuId = 0x1000, Text = "Main Menu ("..MODEL.modelName..")", PrevId = 0, NextId = 0, BackId = 0, TextId=0 }
|
|
ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, Text = "Model Setup", ValId = 0xFFF3,TextId=0 }
|
|
|
|
if (SIMULATION_ON) then
|
|
ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, Text = "RX Simulator (GUI dev only)", ValId = 0xFFF1, TextId=0 } -- Menu 0xFFF2 to SIMULATOR
|
|
end
|
|
ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, Text = "Forward Programming RX", ValId = 0xFFF2, TextId=0 } -- Menu 0xFFF2 to Real RX
|
|
ctx.SelLine = 6
|
|
|
|
lastGoodMenu = menuId
|
|
else
|
|
--print("NOT IMPLEMENTED")
|
|
ctx.Menu = { MenuId = 0x0002, Text = "NOT IMPLEMENTED", TextId = 0, PrevId = 0, NextId = 0, BackId = lastGoodMenu }
|
|
ctx.SelLine = menuLib.BACK_BUTTON
|
|
end
|
|
|
|
menuLib.PostProcessMenu()
|
|
end
|
|
|
|
local function Main_Send_Receive()
|
|
local ctx = menuLib.DSM_Context
|
|
|
|
if ctx.Phase == PHASE.RX_VERSION then -- Just Init RX Version
|
|
ctx.RX.Name = "Main Menu"
|
|
ctx.RX.Version = MAIN_MENU_LIB_VERSION
|
|
ctx.Phase = PHASE.MENU_TITLE
|
|
ctx.Menu.MenuId = 0
|
|
|
|
ctx.Refresh_Display = true
|
|
elseif ctx.Phase == PHASE.WAIT_CMD then
|
|
|
|
elseif ctx.Phase == PHASE.MENU_TITLE then -- request menu title
|
|
if ctx.Menu.MenuId == 0 then -- First time loading a menu ?
|
|
ST_LoadMenu(0x01000)
|
|
else
|
|
ST_LoadMenu(ctx.Menu.MenuId)
|
|
end
|
|
ctx.Phase = PHASE.WAIT_CMD
|
|
ctx.Refresh_Display = true
|
|
|
|
elseif ctx.Phase == PHASE.VALUE_CHANGING then -- send value
|
|
local line = ctx.MenuLines[ctx.SelLine] -- Updated Value of SELECTED line
|
|
--if (DEBUG_ON) then Log.LOG_write("%3.3f %s: ", menuLib.getElapsedTime(), menuLib.phase2String(ctx.Phase)) end
|
|
--if (DEBUG_ON) then Log.LOG_write("SEND SIM_updateMenuValue(ValueId=0x%X Text=\"%s\" Value=%s)\n", line.ValId, line.Text, menuLib.lineValue2String(line)) end
|
|
ctx.Phase = PHASE.VALUE_CHANGING_WAIT
|
|
|
|
elseif ctx.Phase == PHASE.VALUE_CHANGING_WAIT then
|
|
local line = ctx.MenuLines[ctx.SelLine]
|
|
|
|
elseif ctx.Phase == PHASE.VALUE_CHANGE_END then -- send value
|
|
local line = ctx.MenuLines[ctx.SelLine] -- Updated Value of SELECTED line
|
|
--if (DEBUG_ON) then Log.LOG_write("%3.3f %s: ", menuLib.getElapsedTime(), menuLib.phase2String(ctx.Phase)) end
|
|
--if (DEBUG_ON) then Log.LOG_write("SEND SIM_updateMenuValue(ValueId=0x%X Text=\"%s\" Value=%s)\n", line.ValId, line.Text, menuLib.lineValue2String(line)) end
|
|
--if (DEBUG_ON) then Log.LOG_write("SEND SIM_validateMenuValue(ValueId=0x%X Text=\"%s\" Value=%s)\n", line.ValId, line.Text, menuLib.lineValue2String(line)) end
|
|
ctx.Phase = PHASE.WAIT_CMD
|
|
|
|
elseif ctx.Phase == PHASE.EXIT then
|
|
ctx.Phase=PHASE.EXIT_DONE
|
|
return 1
|
|
end
|
|
|
|
return 0
|
|
end
|
|
|
|
local function Main_Init()
|
|
local ctx = menuLib.DSM_Context
|
|
ctx.Phase = PHASE.RX_VERSION
|
|
end
|
|
|
|
local function Main_Done()
|
|
local ctx = menuLib.DSM_Context
|
|
ctx.Phase = PHASE.EXIT_DONE
|
|
end
|
|
|
|
return { init=Main_Init, run=Main_Send_Receive, done=Main_Done } |