From bf9f3b866030f7e0ab36e955ed782d2fd2567c5e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 26 May 2024 18:03:55 +1000 Subject: [PATCH] AP_Scripting: added notch_switch example switch between two notch setups using attenuation change --- .../AP_Scripting/examples/notch_switch.lua | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 libraries/AP_Scripting/examples/notch_switch.lua diff --git a/libraries/AP_Scripting/examples/notch_switch.lua b/libraries/AP_Scripting/examples/notch_switch.lua new file mode 100644 index 0000000000..977a19a720 --- /dev/null +++ b/libraries/AP_Scripting/examples/notch_switch.lua @@ -0,0 +1,48 @@ +--[[ + + example script to switch between two notch setups by changing the + attenuation to zero on the notch to disable. This allows for easy + in-flight switching between two different notch setups +--]] +local INS_HNTCH_ATT = Parameter('INS_HNTCH_ATT') +local INS_HNTC2_ATT = Parameter('INS_HNTC2_ATT') + +local MAV_SEVERITY = {EMERGENCY=0, ALERT=1, CRITICAL=2, ERROR=3, WARNING=4, NOTICE=5, INFO=6, DEBUG=7} + +if not INS_HNTCH_ATT:get() or not INS_HNTC2_ATT:get() then + gcs:send_text(MAV_SEVERITY.ERROR, string.format("Need 2 notches configured")) + return +end + +local last_sw = -1 +local AUX_FN = 300 + +local attenuation = INS_HNTCH_ATT:get() +if not attenuation then + gcs:send_text(MAV_SEVERITY.ERROR, string.format("Unable to get attenuation")) + return +end + +function update() + local sw_current = rc:get_aux_cached(AUX_FN) + if not sw_current then + -- treat unset as notch1 + sw_current = 0 + end + if sw_current ~= last_sw then + last_sw = sw_current + if sw_current == 0 then + INS_HNTC2_ATT:set(0) + INS_HNTCH_ATT:set(attenuation) + gcs:send_text(MAV_SEVERITY.INFO, string.format("Switched to notch1 %.2f", attenuation)) + else + INS_HNTC2_ATT:set(attenuation) + INS_HNTCH_ATT:set(0) + gcs:send_text(MAV_SEVERITY.INFO, string.format("Switched to notch2 %.2f", attenuation)) + end + end + return update,100 +end + +return update() +