Skip to content

Commit 703c7bf

Browse files
Craft name for vtx tables
Reads craft name from MSP and uses that name to store the vtx tables. If the craft name is empty it falls backs on using the model name as before.
1 parent f58c429 commit 703c7bf

File tree

7 files changed

+62
-15
lines changed

7 files changed

+62
-15
lines changed

src/SCRIPTS/BF/PAGES/vtx.lua

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
local md = model.getInfo();
2-
local vtx_tables = loadScript("/BF/VTX/"..md.name..".lua")
1+
local vtx_tables = loadScript("/BF/VTX/"..craftName..".lua")
32
if vtx_tables then
43
vtx_tables = vtx_tables()
54
else

src/SCRIPTS/BF/craft_name.lua

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
local MSP_NAME = 10
2+
3+
local craftNameReceived = false
4+
5+
local lastRunTS = 0
6+
local INTERVAL = 100
7+
8+
local function processMspReply(cmd, payload)
9+
if cmd == MSP_NAME then
10+
local i = 1
11+
local name = ""
12+
while payload[i] do
13+
name = name..string.char(payload[i])
14+
i = i+1
15+
end
16+
if name == "" then
17+
craftName = model.getInfo().name
18+
else
19+
craftName = name
20+
end
21+
craftNameReceived = true
22+
end
23+
end
24+
25+
local function getCraftName()
26+
if lastRunTS + INTERVAL < getTime() then
27+
lastRunTS = getTime()
28+
if not craftNameReceived then
29+
protocol.mspRead(MSP_NAME)
30+
end
31+
end
32+
mspProcessTxQ()
33+
processMspReply(mspPollReply())
34+
return craftNameReceived
35+
end
36+
37+
return getCraftName

src/SCRIPTS/BF/pages.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
local PageFiles = {}
22

33
if apiVersion >= 1.036 then
4-
PageFiles[#PageFiles + 1] = { title = "VTX Settings", script = "vtx.lua" }
4+
PageFiles[#PageFiles + 1] = { title = "VTX Settings ("..craftName..")", script = "vtx.lua" }
55
end
66

77
if apiVersion >= 1.016 then

src/SCRIPTS/BF/ui.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ local function getVtxTables()
7676
uiState = uiStatus.init
7777
PageFiles = nil
7878
invalidatePages()
79-
io.close(io.open("/BF/VTX/"..model.getInfo().name..".lua", 'w'))
79+
io.close(io.open("/BF/VTX/"..craftName..".lua", 'w'))
8080
return 0
8181
end
8282

src/SCRIPTS/BF/ui_init.lua

+19-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
local apiVersionReceived = false
22
local vtxTablesReceived = false
3-
local data_init, getVtxTables
4-
local vtxTables = loadScript("/BF/VTX/"..model.getInfo().name..".lua")
5-
6-
if vtxTables and vtxTables() then
7-
vtxTablesReceived = true
8-
vtxTables = nil
9-
collectgarbage()
10-
end
3+
local data_init, getVtxTables, getCraftName
114

125
local function init()
136
if apiVersion == 0 then
@@ -18,6 +11,23 @@ local function init()
1811
data_init = nil
1912
apiVersionReceived = true
2013
collectgarbage()
14+
elseif not craftName then
15+
if apiVersion >= 1.042 then
16+
lcd.drawText(6, radio.yMinLimit, "Waiting for craft name")
17+
getCraftName = getCraftName or assert(loadScript("craft_name.lua"))()
18+
local craftNameReceived = getCraftName()
19+
if craftNameReceived then
20+
getCraftName = nil
21+
local vtxTables = loadScript("/BF/VTX/"..craftName..".lua")
22+
if vtxTables and vtxTables() then
23+
vtxTablesReceived = true
24+
vtxTables = nil
25+
end
26+
collectgarbage()
27+
end
28+
else
29+
craftName = model.getInfo().name
30+
end
2131
elseif apiVersion >= 1.042 and not vtxTablesReceived then
2232
lcd.drawText(6, radio.yMinLimit, "Downloading VTX Tables")
2333
getVtxTables = getVtxTables or assert(loadScript("vtx_tables.lua"))()
@@ -29,7 +39,7 @@ local function init()
2939
else
3040
return true
3141
end
32-
return apiVersionReceived and vtxTablesReceived
42+
return apiVersionReceived and vtxTablesReceived and craftName
3343
end
3444

3545
return init

src/SCRIPTS/BF/vtx_tables.lua

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ local function getVtxTables()
8282
end
8383
end
8484
if vtxTablesReceived then
85-
local f = io.open("/BF/VTX/"..model.getInfo().name..".lua", 'w')
85+
local f = io.open("/BF/VTX/"..craftName..".lua", 'w')
8686
io.write(f, "return {", "\n")
8787
io.write(f, " frequencyTable = {", "\n")
8888
for i = 1, #frequencyTable do
@@ -109,7 +109,7 @@ local function getVtxTables()
109109
io.write(f, powerString, "\n")
110110
io.write(f, "}", "\n")
111111
io.close(f)
112-
assert(loadScript("/BF/VTX/"..model.getInfo().name..".lua", 'c'))
112+
assert(loadScript("/BF/VTX/"..craftName..".lua", 'c'))
113113
end
114114
mspProcessTxQ()
115115
processMspReply(mspPollReply())

src/SCRIPTS/TOOLS/bf.lua

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ local toolName = "TNS|Betaflight setup|TNE"
22
chdir("/SCRIPTS/BF")
33

44
apiVersion = 0
5+
craftName = nil
56

67
local run = nil
78
local scriptsCompiled = assert(loadScript("COMPILE/scripts_compiled.lua"))()

0 commit comments

Comments
 (0)