Merge branch 'develop' into daylight-scheduler
This commit is contained in:
		@@ -23,6 +23,6 @@ apk add --no-cache --virtual .build-deps $BUILD_PACKAGES
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
git clone https://github.com/jketterl/owrx_connector.git
 | 
					git clone https://github.com/jketterl/owrx_connector.git
 | 
				
			||||||
cmakebuild owrx_connector 84909c53cde78cbf4be408037e31209fbc702ad3
 | 
					cmakebuild owrx_connector df35e33e42c2e4527853ca18bf04981848860317
 | 
				
			||||||
 | 
					
 | 
				
			||||||
apk del .build-deps
 | 
					apk del .build-deps
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,6 @@ apk add --no-cache $STATIC_PACKAGES
 | 
				
			|||||||
apk add --no-cache --virtual .build-deps $BUILD_PACKAGES
 | 
					apk add --no-cache --virtual .build-deps $BUILD_PACKAGES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
git clone https://github.com/pothosware/SoapySDR
 | 
					git clone https://github.com/pothosware/SoapySDR
 | 
				
			||||||
cmakebuild SoapySDR a489f3dca9d3ccd9b276b95a608ac3ef0299f635
 | 
					cmakebuild SoapySDR f722f9ce5b629c3c44401a9bf628b3f8e67a9695
 | 
				
			||||||
 | 
					
 | 
				
			||||||
apk del .build-deps
 | 
					apk del .build-deps
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ git clone https://github.com/szechyjs/mbelib.git
 | 
				
			|||||||
cmakebuild mbelib 9a04ed5c78176a9965f3d43f7aa1b1f5330e771f
 | 
					cmakebuild mbelib 9a04ed5c78176a9965f3d43f7aa1b1f5330e771f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
git clone https://github.com/jketterl/digiham.git
 | 
					git clone https://github.com/jketterl/digiham.git
 | 
				
			||||||
cmakebuild digiham b229990927922e977cecaa9369740790cff5c31e
 | 
					cmakebuild digiham e5e11ce9611e3d8f5f9dce7dee97f86a31af107c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
git clone https://github.com/f4exb/dsd.git
 | 
					git clone https://github.com/f4exb/dsd.git
 | 
				
			||||||
cmakebuild dsd f6939f9edbbc6f66261833616391a4e59cb2b3d7
 | 
					cmakebuild dsd f6939f9edbbc6f66261833616391a4e59cb2b3d7
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -311,16 +311,25 @@ input[type=range]:focus::-ms-fill-upper
 | 
				
			|||||||
    font-style: normal;
 | 
					    font-style: normal;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#webrx-actual-freq
 | 
					#webrx-actual-freq {
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	width: 100%;
 | 
						width: 100%;
 | 
				
			||||||
	text-align: left;
 | 
						text-align: left;
 | 
				
			||||||
	font-size: 16pt;
 | 
					 | 
				
			||||||
	font-family: 'roboto-mono';
 | 
					 | 
				
			||||||
	padding: 0;
 | 
						padding: 0;
 | 
				
			||||||
	margin: 0;
 | 
						margin: 0;
 | 
				
			||||||
	line-height:22px;
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#webrx-actual-freq input {
 | 
				
			||||||
 | 
					    font-family: 'roboto-mono';
 | 
				
			||||||
 | 
					    width: 98%;
 | 
				
			||||||
 | 
					    box-sizing: border-box;
 | 
				
			||||||
 | 
					    border: 0;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#webrx-actual-freq, #webrx-actual-freq input {
 | 
				
			||||||
 | 
						font-size: 16pt;
 | 
				
			||||||
 | 
						font-family: 'roboto-mono';
 | 
				
			||||||
 | 
						line-height: 22px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#webrx-mouse-freq
 | 
					#webrx-mouse-freq
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -144,8 +144,8 @@
 | 
				
			|||||||
            <div class="openwebrx-panel" id="openwebrx-panel-receiver" data-panel-name="client-params" style="width: 259px;">
 | 
					            <div class="openwebrx-panel" id="openwebrx-panel-receiver" data-panel-name="client-params" style="width: 259px;">
 | 
				
			||||||
                <div class="openwebrx-panel-line frequencies-container">
 | 
					                <div class="openwebrx-panel-line frequencies-container">
 | 
				
			||||||
                    <div class="frequencies">
 | 
					                    <div class="frequencies">
 | 
				
			||||||
                        <div id="webrx-actual-freq">---.--- MHz</div>
 | 
					                        <div id="webrx-actual-freq"></div>
 | 
				
			||||||
                        <div id="webrx-mouse-freq">---.--- MHz</div>
 | 
					                        <div id="webrx-mouse-freq"></div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <div class="openwebrx-button openwebrx-square-button openwebrx-bookmark-button" style="display:none;" title="Add bookmark...">
 | 
					                    <div class="openwebrx-button openwebrx-square-button openwebrx-bookmark-button" style="display:none;" title="Add bookmark...">
 | 
				
			||||||
                        <img src="static/gfx/openwebrx-bookmark.png">
 | 
					                        <img src="static/gfx/openwebrx-bookmark.png">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,17 @@
 | 
				
			|||||||
function FrequencyDisplay(element) {
 | 
					function FrequencyDisplay(element) {
 | 
				
			||||||
    this.element = $(element);
 | 
					    this.element = $(element);
 | 
				
			||||||
    this.digits = [];
 | 
					    this.digits = [];
 | 
				
			||||||
    this.digitContainer = $('<span>');
 | 
					    this.setupElements();
 | 
				
			||||||
    this.element.html([this.digitContainer, $('<span> MHz</span>')]);
 | 
					 | 
				
			||||||
    this.decimalSeparator = (0.1).toLocaleString().substring(1, 2);
 | 
					 | 
				
			||||||
    this.setFrequency(0);
 | 
					    this.setFrequency(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FrequencyDisplay.prototype.setupElements = function() {
 | 
				
			||||||
 | 
					    this.displayContainer = $('<div>');
 | 
				
			||||||
 | 
					    this.digitContainer = $('<span>');
 | 
				
			||||||
 | 
					    this.displayContainer.html([this.digitContainer, $('<span> MHz</span>')]);
 | 
				
			||||||
 | 
					    this.element.html(this.displayContainer);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FrequencyDisplay.prototype.setFrequency = function(freq) {
 | 
					FrequencyDisplay.prototype.setFrequency = function(freq) {
 | 
				
			||||||
    this.frequency = freq;
 | 
					    this.frequency = freq;
 | 
				
			||||||
    var formatted = (freq / 1e6).toLocaleString(undefined, {maximumFractionDigits: 4, minimumFractionDigits: 4});
 | 
					    var formatted = (freq / 1e6).toLocaleString(undefined, {maximumFractionDigits: 4, minimumFractionDigits: 4});
 | 
				
			||||||
@@ -36,9 +41,18 @@ function TuneableFrequencyDisplay(element) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
TuneableFrequencyDisplay.prototype = new FrequencyDisplay();
 | 
					TuneableFrequencyDisplay.prototype = new FrequencyDisplay();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TuneableFrequencyDisplay.prototype.setupElements = function() {
 | 
				
			||||||
 | 
					    FrequencyDisplay.prototype.setupElements.call(this);
 | 
				
			||||||
 | 
					    this.input = $('<input>');
 | 
				
			||||||
 | 
					    this.input.hide();
 | 
				
			||||||
 | 
					    this.element.append(this.input);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TuneableFrequencyDisplay.prototype.setupEvents = function() {
 | 
					TuneableFrequencyDisplay.prototype.setupEvents = function() {
 | 
				
			||||||
    var me = this;
 | 
					    var me = this;
 | 
				
			||||||
    this.element.on('wheel', function(e){
 | 
					    me.listeners = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    me.element.on('wheel', function(e){
 | 
				
			||||||
        e.preventDefault();
 | 
					        e.preventDefault();
 | 
				
			||||||
        e.stopPropagation();
 | 
					        e.stopPropagation();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -53,7 +67,29 @@ TuneableFrequencyDisplay.prototype.setupEvents = function() {
 | 
				
			|||||||
            l(newFrequency);
 | 
					            l(newFrequency);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    this.listeners = [];
 | 
					
 | 
				
			||||||
 | 
					    var submit = function(){
 | 
				
			||||||
 | 
					        var freq = parseInt(me.input.val());
 | 
				
			||||||
 | 
					        if (!isNaN(freq)) {
 | 
				
			||||||
 | 
					            me.listeners.forEach(function(l) {
 | 
				
			||||||
 | 
					                l(freq);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        me.input.hide();
 | 
				
			||||||
 | 
					        me.displayContainer.show();
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    me.input.on('blur', submit).on('keyup', function(e){
 | 
				
			||||||
 | 
					        if (e.keyCode == 13) return submit();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    me.input.on('click', function(e){
 | 
				
			||||||
 | 
					        e.stopPropagation();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    me.element.on('click', function(){
 | 
				
			||||||
 | 
					        me.input.val(me.frequency);
 | 
				
			||||||
 | 
					        me.input.show();
 | 
				
			||||||
 | 
					        me.displayContainer.hide();
 | 
				
			||||||
 | 
					        me.input.focus();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TuneableFrequencyDisplay.prototype.onFrequencyChange = function(listener){
 | 
					TuneableFrequencyDisplay.prototype.onFrequencyChange = function(listener){
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -549,15 +549,18 @@ function demodulator_analog_replace(subtype, for_digital) { //this function shou
 | 
				
			|||||||
        secondary_demod_close_window();
 | 
					        secondary_demod_close_window();
 | 
				
			||||||
        secondary_demod_listbox_update();
 | 
					        secondary_demod_listbox_update();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    last_analog_demodulator_subtype = subtype;
 | 
					    if (!demodulators || !demodulators[0] || demodulators[0].subtype !== subtype) {
 | 
				
			||||||
    var temp_offset = 0;
 | 
					        last_analog_demodulator_subtype = subtype;
 | 
				
			||||||
    if (demodulators.length) {
 | 
					        var temp_offset = 0;
 | 
				
			||||||
        temp_offset = demodulators[0].offset_frequency;
 | 
					        if (demodulators.length) {
 | 
				
			||||||
        demodulator_remove(0);
 | 
					            temp_offset = demodulators[0].offset_frequency;
 | 
				
			||||||
 | 
					            demodulator_remove(0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        demodulator_add(new Demodulator_default_analog(temp_offset, subtype));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    demodulator_add(new Demodulator_default_analog(temp_offset, subtype));
 | 
					 | 
				
			||||||
    demodulator_buttons_update();
 | 
					    demodulator_buttons_update();
 | 
				
			||||||
    update_digitalvoice_panels("openwebrx-panel-metadata-" + subtype);
 | 
					    update_digitalvoice_panels("openwebrx-panel-metadata-" + subtype);
 | 
				
			||||||
 | 
					    updateHash();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Demodulator.prototype.set_offset_frequency = function(to_what) {
 | 
					Demodulator.prototype.set_offset_frequency = function(to_what) {
 | 
				
			||||||
@@ -566,6 +569,11 @@ Demodulator.prototype.set_offset_frequency = function(to_what) {
 | 
				
			|||||||
    this.set();
 | 
					    this.set();
 | 
				
			||||||
    mkenvelopes(get_visible_freq_range());
 | 
					    mkenvelopes(get_visible_freq_range());
 | 
				
			||||||
    tunedFrequencyDisplay.setFrequency(center_freq + to_what);
 | 
					    tunedFrequencyDisplay.setFrequency(center_freq + to_what);
 | 
				
			||||||
 | 
					    updateHash();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Demodulator.prototype.get_offset_frequency = function() {
 | 
				
			||||||
 | 
					    return this.offset_frequency;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function waterfallWidth() {
 | 
					function waterfallWidth() {
 | 
				
			||||||
@@ -1050,8 +1058,11 @@ function on_ws_recv(evt) {
 | 
				
			|||||||
                        waterfall_auto_level_margin = config['waterfall_auto_level_margin'];
 | 
					                        waterfall_auto_level_margin = config['waterfall_auto_level_margin'];
 | 
				
			||||||
                        waterfallColorsDefault();
 | 
					                        waterfallColorsDefault();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        starting_mod = config['start_mod'];
 | 
					                        var initial_demodulator_params = {
 | 
				
			||||||
                        starting_offset_frequency = config['start_offset_freq'];
 | 
					                            mod: config['start_mod'],
 | 
				
			||||||
 | 
					                            offset_frequency: config['start_offset_freq']
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        bandwidth = config['samp_rate'];
 | 
					                        bandwidth = config['samp_rate'];
 | 
				
			||||||
                        center_freq = config['center_freq'];
 | 
					                        center_freq = config['center_freq'];
 | 
				
			||||||
                        fft_size = config['fft_size'];
 | 
					                        fft_size = config['fft_size'];
 | 
				
			||||||
@@ -1067,7 +1078,7 @@ function on_ws_recv(evt) {
 | 
				
			|||||||
                        updateSquelch();
 | 
					                        updateSquelch();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        waterfall_init();
 | 
					                        waterfall_init();
 | 
				
			||||||
                        initialize_demodulator();
 | 
					                        initialize_demodulator(initial_demodulator_params);
 | 
				
			||||||
                        bookmarks.loadLocalBookmarks();
 | 
					                        bookmarks.loadLocalBookmarks();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        waterfall_clear();
 | 
					                        waterfall_clear();
 | 
				
			||||||
@@ -1489,28 +1500,52 @@ function webrx_set_param(what, value) {
 | 
				
			|||||||
    ws.send(JSON.stringify({"type": "dspcontrol", "params": params}));
 | 
					    ws.send(JSON.stringify({"type": "dspcontrol", "params": params}));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var starting_offset_frequency;
 | 
					 | 
				
			||||||
var starting_mod;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function parseHash() {
 | 
					function parseHash() {
 | 
				
			||||||
    var h;
 | 
					    if (!window.location.hash) {
 | 
				
			||||||
    if (h = window.location.hash) {
 | 
					        return {};
 | 
				
			||||||
        h.substring(1).split(",").forEach(function (x) {
 | 
					 | 
				
			||||||
            var harr = x.split("=");
 | 
					 | 
				
			||||||
            if (harr[0] === "mute") toggleMute();
 | 
					 | 
				
			||||||
            else if (harr[0] === "mod") starting_mod = harr[1];
 | 
					 | 
				
			||||||
            else if (harr[0] === "sql") {
 | 
					 | 
				
			||||||
                e("openwebrx-panel-squelch").value = harr[1];
 | 
					 | 
				
			||||||
                updateSquelch();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            else if (harr[0] === "freq") {
 | 
					 | 
				
			||||||
                console.log(parseInt(harr[1]));
 | 
					 | 
				
			||||||
                console.log(center_freq);
 | 
					 | 
				
			||||||
                starting_offset_frequency = parseInt(harr[1]) - center_freq;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    return window.location.hash.substring(1).split(",").map(function(x) {
 | 
				
			||||||
 | 
					        var harr = x.split('=');
 | 
				
			||||||
 | 
					        return [harr[0], harr.slice(1).join('=')];
 | 
				
			||||||
 | 
					    }).reduce(function(params, p){
 | 
				
			||||||
 | 
					        params[p[0]] = p[1];
 | 
				
			||||||
 | 
					        return params;
 | 
				
			||||||
 | 
					    }, {});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function validateHash() {
 | 
				
			||||||
 | 
					    var params = parseHash();
 | 
				
			||||||
 | 
					    params = Object.keys(params).filter(function(key) {
 | 
				
			||||||
 | 
					        if (key == 'freq') {
 | 
				
			||||||
 | 
					            return Math.abs(params[key] - center_freq) < bandwidth;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }).reduce(function(p, key) {
 | 
				
			||||||
 | 
					        p[key] = params[key];
 | 
				
			||||||
 | 
					        return p;
 | 
				
			||||||
 | 
					    }, {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (params['freq']) {
 | 
				
			||||||
 | 
					        params['offset_frequency'] = params['freq'] - center_freq;
 | 
				
			||||||
 | 
					        delete params['freq'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return params;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function updateHash() {
 | 
				
			||||||
 | 
					    var demod = demodulators[0];
 | 
				
			||||||
 | 
					    if (!demod) return;
 | 
				
			||||||
 | 
					    window.location.hash = $.map({
 | 
				
			||||||
 | 
					        freq: demod.get_offset_frequency() + center_freq,
 | 
				
			||||||
 | 
					        mod: demod.subtype,
 | 
				
			||||||
 | 
					        secondary_mod: secondary_demod
 | 
				
			||||||
 | 
					    }, function(value, key){
 | 
				
			||||||
 | 
					        if (!value) return undefined;
 | 
				
			||||||
 | 
					        return key + '=' + value;
 | 
				
			||||||
 | 
					    }).filter(function(v) {
 | 
				
			||||||
 | 
					        return !!v;
 | 
				
			||||||
 | 
					    }).join(',');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function onAudioStart(success, apiType){
 | 
					function onAudioStart(success, apiType){
 | 
				
			||||||
@@ -1528,13 +1563,16 @@ function onAudioStart(success, apiType){
 | 
				
			|||||||
    updateVolume();
 | 
					    updateVolume();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function initialize_demodulator() {
 | 
					function initialize_demodulator(initialParams) {
 | 
				
			||||||
    demodulator_analog_replace(starting_mod);
 | 
					    mkscale();
 | 
				
			||||||
    if (starting_offset_frequency) {
 | 
					    var params = $.extend(initialParams || {}, validateHash());
 | 
				
			||||||
        demodulators[0].offset_frequency = starting_offset_frequency;
 | 
					    if (params.secondary_mod) {
 | 
				
			||||||
        tunedFrequencyDisplay.setFrequency(center_freq + starting_offset_frequency);
 | 
					        demodulator_digital_replace(params.secondary_mod);
 | 
				
			||||||
        demodulators[0].set();
 | 
					    } else if (params.mod) {
 | 
				
			||||||
        mkscale();
 | 
					        demodulator_analog_replace(params.mod);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (params.offset_frequency) {
 | 
				
			||||||
 | 
					        demodulators[0].set_offset_frequency(params.offset_frequency);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1794,8 +1832,10 @@ function openwebrx_init() {
 | 
				
			|||||||
    check_top_bar_congestion();
 | 
					    check_top_bar_congestion();
 | 
				
			||||||
    init_header();
 | 
					    init_header();
 | 
				
			||||||
    bookmarks = new BookmarkBar();
 | 
					    bookmarks = new BookmarkBar();
 | 
				
			||||||
    parseHash();
 | 
					 | 
				
			||||||
    initSliders();
 | 
					    initSliders();
 | 
				
			||||||
 | 
					    window.addEventListener('hashchange', function() {
 | 
				
			||||||
 | 
					        initialize_demodulator();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function initSliders() {
 | 
					function initSliders() {
 | 
				
			||||||
@@ -1920,6 +1960,7 @@ function initPanels() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function demodulator_buttons_update() {
 | 
					function demodulator_buttons_update() {
 | 
				
			||||||
    $(".openwebrx-demodulator-button").removeClass("highlighted");
 | 
					    $(".openwebrx-demodulator-button").removeClass("highlighted");
 | 
				
			||||||
 | 
					    if (!demodulators.length) return;
 | 
				
			||||||
    if (secondary_demod) {
 | 
					    if (secondary_demod) {
 | 
				
			||||||
        $("#openwebrx-button-dig").addClass("highlighted");
 | 
					        $("#openwebrx-button-dig").addClass("highlighted");
 | 
				
			||||||
        $('#openwebrx-secondary-demod-listbox').val(secondary_demod);
 | 
					        $('#openwebrx-secondary-demod-listbox').val(secondary_demod);
 | 
				
			||||||
@@ -1982,6 +2023,7 @@ function demodulator_digital_replace_last() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function demodulator_digital_replace(subtype) {
 | 
					function demodulator_digital_replace(subtype) {
 | 
				
			||||||
 | 
					    if (secondary_demod === subtype) return;
 | 
				
			||||||
    switch (subtype) {
 | 
					    switch (subtype) {
 | 
				
			||||||
        case "bpsk31":
 | 
					        case "bpsk31":
 | 
				
			||||||
        case "bpsk63":
 | 
					        case "bpsk63":
 | 
				
			||||||
@@ -2019,6 +2061,7 @@ function demodulator_digital_replace(subtype) {
 | 
				
			|||||||
    toggle_panel("openwebrx-panel-wsjt-message", ['ft8', 'wspr', 'jt65', 'jt9', 'ft4'].indexOf(subtype) >= 0);
 | 
					    toggle_panel("openwebrx-panel-wsjt-message", ['ft8', 'wspr', 'jt65', 'jt9', 'ft4'].indexOf(subtype) >= 0);
 | 
				
			||||||
    toggle_panel("openwebrx-panel-packet-message", subtype === "packet");
 | 
					    toggle_panel("openwebrx-panel-packet-message", subtype === "packet");
 | 
				
			||||||
    toggle_panel("openwebrx-panel-pocsag-message", subtype === "pocsag");
 | 
					    toggle_panel("openwebrx-panel-pocsag-message", subtype === "pocsag");
 | 
				
			||||||
 | 
					    updateHash();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function secondary_demod_create_canvas() {
 | 
					function secondary_demod_create_canvas() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user