1- SCRIPT_HOME = " /SCRIPTS/BF"
2-
3- assert (loadScript (SCRIPT_HOME .. " /MSP/common.lua" ))()
4-
51local INTERVAL = 50 -- in 1/100th seconds
62local MSP_SET_RTC = 246
73local MSP_TX_INFO = 186
8- local sensorName = " Tmp1" -- T1 is never 0 in Betaflight
94
105local lastRunTS
116local timeIsSet = false
12- local sensorId
137local mspMsgQueued = false
148
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
2213end
2314
2415local function init ()
25- sensorId = getTelemetryId (sensorName )
2616 lastRunTS = 0
2717end
2818
2919local function run_bg ()
3020 -- run in intervals
31- if lastRunTS == 0 or lastRunTS + INTERVAL < getTime () then
3221
22+ if lastRunTS == 0 or lastRunTS + INTERVAL < getTime () then
3323 mspMsgQueued = false
34-
3524 -- ------------------------------------
3625 -- SYNC DATE AND TIME
3726 -- ------------------------------------
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
4328 -- Send datetime when the telemetry connection is available
4429 -- 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
4631 -- or when connection is restored after e.g. lipo refresh
4732 local now = getDateTime ()
4833 local year = now .year ;
@@ -58,11 +43,11 @@ local function run_bg()
5843 values [7 ] = now .sec
5944
6045 -- send msp message
61- mspSendRequest (MSP_SET_RTC , values )
46+ protocol . mspWrite (MSP_SET_RTC , values )
6247 mspMsgQueued = true
6348
6449 timeIsSet = true
65- elseif type ( newSensorValue ) ~= " number " or newSensorValue == 0 then
50+ elseif not modelActive () then
6651 timeIsSet = false
6752 end
6853
@@ -83,7 +68,7 @@ local function run_bg()
8368 values [1 ] = rssi
8469
8570 -- send msp message
86- mspSendRequest (MSP_TX_INFO , values )
71+ protocol . mspWrite (MSP_TX_INFO , values )
8772 mspMsgQueued = true
8873 end
8974
0 commit comments