5e1621dc92
From:
https://github.com/c172p-team/c172p-detailed/releases/tag/version%2F2018.2
f772964361
60 lines
3.5 KiB
Text
60 lines
3.5 KiB
Text
##################################################################
|
|
#
|
|
# 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) {
|
|
var obj = {};
|
|
obj.parents = [kma20];
|
|
|
|
# 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);
|
|
|
|
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;
|
|
};
|
|
|
|
var kma20_0 = kma20.new( "/instrumentation/kma20" );
|