2012-07-18 19:26:33 +00:00
##################################################################
#
# These are the helper functions for the kma20 audio panel
# Maintainer: Thorsten Brehm (brehmt at gmail dot com)
#
# Usage:
# just create one instance of kma20 class for each kma20 panel
# you have in your aircraft:
# kma20.new(0);
#
# KMA20 audio panel properties:
# root: /instrumentation/kma20
# knob: microphone/radio selector (com1/2)
# auto: selects COM1/2 based on microphone selector
# com1: enable/disable COM1 audio (e.g. for ATIS)
# com2: enable/disable COM2 audio (e.g. for ATIS)
# nav1: enable/disable NAV1 station identifier
# nav2: enable/disable NAV2 station identifier
# adf: enable/disable ADF station identifier
# dme: enable/disable DME station identifier
# mkr: enable/disable marker beacon audio
# sens: beacon receiver sensitivity
var kma20 = {};
kma20.new = func(rootPath) {
2016-02-10 21:32:19 +00:00
var obj = {};
obj.parents = [kma20];
2012-07-18 19:26:33 +00:00
2018-05-17 11:58:44 +00:00
# Idea for the COM is to have volume-selected set to always match the volume knob of the COM radio volume knob. The volume (original property) is set to 0 when disabled by the KMA-20 or the volume-selected when enabled.
# Monitor changes to COM1 switch
setlistener(rootPath ~ "/com1", func(v) {setprop("/instrumentation/comm/volume", (v.getValue() != 0) * getprop("/instrumentation/comm/volume-selected"));}, 1);
# Monitor changes to volume selection knob of COM1
setlistener("/instrumentation/comm/volume-selected", func(v) {setprop("/instrumentation/comm/volume", (getprop(rootPath ~ "/com1") != 0) * getprop("/instrumentation/comm/volume-selected"));}, 1);
# Monitor changes to COM2 switch
setlistener(rootPath ~ "/com2", func(v) {setprop("/instrumentation/comm[1]/volume", (v.getValue() != 0) * getprop("/instrumentation/comm[1]/volume-selected"));}, 1);
# Monitor changes to volume selection knob of COM2
setlistener("/instrumentation/comm[1]/volume-selected", func(v) {setprop("/instrumentation/comm[1]/volume", (getprop(rootPath ~ "/com2") != 0) * getprop("/instrumentation/comm[1]/volume-selected"));}, 1);
# Idea for the NAV is to set audio-btn (original-property) to true when both KMA-20 NAV switch is active & the NAV ident is pulled (ident-audible).
# Monitor changes to NAV1 switch
setlistener(rootPath ~ "/nav1", func(v) {setprop("/instrumentation/nav/audio-btn", (v.getValue() != 0) and getprop("/instrumentation/nav/ident-audible"));}, 1);
# Monitor changes to NAV1 pull ident
setlistener("/instrumentation/nav/ident-audible", func(v) {setprop("/instrumentation/nav/audio-btn", (getprop(rootPath ~ "/nav1") != 0) and v.getValue());}, 1);
# Monitor changes to NAV2 switch
setlistener(rootPath ~ "/nav2", func(v) {setprop("/instrumentation/nav[1]/audio-btn", (v.getValue() != 0) and getprop("/instrumentation/nav[1]/ident-audible"));}, 1);
# Monitor changes to NAV2 pull ident
setlistener("/instrumentation/nav[1]/ident-audible", func(v) {setprop("/instrumentation/nav[1]/audio-btn", (getprop(rootPath ~ "/nav2") != 0) and v.getValue());}, 1);
2016-02-10 21:32:19 +00:00
setlistener(rootPath ~ "/adf", func(v) {setprop("/instrumentation/adf/ident-audible", (v.getValue() != 0));}, 1);
setlistener(rootPath ~ "/dme", func(v) {setprop("/instrumentation/dme/ident", (v.getValue() != 0));}, 1);
setlistener(rootPath ~ "/mkr", func(v) {setprop("/instrumentation/marker-beacon/audio-btn",(v.getValue() != 0));}, 1);
print( "KMA20 audio panel initialized" );
return obj;
2012-07-18 19:26:33 +00:00
};
var kma20_0 = kma20.new( "/instrumentation/kma20" );