diff --git a/Lua_scripts/DSM FwdPrg_05_BW.lua b/Lua_scripts/DSM FwdPrg_05_BW.lua index 2420b0a..539d68a 100644 --- a/Lua_scripts/DSM FwdPrg_05_BW.lua +++ b/Lua_scripts/DSM FwdPrg_05_BW.lua @@ -125,7 +125,7 @@ local function GUI_Display_Line_Menu(x,y,w,h,line,selected) if dsmLib.isSelectableLine(line) then -- Menu Line - text = text .. " |>" --OPENTX + text = text .. " >" else -- SubHeaders and plain text lines if (TEXT_SIZE~=SMLSIZE) then -- ignore bold on small size screens bold = (dsmLib.isDisplayAttr(line.TextAttr,DISP_ATTR.BOLD) and BOLD) or 0 @@ -154,8 +154,8 @@ local function GUI_Display_Line_Value(lineNum, line, value, selected, editing) local header = line.Text -- ONLY do this for Flight Mode (Right Align or Centered) if (dsmLib.isFlightModeText(line.TextId)) then - -- Display Header + Value together - header = header .. " " .. value + -- Display Header + Value together + header = dsmLib.GetFlightModeValue(line.TextId,header,value) -- Flight mode display attributes if (TEXT_SIZE~=SMLSIZE) then -- ignore bold on small size screens @@ -194,6 +194,23 @@ local function GUI_Display_Line_Value(lineNum, line, value, selected, editing) if (DEBUG_ON_LCD) then lcd.drawText(LCD_X_LINE_DEBUG,y, line.MinMaxDebug or "", TEXT_SIZE + WARNING_COLOR) end -- display debug end + +------------------------------------------------------------------------------------------------------------ +local function GUI_ShowBitmap(x,y,imgData) + -- imgData format "bitmap.png|alt message" + local f = string.gmatch(imgData, '([^%|]+)') -- Iterator over values split by '|' + local imgName, imgMsg = f(), f() + + lcd.drawText(x, y, imgMsg or "") -- Alternate Image MSG + + -- NO IMAGES in Text B&W + --local imgPath = IMAGE_PATH .. (imgName or "") + --local bitmap = Bitmap.open(imgPath) + --if (bitmap~=nil) then + -- lcd.drawBitmap(bitmap, x,y+20) + --end +end + ------------------------------------------------------------------------------------------------------------ local function GUI_Display() local ctx = DSM_Context @@ -211,7 +228,11 @@ local function GUI_Display() end --Draw RX Menu if ctx.Phase == PHASE.RX_VERSION then - lcd.drawText(LCD_X_LINE_TITLE,50,"No compatible DSM RX...", BLINK + TEXT_SIZE) + if (ctx.isReset) then + lcd.drawText(LCD_X_LINE_TITLE,50,"Waiting for RX to Restart", BLINK + TEXT_SIZE) + else + lcd.drawText(LCD_X_LINE_TITLE,50,"No compatible DSM RX...", BLINK + TEXT_SIZE) + end else local menu = ctx.Menu if menu.Text ~= nil then @@ -235,13 +256,11 @@ local function GUI_Display() local value = line.Val if line.Val ~= nil then if dsmLib.isListLine(line) then -- for Lists of Strings, get the text - value = dsmLib.Get_Text(line.Val + line.TextStart) -- TextStart is the initial offset for text - local imgValue = dsmLib.Get_Text_Img(line.Val + line.TextStart) -- Complentary IMAGE for this value to Display?? + value = dsmLib.Get_List_Text(line.Val + line.TextStart) -- TextStart is the initial offset for text + local imgData = dsmLib.Get_List_Text_Img(line.Val + line.TextStart) -- Complentary IMAGE for this value to Display?? - if (imgValue) then -- Optional Image for a Value - --TODO: Pending feature.. create images and put bitmap instead of a message - --Display the image/Alternate Text - lcd.drawText(LCD_X_LINE_TITLE, LCD_Y_LINE_FIRST+LCD_Y_LINE_HEIGHT, "Img:"..imgValue) + if (imgData) then -- Optional Image and Msg for value + GUI_ShowBitmap(LCD_X_LINE_TITLE,LCD_Y_LINE_FIRST+LCD_Y_LINE_HEIGHT, imgData) end end diff --git a/Lua_scripts/DSM FwdPrg_05_Color.lua b/Lua_scripts/DSM FwdPrg_05_Color.lua index d747eaf..908bf84 100644 --- a/Lua_scripts/DSM FwdPrg_05_Color.lua +++ b/Lua_scripts/DSM FwdPrg_05_Color.lua @@ -31,6 +31,8 @@ else dsmLib = loadScript("/SCRIPTS/TOOLS/DSMLIB/DsmFwPrgLib.lua")(DEBUG_ON) end +local IMAGE_PATH = "/SCRIPTS/TOOLS/DSMLIB/img/" + local PHASE = dsmLib.PHASE local LINE_TYPE = dsmLib.LINE_TYPE local DISP_ATTR = dsmLib.DISP_ATTR @@ -85,7 +87,6 @@ local LCD_BOX_COLOR = TEXT_DISABLE_COLOR --------------------- lcd.sizeText replacement ------------------------------------------------- -- EdgeTx dont have lcd.sizeText, so we do an equivalent one using the string length and 5px per character local function my_lcd_sizeText(s) - print(string.format("EdgeTX=%s",IS_EDGETX)) -- return: If IS_EDGETX then lcd.sizeText() else string.len() return (IS_EDGETX and lcd.sizeText(s)) or (string.len(s)*10) end @@ -214,7 +215,7 @@ local function GUI_Display_Line_Value(lineNum, line, value, selected, editing) -- ONLY do this for Flight Mode (Right Align or Centered) if (dsmLib.isFlightModeText(line.TextId)) then -- Display Header + Value together - header = header .. " " .. value + header = dsmLib.GetFlightModeValue(line.TextId,header,value) -- Bold Text??? bold = (dsmLib.isDisplayAttr(line.TextAttr,DISP_ATTR.BOLD) and BOLD) or 0 @@ -327,6 +328,20 @@ local function GUI_Display_Edit_Buttons(line) end +local function GUI_ShowBitmap(x,y,imgData) + -- imgData format "bitmap.png|alt message" + local f = string.gmatch(imgData, '([^%|]+)') -- Iterator over values split by '|' + local imgName, imgMsg = f(), f() + + lcd.drawText(x, y, imgMsg or "") -- Alternate Image MSG + + local imgPath = IMAGE_PATH .. (imgName or "") + local bitmap = Bitmap.open(imgPath) + if (bitmap~=nil) then + lcd.drawBitmap(bitmap, x,y+20) + end +end + ------------------------------------------------------------------------------------------------------------ local function GUI_Display() local ctx = DSM_Context @@ -344,7 +359,11 @@ local function GUI_Display() lcd.drawText(5, 0, header, LCD_TOOL_HDR_COLOR + SMLSIZE) --Draw RX Menu if ctx.Phase == PHASE.RX_VERSION then - lcd.drawText(LCD_X_LINE_TITLE,100,"No compatible DSM RX...", BLINK) + if (ctx.isReset) then + lcd.drawText(LCD_X_LINE_TITLE,100,"Waiting for RX to Restart", BLINK) + else + lcd.drawText(LCD_X_LINE_TITLE,100,"No compatible DSM RX...", BLINK) + end else local menu = ctx.Menu @@ -364,18 +383,15 @@ local function GUI_Display() if line.Type == LINE_TYPE.MENU then GUI_Display_Line_Menu(i, line, i == ctx.SelLine) else - -- list/value line - local value, imgValue = line.Val, nil - if line.Val ~= nil then + local value = line.Val + if dsmLib.isListLine(line) then -- for Lists of Strings, get the text - value = dsmLib.Get_Text(line.Val + line.TextStart) -- TextStart is the initial offset for text - imgValue = dsmLib.Get_Text_Img(line.Val + line.TextStart) -- Complentary IMAGE for this value to Display?? + value = dsmLib.Get_List_Text(line.Val + line.TextStart) -- TextStart is the initial offset for text + local imgData = dsmLib.Get_List_Text_Img(line.Val + line.TextStart) -- Complentary IMAGE for this value to Display?? - if (imgValue) then -- Optional Image for a Value - --TODO: Pending feature.. create images and put bitmap instead of a message - --Display the image/Alternate Text - lcd.drawText(LCD_X_LINE_TITLE, LCD_Y_LINE_START+LCD_Y_LINE_HEIGHT, "Img:"..imgValue) + if (imgData) then -- Optional Image and Msg for value + GUI_ShowBitmap(LCD_X_LINE_TITLE,LCD_Y_LINE_START, imgData) end end @@ -386,6 +402,7 @@ local function GUI_Display() end -- for if IS_EDGETX and ctx.isEditing() then + -- Display Touch button for Editing values GUI_Display_Edit_Buttons(ctx.MenuLines[ctx.EditLine]) end end @@ -393,6 +410,7 @@ local function GUI_Display() else -- Different Resolution.. Maybe just adjusting some of the constants will work, adjust it in DSM_Init?? -- LCD_X_LINE_TITLE, LCD_Y_LINE_START, etc + lcd.drawText(LCD_X_LINE_TITLE,100,"Only supported in Color Radios of 480 resolution", BLINK) end end @@ -467,7 +485,7 @@ local function GUI_HandleEvent(event, touchState) end end end - end + end -- IS_EDGETX if event == EVT_VIRTUAL_EXIT then ctx.Refresh_Display=true diff --git a/Lua_scripts/DSMLIB/DsmFwPrgLib.lua b/Lua_scripts/DSMLIB/DsmFwPrgLib.lua index 997f0bc..eb2f53b 100644 --- a/Lua_scripts/DSMLIB/DsmFwPrgLib.lua +++ b/Lua_scripts/DSMLIB/DsmFwPrgLib.lua @@ -73,6 +73,7 @@ local LINE_TYPE = { LIST_MENU2 = 0x4C, -- List: Seems like a bolean menu, just 2 values 0->1 (off/on, ihn/Act) VALUE_NOCHANGING = 0x60, -- value not change in GUI, change internally at the receiver VALUE_PERCENT = 0xC0, -- 8 bit number, percent + VALUE_DEGREES = 0xE0, -- Degress?? VALUE_NUM_I8 = 0x40, -- 8 bit number VALUE_NUM_I16 = 0x41, -- 16 Bit number VALUE_NUM_SI16 = 0xC1, -- Signed 16 bit number @@ -90,9 +91,10 @@ local DSM_Context = { RX = { Id=0, Name = "", Version = "" }, Refresh_Display = true, - SelLine = 0, -- Current Selected Line - EditLine = nil, -- Current Editing Line - CurLine = -1 -- Current Line Requested/Parsed via h message protocol + SelLine = 0, -- Current Selected Line + EditLine = nil, -- Current Editing Line + CurLine = -1, -- Current Line Requested/Parsed via h message protocol + isReset = false -- false when starting from scracts, true when starting from Reset } local MAX_MENU_LINES = 6 @@ -110,11 +112,12 @@ local Value_Change_Step = 0 -- 2 Steps to update. 0=Send update value, 1=Send V -- Text Arrays for Display Text and Debuging local PhaseText = {} local LineTypeText = {} -local Text = {} -- Text for Menu and Menu Lines local RxName = {} -local Text_Img = {} -- If the Text has Attached Images -local Menu_List_Values = {} -- Additiona Menu_List valid values when non contiguos +local Text = {} -- Text for Menu and Menu Lines (Headers only) +local List_Text = {} -- Messages for List Options (values only) +local List_Text_Img = {} -- If the Text has Attached Images +local List_Values = {} -- Additiona restrictions on List Values when non contiguos (L_M1 lines has this problem) local LOG_FILE = "/LOGS/dsm_log.txt" local logFile = nil @@ -196,21 +199,34 @@ end ------------------------------------------------------------------------------------------------------------ local function Get_Text(index) - local out = Text[index] + local out = Text[index] -- Find in regular header first + if out== nil then + out = List_Text[index] -- Try list values, don't think is necesary, but just playing Safe + end if out == nil then -- unknown... out = "Unknown_" .. string.format("%X", index) end return out end -local function Get_Text_Img(index) - local out = Text_Img[index] - +local function Get_List_Text(index) + local out = List_Text[index] -- Try to find the message in List_Text + if out == nil then + out = Text[index] -- Try list headers, don't think is necesary, but just playing Safe + end + if out == nil then -- unknown... + out = "UnknownLT_" .. string.format("%X", index) + end return out end -local function Get_Menu_List_Values(index) - local out = Menu_List_Values[index] +local function Get_List_Text_Img(index) + local out = List_Text_Img[index] + return out +end + +local function Get_List_Values(index) + local out = List_Values[index] return out end @@ -239,7 +255,7 @@ local function lineValue2String(l) if (l ~= nil and l.Val ~= nil) then local value = l.Val if isListLine(l) then - value = value .. "|\"" .. Get_Text(l.Val + l.TextStart) .. "\"" + value = value .. "|\"" .. Get_List_Text(l.Val + l.TextStart) .. "\"" else value = value..(l.Format or "") end @@ -455,7 +471,7 @@ local function DSM_Value_Add(line, inc) -- Use local validation for LIST_MENU1 when the range is wide open -- Also use if for some LIST_MENU0 that the Range seems incorrect if (isListLine(line)) then -- and line.Type==LINE_TYPE.LIST_MENU1 and line.Min==0 and line.Max==244) then - values = Get_Menu_List_Values(line.TextId) + values = Get_List_Values(line.TextId) end @@ -624,6 +640,29 @@ end ----------------------------------------------------------------------------------------------------------- +local function DSM_SelLine_HACK() + -- This hack was to be able to access some menus, that with using the default ctx.SelLine as it was, + -- the menu start returning weird 0x05 Unknow lines, by overriding the ctx.SelLine to Zero or other value + -- they started to work. + -- Tested to work on the RX: AR631, AR637T, AR637TA + + local ctx = DSM_Context + if (ctx.RX.Id == RX.AR637T or ctx.RX.Id == RX.AR637TA or ctx.RX.Id == RX.AR631) then + -- AR631/AR637 Hack for "First time Setup" or "First Time AS3X Setup", use 0 instead of the ctx.SelLine + if (ctx.Menu.MenuId == 0x104F or ctx.Menu.MenuId==0x1055) then + if (DEBUG_ON) then LOG_write("First time Setup Menu HACK: Overrideing LastSelectedLine to ZERO\n") end + if (DEBUG_ON) then LOG_write("%3.3f %s: ", getElapsedTime(), phase2String(ctx.Phase)) end + ctx.SelLine = 0 + end + -- AR631/AR637 Hack for "Relearn Servo Settings", use 1 instead of the ctx.SelLine=0 + if (ctx.Menu.MenuId == 0x1023) then + if (DEBUG_ON) then LOG_write("Relearn Servo Settings HACK: Overrideing LastSelectedLine to 1\n") end + if (DEBUG_ON) then LOG_write("%3.3f %s: ", getElapsedTime(), phase2String(ctx.Phase)) end + ctx.SelLine = 1 + end + end +end + local function DSM_sendRequest() -- Send the proper Request message depending on the Phase @@ -640,20 +679,14 @@ local function DSM_sendRequest() if ctx.Menu.MenuId == 0 then -- First time loading a menu ? DSM_getMainMenu() else - -- AR631/AR637 Hack for "First time Setup" or "First Time AS3X Setup", use 0 instead of the ctx.SelLine - -- otherwise it will get into a werid loop of Unknown_0x05 lines!! - if (ctx.Menu.MenuId == 0x104F or ctx.Menu.MenuId==0x1055) then - if (DEBUG_ON) then LOG_write("First time Setup Menu HACK: Overrideing LastSelectedLine to ZERO\n") end - if (DEBUG_ON) then LOG_write("%3.3f %s: ", getElapsedTime(), phase2String(ctx.Phase)) end - ctx.SelLine = 0 - end - + DSM_SelLine_HACK() DSM_getMenu(ctx.Menu.MenuId, ctx.SelLine) if (ctx.Menu.MenuId == 0x0001) then -- Executed the Reset Menu?? if (DEBUG_ON) then LOG_write("RX Reset!!!\n") end -- Start again retriving RX info - ctx.Menu.MenuId = 0 + ctx.Menu.MenuId = 0 + ctx.isReset = true ctx.Phase = PHASE.RX_VERSION end end @@ -843,6 +876,7 @@ local function DSM_processResponse() if cmd == 0x01 then -- read version DSM_parseRxVersion() Lib.Init_Text(DSM_Context.RX.Id) + ctx.isReset = false -- no longer resetting ctx.Phase = PHASE.MENU_TITLE elseif cmd == 0x02 then -- read menu title @@ -1005,6 +1039,7 @@ local function DSM_Init(toolName) LineTypeText[LINE_TYPE.LIST_MENU2] = "L_m2" LineTypeText[LINE_TYPE.VALUE_NOCHANGING] = "V_NC" LineTypeText[LINE_TYPE.VALUE_PERCENT] = "V_%" + LineTypeText[LINE_TYPE.VALUE_DEGREES] = "V_de" LineTypeText[LINE_TYPE.VALUE_NUM_I8] = "V_i8" LineTypeText[LINE_TYPE.VALUE_NUM_I16] = "V_i16" LineTypeText[LINE_TYPE.VALUE_NUM_SI16] = "V_s16" @@ -1022,13 +1057,14 @@ end local function DSM_Init_Text(rxId) --Text to be displayed - -- For menu lines (no name: value ) who are not navigation to other menus + -- For menu lines who are not navigation to other menus (SubHeders or Plain text) -- you can use some formatting options: + -- Text allightment: /c = CENTER, /r = RIGHT -- Text effects: /b = BOLD - -- Text formatting: /p = PERCENT numbers + -- Text formatting: /p = PERCENT numbers (forced if not in Line Type=PERCENT) - -- array Menu_List_Values: + -- array List_Values: -- For some Menu LIST VALUES, special Lines of type:LIST_MENU1, the valod options seems not -- to be contiguos, the array "Menu_List_Values" can help narrow down the -- valid menu options. I think this should come from the RX, but cant find where. @@ -1036,60 +1072,65 @@ local function DSM_Init_Text(rxId) -- usually is Ihnibit + range of contiguos values, but cant seems to find in the RX data receive the values -- to do it automatically + -- Om/Off List Options + List_Text[0x0001] = "On" + List_Text[0x0002] = "Off" - Text[0x0001] = "On" - Text[0x0002] = "Off" - - Text[0x0003] = "Inh" - Text[0x0004] = "Act" + -- Ihn/Act List Options + List_Text[0x0003] = "Inh" + List_Text[0x0004] = "Act" -- Channel selection for SAFE MODE and GAINS on FC6250HX - Text[0x000C] = "Inhibit?" --? - Text[0x000D] = "Gear" - for i = 1, 7 do Text[0x000D + i] = "Aux" .. i end -- Aux channels + List_Text[0x000C] = "Inhibit?" --? + List_Text[0x000D] = "Gear" + for i = 1, 7 do List_Text[0x000D + i] = "Aux" .. i end -- Aux channels -- Servo Output values.. - local servoOutputValues = {0x0003,0x002D,0x002E,0x002F} --Inh (GAP), 5.5ms, 11ms, 22ms - Text[0x002D] = "5.5ms" - Text[0x002E] = "11ms" - Text[0x002F] = "22ms" + local servoOutputValues = {0x0003,0x002D,0x002E,0x002F} --Inh (GAP), 5.5ms, 11ms, 22ms. Fixing L_m1 with 0..244 range! + List_Text[0x002D] = "5.5ms" + List_Text[0x002E] = "11ms" + List_Text[0x002F] = "22ms" -- Gain Values - local gainValues = {0x0032,0x0033,0x0034} -- 1X, 2X, 4X - Text[0x0032] = "1 X" - Text[0x0033] = "2 X" - Text[0x0034] = "4 X" + local gainValues = {0x0032,0x0033,0x0034} -- 1X, 2X, 4X -- Fixing L_m1 with 0..244 range! + List_Text[0x0032] = "1 X" + List_Text[0x0033] = "2 X" + List_Text[0x0034] = "4 X" - -- List of Channels for most RX, except FC6250HX - local channelValues = {0x0035,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F} -- Inhibit? (GAP), Gear,Aux1..Aux5 - local outputValues = {0x0036,0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F} -- Thr,Ail,Elv,Rud,Gear,Aux1..Aux5 - Text[0x0035] = "Inhibit?" --? - Text[0x0036] = "Throttle" - Text[0x0037] = "Aileron" - Text[0x0038] = "Elevator" - Text[0x0039] = "Rudder" - Text[0x003A] = "Gear" - for i = 1, 7 do Text[0x003A + i] = "Aux" .. i end -- Aux channels on AR637T + -- List of Channels for Safe, Gains, Panic, except FC6250HX that uses other range (0x00C..0x015) + -- the valid range Starts with GEAR if enabled (Thr,Ail,Ele,Rud are not valid, the RX reject them ) + -- Valid Values: Inhibit? (GAP), Gear,Aux1..Aux7,X-Plus-1..XPlus-8 + local channelValues = {0x0035,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049} + + List_Text[0x0035] = "Inhibit?" --? + List_Text[0x0036] = "Throttle" + List_Text[0x0037] = "Aileron" + List_Text[0x0038] = "Elevator" + List_Text[0x0039] = "Rudder" + List_Text[0x003A] = "Gear" + for i = 1, 7 do List_Text[0x003A + i] = "Aux" .. i end -- Aux channels on AR637T for i = 1, 8 do -- 41..49 on AR637T -- This don't seem OK - Text[0x0041 + i] = "XPlus-" .. i + List_Text[0x0041 + i] = "XPlus-" .. i end - --But FOTO-PETE reports that it should be (works with AR631,AR637,FC6250HX) + -- ****No longer overrides of previous XPlus values, since using different array + -- for List_Text values + Text[0x0040] = "Roll" Text[0x0041] = "Pitch" Text[0x0042] = "Yaw" Text[0x0043] = "Gain /c/b" -- FC6250HX, AR631 Text[0x0045] = "Differential" Text[0x0046] = "Priority" - Text[0x0049] = "Output Setup" -- FC6250HX + Text[0x0049] = "Output Setup" -- FC6250HX, AR631 --****** Text[0x004A] = "Failsafe" Text[0x004B] = "Main Menu" Text[0x004E] = "Position" - Text[0x0050] = "Outputs"; Menu_List_Values[0x0050]=outputValues + Text[0x0050] = "Outputs"; Text[0x0051] = "Output Channel 1" Text[0x0052] = "Output Channel 2" @@ -1099,18 +1140,18 @@ local function DSM_Init_Text(rxId) Text[0x0056] = "Output Channel 6" if (rxId ~= RX.FC6250HX) then -- Restrictions for non FC6250HX - Menu_List_Values[0x0051]=servoOutputValues - Menu_List_Values[0x0052]=servoOutputValues - Menu_List_Values[0x0053]=servoOutputValues - Menu_List_Values[0x0054]=servoOutputValues - Menu_List_Values[0x0055]=servoOutputValues - Menu_List_Values[0x0056]=servoOutputValues + List_Values[0x0051]=servoOutputValues + List_Values[0x0052]=servoOutputValues + List_Values[0x0053]=servoOutputValues + List_Values[0x0054]=servoOutputValues + List_Values[0x0055]=servoOutputValues + List_Values[0x0056]=servoOutputValues end -- FailSafe Options --Text[0x005E]="Inhibit" - Text[0x005F] = "Hold Last" - Text[0x0060] = "Preset" + List_Text[0x005F] = "Hold Last" + List_Text[0x0060] = "Preset" --Text[0x0061]="Custom" --FC6250HX @@ -1120,7 +1161,7 @@ local function DSM_Init_Text(rxId) -- Flight mode channel selection Text[0x0078] = "FM Channel" - if (rxId ~= RX.FC6250HX) then Menu_List_Values[0x0078]=channelValues end --FC6250HX uses other range + if (rxId ~= RX.FC6250HX) then List_Values[0x0078]=channelValues end --FC6250HX uses other range Text[0x0080] = "Orientation" Text[0x0082] = "Heading" @@ -1131,9 +1172,9 @@ local function DSM_Init_Text(rxId) -- Gain channel selection Text[0x0089] = "Gain Channel" - if (rxId ~= RX.FC6250HX) then Menu_List_Values[0x0089]=channelValues end --FC6250HX uses other range + if (rxId ~= RX.FC6250HX) then List_Values[0x0089]=channelValues end --FC6250HX uses other range -- Gain Sensitivity - Text[0x008A] = "Gain Sensitivity/r"; Menu_List_Values[0x008A]=gainValues -- (L_M1 was wide open) + Text[0x008A] = "Gain Sensitivity/r"; List_Values[0x008A]=gainValues -- Right Alight, (L_M1 was wide open range 0->244) Text[0x008B] = "Panic" Text[0x008E] = "Panic Delay" @@ -1150,7 +1191,7 @@ local function DSM_Init_Text(rxId) Text[0x009A] = "Capture Failsafe Positions" Text[0x009C] = "Custom Failsafe" - Text[0x009F] = "Save Settings & Reset RX (NOT WORKING YET)" -- FAKE: Menu 0x0001 -- Looks like special Save & Reset Menu + Text[0x009F] = "Save & Reset RX" -- TODO: Find the Proper Spektrum Value ?? Text[0x00A5] = "First Time Setup" Text[0x00AA] = "Capture Gyro Gains" @@ -1158,75 +1199,80 @@ local function DSM_Init_Text(rxId) -- Safe mode options, Ihnibit + thi values local safeModeOptions = {0x0003,0x00B0,0x00B1} -- inh (gap), "Self-Level/Angle Dem, Envelope - Text[0x00B0] = "Self-Level/Angle Dem" - Text[0x00B1] = "Envelope" + List_Text[0x00B0] = "Self-Level/Angle Dem" + List_Text[0x00B1] = "Envelope" - Text[0x00B5] = "Inhibit" - Text[0x00B6] = "FM1" - Text[0x00B7] = "FM2" - Text[0x00B8] = "FM3" - Text[0x00B9] = "FM4" - Text[0x00BA] = "FM5" - Text[0x00BB] = "FM6" - Text[0x00BC] = "FM7" - Text[0x00BD] = "FM8" - Text[0x00BE] = "FM9" - Text[0x00BF] = "FM10" + List_Text[0x00B5] = "Inhibit" + List_Text[0x00B6] = "FM1" + List_Text[0x00B7] = "FM2" + List_Text[0x00B8] = "FM3" + List_Text[0x00B9] = "FM4" + List_Text[0x00BA] = "FM5" + List_Text[0x00BB] = "FM6" + List_Text[0x00BC] = "FM7" + List_Text[0x00BD] = "FM8" + List_Text[0x00BE] = "FM9" + List_Text[0x00BF] = "FM10" + + Text[0x00BE] = "Unknown_BE" -- Used in Reset menu (0x0001) while the RX is rebooting Text[0x00C7] = "Calibrate Sensor" + Text[0x00C8] = "Complete" -- FC6250HX calibration complete Text[0x00CA] = "SAFE/Panic Mode Setup" + Text[0x00CD] = "Level model and capture attiude/c"; -- Different from List_Text -- RX Orientations for AR631/AR637 (on the Heli Receiver is different, see below) - -- Optionally attach an Image to display (TODO, not done yet) - Text[0x00CB] = "RX Pos 1"; Text_Img[0x00CB] = "Pilot View: RX Label Up, Pins Back" - Text[0x00CC] = "RX Pos 2"; Text_Img[0x00CC] = "Pilot View: RX Label Left, Pins Back" - Text[0x00CD] = "RX Pos 3"; Text_Img[0x00CD] = "Pilot View: RX Label Down, Pins Back" - Text[0x00CE] = "RX Pos 4"; Text_Img[0x00CE] = "Pilot View: RX Label Right, Pins Back" - Text[0x00CF] = "RX Pos 5"; Text_Img[0x00CF] = "Pilot View: RX Label UP, Pins to Front" - Text[0x00D0] = "RX Pos 6"; Text_Img[0x00D0] = "Pilot View: RX Label Left, Pins Front" - Text[0x00D1] = "RX Pos 7"; Text_Img[0x00D1] = "Pilot View: RX Label Down, Pins Front" - Text[0x00D2] = "RX Pos 8"; Text_Img[0x00D2] = "Pilot View: RX Label Right, Pins Front" - Text[0x00D3] = "RX Pos 9"; Text_Img[0x00D3] = "Pilot View: RX Label Up, Pins Left" - Text[0x00D4] = "RX Pos 10"; Text_Img[0x00D4] = "Pilot View: RX Label Back, Pins Left" - Text[0x00D5] = "RX Pos 11"; Text_Img[0x00D5] = "Pilot View: RX Label Down, Pins Left" - Text[0x00D6] = "RX Pos 12"; Text_Img[0x00D6] = "Pilot View: RX Label Front, Pins Left" - Text[0x00D7] = "RX Pos 13"; Text_Img[0x00D7] = "Pilot View: RX Label Up, Pins Right" - Text[0x00D8] = "RX Pos 14"; Text_Img[0x00D8] = "Pilot View: RX Label Back, Pins Right" - Text[0x00D9] = "RX Pos 15"; Text_Img[0x00D9] = "Pilot View: RX Label Down, Pins Right" - Text[0x00DA] = "RX Pos 16"; Text_Img[0x00DA] = "Pilot View: RX Label Front, Pins Right" - Text[0x00DB] = "RX Pos 17"; Text_Img[0x00DB] = "Pilot View: RX Label Back, Pins Down" - Text[0x00DC] = "RX Pos 18"; Text_Img[0x00DC] = "Pilot View: RX Label Left, Pins Down" - Text[0x00DD] = "RX Pos 19"; Text_Img[0x00DD] = "Pilot View: RX Label Front, Pins Down" - Text[0x00DE] = "RX Pos 20"; Text_Img[0x00DE] = "Pilot View: RX Label Right, Pins Down" - Text[0x00DF] = "RX Pos 21"; Text_Img[0x00DF] = "Pilot View: RX Label Back, Pins Up" - Text[0x00E0] = "RX Pos 22"; Text_Img[0x00E0] = "Pilot View: RX Label Left, Pins Up" - Text[0x00E1] = "RX Pos 23"; Text_Img[0x00E1] = "Pilot View: RX Label Front, Pins Up" - Text[0x00E2] = "RX Pos 24"; Text_Img[0x00E2] = "Pilot View: RX Label Right, Pins Up" - Text[0x00E3] = "RX Pos Invalid"; -- Just Guesing, check on real RX + -- Optionally attach an Image to display + List_Text[0x00CB] = "RX Pos 1"; List_Text_Img[0x00CB] = "rx_pos_1.png|Pilot View: RX Label Up, Pins Back" + List_Text[0x00CC] = "RX Pos 2"; List_Text_Img[0x00CC] = "rx_pos_2.png|Pilot View: RX Label Left, Pins Back" + List_Text[0x00CD] = "RX Pos 3"; List_Text_Img[0x00CD] = "rx_pos_3.png|Pilot View: RX Label Down, Pins Back" + List_Text[0x00CE] = "RX Pos 4"; List_Text_Img[0x00CE] = "rx_pos_4.png|Pilot View: RX Label Right, Pins Back" + List_Text[0x00CF] = "RX Pos 5"; List_Text_Img[0x00CF] = "rx_pos_5.png|Pilot View: RX Label UP, Pins to Front" + List_Text[0x00D0] = "RX Pos 6"; List_Text_Img[0x00D0] = "rx_pos_6.png|Pilot View: RX Label Left, Pins Front" + List_Text[0x00D1] = "RX Pos 7"; List_Text_Img[0x00D1] = "rx_pos_7.png|Pilot View: RX Label Down, Pins Front" + List_Text[0x00D2] = "RX Pos 8"; List_Text_Img[0x00D2] = "rx_pos_8.png|Pilot View: RX Label Right, Pins Front" + List_Text[0x00D3] = "RX Pos 9"; List_Text_Img[0x00D3] = "rx_pos_9.png|Pilot View: RX Label Up, Pins Left" + List_Text[0x00D4] = "RX Pos 10"; List_Text_Img[0x00D4] = "rx_pos_10.png|Pilot View: RX Label Back, Pins Left" + List_Text[0x00D5] = "RX Pos 11"; List_Text_Img[0x00D5] = "rx_pos_11.png|Pilot View: RX Label Down, Pins Left" + List_Text[0x00D6] = "RX Pos 12"; List_Text_Img[0x00D6] = "rx_pos_12.png|Pilot View: RX Label Front, Pins Left" + List_Text[0x00D7] = "RX Pos 13"; List_Text_Img[0x00D7] = "rx_pos_13.png|Pilot View: RX Label Up, Pins Right" + List_Text[0x00D8] = "RX Pos 14"; List_Text_Img[0x00D8] = "rx_pos_14.png|Pilot View: RX Label Back, Pins Right" + List_Text[0x00D9] = "RX Pos 15"; List_Text_Img[0x00D9] = "rx_pos_15.png|Pilot View: RX Label Down, Pins Right" + List_Text[0x00DA] = "RX Pos 16"; List_Text_Img[0x00DA] = "rx_pos_16.png|Pilot View: RX Label Front, Pins Right" + List_Text[0x00DB] = "RX Pos 17"; List_Text_Img[0x00DB] = "rx_pos_17.png|Pilot View: RX Label Back, Pins Down" + List_Text[0x00DC] = "RX Pos 18"; List_Text_Img[0x00DC] = "rx_pos_18.png|Pilot View: RX Label Left, Pins Down" + List_Text[0x00DD] = "RX Pos 19"; List_Text_Img[0x00DD] = "rx_pos_19.png|Pilot View: RX Label Front, Pins Down" + List_Text[0x00DE] = "RX Pos 20"; List_Text_Img[0x00DE] = "rx_pos_20.png|Pilot View: RX Label Right, Pins Down" + List_Text[0x00DF] = "RX Pos 21"; List_Text_Img[0x00DF] = "rx_pos_21.png|Pilot View: RX Label Back, Pins Up" + List_Text[0x00E0] = "RX Pos 22"; List_Text_Img[0x00E0] = "rx_pos_22.png|Pilot View: RX Label Left, Pins Up" + List_Text[0x00E1] = "RX Pos 23"; List_Text_Img[0x00E1] = "rx_pos_23.png|Pilot View: RX Label Front, Pins Up" + List_Text[0x00E2] = "RX Pos 24"; List_Text_Img[0x00E2] = "rx_pos_24.png|Pilot View: RX Label Right, Pins Up" + List_Text[0x00E3] = "RX Pos Invalid"; List_Text_Img[0x00E3] = "rx_pos_25.png|Cannot detect orientation of RX" - -- But for FC6250HX, Override this previous values - if (rxId == RX.FC6250HX) then - Text[0x00D2] = "Panic Channel" - Text[0x00D3] = "Swashplate" - Text[0x00D5] = "Agility" - Text[0x00D8] = "Stop" - Text[0x00DA] = "SAFE" - Text[0x00DB] = "Stability" - Text[0x00DC] = "@ per sec" - Text[0x00DD] = "Tail rotor" - Text[0x00DE] = "Setup" - Text[0x00DF] = "AFR" - Text[0x00E0] = "Collective" - Text[0x00E1] = "Subtrim" - Text[0x00E2] = "Phasing" - Text[0x00E4] = "E-Ring" - end + Text[0x00D1] = "?? Unknown_D1" -- TODO: Find the Spektrum Value (Orientation Save&Reset final page AR631) + --FC6250HX + Text[0x00D2] = "Panic Channel" + if (rxId ~= RX.FC6250HX) then List_Values[0x00D2]=channelValues end --FC6250HX uses other range + Text[0x00D3] = "Swashplate" + Text[0x00D5] = "Agility" + Text[0x00D8] = "Stop" + Text[0x00DA] = "SAFE" + Text[0x00DB] = "Stability" + Text[0x00DC] = "@ per sec" + Text[0x00DD] = "Tail rotor" + Text[0x00DE] = "Setup" + Text[0x00DF] = "AFR" + Text[0x00E0] = "Collective" + Text[0x00E1] = "Subtrim" + Text[0x00E2] = "Phasing" + Text[0x00E4] = "E-Ring" + Text[0x00E7] = "Left" Text[0x00E8] = "Right" - Text[0x00F2] = "Fixed" - Text[0x00F3] = "Adjustable" + List_Text[0x00F2] = "Fixed" + List_Text[0x00F3] = "Adjustable" Text[0x00F9] = "Gyro settings" Text[0x00FE] = "Stick Priority/c/b " --SubTitle @@ -1248,27 +1294,27 @@ local function DSM_Init_Text(rxId) Text[0x0190] = "Relearn Servo Settings" Text[0x019C] = "Enter Receiver Bind Mode" Text[0x01D7] = "SAFE Select Channel" - Text[0x01DC] = "AS3X" + Text[0x01DC] = "AS3X/c/b" -- Subtitle, Center+bold Text[0x01DD] = "AS3X Settings" Text[0x01DE] = "AS3X Gains" - Text[0x01E0] = "Rate Gains/c/b" -- SubTitle + Text[0x01E0] = "Rate Gains/c/b" -- SubTitle, Center+bold Text[0x01E2] = "SAFE Settings" Text[0x01E3] = "SAFE Gains" - Text[0x01E6] = "Attitude Trim" + Text[0x01E6] = "Attitude Trim/c/b" -- SubTitle, Center+bold Text[0x01E7] = "Envelope" Text[0x01E9] = "Roll Right" Text[0x01EA] = "Roll Left" Text[0x01EB] = "Pitch Down" Text[0x01EC] = "Pitch Up" Text[0x01EE] = "Throttle to Pitch" - Text[0x01EF] = "Low Thr to Pitch" - Text[0x01F0] = "High Thr to Pitch" + Text[0x01EF] = "Low Thr to Pitch/c/b" -- SubTitle, Center+bold + Text[0x01F0] = "High Thr to Pitch/c/b" -- SubTitle, Center+bold Text[0x01F3] = "Threshold" Text[0x01F4] = "Angle" - Text[0x01F6] = "Failsafe Angles" + Text[0x01F6] = "Failsafe Angles/c/b" -- SubTitle, Center+bold --Inh, Self-Level/Angle Dem, Envelope -- (L_M1 was wide open) - Text[0x01F8] = "Safe Mode"; Menu_List_Values[0x01F8]=safeModeOptions + Text[0x01F8] = "Safe Mode"; List_Values[0x01F8]=safeModeOptions Text[0x01F9] = "SAFE Select/c/b " -- SubTitle Text[0x01FC] = "Panic Flight Mode" @@ -1278,13 +1324,13 @@ local function DSM_Init_Text(rxId) Text[0x020A] = "Restore from Backup" Text[0x020D] = "First Time SAFE Setup" - -- TODO: First time safe setup Page 3 : - --Text[0x020E] = "" - --Text[0x020F] = "" - --Text[0x0210] = "" - --Text[0x0211] = "" - --Text[0x0212] = "" - --Text[0x0213] = "" + -- First time safe setup Page 3 : + Text[0x020E] = "AS3X gains must be tuned" + Text[0x020F] = "and active in SAFE Flight Modes" + Text[0x0210] = "to help reduce wobble." + Text[0x0211] = "" -- empty + Text[0x0212] = "" -- empty + Text[0x0213] = "" -- empty Text[0x021A] = "Set the model level," Text[0x021B] = "and press Continue." @@ -1325,6 +1371,8 @@ local function DSM_Init_Text(rxId) Text[0x023A] = "" -- blank line Text[0x023D] = "Copy Flight Mode Settings" + Text[0x023E] = "Source Flight Mode" + Text[0x023F] = "Target Flight Mode" Text[0x0240] = "Utilities" Text[0x024C] = "Gains will be captured on" @@ -1336,17 +1384,28 @@ local function DSM_Init_Text(rxId) Text[0x0254] = "Postive = Up, Negative = Down" - -- TODO: First time safe setup Page 1 (maybe ask to select Flight Mode cannel) - --Text[0x0255] = "" - --Text[0x0256] = "" - --Text[0x0257] = "" + --Utilities, Copy flight mode (Copy Confirmation, oveerriding FM) TODO:Check with real Spektrum radio. + Text[0x0251] = "WARNING: \"Target\" IN USE" + Text[0x0252] = "flight mode will be overwritten" + Text[0x0253] = "by \"Source\"" - --TODO: First time safe setup Page 2 (something related for flight mode) - --Text[0x025A] = "" - --Text[0x025B] = "" - --Text[0x025C] = "" - --Text[0x025D] = "" - --Text[0x025E] = "" + -- First time safe setup Page 1 (maybe ask to select Flight Mode cannel) + Text[0x0255] = "Before setting up SAFE" + Text[0x0256] = "a Flight Mode channel" + Text[0x0257] = "most be configured." + + --First time safe setup Page 2 (something related for flight mode) + Text[0x025A] = "Select the desired flight mode" + Text[0x025B] = "switch position to adjust settings" + Text[0x025C] = "for each flight mode" + Text[0x025D] = "" -- Blank + Text[0x025E] = "" -- Blank + + --Utilities, Copy flight mode + Text[0x0259] = "Copy" --- TODO: Check Specktrum..Just guessing here.. + Text[0x0260] = "WARNING: \"Target\"" + Text[0x0261] = "flight mode will be overwritten" + Text[0x0262] = "by \"Source\"" Text[0x0263] = "Fixed/Adjustable Gains /c/b" Text[0x0266] = "Heading Gain/c/b" @@ -1355,8 +1414,8 @@ local function DSM_Init_Text(rxId) Text[0x0269] = "SAFE - Throttle to Pitch" Text[0x026A] = "Use CAUTION for Yaw gain!/b" -- SubTitle - Text[0x8000] = "FLIGHT MODE/c/b" --FC6250HX - Text[0x8001] = "Flight Mode/c/b" -- WAS "Flight Mode 1" Center and Bold + Text[0x8000] = "Flight Mode/c/b" --FC6250HX: 1=NORMAL 2= Stunt-1, 3=Stunt-2, 4=Hold + Text[0x8001] = "Flight Mode/c/b" -- WAS "Flight Mode 1".. This usually is a Flight Mode w value relative to 0 (AR631/AR637) Text[0x8002] = "Flight Mode 2/c/b" Text[0x8003] = "Flight Mode 3/c/b" end @@ -1366,6 +1425,29 @@ local function isFlightModeText(textId) return (textId >= 0x8000 and textId <= 0x8003) end +-- Adjust the displayed value for Flight mode as needed +local function GetFlightModeValue(textId, header, value) + local out = value + + if (DSM_Context.RX.Id == RX.FC6250HX) then + -- Helicopter Flights modes + if (value==1) then out = header .. " Normal" + elseif (value==2) then out = header .. " Stunt 1" + elseif (value==3) then out = header .. " Stunt 2" + elseif (value==4) then out = header .. " Hold" + else + out = header .. " " .. value + end + elseif (DSM_Context.RX.Id == RX.AR631 or DSM_Context.RX.Id == RX.AR637T or DSM_Context.RX.Id == RX.AR637TA) then + -- Seems that we really have to add +1 to the value, so Flight Mode 0 is Really Flight Mode 1 + out = header .. " " .. (value + 1) + else + -- Default, return the value as we Have it + out = header .. " " .. value + end + return out +end + ------------------------------------------------------------------------------------------------------------ -- Lib EXPORTS @@ -1388,7 +1470,8 @@ Lib.LOG_write = LOG_write Lib.LOG_close = LOG_close Lib.getElapsedTime = getElapsedTime Lib.Get_Text = Get_Text -Lib.Get_Text_Img = Get_Text_Img +Lib.Get_List_Text = Get_List_Text +Lib.Get_List_Text_Img = Get_List_Text_Img Lib.phase2String = phase2String Lib.lineValue2String = lineValue2String @@ -1403,6 +1486,7 @@ Lib.isPercentValueLineByMinMax = isPercentValueLineByMinMax Lib.isNumberValueLine = isNumberValueLine Lib.isDisplayAttr = isDisplayAttr Lib.isFlightModeText = isFlightModeText +Lib.GetFlightModeValue = GetFlightModeValue Lib.StartConnection = DSM_StartConnection Lib.ReleaseConnection = DSM_ReleaseConnection diff --git a/Lua_scripts/DSMLIB/DsmFwPrgSIMLib.lua b/Lua_scripts/DSMLIB/DsmFwPrgSIMLib.lua index c96cbb1..adb465c 100644 --- a/Lua_scripts/DSMLIB/DsmFwPrgSIMLib.lua +++ b/Lua_scripts/DSMLIB/DsmFwPrgSIMLib.lua @@ -67,6 +67,8 @@ local function PostProcessMenu() for i = 0, dsmLib.MAX_MENU_LINES do -- clear menu local line = ctx.MenuLines[i] if (line.Type~=0) then + line.MenuId = ctx.Menu.MenuId + line.lineNum = i dsmLib.MenuLinePostProcessing(line) -- Do the same post processing as if they come from the RX if (DEBUG_ON) then dsmLib.LOG_write("SIM RESPONSE MenuLine: %s\n", dsmLib.menuLine2String(line)) end end @@ -84,8 +86,8 @@ local function AR631_loadMenu(menuId) --L[#1 T=M VId=0x105E Text="Other settings" MId=0x1000 ] ctx.Menu = { MenuId = 0x1000, TextId = 0x004B, PrevId = 0, NextId = 0, BackId = 0 } - ctx.MenuLines[0] = { MenuId = 0x1000, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x00F9, ValId = 0x1010 } - ctx.MenuLines[1] = { MenuId = 0x1000, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x0227, ValId = 0x105E } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x00F9, ValId = 0x1010 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x0227, ValId = 0x105E } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1010) then @@ -93,6 +95,7 @@ local function AR631_loadMenu(menuId) -- NEW -- L[#5 T=M VId=0x104F val=nil [0->0,3] Text="First Time Setup" MId=0x1010 ] -- NEW ONLY + -- L[#6 T=M VId=0x1055 Text="First Time SAFE Setup"[0x20D] MId=0x1010 ] -- Initialize AR637T -- L[#0 T=M VId=0x1011 Text="AS3X Settings"[0x1DD] MId=0x1010 ] @@ -103,13 +106,14 @@ local function AR631_loadMenu(menuId) ctx.Menu = { MenuId = 0x1010, TextId = 0x00F9, PrevId = 0, NextId = 0, BackId = 0x1000 } if not RX_Initialized then - ctx.MenuLines[5] = { MenuId = 0x1010, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x00A5, ValId = 0x104F} + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x00A5, ValId = 0x104F} + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x020D, ValId = 0x1055} ctx.SelLine = 5 else - ctx.MenuLines[0] = { MenuId = 0x1010, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x1DD, ValId = 0x1011 } - ctx.MenuLines[1] = { MenuId = 0x1010, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x1E2, ValId = 0x1019 } - ctx.MenuLines[2] = { MenuId = 0x1010, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x87, ValId = 0x1021 } - ctx.MenuLines[3] = { MenuId = 0x1010, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x86, ValId = 0x1022 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x01DD, ValId = 0x1011 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x01E2, ValId = 0x1019 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x0087, ValId = 0x1021 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x0086, ValId = 0x1022 } ctx.SelLine = 0 end lastGoodMenu = menuId @@ -124,12 +128,12 @@ local function AR631_loadMenu(menuId) -- L[#6 T=M VId=0x1017 Text="Capture Gyro Gains"[0xAA] MId=0x1011 ] ctx.Menu = { MenuId = 0x1011, TextId = 0x1DD, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1011, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x1DE, ValId = 0x1012} - ctx.MenuLines[1] = { MenuId = 0x1011, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x46, ValId = 0x1013} - ctx.MenuLines[2] = { MenuId = 0x1011, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x82, ValId = 0x1015} - ctx.MenuLines[4] = { MenuId = 0x1011, lineNum = 4, Type = LINE_TYPE.LIST_MENU1, TextId = 0x8A, ValId = 0x1004, Min=0, Max=244, Def=50, Val=50 } - ctx.MenuLines[5] = { MenuId = 0x1011, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x263, ValId = 0x1016} - ctx.MenuLines[6] = { MenuId = 0x1011, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x1017 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x1DE, ValId = 0x1012} + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x46, ValId = 0x1013} + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x82, ValId = 0x1015} + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x8A, ValId = 0x1004, Min=0, Max=244, Def=50, Val=50 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x263, ValId = 0x1016} + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x1017 } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1012) then @@ -141,11 +145,11 @@ local function AR631_loadMenu(menuId) --L[#5 T=V_NC VId=0x1006 Text="Yaw"[0x42] val=48 [0->100,60] MId=0x1012 ] ctx.Menu = { MenuId = 0x1012, TextId = 0x1DE, PrevId = 0, NextId = 0, BackId = 0x1011 } - ctx.MenuLines[0] = { MenuId = 0x1012, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x1012, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x1E0, ValId = 0x1012 } - ctx.MenuLines[3] = { MenuId = 0x1012, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1004, Min=0, Max=100, Def=40, Val=40 } - ctx.MenuLines[4] = { MenuId = 0x1012, lineNum = 4, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x41, ValId = 0x1005, Min=0, Max=100, Def=50, Val=50 } - ctx.MenuLines[5] = { MenuId = 0x1012, lineNum = 5, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x42, ValId = 0x1006, Min=0, Max=100, Def=60, Val=60 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x1E0, ValId = 0x1012 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1004, Min=0, Max=100, Def=40, Val=40 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x41, ValId = 0x1005, Min=0, Max=100, Def=50, Val=50 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x42, ValId = 0x1006, Min=0, Max=100, Def=60, Val=60 } ctx.SelLine = 3 lastGoodMenu = menuId @@ -158,11 +162,11 @@ local function AR631_loadMenu(menuId) --L[#5 T=V_NC VId=0x1006 Text="Yaw"[0x42] val=48 [0->160,160] MId=0x1012 ] ctx.Menu = { MenuId = 0x1013, TextId = 0x46, PrevId = 0, NextId = 0, BackId = 0x1011 } - ctx.MenuLines[0] = { MenuId = 0x1013, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x1013, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0xFE, ValId = 0x1013 } - ctx.MenuLines[3] = { MenuId = 0x1013, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1004, Min=0, Max=160, Def=100, Val=160 } - ctx.MenuLines[4] = { MenuId = 0x1013, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=160, Def=100, Val=160 } - ctx.MenuLines[5] = { MenuId = 0x1013, lineNum = 5, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x42, ValId = 0x1006, Min=0, Max=160, Def=100, Val=160 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0xFE, ValId = 0x1013 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1004, Min=0, Max=160, Def=100, Val=160 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=160, Def=100, Val=160 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x42, ValId = 0x1006, Min=0, Max=160, Def=100, Val=160 } ctx.SelLine = 3 lastGoodMenu = menuId @@ -176,12 +180,12 @@ local function AR631_loadMenu(menuId) -- L[#6 T=V_NC VId=0x1006 Text="Yaw"[0x42] val=0 [0->100,0] MId=0x1015 ] ctx.Menu = { MenuId = 0x1015, TextId = 0x266, PrevId = 0, NextId = 0, BackId = 0x1011 } - ctx.MenuLines[0] = { MenuId = 0x1015, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x1015, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x1F9, ValId = 0x1015 } - ctx.MenuLines[2] = { MenuId = 0x1015, lineNum = 2, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1004, Min=0, Max=100, Def=0, Val=0 } - ctx.MenuLines[3] = { MenuId = 0x1015, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x41, ValId = 0x1005, Min=0, Max=100, Def=0, Val=0 } - ctx.MenuLines[5] = { MenuId = 0x1015, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x26A, ValId = 0x1015 } - ctx.MenuLines[6] = { MenuId = 0x1015, lineNum = 6, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x42, ValId = 0x1006, Min=0, Max=100, Def=0, Val=0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x1F9, ValId = 0x1015 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1004, Min=0, Max=100, Def=0, Val=0 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x41, ValId = 0x1005, Min=0, Max=100, Def=0, Val=0 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x26A, ValId = 0x1015 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x42, ValId = 0x1006, Min=0, Max=100, Def=0, Val=0 } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1016) then @@ -193,11 +197,11 @@ local function AR631_loadMenu(menuId) -- L[#4 T=L_m0 VId=0x1004 Text="Yaw"[0x42] MId=0x1016 val=1 NL=(0->1,1,S=242) [242->243,243] ] ctx.Menu = { MenuId = 0x1016, TextId = 0x263, PrevId = 0, NextId = 0, BackId = 0x1011 } - ctx.MenuLines[0] = { MenuId = 0x1016, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x1016, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x1F9, ValId = 0x1016 } - ctx.MenuLines[2] = { MenuId = 0x1016, lineNum = 2, Type = LINE_TYPE.LIST_MENU0, TextId = 0x40, ValId = 0x1002, Min=242, Max=243, Def=243, Val=1 } - ctx.MenuLines[3] = { MenuId = 0x1016, lineNum = 3, Type = LINE_TYPE.LIST_MENU0, TextId = 0x41, ValId = 0x1003, Min=242, Max=243, Def=243, Val=1 } - ctx.MenuLines[4] = { MenuId = 0x1016, lineNum = 4, Type = LINE_TYPE.LIST_MENU0, TextId = 0x42, ValId = 0x1004, Min=242, Max=243, Def=243, Val=1 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x1F9, ValId = 0x1016 } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x40, ValId = 0x1002, Min=242, Max=243, Def=243, Val=1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x41, ValId = 0x1003, Min=242, Max=243, Def=243, Val=1 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x42, ValId = 0x1004, Min=242, Max=243, Def=243, Val=1 } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1017) then @@ -211,13 +215,13 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1018 Text="Capture Gyro Gains"[0xAA] MId=0x1017 ] ctx.Menu = { MenuId = 0x1017, TextId = 0xAA, PrevId = 0, NextId = 0, BackId = 0x1011 } - ctx.MenuLines[0] = { MenuId = 0x1017, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x24C, ValId = 0x1017 } - ctx.MenuLines[1] = { MenuId = 0x1017, lineNum = 1, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x1017, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x24D, ValId = 0x1017 } - ctx.MenuLines[3] = { MenuId = 0x1017, lineNum = 3, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=40 } - ctx.MenuLines[4] = { MenuId = 0x1017, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=50 } - ctx.MenuLines[5] = { MenuId = 0x1017, lineNum = 5, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x42, ValId = 0x1006, Min=0, Max=0, Def=0, Val=60 } - ctx.MenuLines[6] = { MenuId = 0x1017, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x1018 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x24C, ValId = 0x1017 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x24D, ValId = 0x1017 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=40 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=50 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x42, ValId = 0x1006, Min=0, Max=0, Def=0, Val=60 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x1018 } ctx.SelLine = 6 lastGoodMenu = menuId @@ -232,13 +236,13 @@ local function AR631_loadMenu(menuId) --L[#6 T=V_i8 VId=0x1006 Text="Yaw"[0x42] Val=60 [0->0,0] MId=0x1018 ] ctx.Menu = { MenuId = 0x1018, TextId = 0xAA, PrevId = 0, NextId = 0, BackId = 0x1011 } - ctx.MenuLines[0] = { MenuId = 0x1018, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x24E, ValId = 0x1018 } - ctx.MenuLines[1] = { MenuId = 0x1018, lineNum = 1, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x1018, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x24F, ValId = 0x1018 } - ctx.MenuLines[3] = { MenuId = 0x1018, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x250, ValId = 0x1018 } - ctx.MenuLines[4] = { MenuId = 0x1018, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=40 } - ctx.MenuLines[5] = { MenuId = 0x1018, lineNum = 5, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=50 } - ctx.MenuLines[6] = { MenuId = 0x1018, lineNum = 6, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x42, ValId = 0x1006, Min=0, Max=0, Def=0, Val=60 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x24E, ValId = 0x1018 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x24F, ValId = 0x1018 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x250, ValId = 0x1018 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=40 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=50 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x42, ValId = 0x1006, Min=0, Max=0, Def=0, Val=60 } ctx.SelLine = -1 lastGoodMenu = menuId @@ -250,10 +254,10 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x101F Text="Capture Gyro Gains"[0xAA] MId=0x1019 ] ctx.Menu = { MenuId = 0x1019, TextId = 0x1E2, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1019, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x1E3, ValId = 0x101A } - ctx.MenuLines[1] = { MenuId = 0x1019, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x226, ValId = 0x101B } - ctx.MenuLines[5] = { MenuId = 0x1019, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x263, ValId = 0x101E } - ctx.MenuLines[6] = { MenuId = 0x1019, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x101F } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x1E3, ValId = 0x101A } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x226, ValId = 0x101B } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x263, ValId = 0x101E } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x101F } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x101A) then @@ -264,10 +268,10 @@ local function AR631_loadMenu(menuId) --L[#3 T=V_NC VId=0x1003 Text="Pitch"[0x41] Val=35 [5->100,35] MId=0x101A ] ctx.Menu = { MenuId = 0x101A, TextId = 0x1E3, PrevId = 0, NextId = 0, BackId = 0x1019 } - ctx.MenuLines[0] = { MenuId = 0x101A, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x101A, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x43, ValId = 0x101A } - ctx.MenuLines[2] = { MenuId = 0x101A, lineNum = 2, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1002, Min=5, Max=100, Def=35, Val=35 } - ctx.MenuLines[3] = { MenuId = 0x101A, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x41, ValId = 0x1003, Min=5, Max=100, Def=60, Val=35 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x43, ValId = 0x101A } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x40, ValId = 0x1002, Min=5, Max=100, Def=35, Val=35 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x41, ValId = 0x1003, Min=5, Max=100, Def=60, Val=35 } ctx.SelLine = -1 lastGoodMenu = menuId @@ -281,12 +285,12 @@ local function AR631_loadMenu(menuId) --L[#5 T=V_NC VId=0x1005 Text="Pitch Up"[0x1EC] Val=50 [10->75,50] MId=0x101B ] ctx.Menu = { MenuId = 0x101B, TextId = 0x226, PrevId = 0, NextId = 0, BackId = 0x1019 } - ctx.MenuLines[0] = { MenuId = 0x101B, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x101B, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x226, ValId = 0x101B } - ctx.MenuLines[2] = { MenuId = 0x101B, lineNum = 2, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1E9, ValId = 0x1002, Min=10, Max=90, Def=60, Val=60 } - ctx.MenuLines[3] = { MenuId = 0x101B, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EA, ValId = 0x1003, Min=10, Max=90, Def=60, Val=60 } - ctx.MenuLines[4] = { MenuId = 0x101B, lineNum = 4, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EB, ValId = 0x1004, Min=10, Max=90, Def=40, Val=40 } - ctx.MenuLines[5] = { MenuId = 0x101B, lineNum = 5, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EC, ValId = 0x1005, Min=10, Max=90, Def=50, Val=50 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x226, ValId = 0x101B } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1E9, ValId = 0x1002, Min=10, Max=90, Def=60, Val=60 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EA, ValId = 0x1003, Min=10, Max=90, Def=60, Val=60 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EB, ValId = 0x1004, Min=10, Max=90, Def=40, Val=40 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EC, ValId = 0x1005, Min=10, Max=90, Def=50, Val=50 } ctx.SelLine = -1 lastGoodMenu = menuId @@ -299,10 +303,10 @@ local function AR631_loadMenu(menuId) --L[#3 T=L_m0 VId=0x1003 Text="Pitch"[0x41] Val=0 N=(0->1,1,S=242) [242->243,243] MId=0x101E ] ctx.Menu = { MenuId = 0x101E, TextId = 0x263, PrevId = 0, NextId = 0, BackId = 0x1019 } - ctx.MenuLines[0] = { MenuId = 0x101E, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x101E, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x263, ValId = 0x101E } - ctx.MenuLines[2] = { MenuId = 0x101E, lineNum = 2, Type = LINE_TYPE.LIST_MENU0, TextId = 0x40, ValId = 0x1002, Min=242, Max=243, Def=243, Val=0 } - ctx.MenuLines[3] = { MenuId = 0x101E, lineNum = 3, Type = LINE_TYPE.LIST_MENU0, TextId = 0x41, ValId = 0x1003, Min=242, Max=243, Def=243, Val=0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x263, ValId = 0x101E } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x40, ValId = 0x1002, Min=242, Max=243, Def=243, Val=0 } + ctx.MenuLines[3] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x41, ValId = 0x1003, Min=242, Max=243, Def=243, Val=0 } ctx.SelLine = -1 lastGoodMenu = menuId @@ -316,12 +320,12 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1020 Text="Capture Gyro Gains"[0xAA] MId=0x101F ] ctx.Menu = { MenuId = 0x101F, TextId = 0xAA, PrevId = 0, NextId = 0, BackId = 0x1019 } - ctx.MenuLines[0] = { MenuId = 0x101F, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x24C, ValId = 0x101F } - ctx.MenuLines[1] = { MenuId = 0x101F, lineNum = 1, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x101F, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x24D, ValId = 0x101F } - ctx.MenuLines[3] = { MenuId = 0x101F, lineNum = 3, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=35 } - ctx.MenuLines[4] = { MenuId = 0x101F, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=35 } - ctx.MenuLines[6] = { MenuId = 0x101F, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x1020 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x24C, ValId = 0x101F } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x24D, ValId = 0x101F } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=35 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=35 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0xAA, ValId = 0x1020 } ctx.SelLine = 6 lastGoodMenu = menuId @@ -335,12 +339,12 @@ local function AR631_loadMenu(menuId) --L[#5 T=V_i8 VId=0x1005 Text="Pitch"[0x41] Val=50 [0->0,0] MId=0x1020 ] ctx.Menu = { MenuId = 0x1020, TextId = 0xAA, PrevId = 0, NextId = 0, BackId = 0x1019 } - ctx.MenuLines[0] = { MenuId = 0x1020, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x24E, ValId = 0x1020 } - ctx.MenuLines[1] = { MenuId = 0x1020, lineNum = 1, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x1020, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x24F, ValId = 0x1020 } - ctx.MenuLines[3] = { MenuId = 0x1020, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x250, ValId = 0x1020 } - ctx.MenuLines[4] = { MenuId = 0x1020, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=35 } - ctx.MenuLines[5] = { MenuId = 0x1020, lineNum = 5, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=35 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x24E, ValId = 0x1020 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x24F, ValId = 0x1020 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x250, ValId = 0x1020 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x40, ValId = 0x1004, Min=0, Max=0, Def=0, Val=35 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x41, ValId = 0x1005, Min=0, Max=0, Def=0, Val=35 } ctx.SelLine = -1 lastGoodMenu = menuId @@ -359,31 +363,306 @@ local function AR631_loadMenu(menuId) --L[#6 T=L_m1 VId=0x1006 Text="Low Thr to Pitch"[0x1EF] val=0 NL=(0->1,3,S=3) [3->4,3] MId=0x1021 ] ctx.Menu = { MenuId = 0x1021, TextId = 0x87, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1021, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x1021, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x78, ValId = 0x7CA6 } - ctx.MenuLines[2] = { MenuId = 0x1021, lineNum = 2, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1DC, ValId = 0x1002, Min=3, Max=4, Def=3, Val=1 } - ctx.MenuLines[3] = { MenuId = 0x1021, lineNum = 3, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F8, ValId = 0x1003, Min=0, Max=244, Def=3, Val=176 } - ctx.MenuLines[4] = { MenuId = 0x1021, lineNum = 4, Type = LINE_TYPE.LIST_MENU1, TextId = 0x8B, ValId = 0x1004, Min=3, Max=4, Def=3, Val=0 } - ctx.MenuLines[5] = { MenuId = 0x1021, lineNum = 5, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F0, ValId = 0x1005, Min=3, Max=4, Def=3, Val=0 } - ctx.MenuLines[6] = { MenuId = 0x1021, lineNum = 6, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1EF, ValId = 0x1006, Min=3, Max=4, Def=3, Val=0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x78, ValId = 0x7CA6 } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1DC, ValId = 0x1002, Min=3, Max=4, Def=3, Val=1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F8, ValId = 0x1003, Min=0, Max=244, Def=3, Val=176 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x8B, ValId = 0x1004, Min=3, Max=4, Def=3, Val=0 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F0, ValId = 0x1005, Min=3, Max=4, Def=3, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1EF, ValId = 0x1006, Min=3, Max=4, Def=3, Val=0 } ctx.SelLine = 1 lastGoodMenu = menuId elseif (menuId==0x1022) then --M[Id=0x1022 P=0x0 N=0x0 B=0x1010 Text="System Setup"[0x86]] --L[#0 T=M VId=0x1023 Text="Relearn Servo Settings"[0x190] MId=0x1022 ] --L[#1 T=M VId=0x1025 Text="Orientation"[0x80] MId=0x1022 ] - --L[#2 T=M VId=0x1029 [0->0,2] Text="Gain Channel Select"[0xAD] MId=0x1022 ] - --L[#3 T=M VId=0x102A [0->0,2] Text="SAFE/Panic Mode Setup"[0xCA] MId=0x1022 ] - --L[#4 T=M VId=0x1032 [0->0,2] Text="Utilities"[0x240] MId=0x1022 ] + --L[#2 T=M VId=0x1029 Text="Gain Channel Select"[0xAD] MId=0x1022 ] + --L[#3 T=M VId=0x102A Text="SAFE/Panic Mode Setup"[0xCA] MId=0x1022 ] + --L[#4 T=M VId=0x1032 Text="Utilities"[0x240] MId=0x1022 ] ctx.Menu = { MenuId = 0x1022, TextId = 0x86, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1022, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x190, ValId = 0x1023 } - ctx.MenuLines[1] = { MenuId = 0x1022, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x80, ValId = 0x1025 } - ctx.MenuLines[2] = { MenuId = 0x1022, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0xAD, ValId = 0x1029 } - ctx.MenuLines[3] = { MenuId = 0x1022, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0xCA, ValId = 0x102A } - ctx.MenuLines[4] = { MenuId = 0x1022, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0x240, ValId = 0x1032 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x190, ValId = 0x1023 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x80, ValId = 0x1025 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0xAD, ValId = 0x1029 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0xCA, ValId = 0x102A } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x240, ValId = 0x1032 } ctx.SelLine = 0 lastGoodMenu = menuId + elseif (menuId==0x1023) then + --M[Id=0x1023 P=0x0 N=0x0 B=0x1022 Text="Relearn Servo Settings"[0x190]] + --L[#3 T=M VId=0x1024 Text="Apply"[0x90] MId=0x1023 ] + + ctx.Menu = { MenuId = 0x1023, TextId = 0x190, PrevId = 0, NextId = 0, BackId = 0x1022 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1024 } + + ctx.SelLine = 3 + lastGoodMenu = menuId + elseif (menuId==0x1024) then + --M[Id=0x1024 P=0x0 N=0x0 B=0x0 Text="Relearn Servo Settings"[0x190]] + --L[#3 T=M VId=0x1000 Text="Complete"[0x93] MId=0x1024 ] + + ctx.Menu = { MenuId = 0x1024, TextId = 0x190, PrevId = 0, NextId = 0, BackId = 0 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x93, ValId = 0x1000 } + + ctx.SelLine = 3 + lastGoodMenu = menuId + + elseif (menuId==0x1025) then + --M[Id=0x1025 P=0x0 N=0x0 B=0x1022 Text="Orientation"[0x80]] + --L[#0 T=M VId=0x1025 Text="Set the model level,"[0x21A] MId=0x1025 ] + --L[#1 T=M VId=0x1025 Text="and press Continue."[0x21B] MId=0x1025 ] + --L[#2 T=M VId=0x1025 Text=""[0x21C] MId=0x1025 ] + --L[#3 T=M VId=0x1025 Text=""[0x21D] MId=0x1025 ] + --L[#5 T=M VId=0x1026 Text="Continue"[0x224] MId=0x1025 ] + --LL[#6 T=M VId=0x1027 Text="Set Orientation Manually"[0x229] MId=0x1025 ] + + ctx.Menu = { MenuId = 0x1025, TextId = 0x80, PrevId = 0, NextId = 0, BackId = 0x1022 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x21A, ValId = 0x1025 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x21B, ValId = 0x1025 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x21C, ValId = 0x1025 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x21D, ValId = 0x1025 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1026 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x229, ValId = 0x1027 } + ctx.SelLine = 5 + lastGoodMenu = menuId + elseif (menuId==0x1026) then + --M[Id=0x1026 P=0x1025 N=0x0 B=0x1025 Text="Orientation"[0x80]] + --L[#0 T=M VId=0x1026 Text="Set the model on its nose,"[0x21F] MId=0x1026 ] + --L[#1 T=M VId=0x1026 Text="and press Continue. If the"[0x220] MId=0x1026 ] + --L[#2 T=M VId=0x1026 Text="orientation on the next"[0x221] MId=0x1026 ] + --L[#3 T=M VId=0x1026 Text="screen is wrong go back"[0x222] MId=0x1026 ] + --L[#4 T=M VId=0x1026 Text="and try again."[0x223] MId=0x1026 ] + --L[#6 T=M VId=0x1027 Text="Continue"[0x224] MId=0x1026 ] + + ctx.Menu = { MenuId = 0x1026, TextId = 0x80, PrevId = 0x1025, NextId = 0, BackId = 0x1025 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x21F, ValId = 0x1026 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x220, ValId = 0x1026 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x221, ValId = 0x1026 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x222, ValId = 0x1026 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x223, ValId = 0x1026 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1027 } + + ctx.SelLine = 6 + lastGoodMenu = menuId + elseif (menuId==0x1027) then + --M[Id=0x1028 P=0x0 N=0x0 B=0x1028 Text="Orientation"[0x80]] + --L[#5 T=L_m0 VId=0x1000 Text="Orientation"[0x80] Val=4|"RX Pos 5" NL=(0->23,0,S=203) [203->226,203] MId=0x1027 ] + --L[#6 T=M VId=0x1028 Text="Continue"[0x224] MId=0x1027 ] + + ctx.Menu = { MenuId = 0x1027, TextId = 0x80, PrevId = 0x1025, NextId = 0, BackId = 0x1025 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x80, ValId = 0x1000, Min=203, Max=226, Def=203, Val=5 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1028 } + ctx.SelLine = 5 + lastGoodMenu = menuId + elseif (menuId==0x1028) then + --M[Id=0x1027 P=0x1025 N=0x0 B=0x1025 Text="Orientation"[0x80]] + --L[#2 T=M VId=0x1 Text="Resetting RX... "[0x9F] MId=0x1028 ] + --L[#3 T=M VId=0x1028 Text="RX Pos 7"[0xD1] MId=0x1028 ] + + ctx.Menu = { MenuId = 0x1028, TextId = 0x80, PrevId = 0x1025, NextId = 0, BackId = 0x1025 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x9F, ValId = 0x1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0xD1, ValId = 0x1028 } + ctx.SelLine = 2 + lastGoodMenu = menuId + + elseif (menuId==0x1029) then + --M[Id=0x1029 P=0x0 N=0x0 B=0x1022 Text="Gain Channel Select"[0xAD]] + --L[#0 T=M VId=0x1029 Text="AS3X"[0x1DC] MId=0x1029 ] + --L[#1 T=L_m1 VId=0x1000 Text="Roll"[0x40] Val=0|"Inhibit?" NL=(0->32,0,S=53) [53->85,53] MId=0x1029 ] + --L[#2 T=L_m1 VId=0x1001 Text="Pitch"[0x41] Val=0|"Inhibit?" NL=(0->32,0,S=53) [53->85,53] MId=0x1029 ] + --L[#3 T=L_m1 VId=0x1002 Text="Yaw"[0x42] Val=0|"Inhibit?" NL=(0->32,0,S=53) [53->85,53] MId=0x1029 ] + --L[#4 T=M VId=0x1029 Text="SAFE"[0xDA] MId=0x1029 ] + --L[#5 T=L_m1 VId=0x1004 Text="Roll"[0x40] Val=0|"Inhibit?" NL=(0->32,0,S=53) [53->85,53] MId=0x1029 ] + --L[#6 T=L_m1 VId=0x1005 Text="Pitch"[0x41] Val=0|"Inhibit?" NL=(0->32,0,S=53) [53->85,53] MId=0x1029 ] + + ctx.Menu = { MenuId = 0x1029, TextId = 0xAD, PrevId = 0, NextId = 0, BackId = 0x1022 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x1DC, ValId = 0x1029 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x40, ValId = 0x1000, Min=53, Max=85, Def=53, Val=0 } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x41, ValId = 0x1001, Min=53, Max=85, Def=53, Val=0 } + ctx.MenuLines[3] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x42, ValId = 0x1002, Min=53, Max=85, Def=53, Val=0 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x267, ValId = 0x1029 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x40, ValId = 0x1004, Min=53, Max=85, Def=53, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x41, ValId = 0x1005, Min=53, Max=85, Def=53, Val=0 } + + ctx.SelLine = 2 + lastGoodMenu = menuId + elseif (menuId==0x1030) then + --M[Id=0x1030 P=0x0 N=0x0 B=0x102A Text="Attitude Trim"[0x1E6]] + --L[#0 T=M VId=0x1030 Text="Level model and capture attiude"[0xCD] MId=0x1030 ] + --L[#1 T=M VId=0x1030 Text="Attitude Trim"[0x1E6] MId=0x1030 ] + --L[#2 T=V_de VId=0x1002 Text="Roll"[0x40] Val=-1 [-45->45,0] MId=0x1030 ] + --L[#3 T=V_de VId=0x1003 Text="Pitch"[0x41] Val=7 [-45->45,0] MId=0x1030 ] + --L[#5 T=M VId=0x1030 Text="Positive = Nose Up/Roll Right"[0x267] MId=0x1030 ] + --L[#6 T=M VId=0x1030 Text="Negative = Nose Down/Roll Left"[0x268] MId=0x1030 ] + + ctx.Menu = { MenuId = 0x1030, TextId = 0x1E6, PrevId = 0, NextId = 0, BackId = 0x102A } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xCD, ValId = 0x1030 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x1E6, ValId = 0x1030 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x40, ValId = 0x1002, Min=-45, Max=45, Def=0, Val=-1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x41, ValId = 0x1003, Min=-45, Max=45, Def=0, Val=7 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x267, ValId = 0x1030 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x268, ValId = 0x1030 } + + ctx.SelLine = 2 + lastGoodMenu = menuId + elseif (menuId==0x1031) then + --M[Id=0x1031 P=0x0 N=0x0 B=0x102A Text="Failsafe Angles"[0x1F6]] + --L[#0 T=M VId=0x1031 Text="Failsafe Angles"[0x1F6] MId=0x1031 ] + --L[#1 T=V_de VId=0x1001 Text="Roll"[0x40] Val=0 [-90->90,0] MId=0x1031 ] + --L[#2 T=V_de VId=0x1002 Text="Pitch"[0x41] Val=0 [-90->90,0] MId=0x1031 ] + --L[#5 T=M VId=0x1031 Text="Positive = Nose Up/Roll Right"[0x267] MId=0x1031 ] + --L[#6 T=M VId=0x1031 Text="Negative = Nose Down/Roll Left"[0x268] MId=0x1031 ] + + ctx.Menu = { MenuId = 0x1031, TextId = 0x1F6, PrevId = 0, NextId = 0, BackId = 0x102A } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x1F6, ValId = 0x1031 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x40, ValId = 0x1001, Min=-90, Max=90, Def=0, Val=0 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x41, ValId = 0x1002, Min=-90, Max=90, Def=0, Val=0 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x267, ValId = 0x1031 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x268, ValId = 0x1031 } + + ctx.SelLine = 1 + lastGoodMenu = menuId + elseif (menuId==0x1032) then + --M[Id=0x1032 P=0x0 N=0x0 B=0x1022 Text="Utilities"[0x240]] + --L[#0 T=M VId=0x1033 Text="Copy Flight Mode Settings"[0x23D] MId=0x1032 ] + --L[#1 T=L_m0 VId=0x1001 Text="Enabled F-Modes"[0x88] Val=2 NL=(0->9,2,S=182) [182->191,184] MId=0x1032 ] + + ctx.Menu = { MenuId = 0x1032, TextId = 0x240, PrevId = 0, NextId = 0, BackId = 0x1022 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x23D, ValId = 0x1033 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x88, ValId = 0x1001, Min=182, Max=191, Def=184, Val=2 } + + ctx.SelLine = 0 + lastGoodMenu = menuId + + elseif (menuId==0x1033) then + --M[Id=0x1033 P=0x0 N=0x0 B=0x1032 Text="Copy Flight Mode Settings"[0x23D]] + --L[#0 T=V_NC VId=0x1000 Text="Flight Mode"[0x8001] Val=0 [0->10,0] MId=0x1033 ] + --L[#1 T=M VId=0x1033 Text="WARNING: "Target""[0x260] MId=0x1033 ] + --L[#2 T=M VId=0x1033 Text="flight mode will be overwritten"[0x261] MId=0x1033 ] + --L[#3 T=M VId=0x1033 Text="by "Source""[0x262] MId=0x1033 ] + --L[#4 T=L_m0 VId=0x1004 Text="Source Flight Mode"[0x23E] Val=0|"FM1" NL=(0->9,0,S=182) [182->191,182] MId=0x1033 ] + --L[#5 T=L_m0 VId=0x1005 Text="Target Flight Mode"[0x23F] Val=0|"FM1" NL=(0->9,0,S=182) [182->191,182] MId=0x1033 ] + --L[#6 T=M VId=0x1035 Text="Copy"[0x259] MId=0x1034 ] + + + ctx.Menu = { MenuId = 0x1033, TextId = 0x23D, PrevId = 0, NextId = 0, BackId = 0x1032 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x260, ValId = 0x1033 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x261, ValId = 0x1033 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x262, ValId = 0x1033 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x23E, ValId = 0x1004, Min=182, Max=191, Def=182, Val=0 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x23F, ValId = 0x1005, Min=182, Max=191, Def=182, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x259, ValId = 0x1034 } + + ctx.SelLine = 4 + lastGoodMenu = menuId + elseif (menuId==0x1034) then + --M[Id=0x1033 P=0x0 N=0x0 B=0x1032 Text="Copy Flight Mode Settings"[0x23D]] + + --L[#1 T=M VId=0x1033 Text="WARNING: "Target" IN USE"[0x251] MId=0x1033 ] + --L[#2 T=M VId=0x1033 Text="flight mode will be overwritten"[0x252] MId=0x1033 ] + --L[#3 T=M VId=0x1033 Text="by "Source""[0x253] MId=0x1033 ] + --L[#4 T=L_m0 VId=0x1004 Text="Source Flight Mode"[0x23E] Val=0|"FM1" NL=(0->0,0,S=182) [182->182,182] MId=0x1033 ] + --L[#5 T=L_m0 VId=0x1005 Text="Target Flight Mode"[0x23F] Val=1|"FM2" NL=(0->0,0,S=182) [182->182,182] MId=0x1033 ] + --L[#6 T=M VId=0x1035 Text="Copy"[0x259] MId=0x1034 ] + + + ctx.Menu = { MenuId = 0x1034, TextId = 0x23D, PrevId = 0x1033, NextId = 0, BackId = 0x1033 } + + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x251, ValId = 0x1034 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x252, ValId = 0x1034 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x253, ValId = 0x1034 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x23E, ValId = 0x1004, Min=182, Max=182, Def=182, Val=0 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x23F, ValId = 0x1005, Min=182, Max=182, Def=182, Val=1 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x259, ValId = 0x1035 } + + ctx.SelLine = 6 + lastGoodMenu = menuId + elseif (menuId==0x1035) then + --M[Id=0x1035 P=0x0 N=0x0 B=0x1032 Text="Copy Flight Mode Settings"[0x23D]] + --L[#3 T=M VId=0x1032 Text="Complete"[0x93] MId=0x1035 ] + + ctx.Menu = { MenuId = 0x1035, TextId = 0x23D, PrevId = 0, NextId = 0, BackId = 0x1032 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x93, ValId = 0x1032 } + + ctx.SelLine = 3 + lastGoodMenu = menuId + elseif (menuId==0x102A) then + --M[Id=0x102A P=0x0 N=0x0 B=0x1022 Text="SAFE/Panic Mode Setup"[0xCA]] + --L[#2 T=M VId=0x102B Text="Panic"[0x8B] MId=0x102A ] + --L[#3 T=M VId=0x102D Text="Throttle to Pitch"[0x1EE] MId=0x102A ] + --L[#4 T=M VId=0x1030 Text="Attitude Trim"[0x1E6] MId=0x102A ] + --L[#5 T=L_m0 VId=0x1006 Text="SAFE Failsafe FMode"[0x1FD] Val=0|"FM1" NL=(0->10,0,S=181) [181->191,181] MId=0x102A ] + --L[#6 T=M VId=0x1031 Text="Failsafe Angles"[0x1F6] MId=0x102A ] + + ctx.Menu = { MenuId = 0x102A, TextId = 0xCA, PrevId = 0, NextId = 0, BackId = 0x1022 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x8B, ValId = 0x102B } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x1EE, ValId = 0x102D } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x1E6, ValId = 0x1030 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x1FD, ValId = 0x1006, Min=182, Max=191, Def=182, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x1F6, ValId = 0x1031 } + + ctx.SelLine = 5 + lastGoodMenu = menuId + elseif (menuId==0x102B) then + --M[Id=0x102B P=0x0 N=0x0 B=0x102A Text="Panic"[0x8B]] + --L[#0 T=L_m1 VId=0x1000 Text="Panic Channel"[0xD2] Val=0|"Inhibit?" NL=(0->32,0,S=53) [53->85,53] MId=0x102B ] + --L[#1 T=L_m1 VId=0x1001 Text="Panic Delay"[0x8E] Val=0|"Inh" NL=(0->1,0,S=3) [3->4,3] MId=0x102B ] + --L[#2 T=L_m1 VId=0x1002 Text="Panic Flight Mode"[0x1FC] Val=0|"FM1" NL=(0->10,0,S=181) [181->191,181] MId=0x102B ] + --L[#3 T=V_NC VId=0x1003 Text="Roll Right"[0x1E9] Val=30 [0->90,30] MId=0x102B ] + --L[#4 T=V_NC VId=0x1004 Text="Roll Left"[0x1EA] Val=30 [0->90,30] MId=0x102B ] + --L[#5 T=V_NC VId=0x1005 Text="Pitch Down"[0x1EB] Val=30 [0->75,30] MId=0x102B ] + --L[#6 T=V_NC VId=0x1006 Text="Pitch Up"[0x1EC] Val=30 [0->75,30] MId=0x102B ] + + ctx.Menu = { MenuId = 0x102B, TextId = 0x8B, PrevId = 0, NextId = 0, BackId = 0x102A } + ctx.MenuLines[0] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0xD2, ValId = 0x1000, Min=53, Max=85, Def=53, Val=0 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x8E, ValId = 0x1001, Min=3, Max=4, Def=3, Val=0 } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1FC, ValId = 0x1002, Min=181, Max=191, Def=181, Val=0 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1E9, ValId = 0x1003, Min=0, Max=90, Def=30, Val=30 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EA, ValId = 0x1004, Min=0, Max=90, Def=30, Val=30 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1E9, ValId = 0x1005, Min=0, Max=75, Def=30, Val=30 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EC, ValId = 0x1006, Min=0, Max=75, Def=30, Val=30 } + + ctx.SelLine = 0 + lastGoodMenu = menuId + elseif (menuId==0x102D) then + --M[Id=0x102D P=0x0 N=0x0 B=0x102A Text="SAFE - Throttle to Pitch"[0x269]] + --L[#0 T=M VId=0x102D Text="Postive = Up, Negative = Down"[0x254] MId=0x102D ] + --L[#1 T=M VId=0x102D Text="Low Thr to Pitch"[0x1EF] MId=0x102D ] + --L[#2 T=V_NC VId=0x1001 Text="Threshold"[0x1F3] Val=30 [0->50,30] MId=0x102D ] + --L[#3 T=V_de VId=0x1002 Text="Angle"[0x1F4] Val=0 [-45->45,0] MId=0x102D ] + --L[#4 T=M VId=0x102D Text="High Thr to Pitch"[0x1F0] MId=0x102D ] + --L[#5 T=V_NC VId=0x1005 Text="Threshold"[0x1F3] Val=70 [51->100,70] MId=0x102D ] + --L[#6 T=V_de VId=0x1006 Text="Angle"[0x1F4] Val=0 [-45->45,0] MId=0x102D ] + + ctx.Menu = { MenuId = 0x102D, TextId = 0x269, PrevId = 0, NextId = 0, BackId = 0x102A } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x254, ValId = 0x102D } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x1EF, ValId = 0x102D } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1F3, ValId = 0x1001, Min=0, Max=50, Def=30, Val=30 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x1F4, ValId = 0x1002, Min=-45, Max=45, Def=0, Val=0 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x1F0, ValId = 0x102D } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1F3, ValId = 0x1005, Min=51, Max=100, Def=70, Val=70 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x1F4, ValId = 0x1006, Min=-45, Max=45, Def=0, Val=0 } + + ctx.SelLine = 2 + lastGoodMenu = menuId + elseif (menuId==0x1051) then + --M[Id=0x1051 P=0x0 N=0x0 B=0x1010 Text="First Time Setup"] + --L[#0 T=M VId=0x1051 Text="Set the model level," MId=0x1051 ] + --L[#1 T=M VId=0x1051 Text="and press Continue." MId=0x1051 ] + --L[#2 T=M VId=0x1051 Text="" MId=0x1051 ] + --L[#5 T=M VId=0x1052 Text="Continue" MId=0x1051 ] + --L[#6 T=M VId=0x1053 Text="Set Orientation Manually" MId=0x1051 ] + + ctx.Menu = { MenuId = 0x1051, TextId = 0x00F9, PrevId = 0, NextId = 0, BackId = 0x1010 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x021A, ValId = 0x1051 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x021B, ValId = 0x1051 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x021C, ValId = 0x1051 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x0224, ValId = 0x1052 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x0229, ValId = 0x1053 } + + ctx.SelLine = 5 + lastGoodMenu = menuId elseif (menuId==0x104F) then --M[Id=0x104F P=0x0 N=0x1050 B=0x1010 Text="First Time Setup"] --L[#0 T=M VId=0x104F Text="Make sure the model has been" MId=0x104F ] @@ -394,10 +673,10 @@ local function AR631_loadMenu(menuId) --L[#5 T=M VId=0x104F [0->0,2] Text="" MId=0x104F ] ctx.Menu = { MenuId = 0x104F, TextId = 0x00F9, PrevId = 0, NextId = 0x1050, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x104F, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x0100, ValId = 0x104F } - ctx.MenuLines[1] = { MenuId = 0x104F, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x0101, ValId = 0x104F } - ctx.MenuLines[2] = { MenuId = 0x104F, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x0102, ValId = 0x104F } - ctx.MenuLines[3] = { MenuId = 0x104F, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x0103, ValId = 0x104F } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x0100, ValId = 0x104F } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x0101, ValId = 0x104F } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x0102, ValId = 0x104F } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x0103, ValId = 0x104F } ctx.SelLine = dsmLib.NEXT_BUTTON lastGoodMenu = menuId elseif (menuId==0x1050) then @@ -409,10 +688,10 @@ local function AR631_loadMenu(menuId) --L[#3 T=M VId=0x1050 Text="setup again." MId=0x1050 ] ctx.Menu = { MenuId = 0x1050, TextId = 0x00F9, PrevId = 0x104F, NextId = 0x1051, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1050, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x0106, ValId = 0x1050 } - ctx.MenuLines[1] = { MenuId = 0x1050, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x0107, ValId = 0x1050 } - ctx.MenuLines[2] = { MenuId = 0x1050, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x0108, ValId = 0x1050 } - ctx.MenuLines[3] = { MenuId = 0x1050, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x0109, ValId = 0x1050 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x0106, ValId = 0x1050 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x0107, ValId = 0x1050 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x0108, ValId = 0x1050 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x0109, ValId = 0x1050 } ctx.SelLine = dsmLib.NEXT_BUTTON lastGoodMenu = menuId elseif (menuId==0x1051) then @@ -424,11 +703,11 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1053 Text="Set Orientation Manually" MId=0x1051 ] ctx.Menu = { MenuId = 0x1051, TextId = 0x00F9, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1051, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x021A, ValId = 0x1051 } - ctx.MenuLines[1] = { MenuId = 0x1051, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x021B, ValId = 0x1051 } - ctx.MenuLines[2] = { MenuId = 0x1051, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x021C, ValId = 0x1051 } - ctx.MenuLines[5] = { MenuId = 0x1051, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x0224, ValId = 0x1052 } - ctx.MenuLines[6] = { MenuId = 0x1051, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0x0229, ValId = 0x1053 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x021A, ValId = 0x1051 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x021B, ValId = 0x1051 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x021C, ValId = 0x1051 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x0224, ValId = 0x1052 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x0229, ValId = 0x1053 } ctx.SelLine = 5 lastGoodMenu = menuId @@ -442,12 +721,12 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1053 Text="Continue"[0x224] MId=0x1052 ] ctx.Menu = { MenuId = 0x1052, TextId = 0x00A5, PrevId = 0x1051, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x1052, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x21F, ValId = 0x1052 } - ctx.MenuLines[1] = { MenuId = 0x1052, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x220, ValId = 0x1052 } - ctx.MenuLines[2] = { MenuId = 0x1052, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x221, ValId = 0x1052 } - ctx.MenuLines[3] = { MenuId = 0x1052, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x222, ValId = 0x1052 } - ctx.MenuLines[4] = { MenuId = 0x1052, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0x223, ValId = 0x1052 } - ctx.MenuLines[6] = { MenuId = 0x1052, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1053 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x21F, ValId = 0x1052 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x220, ValId = 0x1052 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x221, ValId = 0x1052 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x222, ValId = 0x1052 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x223, ValId = 0x1052 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1053 } ctx.SelLine = 6 lastGoodMenu = menuId elseif (menuId==0x1053) then @@ -456,8 +735,8 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1054 Text="Continue"[0x224] MId=0x1053 ] ctx.Menu = { MenuId = 0x1053, TextId = 0x00A5, PrevId = 0x1051, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[5] = { MenuId = 0x1053, lineNum = 0, Type = LINE_TYPE.LIST_MENU0, TextId = 0x80, ValId = 0x1000, Min=203, Max=226, Def=203, Val=0 } - ctx.MenuLines[6] = { MenuId = 0x1053, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1054 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x80, ValId = 0x1000, Min=203, Max=226, Def=203, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1054 } ctx.SelLine = 5 lastGoodMenu = menuId elseif (menuId==0x1054) then @@ -466,10 +745,114 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1 Text="Apply"[0x90] MId=0x1054 ] ctx.Menu = { MenuId = 0x1054, TextId = 0x00A5, PrevId = 0x1053, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[5] = { MenuId = 0x1054, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0xAD, ValId = 0x7CA5 } - ctx.MenuLines[6] = { MenuId = 0x1054, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x01 } -- Special save&reboot?? + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0xAD, ValId = 0x7CA5 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x01 } -- Special save&reboot?? + ctx.SelLine = 1 + lastGoodMenu = menuId + elseif (menuId==0x1055) then + --M[Id=0x1055 P=0x0 N=0x0 B=0x1010 Text="First Time SAFE Setup"[0x20D]] + --L[#0 T=M VId=0x1055 Text="Before setting up SAFE"[0x255] MId=0x1055 ] + --L[#1 T=M VId=0x1055 Text="a Fligt Mode channel"[0x256] MId=0x1055 ] + --L[#2 T=M VId=0x1055 Text="most be configured."[0x257] MId=0x1055 ] + --L[#5 T=M VId=0x7CA7 Text="FM Channel"[0x78] MId=0x1055 ] + --L[#6 T=M VId=0x1056 Text="Continue"[0x224] MId=0x1055 ] + + ctx.Menu = { MenuId = 0x1055, TextId = 0x20D, PrevId = 0x1053, NextId = 0, BackId = 0x1010 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x255, ValId = 0x1055 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x256, ValId = 0x1055 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x257, ValId = 0x1055 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x78, ValId = 0x7CA7 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x224, ValId = 0x1056 } ctx.SelLine = 5 lastGoodMenu = menuId + elseif (menuId==0x1056) then + --M[Id=0x1056 P=0x1055 N=0x1057 B=0x1010 Text="First Time SAFE Setup"[0x20D]] + --L[#0 T=V_NC VId=0x1000 Text="Flight Mode"[0x8001] Val=1 [0->10,0] MId=0x1056 ] + --L[#1 T=M VId=0x1056 Text="Select the desired flight mode"[0x25A] MId=0x1056 ] + --L[#2 T=M VId=0x1056 Text="switch position to adjust settings"[0x25B] MId=0x1056 ] + --L[#3 T=M VId=0x1056 Text="for each flight mode"[0x25C] MId=0x1056 ] + --L[#4 T=M VId=0x1056 Text=""[0x25D] MId=0x1056 ] + --L[#5 T=M VId=0x1056 Text=""[0x25E] MId=0x1056 ] + + ctx.Menu = { MenuId = 0x1056, TextId = 0x20D, PrevId = 0x1053, NextId = 0x1057, BackId = 0x1010 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x25A, ValId = 0x1056 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x25B, ValId = 0x1056 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x25C, ValId = 0x1056 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x25D, ValId = 0x1056 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x25E, ValId = 0x1056 } + + ctx.SelLine = 7 + lastGoodMenu = menuId + elseif (menuId==0x1057) then + --M[Id=0x1057 P=0x1056 N=0x1059 B=0x1010 Text="First Time SAFE Setup"[0x20D]] + --L[#0 T=M VId=0x1057 Text="AS3X gains must be tuned"[0x20E] MId=0x1057 ] + --L[#1 T=M VId=0x1057 Text="and active i SAFE Flight Modes"[0x20F] MId=0x1057 ] + --L[#2 T=M VId=0x1057 Text="to help reduce wobble."[0x210] MId=0x1057 ] + --L[#3 T=M VId=0x1057 Text=""[0x211] MId=0x1057 ] + --L[#4 T=M VId=0x1057 Text=""[0x212] MId=0x1057 ] + --L[#5 T=M VId=0x1057 Text=""[0x213] MId=0x1057 ] + + ctx.Menu = { MenuId = 0x1057, TextId = 0x20D, PrevId = 0x1056, NextId = 0x1059, BackId = 0x1010 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x20E, ValId = 0x1057 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x20F, ValId = 0x1057 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x210, ValId = 0x1057 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x211, ValId = 0x1057 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x212, ValId = 0x1057 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x213, ValId = 0x1057 } + + ctx.SelLine = 7 + lastGoodMenu = menuId + + elseif (menuId==0x1059) then + --M[Id=0x1059 P=0x1057 N=0x105A B=0x1010 Text="First Time SAFE Setup"[0x20D]] + --L[#0 T=M VId=0x1059 Text="Leven model and capture attiude"[0xCD] MId=0x1059 ] + --L[#1 T=M VId=0x1059 Text="Attitude Trim"[0x1E6] MId=0x1059 ] + --L[#2 T=V_de VId=0x1002 Text="Roll"[0x40] Val=13 [-45->45,0] MId=0x1059 ] + --L[#3 T=V_de VId=0x1003 Text="Pitch"[0x41] Val=5 [-45->45,0] MId=0x1059 ] + --L[#5 T=M VId=0x1059 Text="Positive = Nose Up/Roll Right"[0x267] MId=0x1059 ] + --L[#6 T=M VId=0x1059 Text="Negative = Nose Down/Roll Left"[0x268] MId=0x1059 ] + + ctx.Menu = { MenuId = 0x1059, TextId = 0x20D, PrevId = 0x1057, NextId = 0x105A, BackId = 0x1010 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xCD, ValId = 0x1059 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x1E6, ValId = 0x1059 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x40, ValId = 0x1002, Min=-45, Max=45, Def=0, Val=13 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_DEGRES, TextId = 0x41, ValId = 0x1003, Min=-45, Max=45, Def=0, Val=5 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x267, ValId = 0x1059 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x268, ValId = 0x1059 } + + ctx.SelLine = 7 + lastGoodMenu = menuId + elseif (menuId==0x105A) then + --M[Id=0x105A P=0x1059 N=0x105B B=0x1010 Text="First Time SAFE Setup"[0x20D]] + --L[#0 T=V_NC VId=0x1000 Text="Flight Mode"[0x8001] Val=0 [0->10,0] MId=0x105A ] + --L[#1 T=L_m1 VId=0x1001 Text="Safe Mode"[0x1F8] Val=3|"Inh" NL=(0->244,3,S=0) [0->244,3] MId=0x105A ] + --L[#2 T=M VId=0x105A Text="Angle Limits "[0x226] MId=0x105A ] + --L[#3 T=V_NC VId=0x1003 Text="Roll Right"[0x1E9] Val=60 [10->90,60] MId=0x105A ] + --L[#4 T=V_NC VId=0x1004 Text="Roll Left"[0x1EA] Val=60 [10->90,60] MId=0x105A ] + --L[#5 T=V_NC VId=0x1005 Text="Pitch Down"[0x1EB] Val=40 [10->75,40] MId=0x105A ] + --L[#6 T=V_NC VId=0x1006 Text="Pitch Up"[0x1EC] Val=50 [10->75,50] MId=0x105A ] + + ctx.Menu = { MenuId = 0x105A, TextId = 0x1DE, PrevId = 0x1059, NextId = 0x105B, BackId = 0x1010 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F8, ValId = 0x1001, Min=0, Max=244, Def=3, Val=3 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x226, ValId = 0x105A } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1E9, ValId = 0x1003, Min=10, Max=90, Def=60, Val=60 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EA, ValId = 0x1004, Min=10, Max=90, Def=60, Val=60 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EB, ValId = 0x1004, Min=10, Max=75, Def=40, Val=40 } + ctx.MenuLines[6] = { lineNum = 7, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x1EC, ValId = 0x1004, Min=10, Max=75, Def=50, Val=50 } + + ctx.SelLine = 1 + lastGoodMenu = menuId + elseif (menuId==0x105B) then + --M[Id=0x105B P=0x105A N=0x0 B=0x1000 Text="First Time SAFE Setup"[0x20D]] + --L[#3 T=M VId=0x1 Text="Apply"[0x90] MId=0x1064 ] + + ctx.Menu = { MenuId = 0x105B, TextId = 0x20D, PrevId = 0x105A, NextId = 0, BackId = 0x1000 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1 } -- reset RX + + ctx.SelLine = 3 + lastGoodMenu = menuId elseif (menuId==0x105C) then -- M[Id=0x105C P=0x0 N=0x0 B=0x1010 Text="SAFE Select"[0x1F9]] --L[#0 T=V_NC VId=0x1000 Text="Flight Mode 1"[0x8001] val=1 [0->10,0] MId=0x105C ] @@ -479,11 +862,11 @@ local function AR631_loadMenu(menuId) --L[#6 T=L_m1 VId=0x1006 Text="SAFE Select"[0x1F9] val=0 NL=(0->1,1,S=1) [1->2,1] MId=0x105C ] ctx.Menu = { MenuId = 0x105C, TextId = 0x1DE, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[0] = { MenuId = 0x105C, lineNum = 0, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } - ctx.MenuLines[1] = { MenuId = 0x105C, lineNum = 1, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1D7, ValId = 0x1001, Min=53, Max=85, Def=53, Val=5 } - ctx.MenuLines[2] = { MenuId = 0x105C, lineNum = 2, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1DC, ValId = 0x1002, Min=1, Max=2, Def=1, Val=1 } - ctx.MenuLines[3] = { MenuId = 0x105C, lineNum = 3, Type = LINE_TYPE.LIST_MENU1, TextId = 0xDA, ValId = 0x1003, Min=1, Max=1, Def=1, Val=0 } - ctx.MenuLines[6] = { MenuId = 0x105C, lineNum = 6, Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F9, ValId = 0x1004, Min=1, Max=2, Def=1, Val=0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8001, ValId = 0x1000, Min=0, Max=10, Def=0, Val=1 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1D7, ValId = 0x1001, Min=53, Max=85, Def=53, Val=5 } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1DC, ValId = 0x1002, Min=1, Max=2, Def=1, Val=1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0xDA, ValId = 0x1003, Min=1, Max=1, Def=1, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x1F9, ValId = 0x1004, Min=1, Max=2, Def=1, Val=0 } ctx.SelLine = 1 lastGoodMenu = menuId @@ -497,12 +880,12 @@ local function AR631_loadMenu(menuId) -- L[#6 T=M VId=0x106A Text="Save to Backup" MId=0x105E ] ctx.Menu = { MenuId = 0x105E, TextId = 0x0227, PrevId = 0, NextId = 0, BackId = 0x1010 } - ctx.MenuLines[1] = { MenuId = 0x105E, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x004A, ValId = 0x1060 } - ctx.MenuLines[2] = { MenuId = 0x105E, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x019C, ValId = 0x1064 } - ctx.MenuLines[3] = { MenuId = 0x105E, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x0085, ValId = 0x1065 } - ctx.MenuLines[4] = { MenuId = 0x105E, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0x0097, ValId = 0x1067 } - ctx.MenuLines[5] = { MenuId = 0x105E, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x020A, ValId = 0x1069 } - ctx.MenuLines[6] = { MenuId = 0x105E, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0x0209, ValId = 0x106A } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x004A, ValId = 0x1060 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x019C, ValId = 0x1064 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x0085, ValId = 0x1065 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x0097, ValId = 0x1067 } + ctx.MenuLines[5] = { Type = LINE_TYPE.MENU, TextId = 0x020A, ValId = 0x1069 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x0209, ValId = 0x106A } ctx.SelLine = 1 lastGoodMenu = menuId @@ -512,8 +895,8 @@ local function AR631_loadMenu(menuId) --L[#1 T=M VId=0x1062 Text="Capture Failsafe Positions" MId=0x1060 ] ctx.Menu = { MenuId = 0x1060, TextId = 0x004A, PrevId = 0, NextId = 0, BackId = 0x105E } - ctx.MenuLines[0] = { MenuId = 0x1060, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x004A, ValId = 0x1061 } - ctx.MenuLines[1] = { MenuId = 0x1060, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x009A, ValId = 0x1062 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x004A, ValId = 0x1061 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x009A, ValId = 0x1062 } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1061) then @@ -523,9 +906,9 @@ local function AR631_loadMenu(menuId) --L[#3 T=V_% VId=0x1003 Text="Position:" val=-100 [-150->150,0] MId=0x1061 ] ctx.Menu = { MenuId = 0x1061, TextId = 0x004A, PrevId = 0, NextId = 0, BackId = 0x1060 } - ctx.MenuLines[0] = { MenuId = 0x1061, lineNum = 0, Type = LINE_TYPE.LIST_MENU0, TextId = 0x0050, ValId = 0x1000, Min=54, Max=73, Def=54, Val=0 } - ctx.MenuLines[1] = { MenuId = 0x1061, lineNum = 1, Type = LINE_TYPE.LIST_MENU2, TextId = 0x009C, ValId = 0x1002, Min=95, Max=96, Def=95, Val=0 } - ctx.MenuLines[2] = { MenuId = 0x1061, lineNum = 2, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x004E, ValId = 0x1002, Min=-150, Max=150, Def=0, Val=-100 } + ctx.MenuLines[0] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x0050, ValId = 0x1000, Min=54, Max=73, Def=54, Val=0 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU2, TextId = 0x009C, ValId = 0x1002, Min=95, Max=96, Def=95, Val=0 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x004E, ValId = 0x1002, Min=-150, Max=150, Def=0, Val=-100 } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1064) then @@ -533,7 +916,7 @@ local function AR631_loadMenu(menuId) --L[#3 T=M VId=0x1 Text="Apply"[0x90] MId=0x1064 ] ctx.Menu = { MenuId = 0x1064, TextId = 0x19C, PrevId = 0, NextId = 0, BackId = 0x105E } - ctx.MenuLines[3] = { MenuId = 0x1064, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1 } -- reset RX + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1 } -- reset RX ctx.SelLine = 3 lastGoodMenu = menuId @@ -547,12 +930,12 @@ local function AR631_loadMenu(menuId) --L[#5 T=L_m1 VId=0x1005 Text="Output Channel 6:" val=46 NL=(0->244,46|S=0) [0->244,0] MId=0x1065 ] ctx.Menu = { MenuId = 0x1065, TextId = 0x0085, PrevId = 0, NextId = 0, BackId = 0x105E } - ctx.MenuLines[0] = { MenuId = 0x1065, lineNum = 0, Type = LINE_TYPE.LIST_MENU1, TextId = 0x0051, ValId = 0x1000, Min=0, Max=244, Def=46, Val=46 } - ctx.MenuLines[1] = { MenuId = 0x1065, lineNum = 1, Type = LINE_TYPE.LIST_MENU1, TextId = 0x0052, ValId = 0x1001, Min=0, Max=244, Def=46, Val=47 } - ctx.MenuLines[2] = { MenuId = 0x1065, lineNum = 2, Type = LINE_TYPE.LIST_MENU1, TextId = 0x0053, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } - ctx.MenuLines[3] = { MenuId = 0x1065, lineNum = 3, Type = LINE_TYPE.LIST_MENU1, TextId = 0x0054, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } - ctx.MenuLines[4] = { MenuId = 0x1065, lineNum = 4, Type = LINE_TYPE.LIST_MENU1, TextId = 0x0055, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } - ctx.MenuLines[5] = { MenuId = 0x1065, lineNum = 5, Type = LINE_TYPE.LIST_MENU1, TextId = 0x0056, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } + ctx.MenuLines[0] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x0051, ValId = 0x1000, Min=0, Max=244, Def=46, Val=46 } + ctx.MenuLines[1] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x0052, ValId = 0x1001, Min=0, Max=244, Def=46, Val=47 } + ctx.MenuLines[2] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x0053, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } + ctx.MenuLines[3] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x0054, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x0055, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x0056, ValId = 0x1002, Min=0, Max=244, Def=46, Val=46 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -566,12 +949,12 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1068 Text="Apply"[0x90] MId=0x1067 ] ctx.Menu = { MenuId = 0x1067, TextId = 0x22B, PrevId = 0, NextId = 0, BackId = 0x105E } - ctx.MenuLines[0] = { MenuId = 0x1067, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x22C, ValId = 0x1067 } - ctx.MenuLines[1] = { MenuId = 0x1067, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x22D, ValId = 0x1067 } - ctx.MenuLines[2] = { MenuId = 0x1067, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x22E, ValId = 0x1067 } - ctx.MenuLines[3] = { MenuId = 0x1067, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x22F, ValId = 0x1067 } - ctx.MenuLines[4] = { MenuId = 0x1067, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0x230, ValId = 0x1067 } - ctx.MenuLines[6] = { MenuId = 0x1067, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1068 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x22C, ValId = 0x1067 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x22D, ValId = 0x1067 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x22E, ValId = 0x1067 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x22F, ValId = 0x1067 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x230, ValId = 0x1067 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1068 } ctx.SelLine = 6 lastGoodMenu = menuId @@ -580,7 +963,7 @@ local function AR631_loadMenu(menuId) --L[#3 T=M VId=0x1000 Text="Complete"[0x93] MId=0x1068 ] ctx.Menu = { MenuId = 0x1068, TextId = 0x94, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[3] = { MenuId = 0x1068, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x93, ValId = 0x1000 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x93, ValId = 0x1000 } ctx.SelLine = 3 lastGoodMenu = menuId @@ -594,12 +977,12 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1068 Text="Apply"[0x90] MId=0x1069 ] ctx.Menu = { MenuId = 0x1069, TextId = 0x22B, PrevId = 0, NextId = 0, BackId = 0x105E } - ctx.MenuLines[0] = { MenuId = 0x1069, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x236, ValId = 0x1069 } - ctx.MenuLines[1] = { MenuId = 0x1069, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x237, ValId = 0x1069 } - ctx.MenuLines[2] = { MenuId = 0x1069, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x238, ValId = 0x1069 } - ctx.MenuLines[3] = { MenuId = 0x1069, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x239, ValId = 0x1069 } - ctx.MenuLines[4] = { MenuId = 0x1069, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0x23A, ValId = 0x1069 } - ctx.MenuLines[6] = { MenuId = 0x1069, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1068 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x236, ValId = 0x1069 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x237, ValId = 0x1069 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x238, ValId = 0x1069 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x239, ValId = 0x1069 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x23A, ValId = 0x1069 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1068 } ctx.SelLine = 6 lastGoodMenu = menuId @@ -613,12 +996,12 @@ local function AR631_loadMenu(menuId) --L[#6 T=M VId=0x1068 Text="Apply"[0x90] MId=0x106A ] ctx.Menu = { MenuId = 0x106A, TextId = 0x22B, PrevId = 0, NextId = 0, BackId = 0x105E } - ctx.MenuLines[0] = { MenuId = 0x106A, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x231, ValId = 0x106A } - ctx.MenuLines[1] = { MenuId = 0x106A, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x232, ValId = 0x106A } - ctx.MenuLines[2] = { MenuId = 0x106A, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x233, ValId = 0x106A } - ctx.MenuLines[3] = { MenuId = 0x106A, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x234, ValId = 0x106A } - ctx.MenuLines[4] = { MenuId = 0x106A, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0x235, ValId = 0x106A } - ctx.MenuLines[6] = { MenuId = 0x106A, lineNum = 6, Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1068 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x231, ValId = 0x106A } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x232, ValId = 0x106A } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x233, ValId = 0x106A } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x234, ValId = 0x106A } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0x235, ValId = 0x106A } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x1068 } ctx.SelLine = 6 lastGoodMenu = menuId @@ -627,7 +1010,7 @@ local function AR631_loadMenu(menuId) --L[#0 T=L_m1 VId=0x1000 Text="Gain Channel"[0x89] val=7 N=(0->32,53,S=53) [53->85,53] MId=0x7CA5 ] ctx.Menu = { MenuId = 0x7CA5, TextId = 0xAD, PrevId = 0, NextId = 0x1054, BackId = 0x1054 } - ctx.MenuLines[0] = { MenuId = 0x7CA5, lineNum = 0, Type = LINE_TYPE.LIST_MENU1, TextId = 0x89, ValId = 0x1000, Min=53, Max=85, Def=53, Val=7 } + ctx.MenuLines[0] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x89, ValId = 0x1000, Min=53, Max=85, Def=53, Val=7 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -636,18 +1019,27 @@ local function AR631_loadMenu(menuId) --L[#0 T=L_m1 VId=0x1000 Text="FM Channel"[0x78] val=7 N=(0->32,53,S=53) [53->85,53] MId=0x7CA6 ] ctx.Menu = { MenuId = 0x7CA6, TextId = 0x78, PrevId = 0, NextId = 0x1021, BackId = 0x1021 } - ctx.MenuLines[0] = { MenuId = 0x7CA6, lineNum = 0, Type = LINE_TYPE.LIST_MENU1, TextId = 0x78, ValId = 0x1000, Min=53, Max=85, Def=53, Val=7 } + ctx.MenuLines[0] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x78, ValId = 0x1000, Min=53, Max=85, Def=53, Val=7 } ctx.SelLine = 0 lastGoodMenu = menuId - elseif (menuId==0x1) then + elseif (menuId==0x7CA7) then + --M[Id=0x7CA7 P=0x0 N=0x1055 B=0x1055 Text="FM Channel"[0x78]] + --L[#0 T=L_m1 VId=0x1000 Text="FM Channel"[0x78] val=7 N=(0->32,53,S=53) [53->85,53] MId=0x7CA6 ] + + ctx.Menu = { MenuId = 0x7CA7, TextId = 0x78, PrevId = 0, NextId = 0x1055, BackId = 0x1055 } + ctx.MenuLines[0] = { Type = LINE_TYPE.LIST_MENU1, TextId = 0x78, ValId = 0x1000, Min=53, Max=85, Def=53, Val=0 } + + ctx.SelLine = 0 + lastGoodMenu = menuId + elseif (menuId==0x0001) then -- Save Settings and Reboot ctx.Menu = { MenuId = 0x0001, TextId = 0x009F, PrevId = 0, NextId = 0, BackId = 0x1000 } ctx.SelLine = dsmLib.BACK_BUTTON else print("NOT IMPLEMENTED") - ctx.Menu = { MenuId = 0x0001, Text = "NOT IMPLEMENTED", TextId = 0, PrevId = 0, NextId = 0, BackId = lastGoodMenu } + ctx.Menu = { MenuId = 0x0002, Text = "NOT IMPLEMENTED", TextId = 0, PrevId = 0, NextId = 0, BackId = lastGoodMenu } ctx.SelLine = dsmLib.BACK_BUTTON end @@ -667,11 +1059,11 @@ local function FC6250HX_loadMenu(menuId) --L[#6 T=M VId=0x1700 [0->0,2] Text="System Setup"[0x86] MId=0x1000 ] ctx.Menu = { MenuId = 0x1000, TextId = 0x004B, PrevId = 0, NextId = 0, BackId = 0 } - ctx.MenuLines[0] = { MenuId = 0x1000, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0xD3, ValId = 0x1100 } - ctx.MenuLines[1] = { MenuId = 0x1000, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0xDD, ValId = 0x1200 } - ctx.MenuLines[2] = { MenuId = 0x1000, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0xDA, ValId = 0x1400 } - ctx.MenuLines[4] = { MenuId = 0x1000, lineNum = 4, Type = LINE_TYPE.MENU, TextId = 0xDE, ValId = 0x1300 } - ctx.MenuLines[6] = { MenuId = 0x1000, lineNum = 5, Type = LINE_TYPE.MENU, TextId = 0x86, ValId = 0x1700 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xD3, ValId = 0x1100 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0xDD, ValId = 0x1200 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0xDA, ValId = 0x1400 } + ctx.MenuLines[4] = { Type = LINE_TYPE.MENU, TextId = 0xDE, ValId = 0x1300 } + ctx.MenuLines[6] = { Type = LINE_TYPE.MENU, TextId = 0x86, ValId = 0x1700 } ctx.SelLine = 0 lastGoodMenu = menuId elseif (menuId==0x1100) then @@ -681,9 +1073,9 @@ local function FC6250HX_loadMenu(menuId) --L[#2 T=V_i8 VId=0x1103 Text="Agility"[0xD5] val=100 [0->200,100] MId=0x1100 ] ctx.Menu = { MenuId = 0x1100, TextId = 0xD3, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[0] = { MenuId = 0x1100, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x40, ValId = 0x1110, Min=0, Max=0, Def=3, Val=nil } - ctx.MenuLines[1] = { MenuId = 0x1100, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x41, ValId = 0x1120, Min=0, Max=0, Def=2, Val=nil } - ctx.MenuLines[2] = { MenuId = 0x1100, lineNum = 2, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0xD5, ValId = 0x1103, Min=0, Max=200, Def=100, Val=100 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x40, ValId = 0x1110, Min=0, Max=0, Def=3, Val=nil } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x41, ValId = 0x1120, Min=0, Max=0, Def=2, Val=nil } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0xD5, ValId = 0x1103, Min=0, Max=200, Def=100, Val=100 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -696,11 +1088,11 @@ local function FC6250HX_loadMenu(menuId) --L[#4 T=V_i8 VId=0x1115 Text="Derivate"[0x73] val=7 [0->255,7] MId=0x1110 ] ctx.Menu = { MenuId = 0x1110, TextId = 0x40, PrevId = 0, NextId = 0, BackId = 0x1100 } - ctx.MenuLines[0] = { MenuId = 0x1110, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_I16, TextId = 0xDC, ValId = 0x1111, Min=0, Max=900, Def=270, Val=270 } - ctx.MenuLines[1] = { MenuId = 0x1110, lineNum = 1, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1112, Min=0, Max=5, Def=0, Val=1 } - ctx.MenuLines[2] = { MenuId = 0x1110, lineNum = 2, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x71, ValId = 0x1113, Min=0, Max=255, Def=100, Val=100 } - ctx.MenuLines[3] = { MenuId = 0x1110, lineNum = 3, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x72, ValId = 0x1114, Min=0, Max=255, Def=100, Val=100 } - ctx.MenuLines[4] = { MenuId = 0x1110, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x73, ValId = 0x1115, Min=0, Max=255, Def=7, Val=7 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_I16, TextId = 0xDC, ValId = 0x1111, Min=0, Max=900, Def=270, Val=270 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1112, Min=0, Max=5, Def=0, Val=1 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x71, ValId = 0x1113, Min=0, Max=255, Def=100, Val=100 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x72, ValId = 0x1114, Min=0, Max=255, Def=100, Val=100 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x73, ValId = 0x1115, Min=0, Max=255, Def=7, Val=7 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -715,15 +1107,15 @@ local function FC6250HX_loadMenu(menuId) --L[#6 T=V_i8 VId=0x1125 Text="Derivate"[0x73] Val=14 [0->255,14] MId=0x1120 ] ctx.Menu = { MenuId = 0x1120, TextId = 0x41, PrevId = 0, NextId = 0, BackId = 0x1100 } - ctx.MenuLines[0] = { MenuId = 0x1120, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_I16, TextId = 0xDC, ValId = 0x1121, Min=0, Max=900, Def=270, Val=270 } - ctx.MenuLines[1] = { MenuId = 0x1120, lineNum = 1, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x92, ValId = 0x1123, Min=5, Max=200, Def=25, Val=25 } - ctx.MenuLines[2] = { MenuId = 0x1120, lineNum = 2, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0xD8, ValId = 0x1123, Min=5, Max=200, Def=26, Val=100 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_I16, TextId = 0xDC, ValId = 0x1121, Min=0, Max=900, Def=270, Val=270 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x92, ValId = 0x1123, Min=5, Max=200, Def=25, Val=25 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0xD8, ValId = 0x1123, Min=5, Max=200, Def=26, Val=100 } - ctx.MenuLines[3] = { MenuId = 0x1120, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1122, Min=0, Max=5, Def=0, Val=1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1122, Min=0, Max=5, Def=0, Val=1 } - ctx.MenuLines[4] = { MenuId = 0x1120, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x71, ValId = 0x1123, Min=0, Max=255, Def=100, Val=100 } - ctx.MenuLines[5] = { MenuId = 0x1120, lineNum = 5, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x72, ValId = 0x1124, Min=0, Max=255, Def=95, Val=95 } - ctx.MenuLines[6] = { MenuId = 0x1120, lineNum = 6, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x73, ValId = 0x1125, Min=0, Max=255, Def=45, Val=45 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x71, ValId = 0x1123, Min=0, Max=255, Def=100, Val=100 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x72, ValId = 0x1124, Min=0, Max=255, Def=95, Val=95 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x73, ValId = 0x1125, Min=0, Max=255, Def=45, Val=45 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -738,15 +1130,15 @@ local function FC6250HX_loadMenu(menuId) --L[#6 T=V_i8 VId=0x1217 Text="Derivate"[0x73] Val=45 [0->255,45] MId=0x1200 ] ctx.Menu = { MenuId = 0x1200, TextId = 0xDD, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[0] = { MenuId = 0x1200, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_I16, TextId = 0xDC, ValId = 0x1211, Min=0, Max=1280, Def=550, Val=550 } - ctx.MenuLines[1] = { MenuId = 0x1200, lineNum = 1, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x92, ValId = 0x1212, Min=5, Max=200, Def=25, Val=25 } - ctx.MenuLines[2] = { MenuId = 0x1200, lineNum = 2, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0xD8, ValId = 0x1213, Min=5, Max=200, Def=26, Val=100 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_I16, TextId = 0xDC, ValId = 0x1211, Min=0, Max=1280, Def=550, Val=550 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x92, ValId = 0x1212, Min=5, Max=200, Def=25, Val=25 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0xD8, ValId = 0x1213, Min=5, Max=200, Def=26, Val=100 } - ctx.MenuLines[3] = { MenuId = 0x1200, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1214, Min=0, Max=5, Def=0, Val=1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1214, Min=0, Max=5, Def=0, Val=1 } - ctx.MenuLines[4] = { MenuId = 0x1200, lineNum = 4, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x71, ValId = 0x1215, Min=0, Max=255, Def=100, Val=100 } - ctx.MenuLines[5] = { MenuId = 0x1200, lineNum = 5, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x72, ValId = 0x1216, Min=0, Max=255, Def=95, Val=95 } - ctx.MenuLines[6] = { MenuId = 0x1200, lineNum = 6, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x73, ValId = 0x1217, Min=0, Max=255, Def=45, Val=45 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x71, ValId = 0x1215, Min=0, Max=255, Def=100, Val=100 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x72, ValId = 0x1216, Min=0, Max=255, Def=95, Val=95 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x73, ValId = 0x1217, Min=0, Max=255, Def=45, Val=45 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -759,11 +1151,11 @@ local function FC6250HX_loadMenu(menuId) --L[#6 T=L_m0 VId=0x1703 Text="Output Channel 6"[0x56] val=1 NL=(0->12,0,S=53) [53->65,53] MId=0x1300 ] ctx.Menu = { MenuId = 0x1300, TextId = 0xDE, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[0] = { MenuId = 0x1300, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0xD3, ValId = 0x1310 } - ctx.MenuLines[1] = { MenuId = 0x1300, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0xDD, ValId = 0x1360 } - ctx.MenuLines[4] = { MenuId = 0x1300, lineNum = 4, Type = LINE_TYPE.LIST_MENU0, TextId = 0x78, ValId = 0x1701, Min=12, Max=20, Def=13, Val=1 } - ctx.MenuLines[5] = { MenuId = 0x1300, lineNum = 5, Type = LINE_TYPE.LIST_MENU0, TextId = 0x89, ValId = 0x1702, Min=12, Max=20, Def=13, Val=0 } - ctx.MenuLines[6] = { MenuId = 0x1300, lineNum = 6, Type = LINE_TYPE.LIST_MENU0, TextId = 0x56, ValId = 0x1702, Min=53, Max=65, Def=53, Val=1 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xD3, ValId = 0x1310 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0xDD, ValId = 0x1360 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x78, ValId = 0x1701, Min=12, Max=20, Def=13, Val=1 } + ctx.MenuLines[5] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x89, ValId = 0x1702, Min=12, Max=20, Def=13, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.LIST_MENU0, TextId = 0x56, ValId = 0x1702, Min=53, Max=65, Def=53, Val=1 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -776,11 +1168,11 @@ local function FC6250HX_loadMenu(menuId) --L[#4 T=V_% VId=0x1313 Text="Decay"[0x208] Val=50 [0->100,50] MId=0x1310 ] ctx.Menu = { MenuId = 0x1310, TextId = 0xD3, PrevId = 0, NextId = 0, BackId = 0x1300 } - ctx.MenuLines[0] = { MenuId = 0x1310, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x49, ValId = 0x1330 } - ctx.MenuLines[1] = { MenuId = 0x1310, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0xDF, ValId = 0x1320 } - ctx.MenuLines[4] = { MenuId = 0x1310, lineNum = 4, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE4, ValId = 0x1311, Min=50, Max=150, Def=100, Val=100 } - ctx.MenuLines[5] = { MenuId = 0x1310, lineNum = 5, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE2, ValId = 0x1312, Min=-45, Max=45, Def=0, Val=0 } - ctx.MenuLines[6] = { MenuId = 0x1310, lineNum = 6, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x208, ValId = 0x1313, Min=0, Max=100, Def=50, Val=50 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x49, ValId = 0x1330 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0xDF, ValId = 0x1320 } + ctx.MenuLines[4] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE4, ValId = 0x1311, Min=50, Max=150, Def=100, Val=100 } + ctx.MenuLines[5] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE2, ValId = 0x1312, Min=-45, Max=45, Def=0, Val=0 } + ctx.MenuLines[6] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x208, ValId = 0x1313, Min=0, Max=100, Def=50, Val=50 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -792,10 +1184,10 @@ local function FC6250HX_loadMenu(menuId) --L[#3 T=V_% VId=0x1324 Text="Differential"[0x45] Val=0 % [-25->25,0] MId=0x1320 ] ctx.Menu = { MenuId = 0x1320, TextId = 0xDF, PrevId = 0, NextId = 0, BackId = 0x1310 } - ctx.MenuLines[0] = { MenuId = 0x1320, lineNum = 0, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x40, ValId = 0x1321, Min=-127, Max=127, Def=-75, Val=-75 } - ctx.MenuLines[1] = { MenuId = 0x1320, lineNum = 1, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x41, ValId = 0x1322, Min=-127, Max=127, Def=-75, Val=-75 } - ctx.MenuLines[2] = { MenuId = 0x1320, lineNum = 2, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE0, ValId = 0x1323, Min=5, Max=127, Def=45, Val=45 } - ctx.MenuLines[3] = { MenuId = 0x1320, lineNum = 3, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x45, ValId = 0x1324, Min=-25, Max=25, Def=0, Val=0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x40, ValId = 0x1321, Min=-127, Max=127, Def=-75, Val=-75 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x41, ValId = 0x1322, Min=-127, Max=127, Def=-75, Val=-75 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE0, ValId = 0x1323, Min=5, Max=127, Def=45, Val=45 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0x45, ValId = 0x1324, Min=-25, Max=25, Def=0, Val=0 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -804,7 +1196,7 @@ local function FC6250HX_loadMenu(menuId) --L[#0 T=M VId=0x1331 Text="Subtrim"[0xE1] MId=0x1330 ] ctx.Menu = { MenuId = 0x1330, TextId = 0x49, PrevId = 0, NextId = 0, BackId = 0x1310 } - ctx.MenuLines[0] = { MenuId = 0x1330, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0xE1, ValId = 0x1331 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xE1, ValId = 0x1331 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -815,9 +1207,9 @@ local function FC6250HX_loadMenu(menuId) --L[#2 T=V_s16 VId=0x1334 Text="Output Channel 3"[0x53] Val=-53 [-82->82,0] MId=0x1331 ] ctx.Menu = { MenuId = 0x1331, TextId = 0xE1, PrevId = 0, NextId = 0, BackId = 0x1330 } - ctx.MenuLines[0] = { MenuId = 0x1331, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x51, ValId = 0x1332, Min=-82, Max=82, Def=0, Val=57 } - ctx.MenuLines[1] = { MenuId = 0x1331, lineNum = 1, Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x52, ValId = 0x1333, Min=-82, Max=82, Def=0, Val=-17 } - ctx.MenuLines[2] = { MenuId = 0x1331, lineNum = 2, Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x53, ValId = 0x1334, Min=-82, Max=82, Def=0, Val=-53 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x51, ValId = 0x1332, Min=-82, Max=82, Def=0, Val=57 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x52, ValId = 0x1333, Min=-82, Max=82, Def=0, Val=-17 } + ctx.MenuLines[2] = { Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x53, ValId = 0x1334, Min=-82, Max=82, Def=0, Val=-53 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -826,7 +1218,7 @@ local function FC6250HX_loadMenu(menuId) --L[#0 T=M VId=0x1390 Text="Advanced Setup"[0x99] MId=0x1360 ] ctx.Menu = { MenuId = 0x1360, TextId = 0xDD, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[0] = { MenuId = 0x1360, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0x99, ValId = 0x1390 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0x99, ValId = 0x1390 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -836,8 +1228,8 @@ local function FC6250HX_loadMenu(menuId) --L[#1 T=V_% VId=0x1312 Text="Right"[0xE8] Val=0 % [-45->45,0] MId=0x1390 ] ctx.Menu = { MenuId = 0x1390, TextId = 0xE2, PrevId = 0, NextId = 0, BackId = 0x1360 } - ctx.MenuLines[0] = { MenuId = 0x1390, lineNum = 0, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE2, ValId = 0x1311, Min=-45, Max=45, Def=0, Val=0 } - ctx.MenuLines[1] = { MenuId = 0x1390, lineNum = 1, Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE8, ValId = 0x1312,Min=-45, Max=45, Def=0, Val=0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE2, ValId = 0x1311, Min=-45, Max=45, Def=0, Val=0 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_PERCENT, TextId = 0xE8, ValId = 0x1312,Min=-45, Max=45, Def=0, Val=0 } ctx.SelLine = 0 @@ -850,9 +1242,9 @@ local function FC6250HX_loadMenu(menuId) --L[#2 T=M VId=0x1420 Text="Attitude Trim"[0x1E6] MId=0x1400 ] ctx.Menu = { MenuId = 0x1400, TextId = 0xDA, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[0] = { MenuId = 0x1400, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0xDB, ValId = 0x1410 } - ctx.MenuLines[1] = { MenuId = 0x1400, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x8B, ValId = 0x140 } - ctx.MenuLines[2] = { MenuId = 0x1400, lineNum = 2, Type = LINE_TYPE.MENU, TextId = 0x1E6, ValId = 0x1420 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xDB, ValId = 0x1410 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x8B, ValId = 0x140 } + ctx.MenuLines[2] = { Type = LINE_TYPE.MENU, TextId = 0x1E6, ValId = 0x1420 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -864,10 +1256,10 @@ local function FC6250HX_loadMenu(menuId) --L[#4 T=L_m2 VId=0x1414 Text="Stability"[0xDB] val=1 NL=(0->1,1,S=1) [1->2,1] MId=0x1410 ] ctx.Menu = { MenuId = 0x1410, TextId = 0xDB, PrevId = 0, NextId = 0, BackId = 0x1400 } - ctx.MenuLines[0] = { MenuId = 0x1410, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x43, ValId = 0x1411, Min=0, Max=200, Def=50, Val=50 } - ctx.MenuLines[1] = { MenuId = 0x1410, lineNum = 1, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x1E7, ValId = 0x1412, Min=0, Max=90, Def=45, Val=45 } - ctx.MenuLines[3] = { MenuId = 0x1410, lineNum = 3, Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1413, Min=0, Max=5, Def=0, Val=1 } - ctx.MenuLines[4] = { MenuId = 0x1410, lineNum = 4, Type = LINE_TYPE.LIST_MENU2, TextId = 0xDB, ValId = 0x1414, Min=1, Max=2, Def=1, Val=1 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x43, ValId = 0x1411, Min=0, Max=200, Def=50, Val=50 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x1E7, ValId = 0x1412, Min=0, Max=90, Def=45, Val=45 } + ctx.MenuLines[3] = { Type = LINE_TYPE.VALUE_NOCHANGING, TextId = 0x8000, ValId = 0x1413, Min=0, Max=5, Def=0, Val=1 } + ctx.MenuLines[4] = { Type = LINE_TYPE.LIST_MENU2, TextId = 0xDB, ValId = 0x1414, Min=1, Max=2, Def=1, Val=1 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -878,8 +1270,8 @@ local function FC6250HX_loadMenu(menuId) --L[#1 T=V_i8 VId=0x142 Text="Yaw"[0x42] val=30 [25->100,50] MId=0x140 ] ctx.Menu = { MenuId = 0x140, TextId = 0x8B, PrevId = 0, NextId = 0, BackId = 0x1400 } - ctx.MenuLines[0] = { MenuId = 0x140, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x1E7, ValId = 0x141, Min=5, Max=90, Def=45, Val=30 } - ctx.MenuLines[1] = { MenuId = 0x140, lineNum = 1, Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x1E7, ValId = 0x42, Min=25, Max=100, Def=50, Val=30 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x1E7, ValId = 0x141, Min=5, Max=90, Def=45, Val=30 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NUM_I8, TextId = 0x1E7, ValId = 0x42, Min=25, Max=100, Def=50, Val=30 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -889,8 +1281,8 @@ local function FC6250HX_loadMenu(menuId) --L[#1 T=V_s16 VId=0x1422 Text="Pitch"[0x41] val=58 [-850->850,0] MId=0x1420 ] ctx.Menu = { MenuId = 0x1420, TextId = 0x1E6, PrevId = 0, NextId = 0, BackId = 0x1400 } - ctx.MenuLines[0] = { MenuId = 0x1420, lineNum = 0, Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x1E7, ValId = 0x40, Min=-850, Max=850, Def=450, Val=274 } - ctx.MenuLines[1] = { MenuId = 0x1420, lineNum = 1, Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x1E7, ValId = 0x41, Min=-850, Max=850, Def=0, Val=58 } + ctx.MenuLines[0] = { Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x1E7, ValId = 0x40, Min=-850, Max=850, Def=450, Val=274 } + ctx.MenuLines[1] = { Type = LINE_TYPE.VALUE_NUM_SI16, TextId = 0x1E7, ValId = 0x41, Min=-850, Max=850, Def=0, Val=58 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -900,8 +1292,8 @@ local function FC6250HX_loadMenu(menuId) --L[#1 T=M VId=0x17E0 Text="Factory Reset"[0x97] MId=0x1700 ] ctx.Menu = { MenuId = 0x1700, TextId = 0x86, PrevId = 0, NextId = 0, BackId = 0x1000 } - ctx.MenuLines[0] = { MenuId = 0x1700, lineNum = 0, Type = LINE_TYPE.MENU, TextId = 0xC7, ValId = 0x17F0 } - ctx.MenuLines[1] = { MenuId = 0x1700, lineNum = 1, Type = LINE_TYPE.MENU, TextId = 0x97, ValId = 0x17E0 } + ctx.MenuLines[0] = { Type = LINE_TYPE.MENU, TextId = 0xC7, ValId = 0x17F0 } + ctx.MenuLines[1] = { Type = LINE_TYPE.MENU, TextId = 0x97, ValId = 0x17E0 } ctx.SelLine = 0 lastGoodMenu = menuId @@ -910,7 +1302,7 @@ local function FC6250HX_loadMenu(menuId) --[#3 T=M VId=0x17E1 Text="Apply"[0x90] MId=0x17E0 ] ctx.Menu = { MenuId = 0x17E0, TextId = 0x98, PrevId = 0, NextId = 0, BackId = 0x1700 } - ctx.MenuLines[3] = { MenuId = 0x17E0, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x17E1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x90, ValId = 0x17E1 } ctx.SelLine = 3 lastGoodMenu = menuId @@ -919,12 +1311,25 @@ local function FC6250HX_loadMenu(menuId) --L[#3 T=M VId=0x17F1 Text="Begin"[0x91] MId=0x17F0 ] ctx.Menu = { MenuId = 0x17F0, TextId = 0xC7, PrevId = 0, NextId = 0, BackId = 0x1700 } - ctx.MenuLines[3] = { MenuId = 0x17F0, lineNum = 3, Type = LINE_TYPE.MENU, TextId = 0x91, ValId = 0x17F1 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0x91, ValId = 0x17F1 } ctx.SelLine = 3 lastGoodMenu = menuId + elseif (menuId==0x17F1) then + --M[Id=0x17F1 P=0x0 N=0x0 B=0x1700 Text="Calibrate Sensor"[0xC7]] + --L[#3 T=M VId=0x17F1 Text="Complete"[0xC8] MId=0x17F0 ] + + ctx.Menu = { MenuId = 0x17F1, TextId = 0xC7, PrevId = 0, NextId = 0, BackId = 0x1700 } + ctx.MenuLines[3] = { Type = LINE_TYPE.MENU, TextId = 0xC8, ValId = 0x1700 } + + ctx.SelLine = 3 + lastGoodMenu = menuId + elseif (menuId==0x0001) then + -- Save Settings and Reboot + ctx.Menu = { MenuId = 0x0001, TextId = 0x009F, PrevId = 0, NextId = 0, BackId = 0x1000 } + ctx.SelLine = dsmLib.BACK_BUTTON else - ctx.Menu = { MenuId = 0x0001, Text = "NOT IMPLEMENTED", TextId = 0, PrevId = 0, NextId = 0, BackId = lastGoodMenu } + ctx.Menu = { MenuId = 0x0002, Text = "NOT IMPLEMENTED", TextId = 0, PrevId = 0, NextId = 0, BackId = lastGoodMenu } ctx.SelLine = dsmLib.BACK_BUTTON end @@ -943,10 +1348,10 @@ local function loadMenu(menuId) --L[#1 T=M VId=0x105E val=nil [0->0,2] Text="Other settings" MId=0x1000 ] ctx.Menu = { MenuId = 0x1000, Text = "RX SIMULATION", PrevId = 0, NextId = 0, BackId = 0, TextId=0 } - ctx.MenuLines[0] = { MenuId = 0x1000, lineNum = 0, Type = LINE_TYPE.MENU, Text = "AR631/AR637 (NEW)", ValId = 0x1001,TextId=0 } - ctx.MenuLines[1] = { MenuId = 0x1000, lineNum = 1, Type = LINE_TYPE.MENU, Text = "AR631/AR637 (INITIALIZED)", ValId = 0x1002, TextId=0 } - ctx.MenuLines[4] = { MenuId = 0x1000, lineNum = 4, Type = LINE_TYPE.MENU, Text = "FC6250HX", ValId = 0x1005, TextId=0 } - ctx.MenuLines[6] = { MenuId = 0x1000, lineNum = 6, Type = LINE_TYPE.MENU, Text = "EXIT Sim to Real RX", ValId = 0xFFFF, TextId=0 } -- Menu 0xFFFF to Exit Simulator + ctx.MenuLines[0] = { MenuId = 0x1000, Type = LINE_TYPE.MENU, Text = "AR631/AR637 (NEW)", ValId = 0x1001,TextId=0 } + ctx.MenuLines[1] = { MenuId = 0x1000, Type = LINE_TYPE.MENU, Text = "AR631/AR637 (INITIALIZED)", ValId = 0x1002, TextId=0 } + ctx.MenuLines[4] = { MenuId = 0x1000, Type = LINE_TYPE.MENU, Text = "FC6250HX", ValId = 0x1005, TextId=0 } + ctx.MenuLines[6] = { MenuId = 0x1000, Type = LINE_TYPE.MENU, Text = "EXIT Sim to Real RX", ValId = 0xFFFF, TextId=0 } -- Menu 0xFFFF to Exit Simulator ctx.SelLine = 0 lastGoodMenu = menuId @@ -1047,8 +1452,11 @@ SimLib.DSM_Context = dsmLib.DSM_Context SimLib.LOG_write = dsmLib.LOG_write SimLib.LOG_close = dsmLib.LOG_close SimLib.getElapsedTime = dsmLib.getElapsedTime + SimLib.Get_Text = dsmLib.Get_Text -SimLib.Get_Text_Img = dsmLib.Get_Text_Img +SimLib.Get_List_Text = dsmLib.Get_List_Text +SimLib.Get_List_Text_Img = dsmLib.Get_List_Text_Img + SimLib.phase2String = dsmLib.phase2String SimLib.menu2String = dsmLib.menu2String SimLib.menuLine2String = dsmLib.menuLine2String @@ -1060,6 +1468,7 @@ SimLib.isPercentValueLine = dsmLib.isPercentValueLine SimLib.isNumberValueLine = dsmLib.isNumberValueLine SimLib.isDisplayAttr = dsmLib.isDisplayAttr SimLib.isFlightModeText = dsmLib.isFlightModeText +SimLib.GetFlightModeValue = dsmLib.GetFlightModeValue SimLib.StartConnection = SIM_StartConnection -- Override Function SimLib.ReleaseConnection = SIM_ReleaseConnection -- Override Function diff --git a/Lua_scripts/DSMLIB/img/rx_pos_1.png b/Lua_scripts/DSMLIB/img/rx_pos_1.png new file mode 100644 index 0000000..032d602 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_1.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_10.png b/Lua_scripts/DSMLIB/img/rx_pos_10.png new file mode 100644 index 0000000..e755828 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_10.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_11.png b/Lua_scripts/DSMLIB/img/rx_pos_11.png new file mode 100644 index 0000000..66d1c2b Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_11.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_12.png b/Lua_scripts/DSMLIB/img/rx_pos_12.png new file mode 100644 index 0000000..1829cf2 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_12.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_13.png b/Lua_scripts/DSMLIB/img/rx_pos_13.png new file mode 100644 index 0000000..8f0bdfd Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_13.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_14.png b/Lua_scripts/DSMLIB/img/rx_pos_14.png new file mode 100644 index 0000000..7cc9f4c Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_14.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_15.png b/Lua_scripts/DSMLIB/img/rx_pos_15.png new file mode 100644 index 0000000..2823bb4 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_15.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_16.png b/Lua_scripts/DSMLIB/img/rx_pos_16.png new file mode 100644 index 0000000..3712971 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_16.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_17.png b/Lua_scripts/DSMLIB/img/rx_pos_17.png new file mode 100644 index 0000000..d3b82cb Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_17.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_18.png b/Lua_scripts/DSMLIB/img/rx_pos_18.png new file mode 100644 index 0000000..5dc3d73 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_18.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_19.png b/Lua_scripts/DSMLIB/img/rx_pos_19.png new file mode 100644 index 0000000..f37c0c5 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_19.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_2.png b/Lua_scripts/DSMLIB/img/rx_pos_2.png new file mode 100644 index 0000000..da0b814 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_2.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_20.png b/Lua_scripts/DSMLIB/img/rx_pos_20.png new file mode 100644 index 0000000..3ab286e7 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_20.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_21.png b/Lua_scripts/DSMLIB/img/rx_pos_21.png new file mode 100644 index 0000000..2ef1d29 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_21.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_22.png b/Lua_scripts/DSMLIB/img/rx_pos_22.png new file mode 100644 index 0000000..4037dfe Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_22.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_23.png b/Lua_scripts/DSMLIB/img/rx_pos_23.png new file mode 100644 index 0000000..d767b2f Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_23.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_24.png b/Lua_scripts/DSMLIB/img/rx_pos_24.png new file mode 100644 index 0000000..ccc6b16 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_24.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_25.png b/Lua_scripts/DSMLIB/img/rx_pos_25.png new file mode 100644 index 0000000..ba84f61 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_25.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_3.png b/Lua_scripts/DSMLIB/img/rx_pos_3.png new file mode 100644 index 0000000..8510177 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_3.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_4.png b/Lua_scripts/DSMLIB/img/rx_pos_4.png new file mode 100644 index 0000000..75cb438 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_4.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_5.png b/Lua_scripts/DSMLIB/img/rx_pos_5.png new file mode 100644 index 0000000..5af94fe Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_5.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_6.png b/Lua_scripts/DSMLIB/img/rx_pos_6.png new file mode 100644 index 0000000..3668db1 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_6.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_7.png b/Lua_scripts/DSMLIB/img/rx_pos_7.png new file mode 100644 index 0000000..c7988c1 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_7.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_8.png b/Lua_scripts/DSMLIB/img/rx_pos_8.png new file mode 100644 index 0000000..4b0ea43 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_8.png differ diff --git a/Lua_scripts/DSMLIB/img/rx_pos_9.png b/Lua_scripts/DSMLIB/img/rx_pos_9.png new file mode 100644 index 0000000..948f858 Binary files /dev/null and b/Lua_scripts/DSMLIB/img/rx_pos_9.png differ diff --git a/Lua_scripts/DSMLIB/readme.txt b/Lua_scripts/DSMLIB/readme.txt index 7e2c66c..bf7589a 100644 --- a/Lua_scripts/DSMLIB/readme.txt +++ b/Lua_scripts/DSMLIB/readme.txt @@ -23,7 +23,7 @@ Version 0.5 - Separate the DSM Forwards Programing logic from the GUI - Log the comunnication with the RX on a /LOGS/dsm_log.txt to allow to debug it easier and see the exchange of data between the RX/TX -- Created a black/white version with only Key/Roller Inputs (OTX) +- Created a black/white Text only version with only Key/Roller Inputs - Created a nicer GUI for EdgeTX touchscreen color Radios - RX simulation for GUI development: turn on SIMULATION_ON=true in the beginning of the lua file @@ -32,7 +32,7 @@ Some settings that can change (top of Lua file): SIMULATION_ON = false -- FALSE: use real communication to DSM RX (DEFAULT), TRUE: use a simulated version of RX DEBUG_ON = 1 -- 0=NO DEBUG, 1=HIGH LEVEL 2=LOW LEVEL (Debug logged into the /LOGS/dsm_log.txt) DEBUG_ON_LCD = false -- Interactive Information on LCD of Menu data from RX - USE_SPECKTRUM_COLORS = true -- true: Use spectrum colors, false: use theme colors (default on OpenTX) + USE_SPECKTRUM_COLORS = true -- true: Use spectrum colors, false: use theme colors (default on OpenTX, OpenTX handle colors different) Known Problems: @@ -40,7 +40,7 @@ Known Problems: Some of the valid values are not even sequential, very spread apart. There has to be a list of valid options somewhere (in RX or config for each field). 2. The RX return unknow lines when requesting the Lines for a menu. Realy don't understand what they are for. in some menus, seems to stay stuck in the same return line or no response to the request, making the RX reset/close the connection. - Was able to hack it for AR631 "First Time Setup" and "First Time SAFE Setup", but still happen on "Servo Realm" and others in that menu. + Was able to hack it for AR631 "First Time Setup" and "First Time SAFE Setup", and "Servo Realm" (don't know if it works here) Version 0.2