diff --git a/.gitignore b/.gitignore index 95b7ddbd..156b1095 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ luac.out #directories tmp obj +.vscode diff --git a/src/SCRIPTS/BF/HORUS/horuspre.lua b/src/SCRIPTS/BF/HORUS/horuspre.lua deleted file mode 100644 index 3164c631..00000000 --- a/src/SCRIPTS/BF/HORUS/horuspre.lua +++ /dev/null @@ -1,17 +0,0 @@ -PageFiles = -{ - "pids1.lua", - "pids2.lua", - "rates.lua", - "pid_advanced.lua", - "filters.lua", - "pwm.lua", - "rx.lua", - "vtx.lua", - "rescue.lua", - "gpspids.lua", -} - -MenuBox = { x=120, y=100, w=200, x_offset=68, h_line=20, h_offset=6 } -SaveBox = { x=120, y=100, w=180, x_offset=12, h=60, h_offset=12 } -NoTelem = { 192, LCD_H - 28, "No Telemetry", TEXT_COLOR + INVERS + BLINK } diff --git a/src/SCRIPTS/BF/NV14/nv14pre.lua b/src/SCRIPTS/BF/NV14/nv14pre.lua deleted file mode 100644 index 5d6ffcd1..00000000 --- a/src/SCRIPTS/BF/NV14/nv14pre.lua +++ /dev/null @@ -1,17 +0,0 @@ -PageFiles = -{ - "pids1.lua", - "pids2.lua", - "rates.lua", - "pid_advanced.lua", - "filters.lua", - "pwm.lua", - "rx.lua", - "vtx.lua", - "rescue.lua", - "gpspids.lua", -} - -MenuBox = { x= (LCD_W -200)/2, y=LCD_H/2, w=200, x_offset=68, h_line=20, h_offset=6 } -SaveBox = { x= (LCD_W -200)/2, y=LCD_H/2, w=180, x_offset=12, h=60, h_offset=12 } -NoTelem = { LCD_W/2 - 50, LCD_H - 28, "No Telemetry", TEXT_COLOR + INVERS + BLINK } diff --git a/src/SCRIPTS/BF/X7/x7pre.lua b/src/SCRIPTS/BF/X7/x7pre.lua deleted file mode 100644 index 90eb3b06..00000000 --- a/src/SCRIPTS/BF/X7/x7pre.lua +++ /dev/null @@ -1,16 +0,0 @@ -PageFiles = -{ - "pids1.lua", - "pids2.lua", - "rates.lua", - "pid_advanced.lua", - "filters.lua", - "pwm.lua", - "vtx.lua", - "rescue.lua", - "gpspids.lua", -} - -MenuBox = { x=15, y=12, w=100, x_offset=36, h_line=8, h_offset=3 } -SaveBox = { x=15, y=12, w=100, x_offset=4, h=30, h_offset=5 } -NoTelem = { 30, 55, "No Telemetry", BLINK } diff --git a/src/SCRIPTS/BF/X9/x9pre.lua b/src/SCRIPTS/BF/X9/x9pre.lua deleted file mode 100644 index 474bbefd..00000000 --- a/src/SCRIPTS/BF/X9/x9pre.lua +++ /dev/null @@ -1,17 +0,0 @@ -PageFiles = -{ - "pids1.lua", - "pids2.lua", - "rates.lua", - "pid_advanced.lua", - "filters.lua", - "pwm.lua", - "rx.lua", - "vtx.lua", - "rescue.lua", - "gpspids.lua", -} - -MenuBox = { x=40, y=12, w=120, x_offset=36, h_line=8, h_offset=3 } -SaveBox = { x=40, y=12, w=120, x_offset=4, h=30, h_offset=5 } -NoTelem = { 70, 55, "No Telemetry", BLINK } diff --git a/src/SCRIPTS/BF/events.lua b/src/SCRIPTS/BF/events.lua deleted file mode 100644 index eedecb76..00000000 --- a/src/SCRIPTS/BF/events.lua +++ /dev/null @@ -1,29 +0,0 @@ - -return -{ - press = { - minus = EVT_MINUS_FIRST, - plus = EVT_PLUS_FIRST, - pageDown = EVT_PAGEDN_FIRST, - pageUp = EVT_PAGEUP_FIRST or EVT_LEFT_BREAK - }, - longPress = { - enter = EVT_ENTER_LONG, - menu = EVT_MENU_LONG or EVT_RIGHT_LONG - }, - repeatPress = { - minus = EVT_MINUS_REPT, - plus = EVT_PLUS_REPT - }, - release = { - enter = EVT_ENTER_BREAK or EVT_ROT_BREAK, - exit = EVT_EXIT_BREAK, - menu = EVT_MENU_BREAK or EVT_RIGHT_BREAK, - minus = EVT_MINUS_BREAK, - plus = EVT_PLUS_BREAK - }, - dial = { - left = EVT_ROT_LEFT or EVT_UP_BREAK, - right = EVT_ROT_RIGHT or EVT_DOWN_BREAK - } -} diff --git a/src/SCRIPTS/FUNCTIONS/pids.lua b/src/SCRIPTS/FUNCTIONS/pids.lua index 35a151b2..dfaac35b 100644 --- a/src/SCRIPTS/FUNCTIONS/pids.lua +++ b/src/SCRIPTS/FUNCTIONS/pids.lua @@ -1,4 +1,4 @@ -SCRIPT_HOME = "/SCRIPTS/BF" +SCRIPT_HOME = "/SCRIPTS/TOOLS/BF" assert(loadScript(SCRIPT_HOME.."/MSP/messages.lua"))() diff --git a/src/SCRIPTS/TELEMETRY/bf.lua b/src/SCRIPTS/TELEMETRY/bf.lua index 906ac8fa..b378127d 100644 --- a/src/SCRIPTS/TELEMETRY/bf.lua +++ b/src/SCRIPTS/TELEMETRY/bf.lua @@ -1,4 +1,4 @@ -SCRIPT_HOME = "/SCRIPTS/BF" +SCRIPT_HOME = "/SCRIPTS/TOOLS/BF" apiVersion = 0 diff --git a/src/SCRIPTS/BF/HORUS/filters.lua b/src/SCRIPTS/TOOLS/BF/HORUS/filters.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/filters.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/filters.lua diff --git a/src/SCRIPTS/BF/HORUS/gpspids.lua b/src/SCRIPTS/TOOLS/BF/HORUS/gpspids.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/gpspids.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/gpspids.lua diff --git a/src/SCRIPTS/TOOLS/BF/HORUS/horuspre.lua b/src/SCRIPTS/TOOLS/BF/HORUS/horuspre.lua new file mode 100644 index 00000000..1102279d --- /dev/null +++ b/src/SCRIPTS/TOOLS/BF/HORUS/horuspre.lua @@ -0,0 +1,17 @@ +PageFiles = +{ + { title = "PIDs 1", script = "pids1.lua"}, + { title = "PIDs 2", script = "pids2.lua"}, + { title = "Rates", script = "rates.lua"}, + { title = "Advanced PIDs", script = "pid_advanced.lua"}, + { title = "Filters", script = "filters.lua"}, + { title = "vTX Settings", script = "vtx.lua"}, + { title = "Gyro / Motor", script = "pwm.lua"}, + { title = "Rx", script = "rx.lua"}, + { title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041}, + { title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041}, +} + +MenuBox = { x=120, y=100, w=200, x_offset=68, h_line=20, h_offset=6 } +SaveBox = { x=120, y=100, w=180, x_offset=12, h=60, h_offset=12 } +NoTelem = { 192, LCD_H - 28, "No Telemetry", TEXT_COLOR + INVERS + BLINK } diff --git a/src/SCRIPTS/BF/HORUS/pid_advanced.lua b/src/SCRIPTS/TOOLS/BF/HORUS/pid_advanced.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/pid_advanced.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/pid_advanced.lua diff --git a/src/SCRIPTS/BF/HORUS/pids1.lua b/src/SCRIPTS/TOOLS/BF/HORUS/pids1.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/pids1.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/pids1.lua diff --git a/src/SCRIPTS/BF/HORUS/pids2.lua b/src/SCRIPTS/TOOLS/BF/HORUS/pids2.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/pids2.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/pids2.lua diff --git a/src/SCRIPTS/BF/HORUS/pwm.lua b/src/SCRIPTS/TOOLS/BF/HORUS/pwm.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/pwm.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/pwm.lua diff --git a/src/SCRIPTS/BF/HORUS/rates.lua b/src/SCRIPTS/TOOLS/BF/HORUS/rates.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/rates.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/rates.lua diff --git a/src/SCRIPTS/BF/HORUS/rescue.lua b/src/SCRIPTS/TOOLS/BF/HORUS/rescue.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/rescue.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/rescue.lua diff --git a/src/SCRIPTS/BF/HORUS/rx.lua b/src/SCRIPTS/TOOLS/BF/HORUS/rx.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/rx.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/rx.lua diff --git a/src/SCRIPTS/BF/HORUS/vtx.lua b/src/SCRIPTS/TOOLS/BF/HORUS/vtx.lua similarity index 100% rename from src/SCRIPTS/BF/HORUS/vtx.lua rename to src/SCRIPTS/TOOLS/BF/HORUS/vtx.lua diff --git a/src/SCRIPTS/BF/MSP/common.lua b/src/SCRIPTS/TOOLS/BF/MSP/common.lua similarity index 100% rename from src/SCRIPTS/BF/MSP/common.lua rename to src/SCRIPTS/TOOLS/BF/MSP/common.lua diff --git a/src/SCRIPTS/BF/MSP/crsf.lua b/src/SCRIPTS/TOOLS/BF/MSP/crsf.lua similarity index 100% rename from src/SCRIPTS/BF/MSP/crsf.lua rename to src/SCRIPTS/TOOLS/BF/MSP/crsf.lua diff --git a/src/SCRIPTS/BF/MSP/messages.lua b/src/SCRIPTS/TOOLS/BF/MSP/messages.lua similarity index 96% rename from src/SCRIPTS/BF/MSP/messages.lua rename to src/SCRIPTS/TOOLS/BF/MSP/messages.lua index da922df2..c778be8a 100644 --- a/src/SCRIPTS/BF/MSP/messages.lua +++ b/src/SCRIPTS/TOOLS/BF/MSP/messages.lua @@ -1,85 +1,85 @@ -MSP_PID_FORMAT = { - read = 112, -- MSP_PID - write = 202, -- MSP_SET_PID - minBytes = 8, - fields = { - -- P - { vals = { 1 } }, - { vals = { 4 } }, - { vals = { 7 } }, - -- I - { vals = { 2 } }, - { vals = { 5 } }, - { vals = { 8 } }, - -- D - { vals = { 3 } }, - { vals = { 6 } }, - }, -} - -MSP_PID_ADVANCED_FORMAT = { - read = 94, -- MSP_PID_ADVANCED - write = 95, -- MSP_SET_PID_ADVANCED - minBytes = 23, - fields = { - -- weight - { vals = { 10 }, scale = 100 }, - -- transition - { vals = { 9 }, scale = 100 }, - }, -} - -local INTRO_DELAY = 1600 -local READOUT_DELAY = 500 - -function extractMspValues(cmd, rx_buf, msgFormat, msgValues) - if cmd == nil or rx_buf == nil then - return - end - if cmd ~= msgFormat.read then - return - end - if #(rx_buf) > 0 then - msgValues.raw = {} - for i=1,#(rx_buf) do - msgValues.raw[i] = rx_buf[i] - end - - msgValues.values = {} - for i=1,#(msgFormat.fields) do - if (#(msgValues.raw) or 0) >= msgFormat.minBytes then - local f = msgFormat.fields[i] - if f.vals then - local value = 0; - for idx=1, #(f.vals) do - local raw_val = msgValues.raw[f.vals[idx]] - raw_val = bit32.lshift(raw_val, (idx-1)*8) - value = bit32.bor(value, raw_val) - end - msgValues.values[i] = value/(f.scale or 1) - end - end - end - end -end - -function readoutMsp(msgFormat, msg) - local t = getTime() - if msg.lastTrigger == nil or msg.lastTrigger + INTRO_DELAY <= t then - playFile(msg.intro) - msg.lastTrigger = t - elseif msg.reqTS == nil or msg.reqTS + READOUT_DELAY <= t then - protocol.mspRead(msgFormat.read) - msg.reqTS = t - else - local cmd, rx_buf = mspPollReply() - extractMspValues(cmd, rx_buf, msgFormat, msg) - if msg.raw then - for i=1,#(msg.readoutValues) do - playNumber(msg.values[msg.readoutValues[i]], 0) - end - msg.raw = nil - end - end - mspProcessTxQ() -end +MSP_PID_FORMAT = { + read = 112, -- MSP_PID + write = 202, -- MSP_SET_PID + minBytes = 8, + fields = { + -- P + { vals = { 1 } }, + { vals = { 4 } }, + { vals = { 7 } }, + -- I + { vals = { 2 } }, + { vals = { 5 } }, + { vals = { 8 } }, + -- D + { vals = { 3 } }, + { vals = { 6 } }, + }, +} + +MSP_PID_ADVANCED_FORMAT = { + read = 94, -- MSP_PID_ADVANCED + write = 95, -- MSP_SET_PID_ADVANCED + minBytes = 23, + fields = { + -- weight + { vals = { 10 }, scale = 100 }, + -- transition + { vals = { 9 }, scale = 100 }, + }, +} + +local INTRO_DELAY = 1600 +local READOUT_DELAY = 500 + +function extractMspValues(cmd, rx_buf, msgFormat, msgValues) + if cmd == nil or rx_buf == nil then + return + end + if cmd ~= msgFormat.read then + return + end + if #(rx_buf) > 0 then + msgValues.raw = {} + for i=1,#(rx_buf) do + msgValues.raw[i] = rx_buf[i] + end + + msgValues.values = {} + for i=1,#(msgFormat.fields) do + if (#(msgValues.raw) or 0) >= msgFormat.minBytes then + local f = msgFormat.fields[i] + if f.vals then + local value = 0; + for idx=1, #(f.vals) do + local raw_val = msgValues.raw[f.vals[idx]] + raw_val = bit32.lshift(raw_val, (idx-1)*8) + value = bit32.bor(value, raw_val) + end + msgValues.values[i] = value/(f.scale or 1) + end + end + end + end +end + +function readoutMsp(msgFormat, msg) + local t = getTime() + if msg.lastTrigger == nil or msg.lastTrigger + INTRO_DELAY <= t then + playFile(msg.intro) + msg.lastTrigger = t + elseif msg.reqTS == nil or msg.reqTS + READOUT_DELAY <= t then + protocol.mspRead(msgFormat.read) + msg.reqTS = t + else + local cmd, rx_buf = mspPollReply() + extractMspValues(cmd, rx_buf, msgFormat, msg) + if msg.raw then + for i=1,#(msg.readoutValues) do + playNumber(msg.values[msg.readoutValues[i]], 0) + end + msg.raw = nil + end + end + mspProcessTxQ() +end diff --git a/src/SCRIPTS/BF/MSP/sp.lua b/src/SCRIPTS/TOOLS/BF/MSP/sp.lua similarity index 100% rename from src/SCRIPTS/BF/MSP/sp.lua rename to src/SCRIPTS/TOOLS/BF/MSP/sp.lua diff --git a/src/SCRIPTS/BF/NV14/filters.lua b/src/SCRIPTS/TOOLS/BF/NV14/filters.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/filters.lua rename to src/SCRIPTS/TOOLS/BF/NV14/filters.lua diff --git a/src/SCRIPTS/BF/NV14/gpspids.lua b/src/SCRIPTS/TOOLS/BF/NV14/gpspids.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/gpspids.lua rename to src/SCRIPTS/TOOLS/BF/NV14/gpspids.lua diff --git a/src/SCRIPTS/TOOLS/BF/NV14/nv14pre.lua b/src/SCRIPTS/TOOLS/BF/NV14/nv14pre.lua new file mode 100644 index 00000000..d1071cbe --- /dev/null +++ b/src/SCRIPTS/TOOLS/BF/NV14/nv14pre.lua @@ -0,0 +1,17 @@ +PageFiles = +{ + { title = "PIDs 1", script = "pids1.lua"}, + { title = "PIDs 2", script = "pids2.lua"}, + { title = "Rates", script = "rates.lua"}, + { title = "Advanced PIDs", script = "pid_advanced.lua"}, + { title = "Filters", script = "filters.lua"}, + { title = "vTX Settings", script = "vtx.lua"}, + { title = "Gyro / Motor", script = "pwm.lua"}, + { title = "Rx", script = "rx.lua"}, + { title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041}, + { title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041}, +} + +MenuBox = { x= (LCD_W -200)/2, y=LCD_H/2, w=200, x_offset=68, h_line=20, h_offset=6 } +SaveBox = { x= (LCD_W -200)/2, y=LCD_H/2, w=180, x_offset=12, h=60, h_offset=12 } +NoTelem = { LCD_W/2 - 50, LCD_H - 28, "No Telemetry", TEXT_COLOR + INVERS + BLINK } diff --git a/src/SCRIPTS/BF/NV14/pid_advanced.lua b/src/SCRIPTS/TOOLS/BF/NV14/pid_advanced.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/pid_advanced.lua rename to src/SCRIPTS/TOOLS/BF/NV14/pid_advanced.lua diff --git a/src/SCRIPTS/BF/NV14/pids1.lua b/src/SCRIPTS/TOOLS/BF/NV14/pids1.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/pids1.lua rename to src/SCRIPTS/TOOLS/BF/NV14/pids1.lua diff --git a/src/SCRIPTS/BF/NV14/pids2.lua b/src/SCRIPTS/TOOLS/BF/NV14/pids2.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/pids2.lua rename to src/SCRIPTS/TOOLS/BF/NV14/pids2.lua diff --git a/src/SCRIPTS/BF/NV14/pwm.lua b/src/SCRIPTS/TOOLS/BF/NV14/pwm.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/pwm.lua rename to src/SCRIPTS/TOOLS/BF/NV14/pwm.lua diff --git a/src/SCRIPTS/BF/NV14/rates.lua b/src/SCRIPTS/TOOLS/BF/NV14/rates.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/rates.lua rename to src/SCRIPTS/TOOLS/BF/NV14/rates.lua diff --git a/src/SCRIPTS/BF/NV14/rescue.lua b/src/SCRIPTS/TOOLS/BF/NV14/rescue.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/rescue.lua rename to src/SCRIPTS/TOOLS/BF/NV14/rescue.lua diff --git a/src/SCRIPTS/BF/NV14/rx.lua b/src/SCRIPTS/TOOLS/BF/NV14/rx.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/rx.lua rename to src/SCRIPTS/TOOLS/BF/NV14/rx.lua diff --git a/src/SCRIPTS/BF/NV14/vtx.lua b/src/SCRIPTS/TOOLS/BF/NV14/vtx.lua similarity index 100% rename from src/SCRIPTS/BF/NV14/vtx.lua rename to src/SCRIPTS/TOOLS/BF/NV14/vtx.lua diff --git a/src/SCRIPTS/BF/X7/filters.lua b/src/SCRIPTS/TOOLS/BF/X7/filters.lua similarity index 100% rename from src/SCRIPTS/BF/X7/filters.lua rename to src/SCRIPTS/TOOLS/BF/X7/filters.lua diff --git a/src/SCRIPTS/BF/X7/gpspids.lua b/src/SCRIPTS/TOOLS/BF/X7/gpspids.lua similarity index 100% rename from src/SCRIPTS/BF/X7/gpspids.lua rename to src/SCRIPTS/TOOLS/BF/X7/gpspids.lua diff --git a/src/SCRIPTS/BF/X7/pid_advanced.lua b/src/SCRIPTS/TOOLS/BF/X7/pid_advanced.lua similarity index 100% rename from src/SCRIPTS/BF/X7/pid_advanced.lua rename to src/SCRIPTS/TOOLS/BF/X7/pid_advanced.lua diff --git a/src/SCRIPTS/BF/X7/pids1.lua b/src/SCRIPTS/TOOLS/BF/X7/pids1.lua similarity index 100% rename from src/SCRIPTS/BF/X7/pids1.lua rename to src/SCRIPTS/TOOLS/BF/X7/pids1.lua diff --git a/src/SCRIPTS/BF/X7/pids2.lua b/src/SCRIPTS/TOOLS/BF/X7/pids2.lua similarity index 100% rename from src/SCRIPTS/BF/X7/pids2.lua rename to src/SCRIPTS/TOOLS/BF/X7/pids2.lua diff --git a/src/SCRIPTS/BF/X7/pwm.lua b/src/SCRIPTS/TOOLS/BF/X7/pwm.lua similarity index 100% rename from src/SCRIPTS/BF/X7/pwm.lua rename to src/SCRIPTS/TOOLS/BF/X7/pwm.lua diff --git a/src/SCRIPTS/BF/X7/rates.lua b/src/SCRIPTS/TOOLS/BF/X7/rates.lua similarity index 100% rename from src/SCRIPTS/BF/X7/rates.lua rename to src/SCRIPTS/TOOLS/BF/X7/rates.lua diff --git a/src/SCRIPTS/BF/X7/rescue.lua b/src/SCRIPTS/TOOLS/BF/X7/rescue.lua similarity index 100% rename from src/SCRIPTS/BF/X7/rescue.lua rename to src/SCRIPTS/TOOLS/BF/X7/rescue.lua diff --git a/src/SCRIPTS/BF/X7/vtx.lua b/src/SCRIPTS/TOOLS/BF/X7/vtx.lua similarity index 100% rename from src/SCRIPTS/BF/X7/vtx.lua rename to src/SCRIPTS/TOOLS/BF/X7/vtx.lua diff --git a/src/SCRIPTS/TOOLS/BF/X7/x7pre.lua b/src/SCRIPTS/TOOLS/BF/X7/x7pre.lua new file mode 100644 index 00000000..b6e53000 --- /dev/null +++ b/src/SCRIPTS/TOOLS/BF/X7/x7pre.lua @@ -0,0 +1,16 @@ +PageFiles = +{ + { title = "vTX Settings", script = "vtx.lua"}, + { title = "Gyro / Motor", script = "pwm.lua"}, + { title = "PIDs 1", script = "pids1.lua"}, + { title = "PIDs 2", script = "pids2.lua"}, + { title = "Rates", script = "rates.lua"}, + { title = "Advanced PIDs", script = "pid_advanced.lua"}, + { title = "Filters", script = "filters.lua"}, + { title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041}, + { title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041}, +} + +MenuBox = { x=15, y=12, w=100, x_offset=36, h_line=8, h_offset=3 } +SaveBox = { x=15, y=12, w=100, x_offset=4, h=30, h_offset=5 } +NoTelem = { 30, 55, "No Telemetry", BLINK } diff --git a/src/SCRIPTS/BF/X9/filters.lua b/src/SCRIPTS/TOOLS/BF/X9/filters.lua similarity index 100% rename from src/SCRIPTS/BF/X9/filters.lua rename to src/SCRIPTS/TOOLS/BF/X9/filters.lua diff --git a/src/SCRIPTS/BF/X9/gpspids.lua b/src/SCRIPTS/TOOLS/BF/X9/gpspids.lua similarity index 100% rename from src/SCRIPTS/BF/X9/gpspids.lua rename to src/SCRIPTS/TOOLS/BF/X9/gpspids.lua diff --git a/src/SCRIPTS/BF/X9/pid_advanced.lua b/src/SCRIPTS/TOOLS/BF/X9/pid_advanced.lua similarity index 100% rename from src/SCRIPTS/BF/X9/pid_advanced.lua rename to src/SCRIPTS/TOOLS/BF/X9/pid_advanced.lua diff --git a/src/SCRIPTS/BF/X9/pids1.lua b/src/SCRIPTS/TOOLS/BF/X9/pids1.lua similarity index 100% rename from src/SCRIPTS/BF/X9/pids1.lua rename to src/SCRIPTS/TOOLS/BF/X9/pids1.lua diff --git a/src/SCRIPTS/BF/X9/pids2.lua b/src/SCRIPTS/TOOLS/BF/X9/pids2.lua similarity index 100% rename from src/SCRIPTS/BF/X9/pids2.lua rename to src/SCRIPTS/TOOLS/BF/X9/pids2.lua diff --git a/src/SCRIPTS/BF/X9/pwm.lua b/src/SCRIPTS/TOOLS/BF/X9/pwm.lua similarity index 100% rename from src/SCRIPTS/BF/X9/pwm.lua rename to src/SCRIPTS/TOOLS/BF/X9/pwm.lua diff --git a/src/SCRIPTS/BF/X9/rates.lua b/src/SCRIPTS/TOOLS/BF/X9/rates.lua similarity index 100% rename from src/SCRIPTS/BF/X9/rates.lua rename to src/SCRIPTS/TOOLS/BF/X9/rates.lua diff --git a/src/SCRIPTS/BF/X9/rescue.lua b/src/SCRIPTS/TOOLS/BF/X9/rescue.lua similarity index 100% rename from src/SCRIPTS/BF/X9/rescue.lua rename to src/SCRIPTS/TOOLS/BF/X9/rescue.lua diff --git a/src/SCRIPTS/BF/X9/rx.lua b/src/SCRIPTS/TOOLS/BF/X9/rx.lua similarity index 100% rename from src/SCRIPTS/BF/X9/rx.lua rename to src/SCRIPTS/TOOLS/BF/X9/rx.lua diff --git a/src/SCRIPTS/BF/X9/vtx.lua b/src/SCRIPTS/TOOLS/BF/X9/vtx.lua similarity index 100% rename from src/SCRIPTS/BF/X9/vtx.lua rename to src/SCRIPTS/TOOLS/BF/X9/vtx.lua diff --git a/src/SCRIPTS/TOOLS/BF/X9/x9pre.lua b/src/SCRIPTS/TOOLS/BF/X9/x9pre.lua new file mode 100644 index 00000000..c7505682 --- /dev/null +++ b/src/SCRIPTS/TOOLS/BF/X9/x9pre.lua @@ -0,0 +1,17 @@ +PageFiles = +{ + { title = "PIDs 1", script = "pids1.lua"}, + { title = "PIDs 2", script = "pids2.lua"}, + { title = "Rates", script = "rates.lua"}, + { title = "Advanced PIDs", script = "pid_advanced.lua"}, + { title = "Filters", script = "filters.lua"}, + { title = "vTX Settings", script = "vtx.lua"}, + { title = "Gyro / Motor", script = "pwm.lua"}, + { title = "Rx", script = "rx.lua"}, + { title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041}, + { title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041}, +} + +MenuBox = { x=40, y=12, w=120, x_offset=36, h_line=8, h_offset=3 } +SaveBox = { x=40, y=12, w=120, x_offset=4, h=30, h_offset=5 } +NoTelem = { 70, 55, "No Telemetry", BLINK } diff --git a/src/SCRIPTS/BF/background.lua b/src/SCRIPTS/TOOLS/BF/background.lua similarity index 100% rename from src/SCRIPTS/BF/background.lua rename to src/SCRIPTS/TOOLS/BF/background.lua diff --git a/src/SCRIPTS/BF/data_init.lua b/src/SCRIPTS/TOOLS/BF/data_init.lua similarity index 100% rename from src/SCRIPTS/BF/data_init.lua rename to src/SCRIPTS/TOOLS/BF/data_init.lua diff --git a/src/SCRIPTS/BF/protocols.lua b/src/SCRIPTS/TOOLS/BF/protocols.lua similarity index 100% rename from src/SCRIPTS/BF/protocols.lua rename to src/SCRIPTS/TOOLS/BF/protocols.lua diff --git a/src/SCRIPTS/BF/radios.lua b/src/SCRIPTS/TOOLS/BF/radios.lua similarity index 92% rename from src/SCRIPTS/BF/radios.lua rename to src/SCRIPTS/TOOLS/BF/radios.lua index f4516acc..b1f6d227 100644 --- a/src/SCRIPTS/BF/radios.lua +++ b/src/SCRIPTS/TOOLS/BF/radios.lua @@ -36,15 +36,18 @@ local supportedRadios = ["x3"] = supportedPlatforms.x7, ["x7"] = supportedPlatforms.x7, ["x7s"] = supportedPlatforms.x7, + ["x7-simu"] = supportedPlatforms.x7, ["t12"] = supportedPlatforms.x7, ["xlite"] = supportedPlatforms.x7, ["xlites"] = supportedPlatforms.x7, ["x9lite"] = supportedPlatforms.x7, ["x9d"] = supportedPlatforms.x9, ["x9d+"] = supportedPlatforms.x9, + ["x9d+-simu"] = supportedPlatforms.x9, ["x9d+2019"] = supportedPlatforms.x9, ["x9e"] = supportedPlatforms.x9, ["x10"] = supportedPlatforms.horus, + ["x10-simu"] = supportedPlatforms.horus, ["x10express"] = supportedPlatforms.horus, ["x12s"] = supportedPlatforms.horus, ["NV14"] = supportedPlatforms.nv14, diff --git a/src/SCRIPTS/BF/ui.lua b/src/SCRIPTS/TOOLS/BF/ui.lua similarity index 74% rename from src/SCRIPTS/BF/ui.lua rename to src/SCRIPTS/TOOLS/BF/ui.lua index f61c7568..70d4e1a2 100644 --- a/src/SCRIPTS/BF/ui.lua +++ b/src/SCRIPTS/TOOLS/BF/ui.lua @@ -1,11 +1,11 @@ -local userEvent = assert(loadScript(SCRIPT_HOME.."/events.lua"))() local pageStatus = { display = 2, editing = 3, saving = 4, - displayMenu = 5, + popupMenu = 5, + mainMenu = 6, } local uiMsp = @@ -14,7 +14,8 @@ local uiMsp = eepromWrite = 250 } -local currentState = pageStatus.display +local menuLine = 1 +local currentState = pageStatus.mainMenu local requestTimeout = 80 -- 800ms request timeout local currentPage = 1 local currentLine = 1 @@ -24,11 +25,11 @@ local saveRetries = 0 local saveMaxRetries = 0 local pageRequested = false local telemetryScreenActive = false -local menuActive = false +local popupMenuActive = false local lastRunTS = 0 local killEnterBreak = 0 +local stopDisplay = true local scrollPixelsY = 0 - local Page = nil local backgroundFill = TEXT_BGCOLOR or ERASE @@ -36,6 +37,13 @@ local foregroundColor = LINE_COLOR or SOLID local globalTextOptions = TEXT_COLOR or 0 +local titleHeight = 10 +local lineSpacing = 8 +if radio.resolution == lcdResolution.high then + titleHeight = 30 + lineSpacing = 20 +end + local function saveSettings(new) if Page.values then if Page.preSave then @@ -74,7 +82,7 @@ local function eepromWrite() protocol.mspRead(uiMsp.eepromWrite) end -local menuList = { +local popupMenuList = { { t = "save page", f = saveSettings @@ -142,8 +150,8 @@ local function incMax(val, inc, base) return ((val + inc + base - 1) % base) + 1 end -local function incPage(inc) - currentPage = incMax(currentPage, inc, #(PageFiles)) +local function setPage(pageNo) + currentPage = pageNo Page = nil currentLine = 1 collectgarbage() @@ -153,8 +161,11 @@ local function incLine(inc) currentLine = clipValue(currentLine + inc, 1, #(Page.fields)) end -local function incMenu(inc) - menuActive = clipValue(menuActive + inc, 1, #(menuList)) +local function incMainMenu(inc) + menuLine = clipValue(menuLine + inc, 1, #(PageFiles)) +end +local function incPopupMenu(inc) + popupMenuActive = clipValue(popupMenuActive + inc, 1, #(popupMenuList)) end local function requestPage() @@ -179,7 +190,7 @@ local function drawScreen() local yMaxLim = Page.yMaxLimit or LCD_H local currentLineY = Page.fields[currentLine].y local screen_title = Page.title - drawScreenTitle("Betaflight / "..screen_title) + drawScreenTitle(screen_title) if currentLineY <= Page.fields[1].y then scrollPixelsY = 0 elseif currentLineY - scrollPixelsY <= yMinLim then @@ -260,21 +271,21 @@ local function incValue(inc) end end -local function drawMenu() +local function drawPopupMenu() local x = MenuBox.x local y = MenuBox.y local w = MenuBox.w local h_line = MenuBox.h_line local h_offset = MenuBox.h_offset - local h = #(menuList) * h_line + h_offset*2 + local h = #(popupMenuList) * h_line + h_offset*2 lcd.drawFilledRectangle(x,y,w,h,backgroundFill) lcd.drawRectangle(x,y,w-1,h-1,foregroundColor) lcd.drawText(x+h_line/2,y+h_offset,"Menu:",globalTextOptions) - for i,e in ipairs(menuList) do + for i,e in ipairs(popupMenuList) do local text_options = globalTextOptions - if menuActive == i then + if popupMenuActive == i then text_options = text_options + INVERS end lcd.drawText(x+MenuBox.x_offset,y+(i-1)*h_line+h_offset,e.t,text_options) @@ -286,6 +297,7 @@ function run_ui(event) -- if lastRunTS old than 500ms if lastRunTS + 50 < now then invalidatePages() + currentState = pageStatus.mainMenu end lastRunTS = now if (currentState == pageStatus.saving) then @@ -294,80 +306,62 @@ function run_ui(event) saveSettings() else -- max retries reached - currentState = pageStatus.display invalidatePages() + currentState = pageStatus.display end end end -- process send queue mspProcessTxQ() -- navigation - if (event == userEvent.longPress.menu) then -- Taranis QX7 / X9 - menuActive = 1 - currentState = pageStatus.displayMenu - elseif userEvent.press.pageDown and (event == userEvent.longPress.enter) then -- Horus - menuActive = 1 + if (event == EVT_VIRTUAL_MENU_LONG) then + popupMenuActive = 1 killEnterBreak = 1 - currentState = pageStatus.displayMenu + currentState = pageStatus.popupMenu -- menu is currently displayed - elseif currentState == pageStatus.displayMenu then - if event == userEvent.release.exit then + elseif currentState == pageStatus.popupMenu then + if event == EVT_VIRTUAL_EXIT then currentState = pageStatus.display - elseif event == userEvent.release.plus or event == userEvent.dial.left then - incMenu(-1) - elseif event == userEvent.release.minus or event == userEvent.dial.right then - incMenu(1) - elseif event == userEvent.release.enter then + elseif event == EVT_VIRTUAL_PREVIOUS then + incPopupMenu(-1) + elseif event == EVT_VIRTUAL_NEXT then + incPopupMenu(1) + elseif event == EVT_VIRTUAL_ENTER then if killEnterBreak == 1 then killEnterBreak = 0 else currentState = pageStatus.display - menuList[menuActive].f() + popupMenuList[popupMenuActive].f() end end -- normal page viewing elseif currentState <= pageStatus.display then - if event == userEvent.press.pageUp then - incPage(-1) - elseif event == userEvent.release.menu or event == userEvent.press.pageDown then - incPage(1) - elseif event == userEvent.release.plus or event == userEvent.repeatPress.plus or event == userEvent.dial.left then + if event == EVT_VIRTUAL_PREVIOUS then incLine(-1) - elseif event == userEvent.release.minus or event == userEvent.repeatPress.minus or event == userEvent.dial.right then + elseif event == EVT_VIRTUAL_NEXT then incLine(1) - elseif event == userEvent.release.enter then + elseif event == EVT_VIRTUAL_ENTER then local field = Page.fields[currentLine] local idx = field.i or currentLine if Page.values and Page.values[idx] and (field.ro ~= true) then currentState = pageStatus.editing end - elseif event == userEvent.release.exit then - return protocol.exitFunc(); + elseif event == EVT_VIRTUAL_EXIT then + stopDisplay = true end -- editing value elseif currentState == pageStatus.editing then - if (event == userEvent.release.exit) or (event == userEvent.release.enter) then + if event == EVT_VIRTUAL_EXIT then currentState = pageStatus.display - elseif event == userEvent.press.plus or event == userEvent.repeatPress.plus or event == userEvent.dial.right then + elseif event == EVT_VIRTUAL_NEXT then incValue(1) - elseif event == userEvent.press.minus or event == userEvent.repeatPress.minus or event == userEvent.dial.left then + elseif event == EVT_VIRTUAL_PREVIOUS then incValue(-1) end end - local nextPage = currentPage - while Page == nil do - Page = assert(loadScript(radio.templateHome .. PageFiles[currentPage]))() - if Page.requiredVersion and apiVersion > 0 and Page.requiredVersion > apiVersion then - incPage(1) + Page = assert(loadScript(radio.templateHome .. PageFiles[currentPage].script))() - if currentPage == nextPage then - lcd.clear() - lcd.drawText(NoTelem[1], NoTelem[2], "No Pages! API: " .. apiVersion, NoTelem[4]) - return 1 - end - end - end if not Page.values and currentState == pageStatus.display then requestPage() end @@ -379,8 +373,8 @@ function run_ui(event) if protocol.rssi() == 0 then lcd.drawText(NoTelem[1],NoTelem[2],NoTelem[3],NoTelem[4]) end - if currentState == pageStatus.displayMenu then - drawMenu() + if currentState == pageStatus.popupMenu then + drawPopupMenu() elseif currentState == pageStatus.saving then lcd.drawFilledRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,backgroundFill) lcd.drawRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,SOLID) @@ -390,6 +384,42 @@ function run_ui(event) lcd.drawText(SaveBox.x+SaveBox.x_offset,SaveBox.y+SaveBox.h_offset,"Retrying",DBLSIZE + (globalTextOptions)) end end + if currentState == pageStatus.mainMenu then + if event == EVT_VIRTUAL_EXIT then + return 2 + elseif event == EVT_VIRTUAL_NEXT then + incMainMenu(1) + elseif event == EVT_VIRTUAL_PREVIOUS then + incMainMenu(-1) + end + lcd.clear() + drawScreenTitle("Betaflight Config", 0, 0) + for i=1, #PageFiles do + local yMinLim = titleHeight + local yMaxLim = LCD_H - lineSpacing + local currentLineY = (menuLine-1)*lineSpacing + yMinLim + if currentLineY <= yMaxLim then + scrollPixelsY = 0 + elseif currentLineY - scrollPixelsY <= yMinLim then + scrollPixelsY = currentLineY - yMinLim*2 + elseif currentLineY - scrollPixelsY >= yMaxLim then + scrollPixelsY = currentLineY - yMaxLim + 6 + end + local attr = (menuLine == i and INVERS or 0) + if event == EVT_VIRTUAL_ENTER and attr == INVERS then + Page = assert(loadScript(radio.templateHome .. PageFiles[i].script))() + currentPage = i + currentState = pageStatus.display + end + if ((i-1)*lineSpacing + yMinLim - scrollPixelsY) >= yMinLim and ((i-1)*lineSpacing + yMinLim - scrollPixelsY) <= yMaxLim then + lcd.drawText(6, (i-1)*lineSpacing + yMinLim - scrollPixelsY, PageFiles[i].title, attr) + end + end + end + if stopDisplay then + currentState = pageStatus.mainMenu + stopDisplay = false + end processMspReply(mspPollReply()) return 0 end diff --git a/src/BF/bf.lua b/src/SCRIPTS/TOOLS/bf.lua similarity index 81% rename from src/BF/bf.lua rename to src/SCRIPTS/TOOLS/bf.lua index a61c46b2..3dd728e7 100644 --- a/src/BF/bf.lua +++ b/src/SCRIPTS/TOOLS/bf.lua @@ -1,4 +1,5 @@ -SCRIPT_HOME = "/SCRIPTS/BF" +local toolName = "TNS|Betaflight setup|TNE" +SCRIPT_HOME = "/SCRIPTS/TOOLS/BF" apiVersion = 0