Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 34 additions & 18 deletions src/SCRIPTS/TELEMETRY/iNav.lua
Original file line number Diff line number Diff line change
Expand Up @@ -210,39 +210,55 @@ function inav.background()
data.headFree = false
data.headingHold = false
data.altHold = false
local modeA = data.mode * 0.0001
local modeB = data.mode * 0.001 % 10
local modeC = data.mode * 0.01 % 10
local modeD = data.mode * 0.1 % 10
local modeE = data.mode % 10
if bit32.band(modeD, 2) == 2 then
local modeA = data.mode * 0.000001 % 10
local modeB = data.mode * 0.00001 % 10
local modeC = data.mode * 0.0001 % 10
local modeD = data.mode * 0.001 % 10
local modeE = data.mode * 0.01 % 10
local modeF = data.mode * 0.1 % 10
local modeG = data.mode % 10
if bit32.band(modeF, 2) == 2 then
data.modeId = 2 -- Horizon
elseif bit32.band(modeD, 1) == 1 then
elseif bit32.band(modeF, 1) == 1 then
data.modeId = 3 -- Angle
else
data.modeId = 4 -- Acro
end
data.headFree = bit32.band(modeB, 4) == 4
data.headingHold = bit32.band(modeC, 1) == 1
if bit32.band(modeE, 4) == 4 then
data.headFree = bit32.band(modeD, 4) == 4
data.headingHold = bit32.band(modeE, 1) == 1
if bit32.band(modeG, 4) == 4 then
data.armed = true
data.altHold = (bit32.band(modeC, 2) == 2 or bit32.band(modeC, 4) == 4)
data.altHold = (bit32.band(modeE, 2) == 2 or bit32.band(modeE, 4) == 4)
homeReset = data.satellites >= 4000
data.modeId = bit32.band(modeC, 4) == 4 and 7 or data.modeId -- Pos hold
data.modeId = bit32.band(modeE, 4) == 4 and 7 or data.modeId -- Pos hold
else
preArmMode = data.modeId
data.modeId = (bit32.band(modeE, 2) == 2 or modeE == 0) and (data.throttle > -920 and 12 or 5) or 6 -- Not OK to arm(5) / Throttle warning(12) / Ready to fly(6)
data.modeId = (bit32.band(modeG, 2) == 2 or modeG == 0) and (data.throttle > -920 and 12 or 5) or 6 -- Not OK to arm(5) / Throttle warning(12) / Ready to fly(6)
end
if bit32.band(modeA, 4) == 4 then
if bit32.band(modeC, 4) == 4 then
data.modeId = 11 -- Failsafe
elseif bit32.band(modeB, 1) == 1 then
elseif bit32.band(modeD, 1) == 1 then
data.modeId = 10 -- RTH
elseif bit32.band(modeD, 4) == 4 then
elseif bit32.band(modeF, 4) == 4 then
data.modeId = 9 -- Manual
elseif bit32.band(modeB, 2) == 2 then
elseif bit32.band(modeD, 2) == 2 then
data.modeId = 8 -- Waypoint
elseif bit32.band(modeB, 8) == 8 then
elseif bit32.band(modeD, 8) == 8 and bit32.band(modeE, 2) == 2 then
data.modeId = 13 -- Cruise
elseif bit32.band(modeD, 8) == 8 then
data.modeId = 20 -- Course Hold
elseif bit32.band(modeA, 1) == 1 then
data.modeId = 19 -- WRTH
elseif bit32.band(modeA, 2) == 2 then
data.modeId = 14 -- Angle Hold
elseif bit32.band(modeB, 1) == 1 then
data.modeId = 15 -- Auto land
elseif bit32.band(modeB, 2) == 2 then
data.modeId = 17 -- Turtle mode
elseif bit32.band(modeB, 4) == 4 then
data.modeId = 16 -- Geofence navigation
elseif bit32.band(modeB, 8) == 8 then
data.modeId = 18 -- Loiter
end
end

Expand Down
14 changes: 13 additions & 1 deletion src/SCRIPTS/TELEMETRY/iNav/crsf.lua
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,19 @@ local function crsf(data)
elseif data.fm == "WP" then
data.mode = 2015
elseif data.fm == "RTH" then
data.mode = 1615
data.mode = 1215
elseif data.fm == "LAND" then
data.mode = 100015
elseif data.fm == "GEO" then
data.mode = 400015
elseif data.fm == "TURT" then
data.mode = 200005
elseif data.fm == "WRTH" then
data.mode = 1000215
elseif data.fm == "LOTR" then
data.mode = 800215
elseif data.fm == "ANGH" then
data.mode = 2000005
elseif data.fm == "!FS!" then
data.mode = 40004
end
Expand Down
29 changes: 18 additions & 11 deletions src/SCRIPTS/TELEMETRY/iNav/modes.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,25 @@ local HORUS = ...
-- Modes: t=text / f=flags for text / w=wave file
local modes = {
{ t = "! TELEM !", f = 3 },
{ t = "HORIZON", f = 0, w = "hrznmd" },
{ t = " ANGLE", f = 0, w = "anglmd" },
{ t = " ACRO", f = 0, w = "acromd" },
{ t = " NOT OK ", f = 3 },
{ t = " READY", f = 0, w = "ready" },
{ t = "POS HOLD", f = 0, w = "poshld" },
{ t = "WAYPONT", f = 0, w = "waypt" },
{ t = " MANUAL", f = 0, w = "manmd" },
{ t = " RTH ", f = 3, w = "rtl" },
{ t = "! FAIL !", f = 3, w = "fson" },
{ t = " HORIZON ", f = 0, w = "hrznmd" },
{ t = " ANGLE ", f = 0, w = "anglmd" },
{ t = " ACRO ", f = 0, w = "acromd" },
{ t = " NOT OK ", f = 3 }, -- 5
{ t = " READY ", f = 0, w = "ready" },
{ t = "POS HOLD ", f = 0, w = "poshld" },
{ t = " WAYPONT ", f = 0, w = "waypt" },
{ t = " MANUAL ", f = 0, w = "manmd" },
{ t = " RTH ", f = 3, w = "rtl" }, -- 10
{ t = "! FAIL !", f = 3, w = "fson" },
{ t = "! THROT !", f = 3 },
{ t = " CRUISE", f = 0, w = "cruzmd" }
{ t = " CRUISE ", f = 0, w = "cruzmd" },
{ t = "ANGL HOLD", f = 0, w = "aglhld" },
{ t = " LAND ", f = 0, w = "landin" }, -- 15
{ t = " GEO NAV ", f = 0, w = "geonav" },
{ t = " TURTLE ", f = 0, w = "turtle" },
{ t = " LOITER ", f = 0, w = "loiter" },
{ t = " WP RTH ", f = 0, w = "wrth" },
{ t = "CORSE HLD", f = 0, w = "crsh" } -- 20
}

local units = { [0] = "", "V", "A", "mA", "kts", "m/s", "f/s", "kmh", "MPH", "m", HORUS and "ft" or "'" }
Expand Down