Skip to content

Commit 00db10a

Browse files
committed
Detect and report home reset with INAV v1.7.4
1 parent 2c63a73 commit 00db10a

File tree

2 files changed

+28
-23
lines changed

2 files changed

+28
-23
lines changed

iNav.lua

+28-23
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ local armedPrev = false
2222
local headingHoldPrev = false
2323
local headFreePrev = false
2424
local altHoldPrev = false
25+
local homeResetPrev = false
2526
local gpsFixPrev = false
2627
local altNextPlay = 0
2728
local battNextPlay = 0
@@ -91,18 +92,9 @@ local data = {
9192
altitude_unit = getTelemetryUnit("Alt"),
9293
distance_unit = getTelemetryUnit("Dist"),
9394
speed_unit = getTelemetryUnit("GSpd"),
94-
timerStart = 0,
95-
timer = 0,
96-
distLastPositive = 0,
97-
gpsHome = false,
98-
gpsLatLon = false,
99-
gpsFix = false,
100-
headingRef = -1,
10195
showMax = false,
10296
showDir = true,
103-
battlow = false,
104-
showCurr = true,
105-
fuel = 100
97+
showCurr = true
10698
}
10799

108100
if data.current_id == -1 then
@@ -115,11 +107,24 @@ data.battPos2 = data.showCurr and 49 or 41
115107
data.distRef = data.distance_unit == 10 and 20 or 6
116108
data.altAlert = data.altitude_unit == 10 and 400 or 123
117109

110+
local function reset()
111+
data.timerStart = 0
112+
data.timer = 0
113+
data.distLastPositive = 0
114+
data.gpsHome = false
115+
data.gpsLatLon = false
116+
data.gpsFix = false
117+
data.headingRef = -1
118+
data.battlow = false
119+
data.fuel = 100
120+
end
121+
118122
local function flightModes()
119123
armed = false
120124
headFree = false
121125
headingHold = false
122126
altHold = false
127+
homeReset = false
123128
if data.telemetry then
124129
local modeA = data.mode / 10000
125130
local modeB = data.mode / 1000 % 10
@@ -138,6 +143,7 @@ local function flightModes()
138143
headFree = bit32.band(modeB, 4) == 4 and true or false
139144
headingHold = bit32.band(modeC, 1) == 1 and true or false
140145
altHold = bit32.band(modeC, 2) == 2 and true or false
146+
homeReset = bit32.band(modeA, 2) == 2 and true or false
141147
if bit32.band(modeC, 4) == 4 then
142148
data.modeId = altHold and 8 or 7 -- If also alt hold 3D hold else pos hold
143149
end
@@ -202,6 +208,9 @@ local function flightModes()
202208
if headFree ~= headFreePrev then -- Head free status change
203209
playFile(WAVPATH .. (headFree and "hfact.wav" or "hfoff.wav"))
204210
end
211+
if homeReset and not homeResetPrev then -- Home reset
212+
playFile(WAVPATH .. "homrst.wav")
213+
end
205214
if data.altitude + 0.5 >= data.altAlert then -- Altitude alert
206215
if getTime() > altNextPlay then
207216
playNumber(data.altitude + 0.5, data.altitude_unit)
@@ -262,15 +271,19 @@ local function flightModes()
262271
battPercentPlayed = 100
263272
end
264273
modeIdPrev = data.modeId
265-
headingHoldPrev = headingHold
274+
armedPrev = armed
266275
headFreePrev = headFree
276+
headingHoldPrev = headingHold
267277
altHoldPrev = altHold
268-
armedPrev = armed
278+
homeResetPrev = homeReset
269279
gpsFixPrev = data.gpsFix
270280
end
271281

272282
local function background()
273283
data.rssi = getValue(data.rssi_id)
284+
if telemFlags == -1 then
285+
reset()
286+
end
274287
if data.rssi > 0 or telemFlags < 0 then
275288
data.telemetry = true
276289
data.mode = getValue(data.mode_id)
@@ -440,15 +453,7 @@ local function run(event)
440453
end
441454
-- Initalize variables on long <Enter>
442455
if not armed and event == EVT_ENTER_LONG then
443-
data.timerStart = 0
444-
data.timer = 0
445-
data.distLastPositive = 0
446-
data.gpsHome = false
447-
data.gpsLatLon = false
448-
data.gpsFix = false
449-
data.headingRef = -1
450-
data.battlow = false
451-
data.fuel = 100
456+
reset()
452457
end
453458
end
454459

@@ -506,8 +511,8 @@ local function run(event)
506511
lcd.drawNumber(RXBATT_POS, 1, data.rxBatt * 10.05, SMLSIZE + PREC1 + INVERS)
507512
lcd.drawText(lcd.getLastPos(), 1, "V", SMLSIZE + INVERS)
508513
end
509-
514+
510515
return 1
511516
end
512517

513-
return {run = run, background = background}
518+
return {run = run, background = background}

iNav/homrst.wav

28.2 KB
Binary file not shown.

0 commit comments

Comments
 (0)