1
- SCRIPT_HOME = " /SCRIPTS/BF"
2
-
3
- assert (loadScript (SCRIPT_HOME .. " /MSP/common.lua" ))()
4
-
5
1
local INTERVAL = 50 -- in 1/100th seconds
6
2
local MSP_SET_RTC = 246
7
3
local MSP_TX_INFO = 186
8
- local sensorName = " Tmp1" -- T1 is never 0 in Betaflight
9
4
10
5
local lastRunTS
11
6
local timeIsSet = false
12
- local sensorId
13
7
local mspMsgQueued = false
14
8
15
- local function getTelemetryId (name )
16
- local field = getFieldInfo (name )
17
- if field then
18
- return field [' id' ]
19
- else
20
- return - 1
21
- end
9
+ local function modelActive ()
10
+ local telemId = (getFieldInfo (protocol .stateSensor )[' id' ] or - 1 )
11
+ local sensorValue = getValue (telemId )
12
+ return type (sensorValue ) == " number" and sensorValue > 0
22
13
end
23
14
24
15
local function init ()
25
- sensorId = getTelemetryId (sensorName )
26
16
lastRunTS = 0
27
17
end
28
18
29
19
local function run_bg ()
30
20
-- run in intervals
31
- if lastRunTS == 0 or lastRunTS + INTERVAL < getTime () then
32
21
22
+ if lastRunTS == 0 or lastRunTS + INTERVAL < getTime () then
33
23
mspMsgQueued = false
34
-
35
24
-- ------------------------------------
36
25
-- SYNC DATE AND TIME
37
26
-- ------------------------------------
38
-
39
- -- get sensor value
40
- local newSensorValue = getValue (sensorId )
41
-
42
- if not timeIsSet and type (newSensorValue ) == " number" and newSensorValue > 0 then
27
+ if not timeIsSet and modelActive () then
43
28
-- Send datetime when the telemetry connection is available
44
29
-- assuming when sensor value higher than 0 there is an telemetry connection
45
- -- only send datetime one time after telemetry connection became available
30
+ -- only send datetime one time after telemetry connection became available
46
31
-- or when connection is restored after e.g. lipo refresh
47
32
local now = getDateTime ()
48
33
local year = now .year ;
@@ -58,11 +43,11 @@ local function run_bg()
58
43
values [7 ] = now .sec
59
44
60
45
-- send msp message
61
- mspSendRequest (MSP_SET_RTC , values )
46
+ protocol . mspWrite (MSP_SET_RTC , values )
62
47
mspMsgQueued = true
63
48
64
49
timeIsSet = true
65
- elseif type ( newSensorValue ) ~= " number " or newSensorValue == 0 then
50
+ elseif not modelActive () then
66
51
timeIsSet = false
67
52
end
68
53
@@ -83,7 +68,7 @@ local function run_bg()
83
68
values [1 ] = rssi
84
69
85
70
-- send msp message
86
- mspSendRequest (MSP_TX_INFO , values )
71
+ protocol . mspWrite (MSP_TX_INFO , values )
87
72
mspMsgQueued = true
88
73
end
89
74
0 commit comments