mirror of https://github.com/ArduPilot/ardupilot
57 lines
1.7 KiB
Lua
57 lines
1.7 KiB
Lua
|
--[[
|
||
|
Simple example that sends rpm info down the frsky link
|
||
|
it works with SPort using SERIAL_PROTOCOL=4,10 and with
|
||
|
FPort using SERIAL_PROTOCOL=23.
|
||
|
|
||
|
We'll be using OpenTX genuine RPM data IDs (https://github.com/opentx/opentx/blob/2.3/radio/src/telemetry/frsky.h)
|
||
|
|
||
|
RPM_FIRST_ID 0x0500
|
||
|
RPM_LAST_ID 0x050F
|
||
|
|
||
|
and we'll be responding to unused sensor IDs.
|
||
|
This is a list of IDs we can't use:
|
||
|
- serial protocol 4 uses IDs 0,2,3 and 6
|
||
|
- serial protocol 10 uses ID 7,13,20,27
|
||
|
- serial protocol 23, no IDs used
|
||
|
|
||
|
For this test we'll use sensor ID 4 (0xE4),
|
||
|
Note: 4 is the index, 0xE4 is the actual ID
|
||
|
--]]
|
||
|
|
||
|
local loop_time = 250 -- number of ms between runs
|
||
|
local sport_data_frame = 0x10
|
||
|
local sensor_id = 0xE4
|
||
|
--[[
|
||
|
we use the last 2 data ids so we hopefully don't interfere with pre existing sensors
|
||
|
this is a suggestion but if we know our RPM sensors are going to be
|
||
|
the only RPM sensors on the bus we can use 0x0500 and 0x0501
|
||
|
--]]
|
||
|
local data_ids = {
|
||
|
[0] = 0x050E,
|
||
|
[1] = 0x050F,
|
||
|
}
|
||
|
|
||
|
local function rpm_data_sent(instance, rpm)
|
||
|
gcs:send_text(7, string.format("rpm_data_sent() %d: %s", instance, tostring(rpm)))
|
||
|
end
|
||
|
|
||
|
local function send_rpm_data(instance, callback)
|
||
|
local rpm = RPM:get_rpm(instance)
|
||
|
gcs:send_text(7,string.format("send_rpm_data() %d, %s", instance, tostring(rpm)))
|
||
|
if rpm ~= nil then
|
||
|
if frsky_sport:sport_telemetry_push(sensor_id, sport_data_frame, data_ids[instance], rpm) then
|
||
|
callback(instance, rpm)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local rpm_idx = 0
|
||
|
|
||
|
function update()
|
||
|
send_rpm_data(rpm_idx, rpm_data_sent)
|
||
|
rpm_idx = (rpm_idx+1)%2
|
||
|
return update, loop_time
|
||
|
end
|
||
|
|
||
|
return update() -- run immediately before starting to reschedule
|