Skip to content

Commit 1d39367

Browse files
committed
Rewrite script to have external page handlers. It saves lots of memory and makes indefinite amount of pages possible.
1 parent b68a5f8 commit 1d39367

27 files changed

Lines changed: 1156 additions & 993 deletions

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,9 @@ TmpX7SP.lua
1414
TmpX9CF.lua
1515
TmpX9SP.lua
1616
tmp
17+
HorusCF.lua
18+
HorusSP.lua
19+
X7CF.lua
20+
X7SP.lua
21+
X9CF.lua
22+
X9SP.lua

Makefile

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11

2-
VERSION = 0.4
2+
VERSION = 0.5
33

44
.PHONY: all
55
all: clean prepare luatmp lua
66

77
.PHONY: luatmp
88
luatmp:
9-
10-
cat src/common/KissProtocolSPort.lua src/common/KissProtocolAdapters.lua src/KissX9.lua src/common/KissUI.lua > TmpX9SP.lua
11-
cat src/common/KissProtocolSPort.lua src/common/KissProtocolAdapters.lua src/KissX7.lua src/common/KissUI.lua > TmpX7SP.lua
12-
cat src/common/KissProtocolSPort.lua src/common/KissProtocolAdapters.lua src/KissHorus.lua src/common/KissUI.lua > TmpHorusSP.lua
13-
cat src/common/KissProtocolCF.lua src/common/KissProtocolAdapters.lua src/KissX9.lua src/common/KissUI.lua > TmpX9CF.lua
14-
cat src/common/KissProtocolCF.lua src/common/KissProtocolAdapters.lua src/KissX7.lua src/common/KissUI.lua > TmpX7CF.lua
15-
cat src/common/KissProtocolCF.lua src/common/KissProtocolAdapters.lua src/KissHorus.lua src/common/KissUI.lua > TmpHorusCF.lua
9+
cat src/common/KissProtocolSPort.lua src/X9/Kiss.lua src/common/KissUI.lua > X9SP.lua
10+
cat src/common/KissProtocolSPort.lua src/X7/Kiss.lua src/common/KissUI.lua > X7SP.lua
11+
cat src/common/KissProtocolSPort.lua src/Horus/Kiss.lua src/common/KissUI.lua > HorusSP.lua
12+
cat src/common/KissProtocolCF.lua src/X9/Kiss.lua src/common/KissUI.lua > X9CF.lua
13+
cat src/common/KissProtocolCF.lua src/X7/Kiss.lua src/common/KissUI.lua > X7CF.lua
14+
cat src/common/KissProtocolCF.lua src/Horus/Kiss.lua src/common/KissUI.lua > HorusCF.lua
1615

1716
.PHONY: clean
1817
clean:
19-
rm -f Tmp*.lua
18+
rm -f *.lua
2019
rm -rf tmp
2120

2221
.PHONY: prepare
@@ -27,17 +26,23 @@ prepare:
2726

2827
.PHONY: lua
2928
lua:
30-
./node_modules/luamin/bin/luamin --file TmpX9SP.lua > tmp/X9/KissSP.lua
31-
./node_modules/luamin/bin/luamin --file TmpX7SP.lua > tmp/X7/KissSP.lua
32-
./node_modules/luamin/bin/luamin --file TmpHorusSP.lua > tmp/Horus/KissSP.lua
33-
./node_modules/luamin/bin/luamin --file TmpX9CF.lua > tmp/X9/KissCF.lua
34-
./node_modules/luamin/bin/luamin --file TmpX7CF.lua > tmp/X7/KissCF.lua
35-
./node_modules/luamin/bin/luamin --file TmpHorusCF.lua > tmp/Horus/KissCF.lua
36-
29+
cp X9SP.lua tmp/X9/KissSP.lua
30+
cp X7SP.lua tmp/X7/KissSP.lua
31+
cp HorusSP.lua tmp/Horus/KissSP.lua
32+
cp X9CF.lua tmp/X9/KissCF.lua
33+
cp X7CF.lua tmp/X7/KissCF.lua
34+
cp HorusCF.lua tmp/Horus/KissCF.lua
35+
cp -R src/X7/KISS tmp/X7/KISS
36+
cp -R src/X9/KISS tmp/X9/KISS
37+
cp -R src/Horus/KISS tmp/Horus/KISS
38+
find ./tmp/ -type f -name '*.lua' -exec sh -c './node_modules/luamin/bin/luamin --file {} > {}.tmp' \; -exec sh -c 'mv {}.tmp {} ' \;
39+
3740
.PHONY: zip
3841
zip:
3942
test -d dist || mkdir dist
40-
cd tmp; zip -r ../dist/kiss-lua-scripts-${VERSION}.zip *
43+
cd tmp/X9/; zip -r ../../dist/kiss-x9-lua-scripts-${VERSION}.zip *
44+
cd tmp/X7/; zip -r ../../dist/kiss-x7-lua-scripts-${VERSION}.zip *
45+
cd tmp/Horus/; zip -r ../../dist/kiss-horus-lua-scripts-${VERSION}.zip *
4146

4247
.PHONY: dist
4348
dist: clean prepare luatmp lua zip

src/Horus/KISS/alarms.lua

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
return {
2+
read = 0x49,
3+
write = 0x4A,
4+
5+
postRead = function(values)
6+
local ret = {}
7+
ret[1] = 100 * (bit32.lshift(values[1], 8) + values[2])
8+
ret[2] = bit32.lshift(values[3], 8) + values[4]
9+
return ret
10+
end,
11+
12+
preWrite = function(values)
13+
local ret = {}
14+
local tmp = bit32.band(math.floor(values[1]/100), 0xFFFF)
15+
ret[1] = bit32.band(bit32.rshift(tmp, 8), 0xFF)
16+
ret[2] = bit32.band(tmp, 0xFF)
17+
ret[3] = bit32.band(bit32.rshift(values[2], 8), 0xFF)
18+
ret[4] = bit32.band(values[2], 0xFF)
19+
return ret
20+
end,
21+
22+
title = "Alarms",
23+
text = {},
24+
fields = {
25+
-- Alarms
26+
{ t = "VBat", x = 100, y = 96, sp = 60, i=1, min=0, max=26000, prec=1 },
27+
{ t = "mAH", x = 250, y = 96, sp = 60, i=2, min=0, max=26000, inc=10 }
28+
}
29+
}

src/Horus/KISS/filters.lua

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
return {
2+
read = 0x47,
3+
write = 0x48,
4+
5+
postRead = function(values)
6+
local ret = {}
7+
ret[1] = values[3] + 1
8+
ret[2] = bit32.lshift(values[4], 8) + values[5]
9+
ret[3] = bit32.lshift(values[6], 8) + values[7]
10+
ret[4] = values[8] + 1
11+
ret[5] = bit32.lshift(values[9], 8) + values[10]
12+
ret[6] = bit32.lshift(values[11], 8) + values[12]
13+
ret[7] = values[1] + 1
14+
ret[8] = values[2]
15+
return ret
16+
end,
17+
18+
preWrite = function(values)
19+
local ret = {}
20+
ret[1] = bit32.band(values[7]-1, 0xFF)
21+
ret[2] = bit32.band(values[8], 0xFF)
22+
ret[3] = bit32.band(values[1]-1, 0xFF);
23+
ret[4] = bit32.band(bit32.rshift(values[2], 8), 0xFF)
24+
ret[5] = bit32.band(values[2], 0xFF)
25+
ret[6] = bit32.band(bit32.rshift(values[3], 8), 0xFF)
26+
ret[7] = bit32.band(values[3], 0xFF)
27+
ret[8] = bit32.band(values[4]-1, 0xFF);
28+
ret[9] = bit32.band(bit32.rshift(values[5], 8), 0xFF)
29+
ret[10] = bit32.band(values[5], 0xFF)
30+
ret[11] = bit32.band(bit32.rshift(values[6], 8), 0xFF)
31+
ret[12] = bit32.band(values[6], 0xFF)
32+
return ret
33+
end,
34+
35+
title = "Filters",
36+
text = {
37+
{ t = "Notch Filter", x = 113, y = 68 },
38+
{ t = "Center", x = 220, y = 68 },
39+
{ t = "Cutoff", x = 300, y = 68 },
40+
{ t = "Roll", x = 35, y = 96 },
41+
{ t = "Pitch", x = 35, y = 124 },
42+
{ t = "LPF", x = 35, y = 158 },
43+
{ t = "Yaw", x = 35, y = 186 }
44+
},
45+
fields = {
46+
-- Filters
47+
{ x = 129, y = 96, i=1, min=1, max=2, table = { "Off", "On" }},
48+
{ x = 209, y = 96, i=2, min=0, max=490 },
49+
{ x = 289, y = 96, i=3, min=0, max=490 },
50+
{ x = 129, y = 124, i=4, min=1, max=2, table = { "Off", "On" }},
51+
{ x = 209, y = 124, i=5, min=0, max=490 },
52+
{ x = 289, y = 124, i=6, min=0, max=490 },
53+
{ x = 129, y = 158, i=7, min=1, max=7, table = { "Off", "High", "Med. High", "Medium", "Med. Low", "Low", "Very Low" } },
54+
{ x = 129, y = 186, i=8, min=0, max=97},
55+
}
56+
}

src/Horus/KISS/pids.lua

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
return {
2+
read = 0x43,
3+
write = 0x44,
4+
5+
postRead = function(values)
6+
local ret = {}
7+
for i=0,2 do
8+
ret[i*3+1] = bit32.lshift(values[i*6+1], 8) + values[i*6+2]
9+
ret[i*3+2] = bit32.lshift(values[i*6+3], 8) + values[i*6+4]
10+
ret[i*3+3] = bit32.lshift(values[i*6+5], 8) + values[i*6+6]
11+
end
12+
return ret
13+
end,
14+
15+
preWrite = function(values)
16+
local ret = {}
17+
for i=0,2 do
18+
ret[i*6+1] = bit32.rshift(values[i*3+1], 8)
19+
ret[i*6+2] = bit32.band(values[i*3+1], 0xFF)
20+
ret[i*6+3] = bit32.rshift(values[i*3+2], 8)
21+
ret[i*6+4] = bit32.band(values[i*3+2], 0xFF)
22+
ret[i*6+5] = bit32.rshift(values[i*3+3], 8)
23+
ret[i*6+6] = bit32.band(values[i*3+3], 0xFF)
24+
end
25+
return ret
26+
end,
27+
28+
title = "PIDs",
29+
text = {
30+
{ t = "P", x = 151, y = 68 },
31+
{ t = "I", x = 229, y = 68 },
32+
{ t = "D", x = 309, y = 68 },
33+
{ t = "Roll", x = 35, y = 96 },
34+
{ t = "Pitch", x = 35, y = 124 },
35+
{ t = "Yaw", x = 35, y = 152 }
36+
},
37+
fields = {
38+
-- P
39+
{ x = 129, y = 96, i=1, max=65000, prec=2 },
40+
{ x = 129, y = 124, i=4, max=65000, prec=2 },
41+
{ x = 129, y = 152, i=7, max=65000, prec=2 },
42+
-- I
43+
{ x = 209, y = 96, i=2, max=65000, prec=3 },
44+
{ x = 209, y = 124, i=5, max=65000, prec=3 },
45+
{ x = 209, y = 152, i=8, max=65000, prec=3 },
46+
-- D
47+
{ x = 289, y = 96, i=3, max=65000, prec=2 },
48+
{ x = 289, y = 124, i=6, max=65000, prec=2 },
49+
{ x = 289, y = 152, i=9, max=65000, prec=2 }
50+
}
51+
}

src/Horus/KISS/rates.lua

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
return {
2+
read = 0x4D,
3+
write = 0x4E,
4+
5+
postRead = function(values)
6+
local ret = {}
7+
for i=1,9 do
8+
ret[i] = bit32.lshift(values[(i-1)*2 + 1], 8) + values[(i-1)*2 + 2]
9+
end
10+
return ret
11+
end,
12+
preWrite = function(values)
13+
local ret = {}
14+
for i=1,9 do
15+
ret[(i-1)*2 + 1] = bit32.rshift(values[i], 8)
16+
ret[(i-1)*2 + 2] = bit32.band(values[i], 0xFF)
17+
end
18+
return ret
19+
end,
20+
21+
title = "Rates",
22+
text = {
23+
{ t = "RC Rate", x = 139, y = 68 },
24+
{ t = "Rate", x = 227, y = 68 },
25+
{ t = "RC Curve", x = 289, y = 68 },
26+
{ t = "Roll", x = 35, y = 96 },
27+
{ t = "Pitch", x = 35, y = 124 },
28+
{ t = "Yaw", x = 35, y = 152 }
29+
},
30+
fields = {
31+
-- RC Rate
32+
{ x = 129, y = 96, i=1, max=65000, prec=2 },
33+
{ x = 209, y = 96, i=2, max=65000, prec=2 },
34+
{ x = 289, y = 96, i=3, max=65000, prec=2 },
35+
-- Rate
36+
{ x = 129, y = 124, i=4, max=65000, prec=2 },
37+
{ x = 209, y = 124, i=5, max=65000, prec=2 },
38+
{ x = 289, y = 124, i=6, max=65000, prec=2 },
39+
-- RC Curve
40+
{ x = 129, y = 152, i=7, max=65000, prec=2 },
41+
{ x = 209, y = 152, i=8, max=65000, prec=2 },
42+
{ x = 289, y = 152, i=9, max=65000, prec=2 }
43+
}
44+
}

src/Horus/KISS/vtx.lua

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
return {
2+
read = 0x45,
3+
write = 0x46,
4+
5+
postRead = function(values)
6+
local ret = {}
7+
ret[1] = values[1]
8+
ret[2] = 1 + bit32.rshift(values[2], 3)
9+
ret[3] = 1 + bit32.band(values[2], 0x07)
10+
ret[4] = bit32.lshift(values[3], 8) + values[4]
11+
ret[5] = bit32.lshift(values[5], 8) + values[6]
12+
return ret
13+
end,
14+
15+
preWrite = function(values)
16+
local ret = {}
17+
ret[1] = bit32.band(values[1], 0xFF)
18+
ret[2] = bit32.band((values[2]-1) * 8 + values[3]-1, 0xFF)
19+
ret[3] = bit32.band(bit32.rshift(values[4], 8), 0xFF)
20+
ret[4] = bit32.band(values[4], 0xFF)
21+
ret[5] = bit32.band(bit32.rshift(values[5], 8), 0xFF)
22+
ret[6] = bit32.band(values[5], 0xFF)
23+
return ret
24+
end,
25+
26+
title = "VTX",
27+
text = {},
28+
fields = {
29+
-- VTX
30+
{ t = "Band", x = 35, y = 96, sp = 100, i=2, min=1, max=5, table = { "A", "B", "E", "FS", "RB" } },
31+
{ t = "Channel", x = 210, y = 96, sp = 120, i=3, min=1, max=8 },
32+
{ t = "Low Power", x = 35, y = 158, sp = 100, i=4, min=0, max=600 },
33+
{ t = "High Power", x = 210, y = 158, sp = 120, i=5, min=0, max=600 }
34+
}
35+
}

src/Horus/Kiss.lua

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
-- BEGIN HORUS
2+
3+
local RADIO = "HORUS"
4+
5+
local drawScreenTitle = function(title, currentPage, totalPages)
6+
lcd.drawFilledRectangle(0, 0, LCD_W, 30, TITLE_BGCOLOR)
7+
lcd.drawText(1, 5, title, MENU_TITLE_COLOR)
8+
end
9+
10+
local drawTelemetry = function()
11+
lcd.drawText(192,LCD_H - 28,"No telemetry",TEXT_COLOR + INVERS + BLINK)
12+
end
13+
14+
local drawSaving = function()
15+
lcd.drawFilledRectangle(120,100,180,60,TEXT_BGCOLOR)
16+
lcd.drawRectangle(120,100,180,60,SOLID)
17+
lcd.drawText(120+12,100+12,"Saving...",DBLSIZE + BLINK + (TEXT_COLOR))
18+
end
19+
20+
local function drawMenu(menuList, menuActive)
21+
local x = 120
22+
local y = 100
23+
local w = 200
24+
local x_offset = 68
25+
local h_line = 20
26+
local h_offset = 6
27+
local h = #(menuList) * h_line + h_offset*2
28+
29+
lcd.drawFilledRectangle(x,y,w,h,TEXT_BGCOLOR)
30+
lcd.drawRectangle(x,y,w-1,h-1,LINE_COLOR)
31+
lcd.drawText(x+h_line/2,y+h_offset,"Menu:", TEXT_COLOR)
32+
33+
for i,e in ipairs(menuList) do
34+
local text_options = TEXT_COLOR
35+
if menuActive == i then
36+
text_options = text_options + INVERS
37+
end
38+
lcd.drawText(x+x_offset,y+(i-1)*h_line+h_offset,e.t,text_options)
39+
end
40+
end
41+
42+
local function getDefaultTextOptions()
43+
return TEXT_COLOR
44+
end
45+
46+
-- END HORUS
47+

0 commit comments

Comments
 (0)